summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi Sumita <hsumita@chromium.org>2011-10-24 15:54:35 +0900
committerHiroshi Sumita <hsumita@chromium.org>2011-10-24 15:54:35 +0900
commit5221438adafbdc2db5f404be699e10369d1a41ad (patch)
treec120a61496bea84d9fc7f174fa9117336b3a81f4
parentc39096f6ea544ba53a2bf349cb00910598421c9a (diff)
downloadpyzy-5221438adafbdc2db5f404be699e10369d1a41ad.tar.gz
Initial implementation of libpyzy.
BUG= TEST= Review URL: http://codereview.appspot.com/5235062
-rw-r--r--.gitignore30
-rw-r--r--AUTHORS6
-rw-r--r--COPYING339
-rw-r--r--ChangeLog0
-rw-r--r--Makefile.am124
-rw-r--r--NEWS0
-rwxr-xr-xautogen.sh24
-rw-r--r--codereview.settings2
-rw-r--r--configure.ac173
-rw-r--r--data/.gitignore2
-rw-r--r--data/Makefile.am23
-rw-r--r--debian/changelog.in5
-rw-r--r--debian/compat1
-rw-r--r--debian/control51
-rw-r--r--debian/copyright40
-rw-r--r--debian/docs2
-rw-r--r--debian/ibus-pinyin.lintian-overrides1
-rwxr-xr-xdebian/rules110
-rw-r--r--debian/source/format1
-rw-r--r--debian/watch3
-rw-r--r--ibus-pinyin.spec.in99
-rw-r--r--m4/.gitignore1
-rw-r--r--m4/Makefile.am23
-rw-r--r--po/Makefile.in.in279
-rw-r--r--scripts/addheader.py24
-rw-r--r--scripts/bopomofo.py517
-rw-r--r--scripts/create_db.py94
-rw-r--r--scripts/create_index.py21
-rw-r--r--scripts/create_unique_index.py27
-rw-r--r--scripts/double.py40
-rw-r--r--scripts/genbopomofokeyboard.py100
-rw-r--r--scripts/genpuncttable.py32
-rw-r--r--scripts/genpytable.py439
-rw-r--r--scripts/gensimptradtable.py11
-rw-r--r--scripts/header20
-rw-r--r--scripts/id.py1
-rw-r--r--scripts/php_2_py.php21
-rw-r--r--scripts/punct.py100
-rw-r--r--scripts/pydict.py407
-rw-r--r--scripts/pyutil.py148
-rw-r--r--scripts/sctc.py5146
-rwxr-xr-xscripts/update-simptrad-table.py69
l---------scripts/valid_hanzi.py1
-rw-r--r--src/.gitignore6
-rw-r--r--src/Makefile.am193
-rw-r--r--src/Makefile.am.lib193
-rw-r--r--src/Makefile.am.test186
-rw-r--r--src/PyZyBopomofo.h80
-rw-r--r--src/PyZyBopomofoContext.cc502
-rw-r--r--src/PyZyBopomofoContext.h69
-rw-r--r--src/PyZyBopomofoKeyboard.h203
-rw-r--r--src/PyZyConfig.cc176
-rw-r--r--src/PyZyConfig.h96
-rw-r--r--src/PyZyDatabase.cc744
-rw-r--r--src/PyZyDatabase.h114
-rw-r--r--src/PyZyDoublePinyinContext.cc467
-rw-r--r--src/PyZyDoublePinyinContext.h64
-rw-r--r--src/PyZyDoublePinyinTable.h398
-rw-r--r--src/PyZyDynamicSpecialPhrase.cc206
-rw-r--r--src/PyZyDynamicSpecialPhrase.h57
-rw-r--r--src/PyZyFullPinyinContext.cc239
-rw-r--r--src/PyZyFullPinyinContext.h63
-rw-r--r--src/PyZyInputContext.cc46
-rw-r--r--src/PyZyInputContext.h118
-rw-r--r--src/PyZyPhoneticContext.cc329
-rw-r--r--src/PyZyPhoneticContext.h141
-rw-r--r--src/PyZyPhrase.h72
-rw-r--r--src/PyZyPhraseArray.h33
-rw-r--r--src/PyZyPhraseEditor.cc173
-rw-r--r--src/PyZyPhraseEditor.h132
-rw-r--r--src/PyZyPinyinArray.h73
-rw-r--r--src/PyZyPinyinContext.cc206
-rw-r--r--src/PyZyPinyinContext.h42
-rw-r--r--src/PyZyPinyinParser.cc352
-rw-r--r--src/PyZyPinyinParser.h49
-rw-r--r--src/PyZyPinyinParserTable.h8069
-rw-r--r--src/PyZySimpTradConverter.cc179
-rw-r--r--src/PyZySimpTradConverter.h37
-rw-r--r--src/PyZySimpTradConverterTable.h7406
-rw-r--r--src/PyZySpecialPhrase.cc30
-rw-r--r--src/PyZySpecialPhrase.h47
-rw-r--r--src/PyZySpecialPhraseTable.cc102
-rw-r--r--src/PyZySpecialPhraseTable.h58
-rw-r--r--src/PyZyString.h183
-rw-r--r--src/PyZyTest.cc1341
-rw-r--r--src/PyZyTypes.h146
-rw-r--r--src/PyZyUtil.h120
l---------src/main.db1
-rw-r--r--src/phrases.txt78
-rw-r--r--src/pinyin.xml.in.in42
-rw-r--r--src/special_table573
-rwxr-xr-xtools/googlecode_upload.py248
92 files changed, 33039 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2d24676
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+*.pyc
+configure
+Makefile
+Makefile.in
+aclocal.m4
+config.log
+ABOUT-NLS
+INSTALL
+autom4te.cache
+compile
+config.guess
+config.h
+config.h.in
+config.rpath
+config.status
+config.sub
+confinc
+confmf
+depcomp
+ibus-pinyin-*.tar.gz
+ibus-pinyin.spec
+install-sh
+libtool
+ltmain.sh
+missing
+pinyin-database-*.tar.bz2
+rpm
+stamp-h1
+py-compile
+mkinstalldirs
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..dac3a80
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,6 @@
+Peng Huang <shawn.p.huang@gmail.com>
+BYVoid <byvoid1@gmail.com>
+Peng Wu <alexepico@gmail.com>
+
+ru.po:
+koterpillar
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, 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 software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, 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 redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+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 give any other recipients of the Program a copy of this License
+along with the Program.
+
+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 Program or any portion
+of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+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 Program, 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 Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) 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; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, 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 executable. 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.
+
+If distribution of executable or 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 counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program 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.
+
+ 5. 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 Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program 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.
+
+ 7. 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 Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program 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 Program.
+
+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.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program 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.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 Program
+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 Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, 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
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), 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 Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. 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 program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ChangeLog
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..be71c58
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,124 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+SUBDIRS = \
+ data \
+ src \
+ m4 \
+ $(NULL)
+
+DISTCHECK_CONFIGURE_FLAGS = \
+ CFLAGS='-g3 -O3 -Wall' \
+ CXXFLAGS='-g3 -O3 -Wall' \
+ --enable-db-android \
+ --enable-db-open-phrase \
+ $(NULL)
+
+ACLOCAL_AMFLAGS = -I m4
+
+EXTRA_DIST = \
+ autogen.sh \
+ ibus-pinyin.spec.in \
+ $(NULL)
+
+noinst_DIST = \
+ $(NULL)
+
+
+DISTCLEANFILES = \
+ $(NULL)
+
+dist-hook:
+ if test -d .git ; then \
+ git log --name-status --date=iso > $(distdir)/ChangeLog ; \
+ fi
+
+rpm: dist @PACKAGE_NAME@.spec
+ rpmbuild -bb \
+ --define "_sourcedir `pwd`" \
+ --define "_builddir `pwd`/rpm" \
+ --define "_srcrpmdir `pwd`/rpm" \
+ --define "_rpmdir `pwd`/rpm" \
+ --define "_specdir `pwd`" \
+ @PACKAGE_NAME@.spec
+
+srpm: dist @PACKAGE_NAME@.spec
+ rpmbuild -bs \
+ --define "_sourcedir `pwd`" \
+ --define "_builddir `pwd`/rpm" \
+ --define "_srcrpmdir `pwd`/rpm" \
+ --define "_rpmdir `pwd`/rpm" \
+ --define "_specdir `pwd`" \
+ @PACKAGE_NAME@.spec
+
+.PHONY: debian/changelog
+debian/changelog:
+ $(AM_V_GEN) \
+ ( \
+ . /etc/lsb-release; \
+ date=`date -R`; \
+ version=@VERSION@; \
+ serie=$(serie); \
+ if test -z "$$serie"; then \
+ serie=$$DISTRIB_CODENAME; \
+ fi; \
+ if test -z "$$release"; then \
+ release=1; \
+ fi; \
+ s=`cat debian/changelog.in`; \
+ eval "echo \"$${s}\""; \
+ ) > $@
+
+ppa: dist debian/changelog
+ $(AM_V_GEN) \
+ ( \
+ mkdir ppa; \
+ cp $(distdir).tar.gz ppa/@PACKAGE_NAME@_@PACKAGE_VERSION@.orig.tar.gz ; \
+ cd ppa; \
+ tar zxvf ../$(distdir).tar.gz ; \
+ cd $(distdir); \
+ cp -a ../../debian . ; \
+ cd debian; \
+ debuild -S -sa ; \
+ )
+
+dpkg: dist debian/changelog
+ $(AM_V_GEN) \
+ ( \
+ mkdir ppa; \
+ cd ppa; \
+ tar zxvf ../$(distdir).tar.gz ; \
+ cd $(distdir); \
+ cp -a ../../debian . ; \
+ cd debian; \
+ debuild -b -uc -us; \
+ )
+
+upload: dist
+ ./tools/googlecode_upload.py \
+ -s "ibus-pinyin(拼音)source code" \
+ -p ibus \
+ -l "Type-Source,OpSys-Linux,Chinese,Unstable" \
+ $(distdir).tar.gz
+
+clean-rpm:
+ $(RM) -r "`uname -i`"
+
+clean-local: clean-rpm
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/NEWS
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..660c4b8
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+PKG_NAME="ibus-pinyin"
+
+(test -f $srcdir/configure.ac \
+ && test -f $srcdir/README ) || {
+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+ echo " top-level $PKG_NAME directory"
+ exit 1
+}
+
+which gnome-autogen.sh || {
+ echo "You need to install gnome-common from the GNOME CVS"
+ exit 1
+}
+
+ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4"
+REQUIRED_AUTOMAKE_VERSION=1.8
+
+. gnome-autogen.sh
diff --git a/codereview.settings b/codereview.settings
new file mode 100644
index 0000000..71ecbee
--- /dev/null
+++ b/codereview.settings
@@ -0,0 +1,2 @@
+# This file is used by "git cl" to get code review information.
+CODE_REVIEW_SERVER: codereview.appspot.com
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..f10de4c
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,173 @@
+# vim:set et ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# if not 1, append datestamp to the version number.
+m4_define([ibus_released], [0])
+m4_define([ibus_major_version], [1])
+m4_define([ibus_minor_version], [3])
+m4_define([ibus_micro_version], [99])
+m4_define(ibus_maybe_datestamp,
+ m4_esyscmd([if test x]ibus_released[ != x1; then date +.%Y%m%d | tr -d '\n\r'; fi]))
+
+m4_define([ibus_version],
+ ibus_major_version.ibus_minor_version.ibus_micro_version[]ibus_maybe_datestamp)
+
+AC_INIT([ibus-pinyin], [ibus_version], [http://code.google.com/p/ibus/issues/entry],[ibus-pinyin])
+AM_INIT_AUTOMAKE([1.10])
+AC_GNU_SOURCE
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+# define PACKAGE_VERSION_* variables
+AS_VERSION
+AS_NANO
+AM_SANITY_CHECK
+AM_MAINTAINER_MODE
+AM_DISABLE_STATIC
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_CC_C_O
+AC_ISC_POSIX
+AC_HEADER_STDC
+AM_PROG_LIBTOOL
+
+# check glib2
+AM_PATH_GLIB_2_0
+PKG_CHECK_MODULES(GLIB2, [
+ glib-2.0 >= 2.26.0
+])
+
+# check sqlite
+PKG_CHECK_MODULES(SQLITE, [
+ sqlite3
+])
+AC_PATH_PROG(SQLITE3, sqlite3)
+
+# check uuid
+AC_CHECK_FUNCS([uuid_create], [], [
+ PKG_CHECK_MODULES(LIBUUID, uuid, [
+ # uuid.pc exist
+ AC_DEFINE(HAVE_LIBUUID, 1, [Define if found libuuid])
+ HAVE_LIBUUID=yes
+ ], [
+ # uuid.pc does not exist
+ uuid_old_LIBS=$LIBS
+ AC_CHECK_HEADERS(uuid/uuid.h, [
+ AC_SEARCH_LIBS(uuid_generate, uuid, [
+ test x"$ac_cv_search_uuid_generate" != x"none required" && LIBUUID_LIBS=$ac_cv_search_uuid_generate
+ AC_DEFINE(HAVE_LIBUUID, 1, [Define if found libuuid])
+ HAVE_LIBUUID=yes
+ ], [
+ AC_MSG_ERROR([Can not find uuid_create and uuid_generate in libc or libuuid])
+ ])
+ ], [
+ AC_MSG_ERROR([Can not find uuid_create and uuid_generate in libc or libuuid])
+ ])
+ LIBS=$uuid_old_LIBS
+ ])
+])
+
+AM_CONDITIONAL(HAVE_LIBUUID, test x"$HAVE_LIBUUID" = x"yes")
+
+# check env
+AC_PATH_PROG(ENV, env)
+AC_SUBST(ENV)
+
+# --disble-boost
+AC_ARG_ENABLE(boost,
+ AC_HELP_STRING([--disable-boost],
+ [Do not use boost and use stdc++0x to replace boost.]),
+ [enable_boost=$enableval],
+ [enable_boost=yes]
+)
+if test x"$enable_boost" = x"yes"; then
+ # check boost
+ BOOST_REQUIRE([1.39])
+ BOOST_FIND_HEADER([boost/bind.hpp])
+ BOOST_FIND_HEADER([boost/signals2.hpp])
+fi
+AM_CONDITIONAL(HAVE_BOOST, test x"$enable_boost" = x"yes")
+
+# --enable-opencc
+AC_ARG_ENABLE(opencc,
+ AC_HELP_STRING([--enable-opencc],
+ [Use opencc for simplified and traditional Chinese conversion]),
+ [enable_opencc=$enableval],
+ [enable_opencc=no]
+)
+if test x"$enable_opencc" = x"yes"; then
+ # check opencc
+ PKG_CHECK_MODULES(OPENCC, [opencc], [
+ AC_DEFINE(HAVE_OPENCC, 1, [Define if found opencc])
+ ])
+fi
+
+# define GETTEXT_* variables
+GETTEXT_PACKAGE=ibus-pinyin
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])
+
+AM_GLIB_GNU_GETTEXT
+
+# --enable-db-android
+AC_ARG_ENABLE(db-android,
+ AS_HELP_STRING([--disable-db-android],
+ [do not build database from pinyin in android]),
+ [enable_db_android=$enableval],
+ [enable_db_android=yes]
+)
+AM_CONDITIONAL(IBUS_BUILD_DB_ANDROID, [test x"$enable_db_android" = x"yes" ])
+
+# --enable-db-open-phrase
+AC_ARG_ENABLE(db-open-phrase,
+ AS_HELP_STRING([--enable-db-open-phrase],
+ [build open-phrase database]),
+ [enable_db_open_phrase=$enableval],
+ [enable_db_open_phrase=no]
+)
+AM_CONDITIONAL(IBUS_BUILD_DB_OPEN_PHRASE, [test x"$enable_db_open_phrase" = x"yes" ])
+
+# OUTPUT files
+AC_CONFIG_FILES([
+Makefile
+ibus-pinyin.spec
+src/Makefile
+src/pinyin.xml.in
+data/Makefile
+data/db/Makefile
+data/db/android/Makefile
+data/db/open-phrase/Makefile
+m4/Makefile
+])
+
+AC_OUTPUT
+
+AC_MSG_RESULT([
+Build options:
+ Version $VERSION
+ Install prefix $prefix
+ Use boost $enable_boost
+ Use opencc $enable_opencc
+ Build database android $enable_db_android
+ Build database open-phrase $enable_db_open_phrase
+])
+
diff --git a/data/.gitignore b/data/.gitignore
new file mode 100644
index 0000000..4456fb6
--- /dev/null
+++ b/data/.gitignore
@@ -0,0 +1,2 @@
+db
+stamp-db
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..442056c
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,23 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+SUBDIRS = \
+ db \
+ $(NULL)
diff --git a/debian/changelog.in b/debian/changelog.in
new file mode 100644
index 0000000..95bfd5a
--- /dev/null
+++ b/debian/changelog.in
@@ -0,0 +1,5 @@
+ibus-pinyin (${version}-1phuang${release}~${serie}1) ${serie}; urgency=low
+
+ * Upstream release.
+
+ -- Peng Huang <shawn.p.huang@gmail.com> ${date}
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..8ad3368
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,51 @@
+Source: ibus-pinyin
+Section: utils
+Priority: optional
+Maintainer: LI Daobing <lidaobing@debian.org>
+Build-Depends: debhelper (>= 7), autotools-dev, pkg-config,
+ libsqlite3-dev (>= 3.6), sqlite3, uuid-dev, libopencc-dev (>= 0.0.4~pre.1)
+Standards-Version: 3.9.1
+Homepage: http://code.google.com/p/ibus
+Vcs-Bzr: lp:~lidaobing/ibus/ibus-pinyin
+Vcs-Browser: https://code.launchpad.net/~lidaobing/ibus/ibus-pinyin
+
+Package: ibus-pinyin
+Architecture: any
+Depends: ibus-pinyin-db-open-phrase (=${source:Version}) | ibus-pinyin-db-android (=${source:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+Description: pinyin engine for ibus
+ ibus-pinyin is a im engine for Chinese, based on ibus.
+ .
+ this package provide one input method:
+ * pinyin: pinyin input method.
+ .
+ for more information on pinyin input method, check
+ http://en.wikipedia.org/wiki/Pinyin_method .
+
+Package: ibus-pinyin-db-open-phrase
+Architecture: all
+Depends: ${misc:Depends}, pinyin-database (>= 1.2.99-3~), pinyin-database (<< 1.2.100)
+Description: pinyin engine for ibus, open-phrase database
+ ibus-pinyin is a im engine for Chinese, based on ibus.
+ .
+ this package provide one input method:
+ * pinyin: pinyin input method.
+ .
+ for more information on pinyin input method, check
+ http://en.wikipedia.org/wiki/Pinyin_method .
+ .
+ This package contains the open-phrase data files used by ibus-pinyin.
+
+Package: ibus-pinyin-db-android
+Architecture: all
+Depends: ${misc:Depends}
+Description: pinyin engine for ibus, android database
+ ibus-pinyin is a im engine for Chinese, based on ibus.
+ .
+ this package provide one input method:
+ * pinyin: pinyin input method.
+ .
+ for more information on pinyin input method, check
+ http://en.wikipedia.org/wiki/Pinyin_method .
+ .
+ This package contains the android data files used by ibus-pinyin.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..59ac1ed
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,40 @@
+This package was debianized by:
+
+ LI Daobing <lidaobing@gmail.com> on Sun, 28 Dec 2008 20:30:06 +0800
+
+It was downloaded from:
+
+ http://code.google.com/p/ibus/downloads/list
+
+Upstream Author:
+
+ Huang Peng <shawn.p.huang@gmail.com>
+
+Copyright:
+
+ Copyright © 2007-2008 Huang Peng <shawn.p.huang@gmail.com>
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is:
+
+ Copyright © 2008, LI Daobing <lidaobing@gmail.com>
+
+and is licensed under the GPL, see above.
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..55bc0a6
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,2 @@
+README
+AUTHORS
diff --git a/debian/ibus-pinyin.lintian-overrides b/debian/ibus-pinyin.lintian-overrides
new file mode 100644
index 0000000..cd5b9c9
--- /dev/null
+++ b/debian/ibus-pinyin.lintian-overrides
@@ -0,0 +1 @@
+ibus-pinyin: binary-without-manpage
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..e5ea124
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,110 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DEBIAN_VERSION = $(shell dpkg-parsechangelog | egrep '^Version: ' | sed s/"Version: "//)
+UPSTREAM_VERSION = $(shell echo $(DEBIAN_VERSION) | sed s/+.-.*//)
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+
+
+config.status: configure
+ dh_testdir
+ifneq "$(wildcard /usr/share/misc/config.sub)" ""
+ cp -f /usr/share/misc/config.sub config.sub
+endif
+ifneq "$(wildcard /usr/share/misc/config.guess)" ""
+ cp -f /usr/share/misc/config.guess config.guess
+endif
+ dh_auto_configure -- --enable-opencc --enable-lua-extension --disable-boost
+
+build: build-stamp
+
+build-stamp: config.status
+ dh_testdir
+ $(MAKE)
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp install-stamp
+
+ # Add here commands to clean up after the build process.
+ [ ! -f Makefile ] || $(MAKE) distclean
+ rm -f config.sub config.guess config.log
+ rm -f data/db/android/*.pyc
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs
+
+ $(MAKE) DESTDIR=$(CURDIR)/debian/ibus-pinyin install
+ rm -f $(CURDIR)/debian/ibus-pinyin/usr/share/ibus-pinyin/db/COPYING
+ mkdir -p $(CURDIR)/debian/ibus-pinyin-db-android/usr/share/ibus-pinyin/
+ mv $(CURDIR)/debian/ibus-pinyin/usr/share/ibus-pinyin/db $(CURDIR)/debian/ibus-pinyin-db-android/usr/share/ibus-pinyin/
+ rm -f $(CURDIR)/debian/ibus-pinyin-db-android/usr/share/ibus-pinyin/db/create_index.sql
+ mkdir -p $(CURDIR)/debian/ibus-pinyin-db-open-phrase/usr/share/ibus-pinyin/db
+ ln -s /usr/share/pinyin-database/main.db $(CURDIR)/debian/ibus-pinyin-db-open-phrase/usr/share/ibus-pinyin/db/open-phrase.db
+ touch $@
+
+# Build architecture-independent files here.
+binary-arch: install
+ dh_testdir -a
+ dh_testroot -a
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installexamples -a
+ dh_installman -a
+ dh_pysupport -a
+ dh_lintian -a
+ dh_link -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a
+ dh_md5sums -a
+ dh_builddeb -a
+
+binary-indep: install
+ dh_testdir -i
+ dh_testroot -i
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_installexamples -i
+ dh_installman -i
+ dh_pysupport -i
+ dh_lintian -i
+ dh_link -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i
+ dh_md5sums -i
+ dh_builddeb -i
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..18f953c
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+http://code.google.com/p/ibus/downloads/list?can=2 \
+http://ibus.googlecode.com/files/ibus-pinyin-([0-9].*)\.tar\.gz
diff --git a/ibus-pinyin.spec.in b/ibus-pinyin.spec.in
new file mode 100644
index 0000000..a7490d8
--- /dev/null
+++ b/ibus-pinyin.spec.in
@@ -0,0 +1,99 @@
+Name: @PACKAGE_NAME@
+Version: @PACKAGE_VERSION@
+Release: 1%{?dist}
+Summary: The Chinese Pinyin and Bopomofo engines for IBus input platform
+License: GPLv2+
+Group: System Environment/Libraries
+URL: http://code.google.com/p/ibus
+Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
+Source1: pinyin-database-1.2.99.tar.bz2
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires: glib2
+BuildRequires: gettext-devel
+BuildRequires: libtool
+BuildRequires: pkgconfig
+BuildRequires: sqlite-devel
+BuildRequires: libuuid-devel
+BuildRequires: boost-devel >= 1.39
+BuildRequires: gtest-devel
+
+# Requires(post): sqlite
+
+Requires: ibus-pinyin-db = %{version}-%{release}
+
+%description
+The Chinese Pinyin and Bopomof input methods for IBus platform.
+
+%package db-open-phrase
+Summary: The open phrase database for ibus Pinyin
+Group: System Environment/Libraries
+BuildArch: noarch
+Provides: ibus-pinyin-db
+Requires(post): sqlite
+
+%description db-open-phrase
+The phrase database for ibus Pinyin and Bopomofo from open-phrase project.
+
+%package db-android
+Summary: The android phrase database for ibus Pinyin and Bopomofo
+Group: System Environment/Libraries
+BuildArch: noarch
+Provides: ibus-pinyin-db
+Requires(post): sqlite
+
+%description db-android
+The phrase database for ibus Pinyin and Bopomofo from android project.
+
+%prep
+%setup -q
+cp %{SOURCE1} data/db/open-phrase
+
+%build
+%configure --disable-static --enable-db-open-phrase
+# make -C po update-gmo
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+# make DESTDIR=${RPM_BUILD_ROOT} NO_INDEX=true install
+make DESTDIR=${RPM_BUILD_ROOT} install
+
+%find_lang %{name}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+# cd %{_datadir}/ibus-pinyin/db
+# sqlite3 android.db ".read create_index.sql"
+
+%post db-open-phrase
+# cd %{_datadir}/ibus-pinyin/db
+# sqlite3 open-phrase.db ".read create_index.sql"
+
+%post db-android
+# cd %{_datadir}/ibus-pinyin/db
+# sqlite3 android.db ".read create_index.sql"
+
+%files -f %{name}.lang
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING README
+%{_libexecdir}/ibus-engine-pinyin
+%{_datadir}/@PACKAGE@/phrases.txt
+%{_datadir}/@PACKAGE@/icons
+%{_datadir}/@PACKAGE@/db/create_index.sql
+%dir %{_datadir}/@PACKAGE@
+%dir %{_datadir}/@PACKAGE@/db
+%{_datadir}/ibus/component/*
+
+%files db-open-phrase
+%{_datadir}/@PACKAGE@/db/open-phrase.db
+
+%files db-android
+%{_datadir}/@PACKAGE@/db/android.db
+
+%changelog
+* Fri Aug 08 2008 Peng Huang <shawn.p.huang@gmail.com> - @VERSION@-1
+- The first version.
diff --git a/m4/.gitignore b/m4/.gitignore
new file mode 100644
index 0000000..0f4126c
--- /dev/null
+++ b/m4/.gitignore
@@ -0,0 +1 @@
+*.m4
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644
index 0000000..2d457ce
--- /dev/null
+++ b/m4/Makefile.am
@@ -0,0 +1,23 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+EXTRA_DIST = \
+ as-version.m4 \
+ $(NULL)
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..eb60dd0
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,279 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
+
+CC = @CC@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES =
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = LINGUAS ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
+$(POFILES) $(GMOFILES) $(SOURCES)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+ $(COMPILE) $<
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && $(GENCAT) $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
+ --add-comments --keyword=_ --keyword=N_ \
+ --keyword=C_:1c,2 \
+ --keyword=NC_:1c,2 \
+ --keyword=g_dcgettext:2 \
+ --keyword=g_dngettext:2,3 \
+ --keyword=g_dpgettext2:2c,3 \
+ --flag=N_:1:pass-c-format \
+ --flag=C_:2:pass-c-format \
+ --flag=NC_:2:pass-c-format \
+ --flag=g_dngettext:2:pass-c-format \
+ --flag=g_strdup_printf:1:c-format \
+ --flag=g_string_printf:2:c-format \
+ --flag=g_string_append_printf:2:c-format \
+ --flag=g_error_new:3:c-format \
+ --flag=g_set_error:4:c-format \
+ --flag=g_markup_printf_escaped:1:c-format \
+ --flag=g_log:3:c-format \
+ --flag=g_print:1:c-format \
+ --flag=g_printerr:1:c-format \
+ --flag=g_printf:1:c-format \
+ --flag=g_fprintf:2:c-format \
+ --flag=g_sprintf:2:c-format \
+ --flag=g_snprintf:3:c-format \
+ --flag=g_scanner_error:2:c-format \
+ --flag=g_scanner_warn:2:c-format \
+ --files-from=$(srcdir)/POTFILES.in \
+ && test ! -f $(GETTEXT_PACKAGE).po \
+ || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
+ && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ if test -r "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+ fi
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ case "$$cat" in \
+ *.gmo) destdir=$(gnulocaledir);; \
+ *) destdir=$(localedir);; \
+ esac; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+ if test -r "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $$dir; \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
+ fi; \
+ if test -r $$cat; then \
+ $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+ fi; \
+ if test -r $$cat.m; then \
+ $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ if test -r $(srcdir)/$$cat.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$cat.m \
+ $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+ if test "$(PACKAGE)" = "glib"; then \
+ if test -r "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+ fi; \
+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ done
+ if test "$(PACKAGE)" = "glib"; then \
+ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ fi
+
+check: all
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+ rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f $(GMOFILES)
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ for file in $$dists; do \
+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+ || cp -p $(srcdir)/$$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ cd $(srcdir); \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+ ( if test 'x$(srcdir)' != 'x.'; then \
+ posrcprefix='$(top_srcdir)/'; \
+ else \
+ posrcprefix="../"; \
+ fi; \
+ rm -f $@-t $@ \
+ && (sed -e '/^#/d' \
+ -e "s/^\[.*\] +//" \
+ -e '/^[ ]*$$/d' \
+ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
+ | sed -e '$$s/\\$$//') > $@-t \
+ && chmod a-w $@-t \
+ && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+ cd .. \
+ && $(SHELL) ./config.status $(subdir)/$@.in
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/scripts/addheader.py b/scripts/addheader.py
new file mode 100644
index 0000000..09e628e
--- /dev/null
+++ b/scripts/addheader.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+import sys
+
+def add_header(name, header):
+ with file(name) as fin:
+ lines = fin.readlines()
+ with file(name, "w") as fout:
+ for l in header:
+ print >> fout, l,
+ if lines[0].startswith("/*") and lines[0].endswith("*/\n"):
+ pass
+ else:
+ print >> fout, lines[0],
+ for l in lines[1:]:
+ print >> fout, l,
+
+def main():
+ with file("header") as f:
+ header = f.readlines()
+ for name in sys.argv[1:]:
+ add_header(name, header)
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/bopomofo.py b/scripts/bopomofo.py
new file mode 100644
index 0000000..05f1327
--- /dev/null
+++ b/scripts/bopomofo.py
@@ -0,0 +1,517 @@
+# vim:set et sts=4:
+# -*- coding: utf-8 -*-
+
+'''
+const static gunichar bopomofo_char[] = {
+ L'\0',L'ㄅ',L'ㄆ',L'ㄇ',L'ㄈ',L'ㄉ',L'ㄊ',L'ㄋ',L'ㄌ',L'ㄍ',L'ㄎ',
+ L'ㄏ',L'ㄐ',L'ㄑ',L'ㄒ',L'ㄓ',L'ㄔ',L'ㄕ',L'ㄖ',L'ㄗ',L'ㄘ',L'ㄙ',
+
+ L'ㄧ',L'ㄨ',L'ㄩ',L'ㄚ',L'ㄛ',L'ㄜ',L'ㄝ',L'ㄞ',L'ㄟ',L'ㄠ',L'ㄡ',
+ L'ㄢ',L'ㄣ',L'ㄤ',L'ㄥ',L'ㄦ',
+
+ L'ˊ',L'ˇ',L'ˋ',L'˙',
+};
+'''
+
+bopomofo_pinyin_map = {
+ "ㄅ" : "b",
+ "ㄅㄚ" : "ba",
+ "ㄅㄛ" : "bo",
+ "ㄅㄞ" : "bai",
+ "ㄅㄟ" : "bei",
+ "ㄅㄠ" : "bao",
+ "ㄅㄢ" : "ban",
+ "ㄅㄣ" : "ben",
+ "ㄅㄤ" : "bang",
+ "ㄅㄥ" : "beng",
+ "ㄅㄧ" : "bi",
+ "ㄅㄧㄝ" : "bie",
+ "ㄅㄧㄠ" : "biao",
+ "ㄅㄧㄢ" : "bian",
+ "ㄅㄧㄣ" : "bin",
+ "ㄅㄧㄥ" : "bing",
+ "ㄅㄨ" : "bu",
+ "ㄆ" : "p",
+ "ㄆㄚ" : "pa",
+ "ㄆㄛ" : "po",
+ "ㄆㄞ" : "pai",
+ "ㄆㄟ" : "pei",
+ "ㄆㄠ" : "pao",
+ "ㄆㄡ" : "pou",
+ "ㄆㄢ" : "pan",
+ "ㄆㄣ" : "pen",
+ "ㄆㄤ" : "pang",
+ "ㄆㄥ" : "peng",
+ "ㄆㄧ" : "pi",
+ "ㄆㄧㄝ" : "pie",
+ "ㄆㄧㄠ" : "piao",
+ "ㄆㄧㄢ" : "pian",
+ "ㄆㄧㄣ" : "pin",
+ "ㄆㄧㄥ" : "ping",
+ "ㄆㄨ" : "pu",
+ "ㄇ" : "m",
+ "ㄇㄚ" : "ma",
+ "ㄇㄛ" : "mo",
+ "ㄇㄜ" : "me",
+ "ㄇㄞ" : "mai",
+ "ㄇㄟ" : "mei",
+ "ㄇㄠ" : "mao",
+ "ㄇㄡ" : "mou",
+ "ㄇㄢ" : "man",
+ "ㄇㄣ" : "men",
+ "ㄇㄤ" : "mang",
+ "ㄇㄥ" : "meng",
+ "ㄇㄧ" : "mi",
+ "ㄇㄧㄝ" : "mie",
+ "ㄇㄧㄠ" : "miao",
+ "ㄇㄧㄡ" : "miu",
+ "ㄇㄧㄢ" : "mian",
+ "ㄇㄧㄣ" : "min",
+ "ㄇㄧㄥ" : "ming",
+ "ㄇㄨ" : "mu",
+ "ㄈ" : "f",
+ "ㄈㄚ" : "fa",
+ "ㄈㄛ" : "fo",
+ "ㄈㄜ" : "fe",
+ "ㄈㄟ" : "fei",
+ "ㄈㄡ" : "fou",
+ "ㄈㄢ" : "fan",
+ "ㄈㄣ" : "fen",
+ "ㄈㄤ" : "fang",
+ "ㄈㄥ" : "feng",
+ "ㄈㄨ" : "fu",
+ "ㄉ" : "d",
+ "ㄉㄚ" : "da",
+ "ㄉㄜ" : "de",
+ "ㄉㄞ" : "dai",
+ "ㄉㄟ" : "dei",
+ "ㄉㄠ" : "dao",
+ "ㄉㄡ" : "dou",
+ "ㄉㄢ" : "dan",
+ "ㄉㄣ" : "den",
+ "ㄉㄤ" : "dang",
+ "ㄉㄥ" : "deng",
+ "ㄉㄧ" : "di",
+ "ㄉㄧㄚ" : "dia",
+ "ㄉㄧㄝ" : "die",
+ "ㄉㄧㄠ" : "diao",
+ "ㄉㄧㄡ" : "diu",
+ "ㄉㄧㄢ" : "dian",
+ "ㄉㄧㄣ" : "din",
+ "ㄉㄧㄥ" : "ding",
+ "ㄉㄨ" : "du",
+ "ㄉㄨㄛ" : "duo",
+ "ㄉㄨㄟ" : "dui",
+ "ㄉㄨㄢ" : "duan",
+ "ㄉㄨㄣ" : "dun",
+ "ㄉㄨㄥ" : "dong",
+ "ㄊ" : "t",
+ "ㄊㄚ" : "ta",
+ "ㄊㄜ" : "te",
+ "ㄊㄞ" : "tai",
+ "ㄊㄠ" : "tao",
+ "ㄊㄡ" : "tou",
+ "ㄊㄢ" : "tan",
+ "ㄊㄤ" : "tang",
+ "ㄊㄥ" : "teng",
+ "ㄊㄧ" : "ti",
+ "ㄊㄧㄝ" : "tie",
+ "ㄊㄧㄠ" : "tiao",
+ "ㄊㄧㄢ" : "tian",
+ "ㄊㄧㄥ" : "ting",
+ "ㄊㄨ" : "tu",
+ "ㄊㄨㄛ" : "tuo",
+ "ㄊㄨㄟ" : "tui",
+ "ㄊㄨㄢ" : "tuan",
+ "ㄊㄨㄣ" : "tun",
+ "ㄊㄨㄥ" : "tong",
+ "ㄋ" : "n",
+ "ㄋㄚ" : "na",
+ "ㄋㄜ" : "ne",
+ "ㄋㄞ" : "nai",
+ "ㄋㄟ" : "nei",
+ "ㄋㄠ" : "nao",
+ "ㄋㄡ" : "nou",
+ "ㄋㄢ" : "nan",
+ "ㄋㄣ" : "nen",
+ "ㄋㄤ" : "nang",
+ "ㄋㄥ" : "neng",
+ "ㄋㄧ" : "ni",
+ "ㄋㄧㄚ" : "nia",
+ "ㄋㄧㄝ" : "nie",
+ "ㄋㄧㄠ" : "niao",
+ "ㄋㄧㄡ" : "niu",
+ "ㄋㄧㄢ" : "nian",
+ "ㄋㄧㄣ" : "nin",
+ "ㄋㄧㄤ" : "niang",
+ "ㄋㄧㄥ" : "ning",
+ "ㄋㄨ" : "nu",
+ "ㄋㄨㄛ" : "nuo",
+ "ㄋㄨㄢ" : "nuan",
+ "ㄋㄨㄣ" : "nun",
+ "ㄋㄨㄥ" : "nong",
+ "ㄋㄩ" : "nv",
+ "ㄋㄩㄝ" : "nve",
+ "ㄌ" : "l",
+ "ㄌㄚ" : "la",
+ "ㄌㄛ" : "lo",
+ "ㄌㄜ" : "le",
+ "ㄌㄞ" : "lai",
+ "ㄌㄟ" : "lei",
+ "ㄌㄠ" : "lao",
+ "ㄌㄡ" : "lou",
+ "ㄌㄢ" : "lan",
+ "ㄌㄣ" : "len",
+ "ㄌㄤ" : "lang",
+ "ㄌㄥ" : "leng",
+ "ㄌㄧ" : "li",
+ "ㄌㄧㄚ" : "lia",
+ "ㄌㄧㄝ" : "lie",
+ "ㄌㄧㄠ" : "liao",
+ "ㄌㄧㄡ" : "liu",
+ "ㄌㄧㄢ" : "lian",
+ "ㄌㄧㄣ" : "lin",
+ "ㄌㄧㄤ" : "liang",
+ "ㄌㄧㄥ" : "ling",
+ "ㄌㄨ" : "lu",
+ "ㄌㄨㄛ" : "luo",
+ "ㄌㄨㄢ" : "luan",
+ "ㄌㄨㄣ" : "lun",
+ "ㄌㄨㄥ" : "long",
+ "ㄌㄩ" : "lv",
+ "ㄌㄩㄝ" : "lve",
+ "ㄍ" : "g",
+ "ㄍㄚ" : "ga",
+ "ㄍㄜ" : "ge",
+ "ㄍㄞ" : "gai",
+ "ㄍㄟ" : "gei",
+ "ㄍㄠ" : "gao",
+ "ㄍㄡ" : "gou",
+ "ㄍㄢ" : "gan",
+ "ㄍㄣ" : "gen",
+ "ㄍㄤ" : "gang",
+ "ㄍㄥ" : "geng",
+ "ㄍㄨ" : "gu",
+ "ㄍㄨㄚ" : "gua",
+ "ㄍㄨㄛ" : "guo",
+ "ㄍㄨㄞ" : "guai",
+ "ㄍㄨㄟ" : "gui",
+ "ㄍㄨㄢ" : "guan",
+ "ㄍㄨㄣ" : "gun",
+ "ㄍㄨㄤ" : "guang",
+ "ㄍㄨㄥ" : "gong",
+ "ㄎ" : "k",
+ "ㄎㄚ" : "ka",
+ "ㄎㄜ" : "ke",
+ "ㄎㄞ" : "kai",
+ "ㄎㄟ" : "kei",
+ "ㄎㄠ" : "kao",
+ "ㄎㄡ" : "kou",
+ "ㄎㄢ" : "kan",
+ "ㄎㄣ" : "ken",
+ "ㄎㄤ" : "kang",
+ "ㄎㄥ" : "keng",
+ "ㄎㄨ" : "ku",
+ "ㄎㄨㄚ" : "kua",
+ "ㄎㄨㄛ" : "kuo",
+ "ㄎㄨㄞ" : "kuai",
+ "ㄎㄨㄟ" : "kui",
+ "ㄎㄨㄢ" : "kuan",
+ "ㄎㄨㄣ" : "kun",
+ "ㄎㄨㄤ" : "kuang",
+ "ㄎㄨㄥ" : "kong",
+ "ㄏ" : "h",
+ "ㄏㄚ" : "ha",
+ "ㄏㄜ" : "he",
+ "ㄏㄞ" : "hai",
+ "ㄏㄟ" : "hei",
+ "ㄏㄠ" : "hao",
+ "ㄏㄡ" : "hou",
+ "ㄏㄢ" : "han",
+ "ㄏㄣ" : "hen",
+ "ㄏㄤ" : "hang",
+ "ㄏㄥ" : "heng",
+ "ㄏㄨ" : "hu",
+ "ㄏㄨㄚ" : "hua",
+ "ㄏㄨㄛ" : "huo",
+ "ㄏㄨㄞ" : "huai",
+ "ㄏㄨㄟ" : "hui",
+ "ㄏㄨㄢ" : "huan",
+ "ㄏㄨㄣ" : "hun",
+ "ㄏㄨㄤ" : "huang",
+ "ㄏㄨㄥ" : "hong",
+ "ㄐ" : "j",
+ "ㄐㄧ" : "ji",
+ "ㄐㄧㄚ" : "jia",
+ "ㄐㄧㄝ" : "jie",
+ "ㄐㄧㄠ" : "jiao",
+ "ㄐㄧㄡ" : "jiu",
+ "ㄐㄧㄢ" : "jian",
+ "ㄐㄧㄣ" : "jin",
+ "ㄐㄧㄤ" : "jiang",
+ "ㄐㄧㄥ" : "jing",
+ "ㄐㄩ" : "ju",
+ "ㄐㄩㄝ" : "jue",
+ "ㄐㄩㄢ" : "juan",
+ "ㄐㄩㄣ" : "jun",
+ "ㄐㄩㄥ" : "jiong",
+ "ㄑ" : "q",
+ "ㄑㄧ" : "qi",
+ "ㄑㄧㄚ" : "qia",
+ "ㄑㄧㄝ" : "qie",
+ "ㄑㄧㄠ" : "qiao",
+ "ㄑㄧㄡ" : "qiu",
+ "ㄑㄧㄢ" : "qian",
+ "ㄑㄧㄣ" : "qin",
+ "ㄑㄧㄤ" : "qiang",
+ "ㄑㄧㄥ" : "qing",
+ "ㄑㄩ" : "qu",
+ "ㄑㄩㄝ" : "que",
+ "ㄑㄩㄢ" : "quan",
+ "ㄑㄩㄣ" : "qun",
+ "ㄑㄩㄥ" : "qiong",
+ "ㄒ" : "x",
+ "ㄒㄧ" : "xi",
+ "ㄒㄧㄚ" : "xia",
+ "ㄒㄧㄝ" : "xie",
+ "ㄒㄧㄠ" : "xiao",
+ "ㄒㄧㄡ" : "xiu",
+ "ㄒㄧㄢ" : "xian",
+ "ㄒㄧㄣ" : "xin",
+ "ㄒㄧㄤ" : "xiang",
+ "ㄒㄧㄥ" : "xing",
+ "ㄒㄩ" : "xu",
+ "ㄒㄩㄝ" : "xue",
+ "ㄒㄩㄢ" : "xuan",
+ "ㄒㄩㄣ" : "xun",
+ "ㄒㄩㄥ" : "xiong",
+ "ㄓ" : "zhi",
+ "ㄓㄚ" : "zha",
+ "ㄓㄜ" : "zhe",
+ "ㄓㄞ" : "zhai",
+ "ㄓㄟ" : "zhei",
+ "ㄓㄠ" : "zhao",
+ "ㄓㄡ" : "zhou",
+ "ㄓㄢ" : "zhan",
+ "ㄓㄣ" : "zhen",
+ "ㄓㄤ" : "zhang",
+ "ㄓㄥ" : "zheng",
+ "ㄓㄨ" : "zhu",
+ "ㄓㄨㄚ" : "zhua",
+ "ㄓㄨㄛ" : "zhuo",
+ "ㄓㄨㄞ" : "zhuai",
+ "ㄓㄨㄟ" : "zhui",
+ "ㄓㄨㄢ" : "zhuan",
+ "ㄓㄨㄣ" : "zhun",
+ "ㄓㄨㄤ" : "zhuang",
+ "ㄓㄨㄥ" : "zhong",
+ "ㄔ" : "chi",
+ "ㄔㄚ" : "cha",
+ "ㄔㄜ" : "che",
+ "ㄔㄞ" : "chai",
+ "ㄔㄠ" : "chao",
+ "ㄔㄡ" : "chou",
+ "ㄔㄢ" : "chan",
+ "ㄔㄣ" : "chen",
+ "ㄔㄤ" : "chang",
+ "ㄔㄥ" : "cheng",
+ "ㄔㄨ" : "chu",
+ "ㄔㄨㄚ" : "chua",
+ "ㄔㄨㄛ" : "chuo",
+ "ㄔㄨㄞ" : "chuai",
+ "ㄔㄨㄟ" : "chui",
+ "ㄔㄨㄢ" : "chuan",
+ "ㄔㄨㄣ" : "chun",
+ "ㄔㄨㄤ" : "chuang",
+ "ㄔㄨㄥ" : "chong",
+ "ㄕ" : "shi",
+ "ㄕㄚ" : "sha",
+ "ㄕㄜ" : "she",
+ "ㄕㄞ" : "shai",
+ "ㄕㄟ" : "shei",
+ "ㄕㄠ" : "shao",
+ "ㄕㄡ" : "shou",
+ "ㄕㄢ" : "shan",
+ "ㄕㄣ" : "shen",
+ "ㄕㄤ" : "shang",
+ "ㄕㄥ" : "sheng",
+ "ㄕㄨ" : "shu",
+ "ㄕㄨㄚ" : "shua",
+ "ㄕㄨㄛ" : "shuo",
+ "ㄕㄨㄞ" : "shuai",
+ "ㄕㄨㄟ" : "shui",
+ "ㄕㄨㄢ" : "shuan",
+ "ㄕㄨㄣ" : "shun",
+ "ㄕㄨㄤ" : "shuang",
+ "ㄖ" : "ri",
+ "ㄖㄜ" : "re",
+ "ㄖㄠ" : "rao",
+ "ㄖㄡ" : "rou",
+ "ㄖㄢ" : "ran",
+ "ㄖㄣ" : "ren",
+ "ㄖㄤ" : "rang",
+ "ㄖㄥ" : "reng",
+ "ㄖㄨ" : "ru",
+ "ㄖㄨㄚ" : "rua",
+ "ㄖㄨㄛ" : "ruo",
+ "ㄖㄨㄟ" : "rui",
+ "ㄖㄨㄢ" : "ruan",
+ "ㄖㄨㄣ" : "run",
+ "ㄖㄨㄥ" : "rong",
+ "ㄗ" : "zi",
+ "ㄗㄚ" : "za",
+ "ㄗㄜ" : "ze",
+ "ㄗㄞ" : "zai",
+ "ㄗㄟ" : "zei",
+ "ㄗㄠ" : "zao",
+ "ㄗㄡ" : "zou",
+ "ㄗㄢ" : "zan",
+ "ㄗㄣ" : "zen",
+ "ㄗㄤ" : "zang",
+ "ㄗㄥ" : "zeng",
+ "ㄗㄨ" : "zu",
+ "ㄗㄨㄛ" : "zuo",
+ "ㄗㄨㄟ" : "zui",
+ "ㄗㄨㄢ" : "zuan",
+ "ㄗㄨㄣ" : "zun",
+ "ㄗㄨㄥ" : "zong",
+ "ㄘ" : "ci",
+ "ㄘㄚ" : "ca",
+ "ㄘㄜ" : "ce",
+ "ㄘㄞ" : "cai",
+ "ㄘㄠ" : "cao",
+ "ㄘㄡ" : "cou",
+ "ㄘㄢ" : "can",
+ "ㄘㄣ" : "cen",
+ "ㄘㄤ" : "cang",
+ "ㄘㄥ" : "ceng",
+ "ㄘㄨ" : "cu",
+ "ㄘㄨㄛ" : "cuo",
+ "ㄘㄨㄟ" : "cui",
+ "ㄘㄨㄢ" : "cuan",
+ "ㄘㄨㄣ" : "cun",
+ "ㄘㄨㄥ" : "cong",
+ "ㄙ" : "si",
+ "ㄙㄚ" : "sa",
+ "ㄙㄜ" : "se",
+ "ㄙㄞ" : "sai",
+ "ㄙㄠ" : "sao",
+ "ㄙㄡ" : "sou",
+ "ㄙㄢ" : "san",
+ "ㄙㄣ" : "sen",
+ "ㄙㄤ" : "sang",
+ "ㄙㄥ" : "seng",
+ "ㄙㄨ" : "su",
+ "ㄙㄨㄛ" : "suo",
+ "ㄙㄨㄟ" : "sui",
+ "ㄙㄨㄢ" : "suan",
+ "ㄙㄨㄣ" : "sun",
+ "ㄙㄨㄥ" : "song",
+ "ㄚ" : "a",
+ "ㄛ" : "o",
+ "ㄜ" : "e",
+ "ㄞ" : "ai",
+ "ㄟ" : "ei",
+ "ㄠ" : "ao",
+ "ㄡ" : "ou",
+ "ㄢ" : "an",
+ "ㄣ" : "en",
+ "ㄤ" : "ang",
+ "ㄥ" : "eng",
+ "ㄦ" : "er",
+ "ㄧ" : "yi",
+ "ㄧㄚ" : "ya",
+ "ㄧㄛ" : "yo",
+ "ㄧㄝ" : "ye",
+ "ㄧㄞ" : "yai",
+ "ㄧㄠ" : "yao",
+ "ㄧㄡ" : "you",
+ "ㄧㄢ" : "yan",
+ "ㄧㄣ" : "yin",
+ "ㄧㄤ" : "yang",
+ "ㄧㄥ" : "ying",
+ "ㄨ" : "wu",
+ "ㄨㄚ" : "wa",
+ "ㄨㄛ" : "wo",
+ "ㄨㄞ" : "wai",
+ "ㄨㄟ" : "wei",
+ "ㄨㄢ" : "wan",
+ "ㄨㄣ" : "wen",
+ "ㄨㄤ" : "wang",
+ "ㄨㄥ" : "weng",
+ "ㄩ" : "yu",
+ "ㄩㄝ" : "yue",
+ "ㄩㄢ" : "yuan",
+ "ㄩㄣ" : "yun",
+ "ㄩㄥ" : "yong",
+}
+
+pinyin_bopomofo_map = dict([(v, k) for k, v in bopomofo_pinyin_map.items()])
+
+sheng_yun_bopomofo_map = {
+ "b" : "ㄅ",
+ "p" : "ㄆ",
+ "m" : "ㄇ",
+ "f" : "ㄈ",
+ "d" : "ㄉ",
+ "t" : "ㄊ",
+ "n" : "ㄋ",
+ "l" : "ㄌ",
+ "g" : "ㄍ",
+ "k" : "ㄎ",
+ "h" : "ㄏ",
+ "j" : "ㄐ",
+ "q" : "ㄑ",
+ "x" : "ㄒ",
+ "zh" : "ㄓ",
+ "ch" : "ㄔ",
+ "sh" : "ㄕ",
+ "r" : "ㄖ",
+ "z" : "ㄗ",
+ "c" : "ㄘ",
+ "s" : "ㄙ",
+
+ # 韻母為u,ue,un,uan,ong時ㄧ省略
+ "y" : ("ㄧ", (("u", "ue", "un", "uan", "ong"), "")),
+ "w" : "ㄨ",
+ "a" : "ㄚ",
+ "o" : "ㄛ",
+ "e" : ("ㄜ", ("y", "ㄝ")), # y後面為ㄝ
+
+ # zh ch sh r z c s y後面為空
+ "i" : ("ㄧ", (("zh", "ch", "sh", "r", "z", "c", "s", "y"), "")),
+
+ # jqxy後面為ㄩ w後面為空
+ "u" : ("ㄨ", ("jqxy", "ㄩ")),
+ "v" : "ㄩ",
+ "ai" : "ㄞ",
+ "ei" : "ㄟ",
+ "ao" : "ㄠ",
+ "ou" : "ㄡ",
+ "an" : "ㄢ",
+ "en" : "ㄣ",
+ "ang" : "ㄤ",
+ "eng" : "ㄥ",
+ "er" : "ㄦ",
+ "ia" : "ㄧㄚ",
+ "ie" : "ㄧㄝ",
+ "iai" : "ㄧㄞ",
+ "iao" : "ㄧㄠ",
+ "iu" : "ㄧㄡ",
+ "ian" : "ㄧㄢ",
+ "in" : ("ㄧㄣ", ("y", "ㄣ")), #y後面為ㄣ
+ "iang" : "ㄧㄤ",
+ "ing" : ("ㄧㄥ", ("y", "ㄥ")), #y後面為ㄥ
+ "ua" : "ㄨㄚ",
+ "uo" : "ㄨㄛ",
+ "ue" : "ㄩㄝ",
+ # TODO: "ve" is OK?
+ "ve" : "ㄩㄝ",
+ "uai" : "ㄨㄞ",
+ "ui" : "ㄨㄟ",
+ "uan" : ("ㄨㄢ", ("jqxy", "ㄩㄢ")), # jqxy後面是ㄩㄢ
+ "un" : ("ㄨㄣ", ("jqxy", "ㄩㄣ")), # jqxy後面是ㄩㄣ
+ "uang" : ("ㄨㄤ", ("jqxy", "ㄩㄤ")), # jqxy後面是ㄩㄤ
+ "ong" : ("ㄨㄥ", ("jqxy", "ㄩㄥ")), # y後面為ㄩㄥ
+ "iong" : "ㄩㄥ",
+}
diff --git a/scripts/create_db.py b/scripts/create_db.py
new file mode 100644
index 0000000..e4826ae
--- /dev/null
+++ b/scripts/create_db.py
@@ -0,0 +1,94 @@
+import sqlite3
+from pydict import *
+from id import *
+import sys
+
+con1 = sqlite3.connect("py.db")
+con2 = sqlite3.connect("py-new.db")
+con2.execute ("PRAGMA synchronous = NORMAL;")
+con2.execute ("PRAGMA temp_store = MEMORY;")
+con2.execute ("PRAGMA default_cache_size = 5000;")
+
+sql = "CREATE TABLE py_phrase_%d (phrase TEXT, freq INTEGER, %s)"
+
+for i in range(0, 16):
+ column= []
+ for j in range(0, i + 1):
+ column.append ("s%d INTEGER" % j)
+ column.append ("y%d INTEGER" % j)
+ column = ",".join(column)
+ con2.execute(sql % (i, column))
+con2.commit()
+
+def get_sheng_yun(pinyin):
+ if pinyin == None:
+ return None, None
+ if pinyin == "ng":
+ return "", "en"
+ for i in xrange(2, 0, -1):
+ t = pinyin[:i]
+ if t in SHENGMU_DICT:
+ return t, pinyin[len(t):]
+ return "", pinyin
+
+def encode_pinyin(pinyin):
+ if pinyin == None or pinyin == "":
+ return 0
+ return pinyin_id[pinyin]
+ e = 0
+ for c in pinyin:
+ e = (e << 5) + (ord(c) - ord('a') + 1)
+ return e
+
+insert_sql = "INSERT INTO py_phrase_%d VALUES (%s);"
+con2.commit()
+new_freq = 0
+freq = 0
+
+print "INSERTING"
+for r in con1.execute("SELECT * FROM py_phrase ORDER BY freq"):
+ ylen = r[0]
+ phrase = r[10]
+ if r[11] > freq:
+ freq = r[11]
+ new_freq += 1
+
+ if ylen <= 4:
+ pys = map(lambda id: ID_PINYIN_DICT[id], r[1: 1 + ylen])
+ else:
+ pys = map(lambda id: ID_PINYIN_DICT[id], r[1: 5]) + r[5].encode("utf8").split("'")
+
+ i = ylen - 1
+ if i >= 15:
+ i = 15
+
+ pys = pys[0:16]
+
+ sheng_yun = []
+ for s, y in map(get_sheng_yun, pys):
+ sheng_yun.append(s)
+ sheng_yun.append(y)
+
+
+ column = [phrase, new_freq] + map(encode_pinyin, sheng_yun)
+
+ sql = insert_sql % (i, ",".join(["?"] * len(column)))
+ con2.execute (sql, column)
+
+print "Remove duplicate"
+for i in xrange(0, 16):
+ sql = "DELETE FROM py_phrase_%d WHERE rowid IN (SELECT rowid FROM (SELECT count() as count, rowid FROM py_phrase_%d GROUP by %s,phrase) WHERE count > 1)" % (i, i, ",".join(map(lambda i: "s%d,y%d"%(i,i), range(0, i + 1))))
+ con2.execute(sql)
+con2.commit()
+print "CACUUM"
+con2.execute("VACUUM;")
+con2.commit()
+
+# con2.execute("create index index_0_0 on py_phrase_0(s0, y0)")
+#
+# for i in xrange(1, 16):
+# con2.execute("create index index_%d_0 on py_phrase_%d(s0, y0, s1, y1)" % (i, i))
+# con2.execute("create index index_%d_1 on py_phrase_%d(s0, s1, y1)" % (i, i))
+#
+# con2.execute("vacuum")
+# con2.commit()
diff --git a/scripts/create_index.py b/scripts/create_index.py
new file mode 100644
index 0000000..823e616
--- /dev/null
+++ b/scripts/create_index.py
@@ -0,0 +1,21 @@
+import sqlite3
+
+con2 = sqlite3.connect("py-new.db")
+con2.execute ("PRAGMA synchronous = NORMAL;")
+con2.execute ("PRAGMA temp_store = MEMORY;")
+
+
+con2.execute("CREATE INDEX index_0_0 ON py_phrase_0(s0, y0)")
+print "py_phrase_%d done" % 0
+
+con2.execute("CREATE INDEX index_1_0 ON py_phrase_1(s0, y0, s1, y1)")
+con2.execute("CREATE INDEX index_1_1 ON py_phrase_1(s0, s1, y1)")
+print "py_phrase_%d done" % 1
+
+for i in xrange(2, 16):
+ con2.execute("CREATE INDEX index_%d_0 ON py_phrase_%d(s0, y0, s1, y1, s2, y2)" % (i, i))
+ con2.execute("CREATE INDEX index_%d_1 ON py_phrase_%d(s0, s1, s2, y2)" % (i, i))
+ print "py_phrase_%d done" % i
+
+# con2.execute("vacuum")
+con2.commit()
diff --git a/scripts/create_unique_index.py b/scripts/create_unique_index.py
new file mode 100644
index 0000000..e22d986
--- /dev/null
+++ b/scripts/create_unique_index.py
@@ -0,0 +1,27 @@
+import sqlite3
+
+con2 = sqlite3.connect("py-new.db")
+con2.execute ("PRAGMA synchronous = NORMAL;")
+con2.execute ("PRAGMA temp_store = MEMORY;")
+
+
+con2.execute("CREATE UNIQUE INDEX IF NOT EXISTS index_0_0 ON py_phrase_0(s0, y0, phrase)")
+print "py_phrase_%d done" % 0
+
+con2.execute("CREATE UNIQUE INDEX IF NOT EXISTS index_1_0 ON py_phrase_1(s0, y0, s1, y1, phrase)")
+con2.execute("CREATE INDEX IF NOT EXISTS index_1_1 ON py_phrase_1(s0, s1, y1)")
+print "py_phrase_%d done" % 1
+
+for i in xrange(2, 16):
+ sql = "CREATE UNIQUE INDEX IF NOT EXISTS index_%d_0 ON py_phrase_%d (" % (i, i)
+ sql = sql + "s0,y0"
+ for j in xrange(1, i + 1):
+ sql = sql + ",s%d,y%d" % (j, j)
+ sql = sql + ", phrase)"
+ print sql
+ con2.execute(sql)
+ con2.execute("CREATE INDEX IF NOT EXISTS index_%d_1 ON py_phrase_%d(s0, s1, s2, y2)" % (i, i))
+ print "py_phrase_%d done" % i
+
+# con2.execute("vacuum")
+con2.commit()
diff --git a/scripts/double.py b/scripts/double.py
new file mode 100644
index 0000000..58ad664
--- /dev/null
+++ b/scripts/double.py
@@ -0,0 +1,40 @@
+import pydict
+
+for name, (sheng, yun) in pydict.SHUANGPIN_SCHEMAS:
+ print "static const gint8 double_pinyin_%s_sheng[] = {" % name.lower()
+ for c in "abcdefghijklmnopqrstuvwxyz;":
+ s = sheng.get(c, "VOID")
+ if s == "'":
+ s = "ZERO"
+ else:
+ s = s.upper()
+ if s == "VOID" and c in ("a", "e", "o"):
+ s = "AEO"
+ print " PINYIN_ID_%s // %s" % ((s + ",").ljust(5), c.upper())
+ print "};"
+
+ print "static const gint8 double_pinyin_%s_yun[][2] = {" % name.lower()
+ for c in "abcdefghijklmnopqrstuvwxyz;":
+ s = yun.get(c, ("VOID", "VOID"))
+ if len(s) == 1:
+ s1 = s[0]
+ s2 = "VOID"
+ else:
+ s1, s2 = s
+ if s1 == "'":
+ s1 = "ZERO"
+ if s2 == "'":
+ s2 = "ZERO"
+ s1 = s1.upper()
+ s2 = s2.upper()
+ print " { PINYIN_ID_%s PINYIN_ID_%s }, // %s" % ((s1 + ",").ljust(5), s2.ljust(4), c.upper())
+ print "};"
+
+print '''
+static const struct {
+ const gint8 (&sheng)[27];
+ const gint8 (&yun)[27][2];
+} double_pinyin_map [] = {'''
+for name, (sheng, yun) in pydict.SHUANGPIN_SCHEMAS:
+ print " { double_pinyin_%s_sheng, double_pinyin_%s_yun}," % (name.lower(), name.lower())
+print "};"
diff --git a/scripts/genbopomofokeyboard.py b/scripts/genbopomofokeyboard.py
new file mode 100644
index 0000000..5ad0676
--- /dev/null
+++ b/scripts/genbopomofokeyboard.py
@@ -0,0 +1,100 @@
+# vim:set et sts=4:
+# -*- coding: utf-8 -*-
+
+bopomofo = [
+"BOPOMOFO_ZERO",
+"BOPOMOFO_B",
+"BOPOMOFO_P",
+"BOPOMOFO_M",
+"BOPOMOFO_F",
+"BOPOMOFO_D",
+"BOPOMOFO_T",
+"BOPOMOFO_N",
+"BOPOMOFO_L",
+"BOPOMOFO_G",
+"BOPOMOFO_K",
+"BOPOMOFO_H",
+"BOPOMOFO_J",
+"BOPOMOFO_Q",
+"BOPOMOFO_X",
+"BOPOMOFO_ZH",
+"BOPOMOFO_CH",
+"BOPOMOFO_SH",
+"BOPOMOFO_R",
+"BOPOMOFO_Z",
+"BOPOMOFO_C",
+"BOPOMOFO_S",
+"BOPOMOFO_I",
+"BOPOMOFO_U",
+"BOPOMOFO_V",
+"BOPOMOFO_A",
+"BOPOMOFO_O",
+"BOPOMOFO_E",
+"BOPOMOFO_E2",
+"BOPOMOFO_AI",
+"BOPOMOFO_EI",
+"BOPOMOFO_AO",
+"BOPOMOFO_OU",
+"BOPOMOFO_AN",
+"BOPOMOFO_EN",
+"BOPOMOFO_ANG",
+"BOPOMOFO_ENG",
+"BOPOMOFO_ER",
+"BOPOMOFO_TONE_2",
+"BOPOMOFO_TONE_3",
+"BOPOMOFO_TONE_4",
+"BOPOMOFO_TONE_5",
+]
+
+bopomofo_keyboard = (
+ #標準注音鍵盤
+ (
+ "1","q","a","z","2","w","s","x","e","d","c","r","f","v","5","t","g","b","y","h","n",
+ "u","j","m","8","i","k",",","9","o","l",".","0","p",";","/","-",
+ "6","3","4","7",
+ ),
+ #精業注音鍵盤
+ (
+ "2","w","s","x","3","e","d","c","r","f","v","t","g","b","6","y","h","n","u","j","m",
+ "-","[","'","8","i","k",",","9","o","l",".","0","p",";","/","=",
+ "q","a","z","1",
+ ),
+ #倚天注音鍵盤
+ (
+ "b","p","m","f","d","t","n","l","v","k","h","g","7","c",",",".","/","j",";","'","s",
+ "e","x","u","a","o","r","w","i","q","z","y","8","9","0","-","=",
+ "2","3","4","1",
+ ),
+ #IBM注音鍵盤
+ (
+ "1","2","3","4","5","6","7","8","9","0","-","q","w","e","r","t","y","u","i","o","p",
+ "a","s","d","f","g","h","j","k","l",";","z","x","c","v","b","n",
+ "m",",",".","/",
+ ),
+)
+
+def tochar(ch):
+ if ch == "'" or ch == "\\":
+ ch = "\\" + ch;
+ return "'" + ch + "'"
+
+def gen_table():
+ i = 0
+ print 'static const guint8'
+ print 'bopomofo_keyboard[][41][2] = {'
+ for keyboard in bopomofo_keyboard:
+ print ' {'
+ items = []
+ i=1
+ for v in keyboard:
+ items.append ((v,bopomofo[i]));
+ i += 1
+ items.sort()
+ for k,v in items:
+ print ' { %-4s, %-15s },' % (tochar(k),v)
+ print ' },'
+ print '};'
+ print
+
+if __name__ == "__main__":
+ gen_table()
diff --git a/scripts/genpuncttable.py b/scripts/genpuncttable.py
new file mode 100644
index 0000000..b852ec6
--- /dev/null
+++ b/scripts/genpuncttable.py
@@ -0,0 +1,32 @@
+# vim:set et sts=4:
+# -*- coding: utf-8 -*-
+
+from punct import *
+
+def tocstr(s):
+ s = s.replace('\\', '\\\\')
+ s = s.replace('"', '\\"')
+ return '"%s"' % s
+
+def gen_table():
+ array = []
+ i = 0
+ print 'static const gchar * const'
+ print 'puncts[] = {'
+ for k, vs in punct_map:
+ k = tocstr(k)
+ vs = map(tocstr, vs)
+ array.append((i, k))
+ line = ' %s, %s, NULL,' % (k, ", ".join(vs))
+ print line.encode("utf8")
+ i += len(vs) + 2
+ print '};'
+ print
+ print 'static const gchar * const * const'
+ print 'punct_table[] = {'
+ for i, k in array:
+ print ' &puncts[%d], // %s' % (i, k)
+ print '};'
+
+if __name__ == "__main__":
+ gen_table()
diff --git a/scripts/genpytable.py b/scripts/genpytable.py
new file mode 100644
index 0000000..5dfe2d0
--- /dev/null
+++ b/scripts/genpytable.py
@@ -0,0 +1,439 @@
+# vim:set et sts=4:
+# -*- coding: utf-8 -*-
+
+from pydict import *
+from bopomofo import *
+
+def str_cmp(a, b):
+ if len(a) == len(b):
+ return cmp(a, b)
+ else:
+ return len(a) - len(b)
+
+pinyin_list = PINYIN_DICT.keys()
+pinyin_list.sort()
+
+shengmu_list = SHENGMU_DICT.keys()
+shengmu_list.remove("")
+shengmu_list.sort()
+
+auto_correct = [
+ # "correct", "wrong"
+ ("ng", "gn"),
+ ("ng", "mg"),
+ ("iu", "iou"),
+ ("ui", "uei"),
+ ("un", "uen"),
+# ("ue", "ve"),
+ ("ve", "ue"),
+ ("ong", "on"),
+]
+
+auto_correct_ext = [
+ # "correct", "wrong", flag
+ ("ju", "jv", "PINYIN_CORRECT_V_TO_U"),
+ ("qu", "qv", "PINYIN_CORRECT_V_TO_U"),
+ ("xu", "xv", "PINYIN_CORRECT_V_TO_U"),
+ ("yu", "yv", "PINYIN_CORRECT_V_TO_U"),
+
+ ("jue", "jve", "PINYIN_CORRECT_V_TO_U"),
+ ("que", "qve", "PINYIN_CORRECT_V_TO_U"),
+ ("xue", "xve", "PINYIN_CORRECT_V_TO_U"),
+ ("yue", "yve", "PINYIN_CORRECT_V_TO_U"),
+
+ ("juan", "jvan", "PINYIN_CORRECT_V_TO_U"),
+ ("quan", "qvan", "PINYIN_CORRECT_V_TO_U"),
+ ("xuan", "xvan", "PINYIN_CORRECT_V_TO_U"),
+ ("yuan", "yvan", "PINYIN_CORRECT_V_TO_U"),
+
+ ("jun", "jvn", "PINYIN_CORRECT_V_TO_U"),
+ ("qun", "qvn", "PINYIN_CORRECT_V_TO_U"),
+ ("xun", "xvn", "PINYIN_CORRECT_V_TO_U"),
+ ("yun", "yvn", "PINYIN_CORRECT_V_TO_U"),
+
+ ("juang", "jvang", "PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U"),
+ ("quang", "qvang", "PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U"),
+ ("xuang", "xvang", "PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U"),
+ ("yuang", "yvang", "PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U"),
+
+ ("jun", "jven", "PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U"),
+ ("qun", "qven", "PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U"),
+ ("xun", "xven", "PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U"),
+ ("yun", "yven", "PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U"),
+]
+
+fuzzy_shengmu = [
+ ("c", "ch"),
+ ("ch", "c"),
+ ("z", "zh"),
+ ("zh", "z"),
+ ("s", "sh"),
+ ("sh", "s"),
+ ("l", "n"),
+ ("n", "l"),
+ ("f", "h"),
+ ("h", "f"),
+ ("l", "r"),
+ ("r", "l"),
+ ("k", "g"),
+ ("g", "k"),
+]
+
+fuzzy_yunmu = [
+ ("an", "ang"),
+ ("ang", "an"),
+ ("en", "eng"),
+ ("eng", "en"),
+ ("in", "ing"),
+ ("ing", "in"),
+ ("ian", "iang"),
+ ("iang", "ian"),
+ ("uan", "uang"),
+ ("uang", "uan"),
+]
+
+def get_sheng_yun(pinyin):
+ if pinyin == None:
+ return None, None
+ if pinyin == "ng":
+ return "", "ng"
+ for i in range(2, 0, -1):
+ s = pinyin[:i]
+ if s in shengmu_list:
+ return s, pinyin[i:]
+ return "", pinyin
+
+yunmu_list = set([])
+for p in pinyin_list:
+ s, y = get_sheng_yun(p)
+ yunmu_list |= set([y])
+yunmu_list = list(yunmu_list)
+yunmu_list.sort()
+
+shengmu_yunmu_list = shengmu_list + yunmu_list
+id_dict = {}
+for i, y in enumerate(shengmu_yunmu_list):
+ id_dict[y] = i + 1
+
+fuzzy_shengmu_dict = {}
+for s1, s2 in fuzzy_shengmu:
+ if s1 not in fuzzy_shengmu_dict:
+ fuzzy_shengmu_dict[s1] = []
+ fuzzy_shengmu_dict[s1].append(s2)
+
+fuzzy_yunmu_dict = {}
+for y1, y2 in fuzzy_yunmu:
+ if y1 not in fuzzy_yunmu_dict:
+ fuzzy_yunmu_dict[y1] = []
+ fuzzy_yunmu_dict[y1].append(y2)
+
+def encode_pinyin(pinyin):
+ if pinyin == None or pinyin == "":
+ return 0
+ return id_dict[pinyin]
+
+ e = 0
+ for c in pinyin:
+ e = (e << 5) + (ord(c) - ord('a') + 1)
+ return e
+
+def get_pinyin():
+ for p in pinyin_list:
+ s, y = get_sheng_yun(p)
+ yield p, s, y, len(p), []
+
+ for s in shengmu_list:
+ yield s, s, "", len(s), ["PINYIN_INCOMPLETE_PINYIN"]
+
+ for c, w in auto_correct:
+ flag = "PINYIN_CORRECT_%s_TO_%s" % (w.upper(), c.upper())
+ for p in pinyin_list:
+ if p.endswith(c) and p != c:
+ wp = p.replace(c, w)
+ s, y = get_sheng_yun(p)
+ yield wp, s, y, len(wp), [flag]
+
+ for c, w, flag in auto_correct_ext:
+ s, y = get_sheng_yun(c)
+ yield w, s, y, len(w), [flag]
+
+ for s1, s2 in fuzzy_shengmu:
+ flag = "PINYIN_FUZZY_%s_%s" % (s1.upper(), s2.upper())
+ for y in yunmu_list:
+ if s1 + y not in pinyin_list and s2 + y in pinyin_list:
+ yield s1 + y, s1, y, len(s1) + len(y), [flag]
+ for c, w in auto_correct:
+ if s1 + w not in pinyin_list and \
+ s1 + c not in pinyin_list and \
+ s2 + w not in pinyin_list and \
+ s2 + c in pinyin_list:
+ flag_correct = "PINYIN_CORRECT_%s_TO_%s" % (w.upper(), c.upper())
+ yield s1 + w, s1, c, len(s2) + len(w), ["%s | %s" % (flag, flag_correct)]
+
+ # if s2 + y not in pinyin_list and s1 + y in pinyin_list:
+ # yield s2 + y, s2, y, len (s2) + len(y), [flag]
+
+ for y1, y2 in fuzzy_yunmu:
+ flag = "PINYIN_FUZZY_%s_%s" % (y1.upper(), y2.upper())
+ for s in shengmu_list:
+ if s + y1 not in pinyin_list and s + y2 in pinyin_list:
+ yield s + y1, s, y1, len(s) + len(y1), [flag]
+ # if s + y2 not in pinyin_list and s + y1 in pinyin_list:
+ # yield s + y2, s, y2, len(s) + len(y2), [flag]
+
+
+def get_pinyin_with_fuzzy():
+ for text, s, y, l, flags in get_pinyin():
+ fss = fuzzy_shengmu_dict.get(s, ["", ""])
+ fys = fuzzy_yunmu_dict.get(y, ["", ""])
+
+ try:
+ fs1, fs2 = fss
+ except:
+ fs1, fs2 = fss[0], ""
+
+ try:
+ fy1, fy2 = fys
+ except:
+ fy1, fy2 = fys[0], ""
+
+ if fs1 and \
+ (fs1 + y not in pinyin_list) and \
+ (fy1 and fs1 + fy1 not in pinyin_list) and \
+ (fy2 and fs1 + fy2 not in pinyin_list):
+ fs1 = ""
+
+ if fs2 and \
+ (fs2 + y not in pinyin_list) and \
+ (fy1 and fs2 + fy1 not in pinyin_list) and \
+ (fy2 and fs2 + fy2 not in pinyin_list):
+ fs2 = ""
+
+ if fy1 and \
+ (s + fy1 not in pinyin_list) and \
+ (fs1 and fs1 + fy1 not in pinyin_list) and \
+ (fs2 and fs2 + fy1 not in pinyin_list):
+ fy1 = ""
+
+ if fy2 and \
+ (s + fy2 not in pinyin_list) and \
+ (fs1 and fs1 + fy2 not in pinyin_list) and \
+ (fs2 and fs2 + fy2 not in pinyin_list):
+ fy2 = ""
+
+ bopomofo = pinyin_bopomofo_map.get(text, "")
+
+ if bopomofo == "":
+ if all([f.startswith("PINYIN_FUZZY_") for f in flags[0].split(" | ")]):
+ #if it is fuzzy pinyin or normal pinyin
+ if s in sheng_yun_bopomofo_map and y in sheng_yun_bopomofo_map:
+ if isinstance(sheng_yun_bopomofo_map[s], str):
+ bopomofo = sheng_yun_bopomofo_map[s]
+ else:
+ if y in sheng_yun_bopomofo_map[s][1][0]:
+ bopomofo += sheng_yun_bopomofo_map[s][1][1]
+ else:
+ bopomofo += sheng_yun_bopomofo_map[s][0]
+
+ if isinstance(sheng_yun_bopomofo_map[y], str):
+ bopomofo += sheng_yun_bopomofo_map[y]
+ else:
+ if s in sheng_yun_bopomofo_map[y][1][0]:
+ bopomofo += sheng_yun_bopomofo_map[y][1][1]
+ else:
+ bopomofo += sheng_yun_bopomofo_map[y][0]
+ else:
+ print text
+
+ yield text, bopomofo, s, y, fs1, fy1, fs2, fy2, l, flags
+
+
+def gen_header():
+ print '''/* Please do not modify this file. It is generated by script */
+#include "Types.h"
+
+namespace PY {
+'''
+
+def gen_macros():
+ print '#define PINYIN_ID_VOID (-1)'
+ print '#define PINYIN_ID_ZERO (0)'
+ for y in shengmu_list:
+ print '#define PINYIN_ID_%s (%d)' % (y.upper(), encode_pinyin(y))
+
+ for y in yunmu_list:
+ print '#define PINYIN_ID_%s (%d)' % (y.upper(), encode_pinyin(y))
+ print
+ print
+ print
+
+def gen_option_check(name, fuzzy):
+ print '''static gboolean
+%s (guint option, gint id, gint fid)
+{
+ switch ((id << 16) | fid) {''' % name
+ for y1, y2 in fuzzy:
+ flag = "PINYIN_FUZZY_%s_%s" % (y1.upper(), y2.upper())
+ args = tuple(["PINYIN_ID_%s" % y.upper() for y in [y1, y2]]) + (flag, )
+ print ''' case (%s << 16) | %s:
+ return (option & %s);''' % args
+
+ print ' default: return FALSE;'
+ print ' }'
+ print '}'
+
+def union_dups(a):
+ n = {}
+ for r in a:
+ if r[:-1] in n:
+ n[r[:-1]] += r[-1]
+ else:
+ n[r[:-1]] = r[-1]
+ na = []
+ for k, flags in n.items():
+ na.append (tuple(list(k) + [" | ".join(flags) if flags else "0"]))
+ na.sort()
+ return na
+
+def gen_table():
+
+ pinyins = list(get_pinyin_with_fuzzy())
+ pinyins = union_dups(pinyins)
+
+ print 'static const Pinyin pinyin_table[] = {'
+ for i, (text, bopomofo, s, y, fs1, fy1, fs2, fy2, l, flags) in enumerate(pinyins):
+ s_id = "PINYIN_ID_%s" % s.upper() if s else "PINYIN_ID_ZERO"
+ y_id = "PINYIN_ID_%s" % y.upper() if y else "PINYIN_ID_ZERO"
+ fs1_id = "PINYIN_ID_%s" % fs1.upper() if fs1 else "PINYIN_ID_ZERO"
+ fy1_id = "PINYIN_ID_%s" % fy1.upper() if fy1 else "PINYIN_ID_ZERO"
+ fs2_id = "PINYIN_ID_%s" % fs2.upper() if fs2 else "PINYIN_ID_ZERO"
+ fy2_id = "PINYIN_ID_%s" % fy2.upper() if fy2 else "PINYIN_ID_ZERO"
+
+ # args = (i, ) + tuple(['"%s"' % s for s in p[:3]]) + tuple(["PINYIN_ID_%s" % s.upper() if s else "PINYIN_ID_ZERO" for s in p[3:9]]) + p[9:-1] + (str(p[-1]), )
+ print ''' { /* %d */
+ text : "%s",
+ bopomofo : L"%s",
+ sheng : "%s",
+ yun : "%s",
+ pinyin_id : {{ %s, %s }, { %s, %s }, { %s, %s }},
+ len : %d,
+ flags : %s
+ },''' % (i, text, bopomofo, s, y.replace("v", "ü"), s_id, y_id, fs1_id, fy1_id, fs2_id, fy2_id, l, flags)
+
+ print '};'
+ print
+
+ return pinyins
+
+def gen_bopomofo_table(pinyins):
+ bopomofo_table = [ (i, p) for i, p in enumerate(pinyins)]
+ bopomofo_table.sort(lambda a, b: cmp(a[1][1], b[1][1]))
+ print 'static const Pinyin *bopomofo_table[] = {'
+ for i, p in bopomofo_table:
+ if p[1]:
+ print ' %-20s %s' % ('&pinyin_table[%d],' % i, '// "%s" => "%s"' % (p[1], p[0]))
+ print '};'
+ print
+
+def get_all_special(pinyins):
+ for p in pinyins:
+ if p[-1] in ["n", "g", "r"]:
+ for yun in yunmu_list:
+ if yun not in pinyin_list:
+ continue
+ new_pinyin = p[-1] + yun
+ # if new_pinyin in pinyin_list:
+ yield p, yun, p[:-1], new_pinyin
+ elif p[-1] in ["e"]:
+ yield p, "r", p[:-1], "er"
+
+def get_max_freq_2(db, p1, p2):
+ s1, y1 = get_sheng_yun(p1)
+ s2, y2 = get_sheng_yun(p2)
+
+ sql = "select max(freq), phrase from py_phrase_1 where s0 = %d and y0 = %d and s1 = %d and y1 = %d"
+
+ c = db.execute(sql % (encode_pinyin(s1), encode_pinyin(y1), encode_pinyin(s2), encode_pinyin(y2)))
+ for r in c:
+ return r[0]
+ return 0
+
+def get_max_freq_1(db, p1):
+ s1, y1 = get_sheng_yun(p1)
+
+ sql = "select max(freq), phrase from py_phrase_0 where s0 = %d and y0 = %d"
+
+ c = db.execute(sql % (encode_pinyin(s1), encode_pinyin(y1)))
+ for r in c:
+ return r[0] if r[0] else 0
+ return 0
+
+def compaired_special(pinyins):
+ import sqlite3
+ db = sqlite3.connect("open-phrase.db")
+ # db = sqlite3.connect("main.db")
+
+ for p1, p2, p3, p4 in get_all_special(pinyins):
+ if p3 not in pinyin_list or p4 not in pinyin_list:
+ continue
+ if p1 not in pinyin_list or p2 not in pinyin_list:
+ yield p1, p2, p3, p4
+ continue
+
+ if p3 not in pinyin_list or p4 not in pinyin_list:
+ continue
+
+ a1 = get_max_freq_2(db, p1, p2)
+ a2 = get_max_freq_2(db, p3, p4)
+ if a1 == a2:
+ a1 = get_max_freq_1(db, p1) + get_max_freq_1(db, p2)
+ a2 = get_max_freq_1(db, p3) + get_max_freq_1(db, p4)
+ if a1 < a2:
+ yield p1, p2, p3, p4
+
+def gen_full_pinyin_table(pinyins):
+ _dict = {}
+ for i in xrange(0, len(pinyins)):
+ _dict[pinyins[i]] = i
+ full_pinyin = []
+ for i in xrange(0, len(pinyins)):
+ if pinyins[i][0] in pinyin_list:
+ full_pinyin.append (pinyins[i])
+ full_pinyin.sort(lambda a, b: (cmp(a[1], b[1]) << 16) + cmp(a[2],b[4]))
+ print 'static const Pinyin *full_pinyin_table[] = {'
+ for p in full_pinyin:
+ print " &pinyin_table[%d], // %s" % (_dict[p], p[0])
+ print '};'
+ print
+
+
+def gen_special_table(pinyins):
+ _dict = {}
+ for i in xrange(0, len(pinyins)):
+ _dict[pinyins[i][0]] = i
+
+ l = list(compaired_special(_dict.keys()))
+ l.sort()
+ print 'static const Pinyin *special_table[][4] = {'
+ for r in l:
+ ids = [("&pinyin_table[%d]," % _dict[py]).ljust(20) for py in r]
+
+ print ' { %s %s %s %s },' % tuple(ids), "/* %s %s => %s %s */" % r
+ print '};'
+ print
+
+
+def main():
+ # gen_header()
+ # gen_macros()
+ pinyins = gen_table()
+ # gen_full_pinyin_table (pinyins)
+ gen_bopomofo_table(pinyins)
+ gen_special_table(pinyins)
+ # gen_option_check("pinyin_option_check_sheng", fuzzy_shengmu)
+ # gen_option_check("pinyin_option_check_yun", fuzzy_yunmu)
+
+
+if __name__ == "__main__":
+ main()
+
diff --git a/scripts/gensimptradtable.py b/scripts/gensimptradtable.py
new file mode 100644
index 0000000..f0afb4e
--- /dev/null
+++ b/scripts/gensimptradtable.py
@@ -0,0 +1,11 @@
+import sctc
+items = sctc.S_2_T.items()
+items.sort()
+print "const gunichar simp_to_trad[][2] = {"
+for s, t in items:
+ print " { 0x%x, 0x%x }, // %s => %s" % (ord(s), ord(t[0]), s.encode("utf8"), t[0].encode("utf8"))
+print "};"
+
+print '#define SIMP_TO_TRAD_NR (sizeof (simp_to_trad) / sizeof (simp_to_trad[0]))'
+print
+
diff --git a/scripts/header b/scripts/header
new file mode 100644
index 0000000..4148767
--- /dev/null
+++ b/scripts/header
@@ -0,0 +1,20 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
diff --git a/scripts/id.py b/scripts/id.py
new file mode 100644
index 0000000..201a3cd
--- /dev/null
+++ b/scripts/id.py
@@ -0,0 +1 @@
+pinyin_id = {'': 0, 'ch': 3, 'zh': 23, 'ai': 25, 'uan': 50, 'iu': 43, 'ong': 45, 'ao': 28, 'an': 26, 'uai': 49, 'ang': 27, 'iong': 42, 'in': 40, 'ia': 35, 'ei': 30, 'ing': 41, 'ie': 39, 'er': 33, 'iao': 38, 'ian': 36, 'eng': 32, 'iang': 37, 'uo': 55, 'r': 15, 'en': 31, 'ui': 53, 'un': 54, 'ue': 52, 'uang': 51, 'a': 24, 'c': 2, 'b': 1, 'e': 29, 'd': 4, 'g': 6, 'f': 5, 'i': 34, 'h': 7, 'k': 9, 'j': 8, 'm': 11, 'l': 10, 'o': 44, 'n': 12, 'q': 14, 'p': 13, 's': 16, 'sh': 17, 'u': 47, 't': 18, 'w': 19, 'v': 56, 'y': 21, 'x': 20, 'ou': 46, 'z': 22, 'ua': 48}
diff --git a/scripts/php_2_py.php b/scripts/php_2_py.php
new file mode 100644
index 0000000..e53a535
--- /dev/null
+++ b/scripts/php_2_py.php
@@ -0,0 +1,21 @@
+<?php
+include("ZhConversion.php");
+
+echo "# -*- coding: utf-8 -*- \n";
+
+function printDict($name, $dict) {
+ echo "$name = {\n";
+ foreach($dict as $key => $val) {
+ echo " u\"", $key, "\": u\"", $val, "\",\n";
+ }
+ echo "}\n";
+ echo "\n";
+}
+
+printDict("zh2Hant", $zh2Hant);
+printDict("zh2Hans", $zh2Hans);
+printDict("zh2TW", $zh2TW);
+printDict("zh2HK", $zh2HK);
+printDict("zh2CN", $zh2CN);
+printDict("zh2SG", $zh2SG);
+?>
diff --git a/scripts/punct.py b/scripts/punct.py
new file mode 100644
index 0000000..8ea2478
--- /dev/null
+++ b/scripts/punct.py
@@ -0,0 +1,100 @@
+# vim:set et sts=4:
+# -*- coding: utf-8 -*-
+
+punct_map = (
+ (u'', (u'·', u',', u'。', u'「', u'」', u'、', u':', u';', u'?', u'!',)),
+ (u'!', (u'!', u'﹗', u'‼', u'⁉',)),
+ (u'"', (u'“', u'”', u'"',)),
+ (u'#', (u'#', u'﹟', u'♯',)),
+ (u'$', (u'$', u'€', u'﹩', u'¢', u'£', u'¥',)),
+ (u'%', (u'%', u'﹪', u'‰', u'‱', u'㏙', u'㏗',)),
+ (u'&', (u'&', u'﹠',)),
+ (u'\'', (u'、', u'‘', u'’',)),
+ (u'(', (u'(', u'︵', u'﹙',)),
+ (u')', (u')', u'︶', u'﹚',)),
+ (u'*', (u'*', u'×', u'※', u'╳', u'﹡', u'⁎', u'⁑', u'⁂', u'⌘',)),
+ (u'+', (u'+', u'±', u'﹢',)),
+ (u',', (u',', u'、', u'﹐', u'﹑',)),
+ (u'-', (u'…', u'—', u'-', u'¯', u'﹉', u' ̄', u'﹊', u'ˍ', u'–', u'‥',)),
+ (u'.', (u'。', u'·', u'‧', u'﹒', u'.',)),
+ (u'/', (u'/', u'÷', u'↗', u'↙', u'∕',)),
+ (u'0', (u'0', u'0')),
+ (u'1', (u'1', u'1')),
+ (u'2', (u'2', u'2')),
+ (u'3', (u'3', u'3')),
+ (u'4', (u'4', u'4')),
+ (u'5', (u'5', u'5')),
+ (u'6', (u'6', u'6')),
+ (u'7', (u'7', u'7')),
+ (u'8', (u'8', u'8')),
+ (u'9', (u'9', u'9')),
+ (u':', (u':', u'︰', u'﹕',)),
+ (u';', (u';', u'﹔',)),
+ (u'<', (u'<', u'〈', u'《', u'︽', u'︿', u'﹤',)),
+ (u'=', (u'=', u'≒', u'≠', u'≡', u'≦', u'≧', u'﹦',)),
+ (u'>', (u'>', u'〉', u'》', u'︾', u'﹀', u'﹥',)),
+ (u'?', (u'?', u'﹖', u'⁇', u'⁈',)),
+ (u'@', (u'@', u'⊕', u'⊙', u'㊣', u'﹫', u'◉', u'◎',)),
+ (u'A', (u'A', u'A')),
+ (u'B', (u'B', u'B')),
+ (u'C', (u'C', u'C')),
+ (u'D', (u'D', u'D')),
+ (u'E', (u'E', u'E')),
+ (u'F', (u'F', u'F')),
+ (u'G', (u'G', u'G')),
+ (u'H', (u'H', u'H')),
+ (u'I', (u'I', u'I')),
+ (u'J', (u'J', u'J')),
+ (u'K', (u'K', u'K')),
+ (u'L', (u'L', u'L')),
+ (u'M', (u'M', u'M')),
+ (u'N', (u'N', u'N')),
+ (u'O', (u'O', u'O')),
+ (u'P', (u'P', u'P')),
+ (u'Q', (u'Q', u'Q')),
+ (u'R', (u'R', u'R')),
+ (u'S', (u'S', u'S')),
+ (u'T', (u'T', u'T')),
+ (u'U', (u'U', u'U')),
+ (u'V', (u'V', u'V')),
+ (u'W', (u'W', u'W')),
+ (u'X', (u'X', u'X')),
+ (u'Y', (u'Y', u'Y')),
+ (u'Z', (u'Z', u'Z')),
+ (u'[', (u'「', u'[', u'『', u'【', u'「', u'︻', u'﹁', u'﹃',)),
+ (u'\\', (u'\', u'↖', u'↘', u'﹨',)),
+ (u']', (u'」', u']', u'』', u'】', u'」', u'︼', u'﹂', u'﹄',)),
+ (u'^', (u'︿', u'〈', u'《', u'︽', u'﹤', u'<',)),
+ (u'_', (u'_', u'╴', u'←', u'→',)),
+ (u'`', (u'‵', u'′',)),
+ (u'a', (u'a', u'a')),
+ (u'b', (u'b', u'b')),
+ (u'c', (u'c', u'c')),
+ (u'd', (u'd', u'd')),
+ (u'e', (u'e', u'e')),
+ (u'f', (u'f', u'f')),
+ (u'g', (u'g', u'g')),
+ (u'h', (u'h', u'h')),
+ (u'i', (u'i', u'i')),
+ (u'j', (u'j', u'j')),
+ (u'k', (u'k', u'k')),
+ (u'l', (u'l', u'l')),
+ (u'm', (u'm', u'm')),
+ (u'n', (u'n', u'n')),
+ (u'o', (u'o', u'o')),
+ (u'p', (u'p', u'p')),
+ (u'q', (u'q', u'q')),
+ (u'r', (u'r', u'r')),
+ (u's', (u's', u's')),
+ (u't', (u't', u't')),
+ (u'u', (u'u', u'u')),
+ (u'v', (u'v', u'v')),
+ (u'w', (u'w', u'w')),
+ (u'x', (u'x', u'x')),
+ (u'y', (u'y', u'y')),
+ (u'z', (u'z', u'z')),
+ (u'{', (u'{', u'︷', u'﹛', u'〔', u'﹝', u'︹',)),
+ (u'|', (u'|', u'↑', u'↓', u'∣', u'∥', u'︱', u'︳', u'︴', u'¦',)),
+ (u'}', (u'}', u'︸', u'﹜', u'〕', u'﹞', u'︺',)),
+ (u'~', (u'~', u'﹋', u'﹌',)),
+)
diff --git a/scripts/pydict.py b/scripts/pydict.py
new file mode 100644
index 0000000..456140d
--- /dev/null
+++ b/scripts/pydict.py
@@ -0,0 +1,407 @@
+# -*- coding: utf-8 -*-
+# vim:set et sts=4 sw=4:
+#
+# ibus-pinyin - The PinYin engine for IBus
+#
+# Copyright (c) 2007-2008 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+N_ = lambda x : x
+PINYIN_DICT = {
+ "a" : 1, "ai" : 2, "an" : 3, "ang" : 4, "ao" : 5,
+ "ba" : 6, "bai" : 7, "ban" : 8, "bang" : 9, "bao" : 10,
+ "bei" : 11, "ben" : 12, "beng" : 13, "bi" : 14, "bian" : 15,
+ "biao" : 16, "bie" : 17, "bin" : 18, "bing" : 19, "bo" : 20,
+ "bu" : 21, "ca" : 22, "cai" : 23, "can" : 24, "cang" : 25,
+ "cao" : 26, "ce" : 27, "cen" : 28, "ceng" : 29, "ci" : 30,
+ "cong" : 31, "cou" : 32, "cu" : 33, "cuan" : 34, "cui" : 35,
+ "cun" : 36, "cuo" : 37, "cha" : 38, "chai" : 39, "chan" : 40,
+ "chang" : 41, "chao" : 42, "che" : 43, "chen" : 44, "cheng" : 45,
+ "chi" : 46, "chong" : 47, "chou" : 48, "chu" : 49, "chuai" : 50,
+ "chuan" : 51, "chuang" : 52, "chui" : 53, "chun" : 54, "chuo" : 55,
+ "da" : 56, "dai" : 57, "dan" : 58, "dang" : 59, "dao" : 60,
+ "de" : 61, "dei" : 62,
+ # "den" : 63,
+ "deng" : 64, "di" : 65,
+ "dia" : 66, "dian" : 67, "diao" : 68, "die" : 69, "ding" : 70,
+ "diu" : 71, "dong" : 72, "dou" : 73, "du" : 74, "duan" : 75,
+ "dui" : 76, "dun" : 77, "duo" : 78, "e" : 79, "ei" : 80,
+ "en" : 81, "er" : 82, "fa" : 83, "fan" : 84, "fang" : 85,
+ "fei" : 86, "fen" : 87, "feng" : 88, "fo" : 89, "fou" : 90,
+ "fu" : 91, "ga" : 92, "gai" : 93, "gan" : 94, "gang" : 95,
+ "gao" : 96, "ge" : 97, "gei" : 98, "gen" : 99, "geng" : 100,
+ "gong" : 101, "gou" : 102, "gu" : 103, "gua" : 104, "guai" : 105,
+ "guan" : 106, "guang" : 107, "gui" : 108, "gun" : 109, "guo" : 110,
+ "ha" : 111, "hai" : 112, "han" : 113, "hang" : 114, "hao" : 115,
+ "he" : 116, "hei" : 117, "hen" : 118, "heng" : 119, "hong" : 120,
+ "hou" : 121, "hu" : 122, "hua" : 123, "huai" : 124, "huan" : 125,
+ "huang" : 126, "hui" : 127, "hun" : 128, "huo" : 129, "ji" : 130,
+ "jia" : 131, "jian" : 132, "jiang" : 133, "jiao" : 134, "jie" : 135,
+ "jin" : 136, "jing" : 137, "jiong" : 138, "jiu" : 139, "ju" : 140,
+ "juan" : 141, "jue" : 142, "jun" : 143, "ka" : 144, "kai" : 145,
+ "kan" : 146, "kang" : 147, "kao" : 148, "ke" : 149,
+ # "kei" : 150,
+ "ken" : 151, "keng" : 152, "kong" : 153, "kou" : 154, "ku" : 155,
+ "kua" : 156, "kuai" : 157, "kuan" : 158, "kuang" : 159, "kui" : 160,
+ "kun" : 161, "kuo" : 162, "la" : 163, "lai" : 164, "lan" : 165,
+ "lang" : 166, "lao" : 167, "le" : 168, "lei" : 169, "leng" : 170,
+ "li" : 171, "lia" : 172, "lian" : 173, "liang" : 174, "liao" : 175,
+ "lie" : 176, "lin" : 177, "ling" : 178, "liu" : 179,
+ "lo" : 180,
+ "long" : 181, "lou" : 182, "lu" : 183, "luan" : 184,
+ # "lue" : 185,
+ "lun" : 186, "luo" : 187, "lv" : 188, "lve" : 189,
+ "ma" : 190,
+ "mai" : 191, "man" : 192, "mang" : 193, "mao" : 194, "me" : 195,
+ "mei" : 196, "men" : 197, "meng" : 198, "mi" : 199, "mian" : 200,
+ "miao" : 201, "mie" : 202, "min" : 203, "ming" : 204, "miu" : 205,
+ "mo" : 206, "mou" : 207, "mu" : 208, "na" : 209, "nai" : 210,
+ "nan" : 211, "nang" : 212, "nao" : 213, "ne" : 214, "nei" : 215,
+ "nen" : 216, "neng" : 217, "ni" : 218, "nian" : 219, "niang" : 220,
+ "niao" : 221, "nie" : 222, "nin" : 223, "ning" : 224, "niu" : 225,
+ # "ng" : 226,
+ "nong" : 227, "nou" : 228, "nu" : 229, "nuan" : 230,
+ # "nue" : 231,
+ "nuo" : 232, "nv" : 233, "nve" : 234,
+ "o" : 235,
+ "ou" : 236, "pa" : 237, "pai" : 238, "pan" : 239, "pang" : 240,
+ "pao" : 241, "pei" : 242, "pen" : 243, "peng" : 244, "pi" : 245,
+ "pian" : 246, "piao" : 247, "pie" : 248, "pin" : 249, "ping" : 250,
+ "po" : 251, "pou" : 252, "pu" : 253, "qi" : 254, "qia" : 255,
+ "qian" : 256, "qiang" : 257, "qiao" : 258, "qie" : 259, "qin" : 260,
+ "qing" : 261, "qiong" : 262, "qiu" : 263, "qu" : 264, "quan" : 265,
+ "que" : 266, "qun" : 267, "ran" : 268, "rang" : 269, "rao" : 270,
+ "re" : 271, "ren" : 272, "reng" : 273, "ri" : 274, "rong" : 275,
+ "rou" : 276, "ru" : 277, "ruan" : 278, "rui" : 279, "run" : 280,
+ "ruo" : 281, "sa" : 282, "sai" : 283, "san" : 284, "sang" : 285,
+ "sao" : 286, "se" : 287, "sen" : 288, "seng" : 289, "si" : 290,
+ "song" : 291, "sou" : 292, "su" : 293, "suan" : 294, "sui" : 295,
+ "sun" : 296, "suo" : 297, "sha" : 298, "shai" : 299, "shan" : 300,
+ "shang" : 301, "shao" : 302, "she" : 303, "shei" : 304, "shen" : 305,
+ "sheng" : 306, "shi" : 307, "shou" : 308, "shu" : 309, "shua" : 310,
+ "shuai" : 311, "shuan" : 312, "shuang" : 313, "shui" : 314, "shun" : 315,
+ "shuo" : 316, "ta" : 317, "tai" : 318, "tan" : 319, "tang" : 320,
+ "tao" : 321, "te" : 322,
+ # "tei" : 323,
+ "teng" : 324, "ti" : 325,
+ "tian" : 326, "tiao" : 327, "tie" : 328, "ting" : 329, "tong" : 330,
+ "tou" : 331, "tu" : 332, "tuan" : 333, "tui" : 334, "tun" : 335,
+ "tuo" : 336, "wa" : 337, "wai" : 338, "wan" : 339, "wang" : 340,
+ "wei" : 341, "wen" : 342, "weng" : 343, "wo" : 344, "wu" : 345,
+ "xi" : 346, "xia" : 347, "xian" : 348, "xiang" : 349, "xiao" : 350,
+ "xie" : 351, "xin" : 352, "xing" : 353, "xiong" : 354, "xiu" : 355,
+ "xu" : 356, "xuan" : 357, "xue" : 358, "xun" : 359, "ya" : 360,
+ "yan" : 361, "yang" : 362, "yao" : 363, "ye" : 364, "yi" : 365,
+ "yin" : 366, "ying" : 367, "yo" : 368, "yong" : 369, "you" : 370,
+ "yu" : 371, "yuan" : 372, "yue" : 373, "yun" : 374, "za" : 375,
+ "zai" : 376, "zan" : 377, "zang" : 378, "zao" : 379, "ze" : 380,
+ "zei" : 381, "zen" : 382, "zeng" : 383, "zi" : 384, "zong" : 385,
+ "zou" : 386, "zu" : 387, "zuan" : 388, "zui" : 389, "zun" : 390,
+ "zuo" : 391, "zha" : 392, "zhai" : 393, "zhan" : 394, "zhang" : 395,
+ "zhao" : 396, "zhe" : 397, "zhen" : 398, "zheng" : 399, "zhi" : 400,
+ "zhong" : 401, "zhou" : 402, "zhu" : 403, "zhua" : 404, "zhuai" : 405,
+ "zhuan" : 406, "zhuang" : 407, "zhui" : 408, "zhun" : 409, "zhuo" : 410,
+ # some weird pinyins
+ #~ "eng" : 411, "chua" : 412, "fe" : 413, "fiao" : 414, "liong" : 415
+}
+
+PINYIN_LIST = PINYIN_DICT.keys ()
+
+ID_PINYIN_DICT = {}
+for pinyin, id in PINYIN_DICT.items ():
+ ID_PINYIN_DICT[id] = pinyin
+
+SHENGMU_DICT = {
+ "" : 0, "b" : 1, "p" : 2, "m" : 3, "f" : 4, "d" : 5,
+ "t" : 6, "n" : 7, "l" : 8, "g" : 9, "k" : 10, "h" : 11,
+ "j" : 12, "q" : 13, "x" : 14, "zh" : 15, "ch" : 16, "sh" : 17,
+ "r" : 18, "z" : 19, "c" : 20, "s" : 21, "y" : 22, "w" : 23
+}
+SHENGMU_LIST = SHENGMU_DICT.keys ()
+#~ PINYIN_PARTIAL_LIST = []
+#~ for p in PINYIN_LIST:
+ #~ for i in range (2, len (p)):
+ #~ if not (p[:i] in PINYIN_LIST or p[:i] in SHENGMU_LIST or p[:i] in PINYIN_PARTIAL_LIST):
+ #~ PINYIN_PARTIAL_LIST.append (p[:i])
+#~ print PINYIN_PARTIAL_LIST
+PINYIN_PARTIAL_LIST = [
+'ro', 'zo', 'zon', 'so', 'son', 'tua', 'zua', 'no',
+'non', 'be', 'ho', 'cua', 'jio', 'jion', 'xua', 'ko',
+'kon', 'we', 'go', 'tia', 'fi', 'fia', 'fe', 'din', 'ra',
+'yon', 'do', 'don', 'ron', 'to', 'nia', 'qua', 'cho',
+'chon', 'mia', 'den', 'sho', 'nua', 'ten', 'co', 'ton',
+'pe', 'tin', 'sua', 'xio', 'xion', 'pia', 'bia', 'dua',
+'con', 'hon', 'jua', 'yua', 'zho', 'zhon', 'rua', 'lua',
+'lio', 'lion', 'qio', 'qion', 'lon', 'gon', 'len']
+
+ID_SHENGMU_DICT = {}
+
+
+for shengmu, id in SHENGMU_DICT.items ():
+ ID_SHENGMU_DICT[id] = shengmu
+
+MOHU_SHENGMU = {
+ "z" : ("z", "zh"),
+ "zh" : ("z", "zh"),
+ "c" : ("c", "ch"),
+ "ch" : ("c", "ch"),
+ "s" : ("s", "sh"),
+ "sh" : ("s", "sh"),
+ "l" : ("l", "n"),
+ "n" : ("l", "n")
+}
+
+MOHU_YUNMU = {
+ "an" : ("an", "ang"),
+ "ang" : ("an", "ang"),
+ "en" : ("en", "eng"),
+ "eng" : ("en", "eng"),
+ "in" : ("in", "ing"),
+ "ing" : ("in", "ing")
+}
+
+MSPY_SHUANGPIN_SHENGMU_DICT = {
+ "b" : "b", "c" : "c", "d" : "d", "f" : "f", "g" : "g",
+ "h" : "h", "i" : "ch","j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "u" : "sh","v" : "zh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+MSPY_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a",),
+ "b" : ("ou",),
+ "c" : ("iao",),
+ "d" : ("uang", "iang"),
+ "e" : ("e",),
+ "f" : ("en",),
+ "g" : ("eng", "ng"),
+ "h" : ("ang",),
+ "i" : ("i",),
+ "j" : ("an",),
+ "k" : ("ao",),
+ "l" : ("ai",),
+ "m" : ("ian",),
+ "n" : ("in",),
+ "o" : ("uo", "o"),
+ "p" : ("un",),
+ "q" : ("iu",),
+ "r" : ("uan", "er"),
+ "s" : ("ong", "iong"),
+ "t" : ("ue",),
+ "u" : ("u",),
+ "v" : ("ui","ue"),
+ "w" : ("ia","ua"),
+ "x" : ("ie",),
+ "y" : ("uai", "v"),
+ "z" : ("ei",),
+ ";" : ("ing",)
+}
+
+ZRM_SHUANGPIN_SHENGMU_DICT = {
+ "b" : "b", "c" : "c", "d" : "d", "f" : "f", "g" : "g",
+ "h" : "h", "i" : "ch","j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "u" : "sh","v" : "zh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+ZRM_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a",),
+ "b" : ("ou",),
+ "c" : ("iao",),
+ "d" : ("uang", "iang"),
+ "e" : ("e",),
+ "f" : ("en",),
+ "g" : ("eng", "ng"),
+ "h" : ("ang",),
+ "i" : ("i",),
+ "j" : ("an",),
+ "k" : ("ao",),
+ "l" : ("ai",),
+ "m" : ("ian",),
+ "n" : ("in",),
+ "o" : ("uo", "o"),
+ "p" : ("un",),
+ "q" : ("iu",),
+ "r" : ("uan", "er"),
+ "s" : ("ong", "iong"),
+ "t" : ("ue",),
+ "u" : ("u",),
+ "v" : ("ui","v"),
+ "w" : ("ia","ua"),
+ "x" : ("ie",),
+ "y" : ("uai", "ing"),
+ "z" : ("ei",),
+}
+
+ABC_SHUANGPIN_SHENGMU_DICT = {
+ "a" : "zh", "b" : "b", "c" : "c", "d" : "d", "e":"ch", "f" : "f", "g" : "g",
+ "h" : "h", "j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "v" : "sh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+ABC_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a",),
+ "b" : ("ou",),
+ "c" : ("in","uai"),
+ "d" : ("ia", "ua"),
+ "e" : ("e",),
+ "f" : ("en",),
+ "g" : ("eng", "ng"),
+ "h" : ("ang",),
+ "i" : ("i",),
+ "j" : ("an",),
+ "k" : ("ao",),
+ "l" : ("ai",),
+ "m" : ("ue","ui"),
+ "n" : ("un",),
+ "o" : ("uo", "o"),
+ "p" : ("uan",),
+ "q" : ("ei",),
+ "r" : ("er", "iu"),
+ "s" : ("ong", "iong"),
+ "t" : ("iang","uang"),
+ "u" : ("u",),
+ "v" : ("v","ue"),
+ "w" : ("ian",),
+ "x" : ("ie",),
+ "y" : ("ing",),
+ "z" : ("iao",),
+}
+
+ZGPY_SHUANGPIN_SHENGMU_DICT = {
+ "a" : "ch", "b" : "b", "c" : "c", "d" : "d", "f" : "f", "g" : "g",
+ "h" : "h", "i" : "sh","j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "u" : "zh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+ZGPY_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a", ),
+ "b" : ("iao", ),
+ "d" : ("ie", ),
+ "e" : ("e", ),
+ "f" : ("ian", ),
+ "g" : ("iang", "uang"),
+ "h" : ("ong", "iong"),
+ "i" : ("i", ),
+ "j" : ("er", "iu"),
+ "k" : ("ei", ),
+ "l" : ("uan", ),
+ "m" : ("un", ),
+ "n" : ("ue", "ui"),
+ "o" : ("uo", "o"),
+ "p" : ("ai", ),
+ "q" : ("ao", ),
+ "r" : ("an", ),
+ "s" : ("ang", ),
+ "t" : ("eng", "ng"),
+ "u" : ("u", ),
+ "v" : ("v", ),
+ "w" : ("en", ),
+ "x" : ("ia", "ua"),
+ "y" : ("in", "uai"),
+ "z" : ("ou" ,),
+ ";" : ("ing", )
+}
+
+PYJJ_SHUANGPIN_SHENGMU_DICT = {
+ "a" : "'", "b" : "b", "c" : "c", "d" : "d", "f" : "f", "g" : "g",
+ "h" : "h", "i" : "sh","j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "u" : "ch","v" : "zh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+PYJJ_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a",),
+ "b" : ("ia","ua"),
+ "c" : ("uan",),
+ "d" : ("ao", ),
+ "e" : ("e",),
+ "f" : ("an",),
+ "g" : ("ang",),
+ "h" : ("iang","uang"),
+ "i" : ("i",),
+ "j" : ("ian",),
+ "k" : ("iao",),
+ "l" : ("in",),
+ "m" : ("ie",),
+ "n" : ("iu",),
+ "o" : ("uo", "o"),
+ "p" : ("ou",),
+ "q" : ("er","ing"),
+ "r" : ("en", ),
+ "s" : ("ai", ),
+ "t" : ("eng", "ng"),
+ "u" : ("u",),
+ "v" : ("v","ui"),
+ "w" : ("ei",),
+ "x" : ("uai","ue"),
+ "y" : ("ong","iong"),
+ "z" : ("un",),
+}
+
+XHE_SHUANGPIN_SHENGMU_DICT = {
+ "b" : "b", "c" : "c", "d" : "d", "f" : "f", "g" : "g",
+ "h" : "h", "i" : "ch", "j" : "j", "k" : "k", "l" : "l",
+ "m" : "m", "n" : "n", "o" : "'", "p" : "p", "q" : "q",
+ "r" : "r", "s" : "s", "t" : "t", "u" : "sh", "v" : "zh",
+ "w" : "w", "x" : "x", "y" : "y", "z" : "z"
+}
+
+XHE_SHUANGPIN_YUNMU_DICT = {
+ "a" : ("a",),
+ "b" : ("in",),
+ "c" : ("ao",),
+ "d" : ("ai",),
+ "e" : ("e",),
+ "f" : ("en",),
+ "g" : ("eng", "ng"),
+ "h" : ("ang",),
+ "i" : ("i",),
+ "j" : ("an",),
+ "k" : ("uai", "ing"),
+ "l" : ("iang", "uang"),
+ "m" : ("ian",),
+ "n" : ("iao",),
+ "o" : ("uo", "o"),
+ "p" : ("ie",),
+ "q" : ("iu",),
+ "r" : ("uan", "er"),
+ "s" : ("ong", "iong"),
+ "t" : ("ue",),
+ "u" : ("u",),
+ "v" : ("v", "ui"),
+ "w" : ("ei",),
+ "x" : ("ia", "ua"),
+ "y" : ("un",),
+ "z" : ("ou",),
+}
+
+SHUANGPIN_SCHEMAS = [
+ (N_("MSPY"), (MSPY_SHUANGPIN_SHENGMU_DICT, MSPY_SHUANGPIN_YUNMU_DICT)),
+ (N_("ZRM"), (ZRM_SHUANGPIN_SHENGMU_DICT, ZRM_SHUANGPIN_YUNMU_DICT)),
+ (N_("ABC"), (ABC_SHUANGPIN_SHENGMU_DICT, ABC_SHUANGPIN_YUNMU_DICT)),
+ (N_("ZGPY"), (ZGPY_SHUANGPIN_SHENGMU_DICT, ZGPY_SHUANGPIN_YUNMU_DICT)),
+ (N_("PYJJ"), (PYJJ_SHUANGPIN_SHENGMU_DICT, PYJJ_SHUANGPIN_YUNMU_DICT)),
+ (N_("XHE"), (XHE_SHUANGPIN_SHENGMU_DICT, XHE_SHUANGPIN_YUNMU_DICT)),
+]
+
diff --git a/scripts/pyutil.py b/scripts/pyutil.py
new file mode 100644
index 0000000..48edde7
--- /dev/null
+++ b/scripts/pyutil.py
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+# vim:set et sts=4 sw=4:
+#
+# ibus-pinyin - The PinYin engine for IBus
+#
+# Copyright (c) 2007-2008 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+from pydict import *
+
+class PinYinWord:
+ correct_dict = {"nve" : "nue", "lve" : "lue"}
+ def __init__ (self, pinyin):
+ if pinyin in self.correct_dict:
+ pinyin = self.correct_dict [pinyin]
+
+ self._pinyin = pinyin
+ self._is_completed = self.is_valid_pinyin ()
+ if self._is_completed:
+ sheng_mu, yun_mu = self.split ()
+ self._pinyin_id = PINYIN_DICT [self._pinyin]
+ self._sheng_mu_id = SHENGMU_DICT [sheng_mu]
+ else:
+ self._sheng_mu_id = SHENGMU_DICT [self._pinyin]
+
+ def is_valid_pinyin (self):
+ return PINYIN_DICT.has_key (self._pinyin)
+
+ def get_sheng_mu_id (self):
+ return self._sheng_mu_id
+
+ def get_shengmu (self):
+ return ID_SHENGMU_DICT[self._sheng_mu_id]
+
+ def get_pinyin_id (self):
+ return self._pinyin_id
+
+ def get_pinyin (self):
+ return self._pinyin
+
+ def get_pattern (self, mohu = False):
+ if mohu == False:
+ if self.is_valid_pinyin ():
+ return self._pinyin
+ else:
+ return self._pinyin + "%"
+ else:
+ if not self.is_valid_pinyin ():
+ if self._pinyin in ("zh", "ch", "sh"):
+ return self._pinyin[0] + "%"
+ return self._pinyin + "%"
+ else:
+ shengmu = self.get_shengmu ()
+ yunmu = self._pinyin [len (shengmu):]
+ if shengmu in ("zh", "ch", "sh", "z", "c", "s"):
+ shengmu = shengmu[0] + "%"
+ if yunmu in ("ing", "in", "en", "eng", "an", "ang"):
+ yunmu = yunmu[0:2] + "%"
+ return shengmu + yunmu
+
+ def split (self):
+ if not self.is_valid_pinyin ():
+ raise Exception ("Pinyin '%s' is not a valid pinyin!" % py)
+ if self._pinyin[:2] in SHENGMU_DICT.keys ():
+ return self._pinyin[:2], self._pinyin[2:]
+ elif self._pinyin[:1] in SHENGMU_DICT.keys ():
+ return self._pinyin[:1], self._pinyin[1:]
+ else:
+ return "", self._pinyin[:]
+
+ def __str__ (self):
+ return self._pinyin
+
+class PinYinString:
+ def __init__ (self, string):
+ pass
+
+def load_pinyin_table (_file):
+
+ def pinyin_table_parser (f):
+ for l in f:
+ a = unicode (l, "utf-8").strip ().split ()
+ hanzi, pinyin, freq = a
+ yield (hanzi, pinyin, int (freq))
+ # db.add_phrases (pinyin_table_parser (bzf))
+
+ hanzi_dic = {}
+ for hanzi, pinyin, freq in pinyin_table_parser (_file):
+ if not hanzi_dic.has_key (hanzi):
+ hanzi_dic[hanzi] = {}
+
+ if hanzi_dic[hanzi].has_key (pinyin):
+ hanzi_dic[hanzi][pinyin] += freq
+ else:
+ hanzi_dic[hanzi][pinyin] = freq
+
+ return hanzi_dic
+
+def load_phrase_pinyin_freq (_file):
+ def phrase_pinyin_parser (f):
+ for l in f:
+ phrase, pinyin, freq = unicode (l, "utf-8").strip ().split ()
+ pinyin = pinyin.replace (u"u:", u"v")
+ yield (phrase, pinyin, int (freq))
+ phrases_dic = {}
+ for phrase, pinyin, freq in phrase_pinyin_parser (_file):
+ if not phrases_dic.has_key (phrase):
+ phrases_dic[phrase] = []
+ phrases_dic[phrase].append ((phrase, pinyin, freq))
+
+ return phrases_dic
+
+def load_phrase_pinyin (_file):
+ def phrase_pinyin_parser (f):
+ for l in f:
+ phrase, pinyin = unicode (l, "utf-8").strip ().split ()
+ pinyin = pinyin.replace (u"u:", u"v")
+ yield (phrase, pinyin, 0)
+ phrases_dic = {}
+ for phrase, pinyin, freq in phrase_pinyin_parser (_file):
+ if not phrases_dic.has_key (phrase):
+ phrases_dic[phrase] = []
+ phrases_dic[phrase].append ((phrase, pinyin, freq))
+
+ return phrases_dic
+
+def load_sogou_phrases (_file):
+ import re
+ dic = {}
+ for l in _file:
+ w = unicode (l, "utf8")
+ w = re.split (ur"\t+", w)
+ dic [w[0]] = (w[0], int (w[1]))
+ return dic
+
diff --git a/scripts/sctc.py b/scripts/sctc.py
new file mode 100644
index 0000000..17fe06a
--- /dev/null
+++ b/scripts/sctc.py
@@ -0,0 +1,5146 @@
+# -*- coding: utf-8 -*-
+
+# Simpilfied Chinese to Traditional Chinese
+S_2_T = {
+ u"㑇" : (u"㑳", ), # 3447 => 3473
+ u"㖞" : (u"喎", ), # 359E => 558E
+ u"㘎" : (u"㘚", ), # 360E => 361A
+ u"㤘" : (u"㥮", ), # 3918 => 396E
+ u"㧏" : (u"掆", ), # 39CF => 6386
+ u"㧐" : (u"㩳", ), # 39D0 => 3A73
+ u"㧟" : (u"擓", ), # 39DF => 64D3
+ u"㭎" : (u"棡", ), # 3B4E => 68E1
+ u"㳠" : (u"澾", ), # 3CE0 => 6FBE
+ u"䁖" : (u"瞜", ), # 4056 => 779C
+ u"䅟" : (u"穇", ), # 415F => 7A47
+ u"䌷" : (u"紬", ), # 4337 => 7D2C
+ u"䎬" : (u"䎱", ), # 43AC => 43B1
+ u"䏝" : (u"膞", ), # 43DD => 819E
+ u"䓖" : (u"藭", ), # 44D6 => 85ED
+ u"䙌" : (u"䙡", ), # 464C => 4661
+ u"䜣" : (u"訢", ), # 4723 => 8A22
+ u"䜩" : (u"讌", ), # 4729 => 8B8C
+ u"䞍" : (u"䝼", ), # 478D => 477C
+ u"䥺" : (u"釾", ), # 497A => 91FE
+ u"䥽" : (u"鏺", ), # 497D => 93FA
+ u"䦂" : (u"䥇", ), # 4982 => 4947
+ u"䦃" : (u"鐯", ), # 4983 => 942F
+ u"䦅" : (u"鐥", ), # 4985 => 9425
+ u"䦆" : (u"钁", ), # 4986 => 9481
+ u"䦶" : (u"䦛", ), # 49B6 => 499B
+ u"䦷" : (u"䦟", ), # 49B7 => 499F
+ u"䲟" : (u"鮣", ), # 4C9F => 9BA3
+ u"䲠" : (u"鰆", ), # 4CA0 => 9C06
+ u"䲡" : (u"鰌", ), # 4CA1 => 9C0C
+ u"䲢" : (u"鰧", ), # 4CA2 => 9C27
+ u"䲣" : (u"䱷", ), # 4CA3 => 4C77
+ u"䴓" : (u"鳾", ), # 4D13 => 9CFE
+ u"䴔" : (u"鵁", ), # 4D14 => 9D41
+ u"䴕" : (u"鴷", ), # 4D15 => 9D37
+ u"䴖" : (u"鶄", ), # 4D16 => 9D84
+ u"䴗" : (u"鶪", ), # 4D17 => 9DAA
+ u"䴘" : (u"鷉", ), # 4D18 => 9DC9
+ u"䴙" : (u"鸊", ), # 4D19 => 9E0A
+ u"䶮" : (u"龑", ), # 4DAE => 9F91
+ u"万" : (u"萬", ), # 4E07 => 842C
+ u"与" : (u"與", ), # 4E0E => 8207
+ u"丑" : (u"醜", ), # 4E11 => 919C
+ u"专" : (u"專", ), # 4E13 => 5C08
+ u"业" : (u"業", ), # 4E1A => 696D
+ u"丛" : (u"叢", ), # 4E1B => 53E2
+ u"东" : (u"東", ), # 4E1C => 6771
+ u"丝" : (u"絲", ), # 4E1D => 7D72
+ u"丢" : (u"丟", ), # 4E22 => 4E1F
+ u"两" : (u"兩", ), # 4E24 => 5169
+ u"严" : (u"嚴", ), # 4E25 => 56B4
+ u"丧" : (u"喪", ), # 4E27 => 55AA
+ u"个" : (u"個", ), # 4E2A => 500B
+ u"丬" : (u"爿", ), # 4E2C => 723F
+ u"丰" : (u"豐", ), # 4E30 => 8C50
+ u"临" : (u"臨", ), # 4E34 => 81E8
+ u"为" : (u"為", ), # 4E3A => 70BA
+ u"丽" : (u"麗", ), # 4E3D => 9E97
+ u"举" : (u"舉", ), # 4E3E => 8209
+ u"么" : (u"麼", u"麽"), # 4E48 => 9EBC 9EBD
+ u"义" : (u"義", ), # 4E49 => 7FA9
+ u"乌" : (u"烏", ), # 4E4C => 70CF
+ u"乐" : (u"樂", ), # 4E50 => 6A02
+ u"乔" : (u"喬", ), # 4E54 => 55AC
+ u"习" : (u"習", ), # 4E60 => 7FD2
+ u"乡" : (u"鄉", ), # 4E61 => 9109
+ u"书" : (u"書", ), # 4E66 => 66F8
+ u"买" : (u"買", ), # 4E70 => 8CB7
+ u"乱" : (u"亂", ), # 4E71 => 4E82
+ u"了" : (u"瞭", ), # 4E86 => 77AD
+ u"争" : (u"爭", ), # 4E89 => 722D
+ u"亏" : (u"虧", ), # 4E8F => 8667
+ u"云" : (u"雲", ), # 4E91 => 96F2
+ u"亘" : (u"亙", ), # 4E98 => 4E99
+ u"亚" : (u"亞", ), # 4E9A => 4E9E
+ u"产" : (u"產", u"産"), # 4EA7 => 7522 7523
+ u"亩" : (u"畝", ), # 4EA9 => 755D
+ u"亲" : (u"親", ), # 4EB2 => 89AA
+ u"亵" : (u"褻", ), # 4EB5 => 893B
+ u"亿" : (u"億", ), # 4EBF => 5104
+ u"仅" : (u"僅", ), # 4EC5 => 50C5
+ u"仆" : (u"僕", ), # 4EC6 => 50D5
+ u"从" : (u"從", ), # 4ECE => 5F9E
+ u"仑" : (u"侖", ), # 4ED1 => 4F96
+ u"仓" : (u"倉", ), # 4ED3 => 5009
+ u"仪" : (u"儀", ), # 4EEA => 5100
+ u"们" : (u"們", ), # 4EEC => 5011
+ u"价" : (u"價", ), # 4EF7 => 50F9
+ u"众" : (u"眾", u"衆"), # 4F17 => 773E 8846
+ u"优" : (u"優", ), # 4F18 => 512A
+ u"伙" : (u"夥", ), # 4F19 => 5925
+ u"会" : (u"會", ), # 4F1A => 6703
+ u"伛" : (u"傴", ), # 4F1B => 50B4
+ u"伞" : (u"傘", ), # 4F1E => 5098
+ u"伟" : (u"偉", ), # 4F1F => 5049
+ u"传" : (u"傳", ), # 4F20 => 50B3
+ u"伤" : (u"傷", ), # 4F24 => 50B7
+ u"伥" : (u"倀", ), # 4F25 => 5000
+ u"伦" : (u"倫", ), # 4F26 => 502B
+ u"伧" : (u"傖", ), # 4F27 => 5096
+ u"伪" : (u"偽", u"僞"), # 4F2A => 507D 50DE
+ u"伫" : (u"佇", ), # 4F2B => 4F47
+ u"体" : (u"體", ), # 4F53 => 9AD4
+ u"余" : (u"餘", ), # 4F59 => 9918
+ u"佣" : (u"傭", ), # 4F63 => 50AD
+ u"佥" : (u"僉", ), # 4F65 => 50C9
+ u"侠" : (u"俠", ), # 4FA0 => 4FE0
+ u"侣" : (u"侶", ), # 4FA3 => 4FB6
+ u"侥" : (u"僥", ), # 4FA5 => 50E5
+ u"侦" : (u"偵", ), # 4FA6 => 5075
+ u"侧" : (u"側", ), # 4FA7 => 5074
+ u"侨" : (u"僑", ), # 4FA8 => 50D1
+ u"侩" : (u"儈", ), # 4FA9 => 5108
+ u"侪" : (u"儕", ), # 4FAA => 5115
+ u"侬" : (u"儂", ), # 4FAC => 5102
+ u"俣" : (u"俁", ), # 4FE3 => 4FC1
+ u"俦" : (u"儔", ), # 4FE6 => 5114
+ u"俨" : (u"儼", ), # 4FE8 => 513C
+ u"俩" : (u"倆", ), # 4FE9 => 5006
+ u"俪" : (u"儷", ), # 4FEA => 5137
+ u"俭" : (u"儉", ), # 4FED => 5109
+ u"借" : (u"藉", ), # 501F => 85C9
+ u"债" : (u"債", ), # 503A => 50B5
+ u"倾" : (u"傾", ), # 503E => 50BE
+ u"偬" : (u"傯", ), # 506C => 50AF
+ u"偻" : (u"僂", ), # 507B => 50C2
+ u"偾" : (u"僨", ), # 507E => 50E8
+ u"偿" : (u"償", ), # 507F => 511F
+ u"傥" : (u"儻", ), # 50A5 => 513B
+ u"傧" : (u"儐", ), # 50A7 => 5110
+ u"储" : (u"儲", ), # 50A8 => 5132
+ u"傩" : (u"儺", ), # 50A9 => 513A
+ u"儿" : (u"兒", ), # 513F => 5152
+ u"克" : (u"剋", ), # 514B => 524B
+ u"兑" : (u"兌", ), # 5151 => 514C
+ u"兖" : (u"兗", ), # 5156 => 5157
+ u"党" : (u"黨", ), # 515A => 9EE8
+ u"兰" : (u"蘭", ), # 5170 => 862D
+ u"关" : (u"關", ), # 5173 => 95DC
+ u"兴" : (u"興", ), # 5174 => 8208
+ u"兹" : (u"茲", ), # 5179 => 8332
+ u"养" : (u"養", ), # 517B => 990A
+ u"兽" : (u"獸", ), # 517D => 7378
+ u"冁" : (u"囅", ), # 5181 => 56C5
+ u"内" : (u"內", ), # 5185 => 5167
+ u"冈" : (u"岡", ), # 5188 => 5CA1
+ u"册" : (u"冊", ), # 518C => 518A
+ u"写" : (u"寫", ), # 5199 => 5BEB
+ u"军" : (u"軍", ), # 519B => 8ECD
+ u"农" : (u"農", ), # 519C => 8FB2
+ u"冢" : (u"塚", ), # 51A2 => 585A
+ u"冬" : (u"鼕", ), # 51AC => 9F15
+ u"冯" : (u"馮", ), # 51AF => 99AE
+ u"冲" : (u"沖", u"衝"), # 51B2 => 6C96 885D
+ u"决" : (u"決", ), # 51B3 => 6C7A
+ u"况" : (u"況", ), # 51B5 => 6CC1
+ u"冻" : (u"凍", ), # 51BB => 51CD
+ u"净" : (u"淨", ), # 51C0 => 6DE8
+ u"凄" : (u"淒", ), # 51C4 => 6DD2
+ u"准" : (u"凖", ), # 51C6 => 51D6
+ u"凉" : (u"涼", ), # 51C9 => 6DBC
+ u"凌" : (u"淩", ), # 51CC => 6DE9
+ u"减" : (u"減", ), # 51CF => 6E1B
+ u"凑" : (u"湊", ), # 51D1 => 6E4A
+ u"凛" : (u"凜", ), # 51DB => 51DC
+ u"几" : (u"幾", ), # 51E0 => 5E7E
+ u"凤" : (u"鳳", ), # 51E4 => 9CF3
+ u"凫" : (u"鳧", u"鳬"), # 51EB => 9CE7 9CEC
+ u"凭" : (u"憑", ), # 51ED => 6191
+ u"凯" : (u"凱", ), # 51EF => 51F1
+ u"出" : (u"齣", ), # 51FA => 9F63
+ u"击" : (u"撃", u"擊"), # 51FB => 6483 64CA
+ u"凼" : (u"氹", ), # 51FC => 6C39
+ u"凿" : (u"鑿", ), # 51FF => 947F
+ u"刍" : (u"芻", ), # 520D => 82BB
+ u"划" : (u"劃", ), # 5212 => 5283
+ u"刘" : (u"劉", ), # 5218 => 5289
+ u"则" : (u"則", ), # 5219 => 5247
+ u"刚" : (u"剛", ), # 521A => 525B
+ u"创" : (u"創", ), # 521B => 5275
+ u"删" : (u"刪", ), # 5220 => 522A
+ u"别" : (u"別", u"彆"), # 522B => 5225 5F46
+ u"刬" : (u"剗", ), # 522C => 5257
+ u"刭" : (u"剄", ), # 522D => 5244
+ u"刮" : (u"颳", ), # 522E => 98B3
+ u"制" : (u"製", ), # 5236 => 88FD
+ u"刽" : (u"劊", ), # 523D => 528A
+ u"刿" : (u"劌", ), # 523F => 528C
+ u"剀" : (u"剴", ), # 5240 => 5274
+ u"剂" : (u"劑", ), # 5242 => 5291
+ u"剐" : (u"剮", ), # 5250 => 526E
+ u"剑" : (u"劍", ), # 5251 => 528D
+ u"剥" : (u"剝", ), # 5265 => 525D
+ u"剧" : (u"劇", ), # 5267 => 5287
+ u"劝" : (u"勸", ), # 529D => 52F8
+ u"办" : (u"辦", ), # 529E => 8FA6
+ u"务" : (u"務", ), # 52A1 => 52D9
+ u"劢" : (u"勱", ), # 52A2 => 52F1
+ u"动" : (u"動", ), # 52A8 => 52D5
+ u"励" : (u"勵", ), # 52B1 => 52F5
+ u"劲" : (u"勁", ), # 52B2 => 52C1
+ u"劳" : (u"勞", ), # 52B3 => 52DE
+ u"势" : (u"勢", ), # 52BF => 52E2
+ u"勋" : (u"勛", u"勳"), # 52CB => 52DB 52F3
+ u"勐" : (u"猛", ), # 52D0 => 731B
+ u"勚" : (u"勩", ), # 52DA => 52E9
+ u"匀" : (u"勻", ), # 5300 => 52FB
+ u"匦" : (u"匭", ), # 5326 => 532D
+ u"匮" : (u"匱", ), # 532E => 5331
+ u"区" : (u"區", ), # 533A => 5340
+ u"医" : (u"醫", ), # 533B => 91AB
+ u"千" : (u"韆", ), # 5343 => 97C6
+ u"华" : (u"華", ), # 534E => 83EF
+ u"协" : (u"協", ), # 534F => 5354
+ u"单" : (u"單", ), # 5355 => 55AE
+ u"卖" : (u"賣", ), # 5356 => 8CE3
+ u"卜" : (u"蔔", ), # 535C => 8514
+ u"卢" : (u"盧", ), # 5362 => 76E7
+ u"卤" : (u"滷", u"鹵"), # 5364 => 6EF7 9E75
+ u"卧" : (u"臥", ), # 5367 => 81E5
+ u"卫" : (u"衛", ), # 536B => 885B
+ u"却" : (u"卻", ), # 5374 => 537B
+ u"卷" : (u"捲", ), # 5377 => 6372
+ u"卺" : (u"巹", ), # 537A => 5DF9
+ u"厂" : (u"廠", ), # 5382 => 5EE0
+ u"厅" : (u"廳", ), # 5385 => 5EF3
+ u"历" : (u"曆", u"歷"), # 5386 => 66C6 6B77
+ u"厉" : (u"厲", ), # 5389 => 53B2
+ u"压" : (u"壓", ), # 538B => 58D3
+ u"厌" : (u"厭", ), # 538C => 53AD
+ u"厍" : (u"厙", ), # 538D => 5399
+ u"厕" : (u"厠", u"廁"), # 5395 => 53A0 5EC1
+ u"厢" : (u"廂", ), # 53A2 => 5EC2
+ u"厣" : (u"厴", ), # 53A3 => 53B4
+ u"厦" : (u"廈", ), # 53A6 => 5EC8
+ u"厨" : (u"廚", ), # 53A8 => 5EDA
+ u"厩" : (u"廄", ), # 53A9 => 5EC4
+ u"厮" : (u"廝", ), # 53AE => 5EDD
+ u"县" : (u"縣", ), # 53BF => 7E23
+ u"叁" : (u"參", ), # 53C1 => 53C3
+ u"参" : (u"參", ), # 53C2 => 53C3
+ u"叆" : (u"靉", ), # 53C6 => 9749
+ u"叇" : (u"靆", ), # 53C7 => 9746
+ u"双" : (u"雙", ), # 53CC => 96D9
+ u"发" : (u"發", u"髮"), # 53D1 => 767C 9AEE
+ u"变" : (u"變", ), # 53D8 => 8B8A
+ u"叙" : (u"敘", ), # 53D9 => 6558
+ u"叠" : (u"疊", ), # 53E0 => 758A
+ u"只" : (u"戠", u"祗", u"衹", u"隻"), # 53EA => 6220 7957 8879 96BB
+ u"台" : (u"檯", u"臺", u"颱"), # 53F0 => 6AAF 81FA 98B1
+ u"叶" : (u"葉", ), # 53F6 => 8449
+ u"号" : (u"號", ), # 53F7 => 865F
+ u"叹" : (u"嘆", u"歎"), # 53F9 => 5606 6B4E
+ u"叽" : (u"嘰", ), # 53FD => 5630
+ u"吁" : (u"籲", ), # 5401 => 7C72
+ u"合" : (u"閤", ), # 5408 => 95A4
+ u"后" : (u"後", ), # 540E => 5F8C
+ u"向" : (u"嚮", ), # 5411 => 56AE
+ u"吓" : (u"嚇", ), # 5413 => 5687
+ u"吕" : (u"呂", ), # 5415 => 5442
+ u"吗" : (u"嗎", ), # 5417 => 55CE
+ u"吣" : (u"唚", ), # 5423 => 551A
+ u"吨" : (u"噸", ), # 5428 => 5678
+ u"听" : (u"聽", ), # 542C => 807D
+ u"启" : (u"啓", u"啟"), # 542F => 5553 555F
+ u"吴" : (u"吳", ), # 5434 => 5433
+ u"呒" : (u"嘸", ), # 5452 => 5638
+ u"呓" : (u"囈", ), # 5453 => 56C8
+ u"呕" : (u"嘔", ), # 5455 => 5614
+ u"呖" : (u"嚦", ), # 5456 => 56A6
+ u"呗" : (u"唄", ), # 5457 => 5504
+ u"员" : (u"員", ), # 5458 => 54E1
+ u"呙" : (u"咼", ), # 5459 => 54BC
+ u"呛" : (u"嗆", ), # 545B => 55C6
+ u"呜" : (u"嗚", ), # 545C => 55DA
+ u"咏" : (u"詠", ), # 548F => 8A60
+ u"咔" : (u"哢", ), # 5494 => 54E2
+ u"咙" : (u"嚨", ), # 5499 => 56A8
+ u"咛" : (u"嚀", ), # 549B => 5680
+ u"咝" : (u"噝", ), # 549D => 565D
+ u"咤" : (u"吒", ), # 54A4 => 5412
+ u"咴" : (u"噅", ), # 54B4 => 5645
+ u"咸" : (u"鹹", ), # 54B8 => 9E79
+ u"哌" : (u"呱", ), # 54CC => 5471
+ u"响" : (u"響", ), # 54CD => 97FF
+ u"哑" : (u"啞", ), # 54D1 => 555E
+ u"哒" : (u"噠", ), # 54D2 => 5660
+ u"哓" : (u"嘵", ), # 54D3 => 5635
+ u"哔" : (u"嗶", ), # 54D4 => 55F6
+ u"哕" : (u"噦", ), # 54D5 => 5666
+ u"哗" : (u"嘩", ), # 54D7 => 5629
+ u"哙" : (u"噲", ), # 54D9 => 5672
+ u"哜" : (u"嚌", ), # 54DC => 568C
+ u"哝" : (u"噥", ), # 54DD => 5665
+ u"哟" : (u"喲", ), # 54DF => 55B2
+ u"唛" : (u"嘜", ), # 551B => 561C
+ u"唝" : (u"嗊", ), # 551D => 55CA
+ u"唠" : (u"嘮", ), # 5520 => 562E
+ u"唡" : (u"啢", ), # 5521 => 5562
+ u"唢" : (u"嗩", ), # 5522 => 55E9
+ u"唣" : (u"唕", ), # 5523 => 5515
+ u"唤" : (u"喚", ), # 5524 => 559A
+ u"唿" : (u"呼", ), # 553F => 547C
+ u"啧" : (u"嘖", ), # 5567 => 5616
+ u"啬" : (u"嗇", ), # 556C => 55C7
+ u"啭" : (u"囀", ), # 556D => 56C0
+ u"啮" : (u"嚙", u"齧"), # 556E => 5699 9F67
+ u"啰" : (u"囉", ), # 5570 => 56C9
+ u"啸" : (u"嘯", ), # 5578 => 562F
+ u"喷" : (u"噴", ), # 55B7 => 5674
+ u"喽" : (u"嘍", ), # 55BD => 560D
+ u"喾" : (u"嚳", ), # 55BE => 56B3
+ u"嗫" : (u"囁", ), # 55EB => 56C1
+ u"嗬" : (u"呵", ), # 55EC => 5475
+ u"嗳" : (u"噯", ), # 55F3 => 566F
+ u"嘘" : (u"噓", ), # 5618 => 5653
+ u"嘤" : (u"嚶", ), # 5624 => 56B6
+ u"嘱" : (u"囑", ), # 5631 => 56D1
+ u"噜" : (u"嚕", ), # 565C => 5695
+ u"噼" : (u"劈", ), # 567C => 5288
+ u"嚣" : (u"囂", ), # 56A3 => 56C2
+ u"嚯" : (u"謔", ), # 56AF => 8B14
+ u"回" : (u"迴", ), # 56DE => 8FF4
+ u"团" : (u"團", u"糰"), # 56E2 => 5718 7CF0
+ u"园" : (u"園", ), # 56ED => 5712
+ u"困" : (u"睏", ), # 56F0 => 774F
+ u"囱" : (u"囪", ), # 56F1 => 56EA
+ u"围" : (u"圍", ), # 56F4 => 570D
+ u"囵" : (u"圇", ), # 56F5 => 5707
+ u"国" : (u"國", ), # 56FD => 570B
+ u"图" : (u"圖", ), # 56FE => 5716
+ u"圆" : (u"圓", ), # 5706 => 5713
+ u"圣" : (u"聖", ), # 5723 => 8056
+ u"圹" : (u"壙", ), # 5739 => 58D9
+ u"场" : (u"場", ), # 573A => 5834
+ u"坂" : (u"阪", ), # 5742 => 962A
+ u"坏" : (u"壞", ), # 574F => 58DE
+ u"块" : (u"塊", ), # 5757 => 584A
+ u"坚" : (u"堅", ), # 575A => 5805
+ u"坛" : (u"壇", u"罎"), # 575B => 58C7 7F4E
+ u"坜" : (u"壢", ), # 575C => 58E2
+ u"坝" : (u"壩", ), # 575D => 58E9
+ u"坞" : (u"塢", ), # 575E => 5862
+ u"坟" : (u"墳", ), # 575F => 58B3
+ u"坠" : (u"墜", ), # 5760 => 589C
+ u"垄" : (u"壟", ), # 5784 => 58DF
+ u"垅" : (u"壟", ), # 5785 => 58DF
+ u"垆" : (u"壚", ), # 5786 => 58DA
+ u"垒" : (u"壘", ), # 5792 => 58D8
+ u"垦" : (u"墾", ), # 57A6 => 58BE
+ u"垧" : (u"坰", ), # 57A7 => 5770
+ u"垩" : (u"堊", ), # 57A9 => 580A
+ u"垫" : (u"墊", ), # 57AB => 588A
+ u"垭" : (u"埡", ), # 57AD => 57E1
+ u"垲" : (u"塏", ), # 57B2 => 584F
+ u"垴" : (u"堖", ), # 57B4 => 5816
+ u"埘" : (u"塒", ), # 57D8 => 5852
+ u"埙" : (u"塤", ), # 57D9 => 5864
+ u"埚" : (u"堝", ), # 57DA => 581D
+ u"埝" : (u"墊", ), # 57DD => 588A
+ u"埯" : (u"垵", ), # 57EF => 57B5
+ u"堑" : (u"塹", ), # 5811 => 5879
+ u"堕" : (u"墮", ), # 5815 => 58AE
+ u"塬" : (u"原", ), # 586C => 539F
+ u"墙" : (u"墻", u"牆"), # 5899 => 58BB 7246
+ u"壮" : (u"壯", ), # 58EE => 58EF
+ u"声" : (u"聲", ), # 58F0 => 8072
+ u"壳" : (u"殻", u"殼"), # 58F3 => 6BBB 6BBC
+ u"壶" : (u"壺", ), # 58F6 => 58FA
+ u"处" : (u"處", ), # 5904 => 8655
+ u"备" : (u"備", ), # 5907 => 5099
+ u"复" : (u"復", u"複"), # 590D => 5FA9 8907
+ u"够" : (u"夠", ), # 591F => 5920
+ u"头" : (u"頭", ), # 5934 => 982D
+ u"夸" : (u"誇", ), # 5938 => 8A87
+ u"夹" : (u"夾", ), # 5939 => 593E
+ u"夺" : (u"奪", ), # 593A => 596A
+ u"奁" : (u"奩", ), # 5941 => 5969
+ u"奂" : (u"奐", ), # 5942 => 5950
+ u"奋" : (u"奮", ), # 594B => 596E
+ u"奖" : (u"奬", u"獎"), # 5956 => 596C 734E
+ u"奥" : (u"奧", ), # 5965 => 5967
+ u"妆" : (u"妝", ), # 5986 => 599D
+ u"妇" : (u"婦", ), # 5987 => 5A66
+ u"妈" : (u"媽", ), # 5988 => 5ABD
+ u"妩" : (u"嫵", ), # 59A9 => 5AF5
+ u"妪" : (u"嫗", ), # 59AA => 5AD7
+ u"妫" : (u"媯", ), # 59AB => 5AAF
+ u"姗" : (u"姍", ), # 59D7 => 59CD
+ u"姜" : (u"薑", ), # 59DC => 8591
+ u"娄" : (u"婁", ), # 5A04 => 5A41
+ u"娅" : (u"婭", ), # 5A05 => 5A6D
+ u"娆" : (u"嬈", ), # 5A06 => 5B08
+ u"娇" : (u"嬌", ), # 5A07 => 5B0C
+ u"娈" : (u"孌", ), # 5A08 => 5B4C
+ u"娱" : (u"娛", ), # 5A31 => 5A1B
+ u"娲" : (u"媧", ), # 5A32 => 5AA7
+ u"娴" : (u"嫻", ), # 5A34 => 5AFB
+ u"婳" : (u"嫿", ), # 5A73 => 5AFF
+ u"婴" : (u"嬰", ), # 5A74 => 5B30
+ u"婵" : (u"嬋", ), # 5A75 => 5B0B
+ u"婶" : (u"嬸", ), # 5A76 => 5B38
+ u"媪" : (u"媼", ), # 5AAA => 5ABC
+ u"嫒" : (u"嬡", ), # 5AD2 => 5B21
+ u"嫔" : (u"嬪", ), # 5AD4 => 5B2A
+ u"嫱" : (u"嬙", ), # 5AF1 => 5B19
+ u"嬷" : (u"嬤", ), # 5B37 => 5B24
+ u"孙" : (u"孫", ), # 5B59 => 5B6B
+ u"学" : (u"學", ), # 5B66 => 5B78
+ u"孪" : (u"孿", ), # 5B6A => 5B7F
+ u"宁" : (u"寜", u"甯"), # 5B81 => 5BDC 752F
+ u"宝" : (u"寶", ), # 5B9D => 5BF6
+ u"实" : (u"實", ), # 5B9E => 5BE6
+ u"宠" : (u"寵", ), # 5BA0 => 5BF5
+ u"审" : (u"審", ), # 5BA1 => 5BE9
+ u"宪" : (u"憲", ), # 5BAA => 61B2
+ u"宫" : (u"宮", ), # 5BAB => 5BAE
+ u"家" : (u"傢", ), # 5BB6 => 50A2
+ u"宽" : (u"寬", ), # 5BBD => 5BEC
+ u"宾" : (u"賓", ), # 5BBE => 8CD3
+ u"寝" : (u"寢", ), # 5BDD => 5BE2
+ u"对" : (u"對", ), # 5BF9 => 5C0D
+ u"寻" : (u"尋", ), # 5BFB => 5C0B
+ u"导" : (u"導", ), # 5BFC => 5C0E
+ u"寿" : (u"壽", u"夀"), # 5BFF => 58FD 5900
+ u"将" : (u"將", ), # 5C06 => 5C07
+ u"尔" : (u"爾", ), # 5C14 => 723E
+ u"尘" : (u"塵", ), # 5C18 => 5875
+ u"尝" : (u"嘗", ), # 5C1D => 5617
+ u"尧" : (u"堯", ), # 5C27 => 582F
+ u"尴" : (u"尷", ), # 5C34 => 5C37
+ u"尸" : (u"屍", ), # 5C38 => 5C4D
+ u"尽" : (u"儘", u"盡"), # 5C3D => 5118 76E1
+ u"层" : (u"層", ), # 5C42 => 5C64
+ u"屉" : (u"屜", ), # 5C49 => 5C5C
+ u"届" : (u"屆", ), # 5C4A => 5C46
+ u"属" : (u"屬", ), # 5C5E => 5C6C
+ u"屡" : (u"屢", ), # 5C61 => 5C62
+ u"屦" : (u"屨", ), # 5C66 => 5C68
+ u"屿" : (u"嶼", ), # 5C7F => 5DBC
+ u"岁" : (u"嵗", u"歲"), # 5C81 => 5D57 6B72
+ u"岂" : (u"豈", ), # 5C82 => 8C48
+ u"岖" : (u"嶇", ), # 5C96 => 5D87
+ u"岗" : (u"崗", ), # 5C97 => 5D17
+ u"岘" : (u"峴", ), # 5C98 => 5CF4
+ u"岙" : (u"嶴", ), # 5C99 => 5DB4
+ u"岚" : (u"嵐", ), # 5C9A => 5D50
+ u"岛" : (u"島", ), # 5C9B => 5CF6
+ u"岭" : (u"嶺", ), # 5CAD => 5DBA
+ u"岳" : (u"嶽", ), # 5CB3 => 5DBD
+ u"岽" : (u"崠", u"崬"), # 5CBD => 5D20 5D2C
+ u"岿" : (u"巋", ), # 5CBF => 5DCB
+ u"峃" : (u"嶨", ), # 5CC3 => 5DA8
+ u"峄" : (u"嶧", ), # 5CC4 => 5DA7
+ u"峡" : (u"峽", ), # 5CE1 => 5CFD
+ u"峣" : (u"嶢", ), # 5CE3 => 5DA2
+ u"峤" : (u"嶠", ), # 5CE4 => 5DA0
+ u"峥" : (u"崢", ), # 5CE5 => 5D22
+ u"峦" : (u"巒", ), # 5CE6 => 5DD2
+ u"崂" : (u"嶗", ), # 5D02 => 5D97
+ u"崃" : (u"崍", ), # 5D03 => 5D0D
+ u"崭" : (u"嶄", ), # 5D2D => 5D84
+ u"嵘" : (u"嶸", ), # 5D58 => 5DB8
+ u"嵚" : (u"嶔", ), # 5D5A => 5D94
+ u"嵛" : (u"崳", ), # 5D5B => 5D33
+ u"嵝" : (u"嶁", ), # 5D5D => 5D81
+ u"嵴" : (u"脊", ), # 5D74 => 810A
+ u"巅" : (u"巔", ), # 5DC5 => 5DD4
+ u"巩" : (u"鞏", ), # 5DE9 => 978F
+ u"巯" : (u"巰", ), # 5DEF => 5DF0
+ u"币" : (u"幣", ), # 5E01 => 5E63
+ u"帅" : (u"帥", ), # 5E05 => 5E25
+ u"师" : (u"師", ), # 5E08 => 5E2B
+ u"帏" : (u"幃", ), # 5E0F => 5E43
+ u"帐" : (u"帳", ), # 5E10 => 5E33
+ u"帘" : (u"簾", ), # 5E18 => 7C3E
+ u"帜" : (u"幟", ), # 5E1C => 5E5F
+ u"带" : (u"帶", ), # 5E26 => 5E36
+ u"帧" : (u"幀", ), # 5E27 => 5E40
+ u"帮" : (u"幫", ), # 5E2E => 5E6B
+ u"帱" : (u"幬", ), # 5E31 => 5E6C
+ u"帻" : (u"幘", ), # 5E3B => 5E58
+ u"帼" : (u"幗", ), # 5E3C => 5E57
+ u"幂" : (u"冪", ), # 5E42 => 51AA
+ u"幞" : (u"襆", ), # 5E5E => 8946
+ u"干" : (u"乾", u"幹"), # 5E72 => 4E7E 5E79
+ u"并" : (u"並", ), # 5E76 => 4E26
+ u"幺" : (u"么", ), # 5E7A => 4E48
+ u"广" : (u"廣", ), # 5E7F => 5EE3
+ u"庄" : (u"莊", ), # 5E84 => 838A
+ u"庆" : (u"慶", ), # 5E86 => 6176
+ u"庐" : (u"廬", ), # 5E90 => 5EEC
+ u"庑" : (u"廡", ), # 5E91 => 5EE1
+ u"库" : (u"庫", ), # 5E93 => 5EAB
+ u"应" : (u"應", ), # 5E94 => 61C9
+ u"庙" : (u"廟", ), # 5E99 => 5EDF
+ u"庞" : (u"龐", ), # 5E9E => 9F90
+ u"废" : (u"廢", ), # 5E9F => 5EE2
+ u"庼" : (u"廎", ), # 5EBC => 5ECE
+ u"廪" : (u"廩", ), # 5EEA => 5EE9
+ u"开" : (u"開", ), # 5F00 => 958B
+ u"异" : (u"異", ), # 5F02 => 7570
+ u"弃" : (u"棄", ), # 5F03 => 68C4
+ u"张" : (u"張", ), # 5F20 => 5F35
+ u"弥" : (u"彌", u"瀰"), # 5F25 => 5F4C 7030
+ u"弪" : (u"弳", ), # 5F2A => 5F33
+ u"弯" : (u"彎", ), # 5F2F => 5F4E
+ u"弹" : (u"彈", ), # 5F39 => 5F48
+ u"强" : (u"強", ), # 5F3A => 5F37
+ u"归" : (u"歸", ), # 5F52 => 6B78
+ u"当" : (u"噹", u"當"), # 5F53 => 5679 7576
+ u"录" : (u"錄", u"録"), # 5F55 => 9304 9332
+ u"彦" : (u"彥", ), # 5F66 => 5F65
+ u"彻" : (u"徹", ), # 5F7B => 5FB9
+ u"征" : (u"徵", ), # 5F81 => 5FB5
+ u"径" : (u"徑", ), # 5F84 => 5F91
+ u"徕" : (u"徠", ), # 5F95 => 5FA0
+ u"御" : (u"禦", ), # 5FA1 => 79A6
+ u"忆" : (u"憶", ), # 5FC6 => 61B6
+ u"忏" : (u"懺", ), # 5FCF => 61FA
+ u"忧" : (u"憂", ), # 5FE7 => 6182
+ u"忾" : (u"愾", ), # 5FFE => 613E
+ u"怀" : (u"懷", ), # 6000 => 61F7
+ u"态" : (u"態", ), # 6001 => 614B
+ u"怂" : (u"慫", ), # 6002 => 616B
+ u"怃" : (u"憮", ), # 6003 => 61AE
+ u"怄" : (u"慪", ), # 6004 => 616A
+ u"怅" : (u"悵", ), # 6005 => 60B5
+ u"怆" : (u"愴", ), # 6006 => 6134
+ u"怜" : (u"憐", ), # 601C => 6190
+ u"总" : (u"總", ), # 603B => 7E3D
+ u"怼" : (u"懟", ), # 603C => 61DF
+ u"怿" : (u"懌", ), # 603F => 61CC
+ u"恋" : (u"戀", ), # 604B => 6200
+ u"恳" : (u"懇", ), # 6073 => 61C7
+ u"恶" : (u"噁", u"惡"), # 6076 => 5641 60E1
+ u"恸" : (u"慟", ), # 6078 => 615F
+ u"恹" : (u"懨", ), # 6079 => 61E8
+ u"恺" : (u"愷", ), # 607A => 6137
+ u"恻" : (u"惻", ), # 607B => 60FB
+ u"恼" : (u"惱", ), # 607C => 60F1
+ u"恽" : (u"惲", ), # 607D => 60F2
+ u"悦" : (u"悅", ), # 60A6 => 6085
+ u"悫" : (u"愨", u"慤"), # 60AB => 6128 6164
+ u"悬" : (u"懸", ), # 60AC => 61F8
+ u"悭" : (u"慳", ), # 60AD => 6173
+ u"悯" : (u"憫", ), # 60AF => 61AB
+ u"惊" : (u"驚", ), # 60CA => 9A5A
+ u"惧" : (u"懼", ), # 60E7 => 61FC
+ u"惨" : (u"慘", ), # 60E8 => 6158
+ u"惩" : (u"懲", ), # 60E9 => 61F2
+ u"惫" : (u"憊", ), # 60EB => 618A
+ u"惬" : (u"愜", ), # 60EC => 611C
+ u"惭" : (u"慚", ), # 60ED => 615A
+ u"惮" : (u"憚", ), # 60EE => 619A
+ u"惯" : (u"慣", ), # 60EF => 6163
+ u"愍" : (u"湣", ), # 610D => 6E63
+ u"愠" : (u"慍", ), # 6120 => 614D
+ u"愤" : (u"憤", ), # 6124 => 61A4
+ u"愦" : (u"憒", ), # 6126 => 6192
+ u"愿" : (u"願", ), # 613F => 9858
+ u"慑" : (u"懾", ), # 6151 => 61FE
+ u"憷" : (u"怵", ), # 61B7 => 6035
+ u"懑" : (u"懣", ), # 61D1 => 61E3
+ u"懒" : (u"懶", ), # 61D2 => 61F6
+ u"懔" : (u"懍", ), # 61D4 => 61CD
+ u"戆" : (u"戇", ), # 6206 => 6207
+ u"戋" : (u"戔", ), # 620B => 6214
+ u"戏" : (u"戲", ), # 620F => 6232
+ u"戗" : (u"戧", ), # 6217 => 6227
+ u"战" : (u"戰", ), # 6218 => 6230
+ u"戬" : (u"戩", ), # 622C => 6229
+ u"户" : (u"戶", ), # 6237 => 6236
+ u"才" : (u"纔", ), # 624D => 7E94
+ u"扎" : (u"紮", ), # 624E => 7D2E
+ u"扑" : (u"撲", ), # 6251 => 64B2
+ u"扦" : (u"扡", ), # 6266 => 6261
+ u"执" : (u"執", ), # 6267 => 57F7
+ u"扩" : (u"擴", ), # 6269 => 64F4
+ u"扪" : (u"捫", ), # 626A => 636B
+ u"扫" : (u"掃", ), # 626B => 6383
+ u"扬" : (u"揚", ), # 626C => 63DA
+ u"扰" : (u"擾", ), # 6270 => 64FE
+ u"折" : (u"摺", ), # 6298 => 647A
+ u"抚" : (u"撫", ), # 629A => 64AB
+ u"抛" : (u"拋", ), # 629B => 62CB
+ u"抟" : (u"摶", ), # 629F => 6476
+ u"抠" : (u"摳", ), # 62A0 => 6473
+ u"抡" : (u"掄", ), # 62A1 => 6384
+ u"抢" : (u"搶", ), # 62A2 => 6436
+ u"护" : (u"護", ), # 62A4 => 8B77
+ u"报" : (u"報", ), # 62A5 => 5831
+ u"担" : (u"擔", ), # 62C5 => 64D4
+ u"拟" : (u"擬", ), # 62DF => 64EC
+ u"拢" : (u"攏", ), # 62E2 => 650F
+ u"拣" : (u"揀", ), # 62E3 => 63C0
+ u"拥" : (u"擁", ), # 62E5 => 64C1
+ u"拦" : (u"攔", ), # 62E6 => 6514
+ u"拧" : (u"擰", ), # 62E7 => 64F0
+ u"拨" : (u"撥", ), # 62E8 => 64A5
+ u"择" : (u"擇", ), # 62E9 => 64C7
+ u"挂" : (u"掛", ), # 6302 => 639B
+ u"挚" : (u"摯", ), # 631A => 646F
+ u"挛" : (u"攣", ), # 631B => 6523
+ u"挜" : (u"掗", ), # 631C => 6397
+ u"挝" : (u"撾", ), # 631D => 64BE
+ u"挞" : (u"撻", ), # 631E => 64BB
+ u"挟" : (u"挾", ), # 631F => 633E
+ u"挠" : (u"撓", ), # 6320 => 6493
+ u"挡" : (u"擋", ), # 6321 => 64CB
+ u"挢" : (u"撟", ), # 6322 => 649F
+ u"挣" : (u"掙", ), # 6323 => 6399
+ u"挤" : (u"擠", ), # 6324 => 64E0
+ u"挥" : (u"揮", ), # 6325 => 63EE
+ u"挦" : (u"撏", ), # 6326 => 648F
+ u"捞" : (u"撈", ), # 635E => 6488
+ u"损" : (u"損", ), # 635F => 640D
+ u"捡" : (u"撿", ), # 6361 => 64BF
+ u"换" : (u"換", ), # 6362 => 63DB
+ u"捣" : (u"搗", ), # 6363 => 6417
+ u"据" : (u"據", ), # 636E => 64DA
+ u"捻" : (u"撚", ), # 637B => 649A
+ u"掳" : (u"擄", ), # 63B3 => 64C4
+ u"掴" : (u"摑", ), # 63B4 => 6451
+ u"掷" : (u"擲", ), # 63B7 => 64F2
+ u"掸" : (u"撣", ), # 63B8 => 64A3
+ u"掺" : (u"摻", ), # 63BA => 647B
+ u"掼" : (u"摜", ), # 63BC => 645C
+ u"揸" : (u"摣", ), # 63F8 => 6463
+ u"揽" : (u"攬", ), # 63FD => 652C
+ u"揿" : (u"撳", ), # 63FF => 64B3
+ u"搀" : (u"攙", ), # 6400 => 6519
+ u"搁" : (u"擱", ), # 6401 => 64F1
+ u"搂" : (u"摟", ), # 6402 => 645F
+ u"搅" : (u"攪", ), # 6405 => 652A
+ u"携" : (u"攜", ), # 643A => 651C
+ u"摄" : (u"攝", ), # 6444 => 651D
+ u"摅" : (u"攄", ), # 6445 => 6504
+ u"摆" : (u"擺", u"襬"), # 6446 => 64FA 896C
+ u"摇" : (u"搖", ), # 6447 => 6416
+ u"摈" : (u"擯", ), # 6448 => 64EF
+ u"摊" : (u"擹", u"攤"), # 644A => 64F9 6524
+ u"撄" : (u"攖", ), # 6484 => 6516
+ u"撑" : (u"撐", ), # 6491 => 6490
+ u"撵" : (u"攆", ), # 64B5 => 6506
+ u"撷" : (u"擷", ), # 64B7 => 64F7
+ u"撸" : (u"擼", ), # 64B8 => 64FC
+ u"撺" : (u"攛", ), # 64BA => 651B
+ u"擞" : (u"擻", ), # 64DE => 64FB
+ u"攒" : (u"攢", ), # 6512 => 6522
+ u"敌" : (u"敵", ), # 654C => 6575
+ u"敛" : (u"斂", ), # 655B => 6582
+ u"数" : (u"數", ), # 6570 => 6578
+ u"斋" : (u"齋", ), # 658B => 9F4B
+ u"斓" : (u"斕", ), # 6593 => 6595
+ u"斗" : (u"鬥", ), # 6597 => 9B25
+ u"斩" : (u"斬", ), # 65A9 => 65AC
+ u"断" : (u"斷", ), # 65AD => 65B7
+ u"旋" : (u"鏇", ), # 65CB => 93C7
+ u"无" : (u"無", ), # 65E0 => 7121
+ u"旧" : (u"舊", ), # 65E7 => 820A
+ u"时" : (u"時", ), # 65F6 => 6642
+ u"旷" : (u"曠", ), # 65F7 => 66E0
+ u"旸" : (u"暘", ), # 65F8 => 6698
+ u"昙" : (u"曇", ), # 6619 => 66C7
+ u"昼" : (u"晝", ), # 663C => 665D
+ u"昽" : (u"曨", ), # 663D => 66E8
+ u"显" : (u"顯", ), # 663E => 986F
+ u"晋" : (u"晉", ), # 664B => 6649
+ u"晒" : (u"曬", ), # 6652 => 66EC
+ u"晓" : (u"曉", ), # 6653 => 66C9
+ u"晔" : (u"曄", ), # 6654 => 66C4
+ u"晕" : (u"暈", ), # 6655 => 6688
+ u"晖" : (u"暉", ), # 6656 => 6689
+ u"暂" : (u"暫", ), # 6682 => 66AB
+ u"暧" : (u"曖", ), # 66A7 => 66D6
+ u"曲" : (u"麯", ), # 66F2 => 9EAF
+ u"札" : (u"劄", ), # 672D => 5284
+ u"术" : (u"術", ), # 672F => 8853
+ u"朱" : (u"硃", ), # 6731 => 7843
+ u"朴" : (u"樸", ), # 6734 => 6A38
+ u"机" : (u"機", ), # 673A => 6A5F
+ u"杀" : (u"殺", ), # 6740 => 6BBA
+ u"杂" : (u"雜", ), # 6742 => 96DC
+ u"权" : (u"權", ), # 6743 => 6B0A
+ u"条" : (u"條", ), # 6761 => 689D
+ u"来" : (u"來", ), # 6765 => 4F86
+ u"杨" : (u"楊", ), # 6768 => 694A
+ u"杩" : (u"榪", ), # 6769 => 69AA
+ u"杰" : (u"傑", ), # 6770 => 5091
+ u"松" : (u"鬆", ), # 677E => 9B06
+ u"板" : (u"闆", ), # 677F => 95C6
+ u"极" : (u"極", ), # 6781 => 6975
+ u"构" : (u"構", ), # 6784 => 69CB
+ u"枞" : (u"樅", ), # 679E => 6A05
+ u"枢" : (u"樞", ), # 67A2 => 6A1E
+ u"枣" : (u"棗", ), # 67A3 => 68D7
+ u"枥" : (u"櫪", ), # 67A5 => 6AEA
+ u"枧" : (u"梘", ), # 67A7 => 6898
+ u"枨" : (u"棖", ), # 67A8 => 68D6
+ u"枪" : (u"槍", ), # 67AA => 69CD
+ u"枫" : (u"楓", ), # 67AB => 6953
+ u"枭" : (u"梟", ), # 67AD => 689F
+ u"柜" : (u"櫃", ), # 67DC => 6AC3
+ u"柠" : (u"檸", ), # 67E0 => 6AB8
+ u"柽" : (u"檉", ), # 67FD => 6A89
+ u"栀" : (u"梔", ), # 6800 => 6894
+ u"栅" : (u"柵", ), # 6805 => 67F5
+ u"标" : (u"標", ), # 6807 => 6A19
+ u"栈" : (u"棧", ), # 6808 => 68E7
+ u"栉" : (u"櫛", ), # 6809 => 6ADB
+ u"栊" : (u"櫳", ), # 680A => 6AF3
+ u"栋" : (u"棟", ), # 680B => 68DF
+ u"栌" : (u"櫨", ), # 680C => 6AE8
+ u"栎" : (u"櫟", ), # 680E => 6ADF
+ u"栏" : (u"欄", ), # 680F => 6B04
+ u"树" : (u"樹", ), # 6811 => 6A39
+ u"栖" : (u"棲", ), # 6816 => 68F2
+ u"样" : (u"様", u"樣"), # 6837 => 69D8 6A23
+ u"栾" : (u"欒", ), # 683E => 6B12
+ u"桊" : (u"棬", ), # 684A => 68EC
+ u"桠" : (u"椏", ), # 6860 => 690F
+ u"桡" : (u"橈", ), # 6861 => 6A48
+ u"桢" : (u"楨", ), # 6862 => 6968
+ u"档" : (u"檔", ), # 6863 => 6A94
+ u"桤" : (u"榿", ), # 6864 => 69BF
+ u"桥" : (u"橋", ), # 6865 => 6A4B
+ u"桦" : (u"樺", ), # 6866 => 6A3A
+ u"桧" : (u"檜", ), # 6867 => 6A9C
+ u"桨" : (u"槳", ), # 6868 => 69F3
+ u"桩" : (u"樁", ), # 6869 => 6A01
+ u"梦" : (u"夢", ), # 68A6 => 5922
+ u"检" : (u"檢", ), # 68C0 => 6AA2
+ u"棂" : (u"欞", ), # 68C2 => 6B1E
+ u"椁" : (u"槨", ), # 6901 => 69E8
+ u"椟" : (u"櫝", ), # 691F => 6ADD
+ u"椠" : (u"槧", ), # 6920 => 69E7
+ u"椤" : (u"欏", ), # 6924 => 6B0F
+ u"椭" : (u"橢", ), # 692D => 6A62
+ u"楼" : (u"樓", ), # 697C => 6A13
+ u"榄" : (u"欖", ), # 6984 => 6B16
+ u"榇" : (u"櫬", ), # 6987 => 6AEC
+ u"榈" : (u"櫚", ), # 6988 => 6ADA
+ u"榉" : (u"櫸", ), # 6989 => 6AF8
+ u"槚" : (u"檟", ), # 69DA => 6A9F
+ u"槛" : (u"檻", ), # 69DB => 6ABB
+ u"槟" : (u"檳", ), # 69DF => 6AB3
+ u"槠" : (u"櫧", ), # 69E0 => 6AE7
+ u"横" : (u"橫", ), # 6A2A => 6A6B
+ u"樯" : (u"檣", ), # 6A2F => 6AA3
+ u"樱" : (u"櫻", ), # 6A31 => 6AFB
+ u"橥" : (u"櫫", ), # 6A65 => 6AEB
+ u"橱" : (u"櫥", ), # 6A71 => 6AE5
+ u"橹" : (u"櫓", ), # 6A79 => 6AD3
+ u"橼" : (u"櫞", ), # 6A7C => 6ADE
+ u"檐" : (u"簷", ), # 6A90 => 7C37
+ u"檩" : (u"檁", ), # 6AA9 => 6A81
+ u"欢" : (u"歡", ), # 6B22 => 6B61
+ u"欤" : (u"歟", ), # 6B24 => 6B5F
+ u"欧" : (u"歐", ), # 6B27 => 6B50
+ u"歼" : (u"殲", ), # 6B7C => 6BB2
+ u"殁" : (u"歿", ), # 6B81 => 6B7F
+ u"殇" : (u"殤", ), # 6B87 => 6BA4
+ u"残" : (u"殘", ), # 6B8B => 6B98
+ u"殒" : (u"殞", ), # 6B92 => 6B9E
+ u"殓" : (u"殮", ), # 6B93 => 6BAE
+ u"殚" : (u"殫", ), # 6B9A => 6BAB
+ u"殡" : (u"殯", ), # 6BA1 => 6BAF
+ u"殴" : (u"毆", ), # 6BB4 => 6BC6
+ u"毁" : (u"毀", ), # 6BC1 => 6BC0
+ u"毂" : (u"轂", ), # 6BC2 => 8F42
+ u"毕" : (u"畢", ), # 6BD5 => 7562
+ u"毙" : (u"斃", ), # 6BD9 => 6583
+ u"毡" : (u"氈", ), # 6BE1 => 6C08
+ u"毵" : (u"毿", ), # 6BF5 => 6BFF
+ u"氇" : (u"氌", ), # 6C07 => 6C0C
+ u"气" : (u"氣", ), # 6C14 => 6C23
+ u"氢" : (u"氫", ), # 6C22 => 6C2B
+ u"氩" : (u"氬", ), # 6C29 => 6C2C
+ u"氲" : (u"氳", ), # 6C32 => 6C33
+ u"汇" : (u"匯", u"彙"), # 6C47 => 532F 5F59
+ u"汉" : (u"漢", ), # 6C49 => 6F22
+ u"污" : (u"汙", ), # 6C61 => 6C59
+ u"汤" : (u"湯", ), # 6C64 => 6E6F
+ u"汹" : (u"洶", ), # 6C79 => 6D36
+ u"沈" : (u"瀋", ), # 6C88 => 700B
+ u"沓" : (u"遝", ), # 6C93 => 905D
+ u"沟" : (u"溝", ), # 6C9F => 6E9D
+ u"没" : (u"沒", ), # 6CA1 => 6C92
+ u"沣" : (u"灃", ), # 6CA3 => 7043
+ u"沤" : (u"漚", ), # 6CA4 => 6F1A
+ u"沥" : (u"瀝", ), # 6CA5 => 701D
+ u"沦" : (u"淪", ), # 6CA6 => 6DEA
+ u"沧" : (u"滄", ), # 6CA7 => 6EC4
+ u"沨" : (u"渢", ), # 6CA8 => 6E22
+ u"沩" : (u"溈", ), # 6CA9 => 6E88
+ u"沪" : (u"滬", ), # 6CAA => 6EEC
+ u"泞" : (u"濘", ), # 6CDE => 6FD8
+ u"泪" : (u"淚", ), # 6CEA => 6DDA
+ u"泶" : (u"澩", ), # 6CF6 => 6FA9
+ u"泷" : (u"瀧", ), # 6CF7 => 7027
+ u"泸" : (u"瀘", ), # 6CF8 => 7018
+ u"泺" : (u"濼", ), # 6CFA => 6FFC
+ u"泻" : (u"瀉", ), # 6CFB => 7009
+ u"泼" : (u"潑", ), # 6CFC => 6F51
+ u"泽" : (u"澤", ), # 6CFD => 6FA4
+ u"泾" : (u"涇", ), # 6CFE => 6D87
+ u"洁" : (u"潔", ), # 6D01 => 6F54
+ u"洒" : (u"灑", ), # 6D12 => 7051
+ u"洼" : (u"窪", ), # 6D3C => 7AAA
+ u"浃" : (u"浹", ), # 6D43 => 6D79
+ u"浅" : (u"淺", ), # 6D45 => 6DFA
+ u"浆" : (u"漿", ), # 6D46 => 6F3F
+ u"浇" : (u"澆", ), # 6D47 => 6F86
+ u"浈" : (u"湞", ), # 6D48 => 6E5E
+ u"浉" : (u"溮", ), # 6D49 => 6EAE
+ u"浊" : (u"濁", ), # 6D4A => 6FC1
+ u"测" : (u"測", ), # 6D4B => 6E2C
+ u"浍" : (u"澮", ), # 6D4D => 6FAE
+ u"济" : (u"濟", ), # 6D4E => 6FDF
+ u"浏" : (u"瀏", ), # 6D4F => 700F
+ u"浐" : (u"滻", ), # 6D50 => 6EFB
+ u"浑" : (u"渾", ), # 6D51 => 6E3E
+ u"浒" : (u"滸", ), # 6D52 => 6EF8
+ u"浓" : (u"濃", ), # 6D53 => 6FC3
+ u"浔" : (u"潯", ), # 6D54 => 6F6F
+ u"浕" : (u"濜", ), # 6D55 => 6FDC
+ u"涂" : (u"塗", ), # 6D82 => 5857
+ u"涌" : (u"湧", ), # 6D8C => 6E67
+ u"涛" : (u"濤", ), # 6D9B => 6FE4
+ u"涝" : (u"澇", ), # 6D9D => 6F87
+ u"涞" : (u"淶", ), # 6D9E => 6DF6
+ u"涟" : (u"漣", ), # 6D9F => 6F23
+ u"涠" : (u"潿", ), # 6DA0 => 6F7F
+ u"涡" : (u"渦", ), # 6DA1 => 6E26
+ u"涢" : (u"溳", ), # 6DA2 => 6EB3
+ u"涣" : (u"渙", ), # 6DA3 => 6E19
+ u"涤" : (u"滌", ), # 6DA4 => 6ECC
+ u"润" : (u"潤", ), # 6DA6 => 6F64
+ u"涧" : (u"澗", ), # 6DA7 => 6F97
+ u"涨" : (u"漲", ), # 6DA8 => 6F32
+ u"涩" : (u"澀", ), # 6DA9 => 6F80
+ u"淀" : (u"澱", ), # 6DC0 => 6FB1
+ u"渊" : (u"淵", ), # 6E0A => 6DF5
+ u"渌" : (u"淥", ), # 6E0C => 6DE5
+ u"渍" : (u"漬", ), # 6E0D => 6F2C
+ u"渎" : (u"瀆", ), # 6E0E => 7006
+ u"渐" : (u"漸", ), # 6E10 => 6F38
+ u"渑" : (u"澠", ), # 6E11 => 6FA0
+ u"渔" : (u"漁", ), # 6E14 => 6F01
+ u"渖" : (u"瀋", ), # 6E16 => 700B
+ u"渗" : (u"滲", ), # 6E17 => 6EF2
+ u"温" : (u"溫", ), # 6E29 => 6EAB
+ u"湾" : (u"灣", ), # 6E7E => 7063
+ u"湿" : (u"濕", ), # 6E7F => 6FD5
+ u"溃" : (u"潰", ), # 6E83 => 6F70
+ u"溅" : (u"濺", ), # 6E85 => 6FFA
+ u"溆" : (u"漵", ), # 6E86 => 6F35
+ u"溇" : (u"漊", ), # 6E87 => 6F0A
+ u"滗" : (u"潷", ), # 6ED7 => 6F77
+ u"滚" : (u"滾", ), # 6EDA => 6EFE
+ u"滞" : (u"滯", ), # 6EDE => 6EEF
+ u"滟" : (u"灧", u"灩"), # 6EDF => 7067 7069
+ u"滠" : (u"灄", ), # 6EE0 => 7044
+ u"满" : (u"滿", ), # 6EE1 => 6EFF
+ u"滢" : (u"瀅", ), # 6EE2 => 7005
+ u"滤" : (u"濾", ), # 6EE4 => 6FFE
+ u"滥" : (u"濫", ), # 6EE5 => 6FEB
+ u"滦" : (u"灤", ), # 6EE6 => 7064
+ u"滨" : (u"濱", ), # 6EE8 => 6FF1
+ u"滩" : (u"灘", ), # 6EE9 => 7058
+ u"滪" : (u"澦", ), # 6EEA => 6FA6
+ u"漓" : (u"灕", ), # 6F13 => 7055
+ u"漤" : (u"濫", ), # 6F24 => 6FEB
+ u"潆" : (u"瀠", ), # 6F46 => 7020
+ u"潇" : (u"瀟", ), # 6F47 => 701F
+ u"潋" : (u"瀲", ), # 6F4B => 7032
+ u"潍" : (u"濰", ), # 6F4D => 6FF0
+ u"潜" : (u"潛", ), # 6F5C => 6F5B
+ u"潴" : (u"瀦", ), # 6F74 => 7026
+ u"澜" : (u"瀾", ), # 6F9C => 703E
+ u"濑" : (u"瀨", ), # 6FD1 => 7028
+ u"濒" : (u"瀕", ), # 6FD2 => 7015
+ u"灏" : (u"灝", ), # 704F => 705D
+ u"灭" : (u"滅", ), # 706D => 6EC5
+ u"灯" : (u"燈", ), # 706F => 71C8
+ u"灵" : (u"靈", ), # 7075 => 9748
+ u"灶" : (u"竈", ), # 7076 => 7AC8
+ u"灾" : (u"災", ), # 707E => 707D
+ u"灿" : (u"燦", ), # 707F => 71E6
+ u"炀" : (u"煬", ), # 7080 => 716C
+ u"炉" : (u"爐", ), # 7089 => 7210
+ u"炖" : (u"燉", ), # 7096 => 71C9
+ u"炜" : (u"煒", ), # 709C => 7152
+ u"炝" : (u"熗", ), # 709D => 7197
+ u"点" : (u"點", ), # 70B9 => 9EDE
+ u"炼" : (u"煉", ), # 70BC => 7149
+ u"炽" : (u"熾", ), # 70BD => 71BE
+ u"烁" : (u"爍", ), # 70C1 => 720D
+ u"烂" : (u"爛", ), # 70C2 => 721B
+ u"烃" : (u"烴", ), # 70C3 => 70F4
+ u"烛" : (u"燭", ), # 70DB => 71ED
+ u"烟" : (u"煙", ), # 70DF => 7159
+ u"烦" : (u"煩", ), # 70E6 => 7169
+ u"烧" : (u"焼", u"燒"), # 70E7 => 713C 71D2
+ u"烨" : (u"燁", ), # 70E8 => 71C1
+ u"烩" : (u"燴", ), # 70E9 => 71F4
+ u"烫" : (u"燙", ), # 70EB => 71D9
+ u"烬" : (u"燼", ), # 70EC => 71FC
+ u"热" : (u"熱", ), # 70ED => 71B1
+ u"焕" : (u"煥", ), # 7115 => 7165
+ u"焖" : (u"燜", ), # 7116 => 71DC
+ u"焘" : (u"燾", ), # 7118 => 71FE
+ u"煅" : (u"煆", ), # 7145 => 7146
+ u"煳" : (u"糊", ), # 7173 => 7CCA
+ u"煺" : (u"退", ), # 717A => 9000
+ u"熘" : (u"溜", ), # 7198 => 6E9C
+ u"爱" : (u"愛", ), # 7231 => 611B
+ u"爷" : (u"爺", ), # 7237 => 723A
+ u"牍" : (u"牘", ), # 724D => 7258
+ u"牦" : (u"犛", ), # 7266 => 729B
+ u"牵" : (u"牽", ), # 7275 => 727D
+ u"牺" : (u"犧", ), # 727A => 72A7
+ u"犊" : (u"犢", ), # 728A => 72A2
+ u"犟" : (u"強", ), # 729F => 5F37
+ u"犭" : (u"犬", ), # 72AD => 72AC
+ u"状" : (u"狀", ), # 72B6 => 72C0
+ u"犷" : (u"獷", ), # 72B7 => 7377
+ u"犸" : (u"獁", ), # 72B8 => 7341
+ u"犹" : (u"猶", ), # 72B9 => 7336
+ u"狈" : (u"狽", ), # 72C8 => 72FD
+ u"狍" : (u"麅", ), # 72CD => 9E85
+ u"狞" : (u"獰", ), # 72DE => 7370
+ u"独" : (u"獨", ), # 72EC => 7368
+ u"狭" : (u"狹", ), # 72ED => 72F9
+ u"狮" : (u"獅", ), # 72EE => 7345
+ u"狯" : (u"獪", ), # 72EF => 736A
+ u"狰" : (u"猙", ), # 72F0 => 7319
+ u"狱" : (u"獄", ), # 72F1 => 7344
+ u"狲" : (u"猻", ), # 72F2 => 733B
+ u"猃" : (u"獫", ), # 7303 => 736B
+ u"猎" : (u"獵", ), # 730E => 7375
+ u"猕" : (u"獼", ), # 7315 => 737C
+ u"猡" : (u"玀", ), # 7321 => 7380
+ u"猪" : (u"豬", ), # 732A => 8C6C
+ u"猫" : (u"貓", ), # 732B => 8C93
+ u"猬" : (u"蝟", ), # 732C => 875F
+ u"献" : (u"獻", ), # 732E => 737B
+ u"獭" : (u"獺", ), # 736D => 737A
+ u"玑" : (u"璣", ), # 7391 => 74A3
+ u"玛" : (u"瑪", ), # 739B => 746A
+ u"玮" : (u"瑋", ), # 73AE => 744B
+ u"环" : (u"環", ), # 73AF => 74B0
+ u"现" : (u"現", ), # 73B0 => 73FE
+ u"玱" : (u"瑲", ), # 73B1 => 7472
+ u"玺" : (u"壐", u"璽"), # 73BA => 58D0 74BD
+ u"珉" : (u"瑉", ), # 73C9 => 7449
+ u"珏" : (u"玨", ), # 73CF => 73A8
+ u"珐" : (u"琺", ), # 73D0 => 743A
+ u"珑" : (u"瓏", ), # 73D1 => 74CF
+ u"珲" : (u"琿", ), # 73F2 => 743F
+ u"琎" : (u"璡", ), # 740E => 74A1
+ u"琏" : (u"璉", ), # 740F => 7489
+ u"琐" : (u"瑣", ), # 7410 => 7463
+ u"琼" : (u"瓊", ), # 743C => 74CA
+ u"瑶" : (u"瑤", ), # 7476 => 7464
+ u"瑷" : (u"璦", ), # 7477 => 74A6
+ u"璇" : (u"璿", ), # 7487 => 74BF
+ u"璎" : (u"瓔", ), # 748E => 74D4
+ u"瓒" : (u"瓚", ), # 74D2 => 74DA
+ u"瓮" : (u"甕", ), # 74EE => 7515
+ u"瓯" : (u"甌", ), # 74EF => 750C
+ u"电" : (u"電", ), # 7535 => 96FB
+ u"画" : (u"畫", ), # 753B => 756B
+ u"畅" : (u"暢", ), # 7545 => 66A2
+ u"畲" : (u"佘", ), # 7572 => 4F58
+ u"畴" : (u"疇", ), # 7574 => 7587
+ u"疖" : (u"癤", ), # 7596 => 7664
+ u"疗" : (u"療", ), # 7597 => 7642
+ u"疟" : (u"瘧", ), # 759F => 7627
+ u"疠" : (u"癘", ), # 75A0 => 7658
+ u"疡" : (u"瘍", ), # 75A1 => 760D
+ u"疬" : (u"癧", u"鬁"), # 75AC => 7667 9B01
+ u"疮" : (u"瘡", ), # 75AE => 7621
+ u"疯" : (u"瘋", ), # 75AF => 760B
+ u"疱" : (u"皰", ), # 75B1 => 76B0
+ u"疴" : (u"屙", ), # 75B4 => 5C59
+ u"症" : (u"癥", ), # 75C7 => 7665
+ u"痈" : (u"癰", ), # 75C8 => 7670
+ u"痉" : (u"痙", ), # 75C9 => 75D9
+ u"痒" : (u"癢", ), # 75D2 => 7662
+ u"痖" : (u"瘂", ), # 75D6 => 7602
+ u"痨" : (u"癆", ), # 75E8 => 7646
+ u"痪" : (u"瘓", ), # 75EA => 7613
+ u"痫" : (u"癇", ), # 75EB => 7647
+ u"痴" : (u"癡", ), # 75F4 => 7661
+ u"瘅" : (u"癉", ), # 7605 => 7649
+ u"瘆" : (u"瘮", ), # 7606 => 762E
+ u"瘗" : (u"瘞", ), # 7617 => 761E
+ u"瘘" : (u"瘺", u"瘻"), # 7618 => 763A 763B
+ u"瘪" : (u"癟", ), # 762A => 765F
+ u"瘫" : (u"癱", ), # 762B => 7671
+ u"瘾" : (u"癮", ), # 763E => 766E
+ u"瘿" : (u"癭", ), # 763F => 766D
+ u"癞" : (u"癩", ), # 765E => 7669
+ u"癣" : (u"癬", ), # 7663 => 766C
+ u"癫" : (u"癲", ), # 766B => 7672
+ u"癯" : (u"臒", ), # 766F => 81D2
+ u"皑" : (u"皚", ), # 7691 => 769A
+ u"皱" : (u"皺", ), # 76B1 => 76BA
+ u"皲" : (u"皸", ), # 76B2 => 76B8
+ u"盏" : (u"盞", ), # 76CF => 76DE
+ u"盐" : (u"鹽", ), # 76D0 => 9E7D
+ u"监" : (u"監", ), # 76D1 => 76E3
+ u"盖" : (u"蓋", ), # 76D6 => 84CB
+ u"盗" : (u"盜", ), # 76D7 => 76DC
+ u"盘" : (u"盤", ), # 76D8 => 76E4
+ u"眍" : (u"瞘", ), # 770D => 7798
+ u"眦" : (u"眥", ), # 7726 => 7725
+ u"着" : (u"著", ), # 7740 => 8457
+ u"睁" : (u"睜", ), # 7741 => 775C
+ u"睐" : (u"睞", ), # 7750 => 775E
+ u"睑" : (u"瞼", ), # 7751 => 77BC
+ u"瞒" : (u"瞞", ), # 7792 => 779E
+ u"瞩" : (u"矚", ), # 77A9 => 77DA
+ u"矫" : (u"矯", ), # 77EB => 77EF
+ u"矶" : (u"磯", ), # 77F6 => 78EF
+ u"矾" : (u"礬", ), # 77FE => 792C
+ u"矿" : (u"礦", ), # 77FF => 7926
+ u"砀" : (u"碭", ), # 7800 => 78AD
+ u"码" : (u"碼", ), # 7801 => 78BC
+ u"砖" : (u"磚", ), # 7816 => 78DA
+ u"砗" : (u"硨", ), # 7817 => 7868
+ u"砚" : (u"硯", ), # 781A => 786F
+ u"砜" : (u"碸", ), # 781C => 78B8
+ u"砺" : (u"礪", ), # 783A => 792A
+ u"砻" : (u"礱", ), # 783B => 7931
+ u"砾" : (u"礫", ), # 783E => 792B
+ u"础" : (u"礎", ), # 7840 => 790E
+ u"硅" : (u"矽", ), # 7845 => 77FD
+ u"硕" : (u"碩", ), # 7855 => 78A9
+ u"硖" : (u"硤", ), # 7856 => 7864
+ u"硗" : (u"磽", ), # 7857 => 78FD
+ u"硙" : (u"磑", ), # 7859 => 78D1
+ u"硚" : (u"礄", ), # 785A => 7904
+ u"确" : (u"確", ), # 786E => 78BA
+ u"硷" : (u"鹸", u"鹼"), # 7877 => 9E78 9E7C
+ u"碍" : (u"礙", ), # 788D => 7919
+ u"碛" : (u"磧", ), # 789B => 78E7
+ u"碜" : (u"磣", ), # 789C => 78E3
+ u"碱" : (u"堿", ), # 78B1 => 583F
+ u"碹" : (u"镟", ), # 78B9 => 955F
+ u"磙" : (u"滾", ), # 78D9 => 6EFE
+ u"礼" : (u"禮", ), # 793C => 79AE
+ u"祎" : (u"禕", ), # 794E => 7995
+ u"祢" : (u"禰", ), # 7962 => 79B0
+ u"祯" : (u"禎", ), # 796F => 798E
+ u"祷" : (u"禱", ), # 7977 => 79B1
+ u"祸" : (u"禍", ), # 7978 => 798D
+ u"禀" : (u"稟", ), # 7980 => 7A1F
+ u"禄" : (u"祿", ), # 7984 => 797F
+ u"禅" : (u"禪", ), # 7985 => 79AA
+ u"离" : (u"離", ), # 79BB => 96E2
+ u"秃" : (u"禿", ), # 79C3 => 79BF
+ u"秆" : (u"稈", ), # 79C6 => 7A08
+ u"秋" : (u"鞦", ), # 79CB => 97A6
+ u"种" : (u"種", ), # 79CD => 7A2E
+ u"积" : (u"積", ), # 79EF => 7A4D
+ u"称" : (u"稱", ), # 79F0 => 7A31
+ u"秽" : (u"穢", ), # 79FD => 7A62
+ u"稆" : (u"穭", ), # 7A06 => 7A6D
+ u"税" : (u"稅", ), # 7A0E => 7A05
+ u"稣" : (u"穌", ), # 7A23 => 7A4C
+ u"稳" : (u"穩", ), # 7A33 => 7A69
+ u"穑" : (u"穡", ), # 7A51 => 7A61
+ u"穷" : (u"窮", ), # 7A77 => 7AAE
+ u"窃" : (u"竊", ), # 7A83 => 7ACA
+ u"窍" : (u"竅", ), # 7A8D => 7AC5
+ u"窎" : (u"窵", ), # 7A8E => 7AB5
+ u"窑" : (u"窯", ), # 7A91 => 7AAF
+ u"窜" : (u"竄", ), # 7A9C => 7AC4
+ u"窝" : (u"窩", ), # 7A9D => 7AA9
+ u"窥" : (u"窺", ), # 7AA5 => 7ABA
+ u"窦" : (u"竇", ), # 7AA6 => 7AC7
+ u"窭" : (u"窶", ), # 7AAD => 7AB6
+ u"竖" : (u"竪", u"豎"), # 7AD6 => 7AEA 8C4E
+ u"竞" : (u"競", ), # 7ADE => 7AF6
+ u"笃" : (u"篤", ), # 7B03 => 7BE4
+ u"笋" : (u"筍", ), # 7B0B => 7B4D
+ u"笔" : (u"筆", ), # 7B14 => 7B46
+ u"笕" : (u"筧", ), # 7B15 => 7B67
+ u"笺" : (u"箋", ), # 7B3A => 7B8B
+ u"笼" : (u"籠", ), # 7B3C => 7C60
+ u"笾" : (u"籩", ), # 7B3E => 7C69
+ u"筑" : (u"築", ), # 7B51 => 7BC9
+ u"筚" : (u"篳", ), # 7B5A => 7BF3
+ u"筛" : (u"篩", ), # 7B5B => 7BE9
+ u"筝" : (u"箏", ), # 7B5D => 7B8F
+ u"筹" : (u"籌", ), # 7B79 => 7C4C
+ u"签" : (u"簽", u"籤"), # 7B7E => 7C3D 7C64
+ u"简" : (u"簡", ), # 7B80 => 7C21
+ u"箓" : (u"籙", ), # 7B93 => 7C59
+ u"箦" : (u"簀", ), # 7BA6 => 7C00
+ u"箧" : (u"篋", ), # 7BA7 => 7BCB
+ u"箨" : (u"籜", ), # 7BA8 => 7C5C
+ u"箩" : (u"籮", ), # 7BA9 => 7C6E
+ u"箪" : (u"簞", ), # 7BAA => 7C1E
+ u"箫" : (u"簫", ), # 7BAB => 7C2B
+ u"篑" : (u"簣", ), # 7BD1 => 7C23
+ u"篓" : (u"簍", ), # 7BD3 => 7C0D
+ u"篮" : (u"籃", ), # 7BEE => 7C43
+ u"篱" : (u"籬", ), # 7BF1 => 7C6C
+ u"簖" : (u"籪", ), # 7C16 => 7C6A
+ u"籁" : (u"籟", ), # 7C41 => 7C5F
+ u"籴" : (u"糴", ), # 7C74 => 7CF4
+ u"类" : (u"類", ), # 7C7B => 985E
+ u"籼" : (u"秈", ), # 7C7C => 79C8
+ u"粜" : (u"糶", ), # 7C9C => 7CF6
+ u"粝" : (u"糲", ), # 7C9D => 7CF2
+ u"粤" : (u"粵", ), # 7CA4 => 7CB5
+ u"粪" : (u"糞", ), # 7CAA => 7CDE
+ u"粮" : (u"糧", ), # 7CAE => 7CE7
+ u"糁" : (u"糝", ), # 7CC1 => 7CDD
+ u"糇" : (u"餱", ), # 7CC7 => 9931
+ u"系" : (u"係", u"繫"), # 7CFB => 4FC2 7E6B
+ u"紧" : (u"緊", ), # 7D27 => 7DCA
+ u"累" : (u"纍", ), # 7D2F => 7E8D
+ u"絷" : (u"縶", ), # 7D77 => 7E36
+ u"纟" : (u"糸", ), # 7E9F => 7CF8
+ u"纠" : (u"糾", ), # 7EA0 => 7CFE
+ u"纡" : (u"紆", ), # 7EA1 => 7D06
+ u"红" : (u"紅", ), # 7EA2 => 7D05
+ u"纣" : (u"紂", ), # 7EA3 => 7D02
+ u"纤" : (u"縴", u"纖"), # 7EA4 => 7E34 7E96
+ u"纥" : (u"紇", ), # 7EA5 => 7D07
+ u"约" : (u"約", ), # 7EA6 => 7D04
+ u"级" : (u"級", ), # 7EA7 => 7D1A
+ u"纨" : (u"紈", ), # 7EA8 => 7D08
+ u"纩" : (u"纊", ), # 7EA9 => 7E8A
+ u"纪" : (u"紀", ), # 7EAA => 7D00
+ u"纫" : (u"紉", ), # 7EAB => 7D09
+ u"纬" : (u"緯", ), # 7EAC => 7DEF
+ u"纭" : (u"紜", ), # 7EAD => 7D1C
+ u"纯" : (u"純", ), # 7EAF => 7D14
+ u"纰" : (u"紕", ), # 7EB0 => 7D15
+ u"纱" : (u"紗", ), # 7EB1 => 7D17
+ u"纲" : (u"綱", ), # 7EB2 => 7DB1
+ u"纳" : (u"納", ), # 7EB3 => 7D0D
+ u"纴" : (u"紝", ), # 7EB4 => 7D1D
+ u"纵" : (u"縱", ), # 7EB5 => 7E31
+ u"纶" : (u"綸", ), # 7EB6 => 7DB8
+ u"纷" : (u"紛", ), # 7EB7 => 7D1B
+ u"纸" : (u"紙", ), # 7EB8 => 7D19
+ u"纹" : (u"紋", ), # 7EB9 => 7D0B
+ u"纺" : (u"紡", ), # 7EBA => 7D21
+ u"纼" : (u"紖", ), # 7EBC => 7D16
+ u"纽" : (u"紐", ), # 7EBD => 7D10
+ u"纾" : (u"紓", ), # 7EBE => 7D13
+ u"线" : (u"綫", u"線"), # 7EBF => 7DAB 7DDA
+ u"绀" : (u"紺", ), # 7EC0 => 7D3A
+ u"绁" : (u"紲", u"絏"), # 7EC1 => 7D32 7D4F
+ u"绂" : (u"紱", ), # 7EC2 => 7D31
+ u"练" : (u"練", ), # 7EC3 => 7DF4
+ u"组" : (u"組", ), # 7EC4 => 7D44
+ u"绅" : (u"紳", ), # 7EC5 => 7D33
+ u"细" : (u"細", ), # 7EC6 => 7D30
+ u"织" : (u"織", ), # 7EC7 => 7E54
+ u"终" : (u"終", ), # 7EC8 => 7D42
+ u"绉" : (u"縐", ), # 7EC9 => 7E10
+ u"绊" : (u"絆", ), # 7ECA => 7D46
+ u"绋" : (u"紼", ), # 7ECB => 7D3C
+ u"绌" : (u"絀", ), # 7ECC => 7D40
+ u"绍" : (u"紹", ), # 7ECD => 7D39
+ u"绎" : (u"繹", ), # 7ECE => 7E79
+ u"经" : (u"經", ), # 7ECF => 7D93
+ u"绐" : (u"紿", ), # 7ED0 => 7D3F
+ u"绑" : (u"綁", ), # 7ED1 => 7D81
+ u"绒" : (u"絨", ), # 7ED2 => 7D68
+ u"结" : (u"結", ), # 7ED3 => 7D50
+ u"绔" : (u"絝", ), # 7ED4 => 7D5D
+ u"绕" : (u"繞", ), # 7ED5 => 7E5E
+ u"绖" : (u"絰", ), # 7ED6 => 7D70
+ u"绗" : (u"絎", ), # 7ED7 => 7D4E
+ u"绘" : (u"繪", ), # 7ED8 => 7E6A
+ u"给" : (u"給", ), # 7ED9 => 7D66
+ u"绚" : (u"絢", ), # 7EDA => 7D62
+ u"绛" : (u"絳", ), # 7EDB => 7D73
+ u"络" : (u"絡", ), # 7EDC => 7D61
+ u"绝" : (u"絕", u"絶"), # 7EDD => 7D55 7D76
+ u"绞" : (u"絞", ), # 7EDE => 7D5E
+ u"统" : (u"統", ), # 7EDF => 7D71
+ u"绠" : (u"綆", ), # 7EE0 => 7D86
+ u"绡" : (u"綃", ), # 7EE1 => 7D83
+ u"绢" : (u"絹", ), # 7EE2 => 7D79
+ u"绣" : (u"綉", u"繡"), # 7EE3 => 7D89 7E61
+ u"绥" : (u"綏", ), # 7EE5 => 7D8F
+ u"绦" : (u"絛", u"縧"), # 7EE6 => 7D5B 7E27
+ u"继" : (u"繼", ), # 7EE7 => 7E7C
+ u"绨" : (u"綈", ), # 7EE8 => 7D88
+ u"绩" : (u"績", ), # 7EE9 => 7E3E
+ u"绪" : (u"緒", ), # 7EEA => 7DD2
+ u"绫" : (u"綾", ), # 7EEB => 7DBE
+ u"续" : (u"續", ), # 7EED => 7E8C
+ u"绮" : (u"綺", ), # 7EEE => 7DBA
+ u"绯" : (u"緋", ), # 7EEF => 7DCB
+ u"绰" : (u"綽", ), # 7EF0 => 7DBD
+ u"绱" : (u"緔", ), # 7EF1 => 7DD4
+ u"绲" : (u"緄", ), # 7EF2 => 7DC4
+ u"绳" : (u"繩", ), # 7EF3 => 7E69
+ u"维" : (u"維", ), # 7EF4 => 7DAD
+ u"绵" : (u"綿", ), # 7EF5 => 7DBF
+ u"绶" : (u"綬", ), # 7EF6 => 7DAC
+ u"绷" : (u"綳", u"繃"), # 7EF7 => 7DB3 7E43
+ u"绸" : (u"綢", ), # 7EF8 => 7DA2
+ u"绺" : (u"綹", ), # 7EFA => 7DB9
+ u"绻" : (u"綣", ), # 7EFB => 7DA3
+ u"综" : (u"綜", ), # 7EFC => 7D9C
+ u"绽" : (u"綻", ), # 7EFD => 7DBB
+ u"绾" : (u"綰", ), # 7EFE => 7DB0
+ u"绿" : (u"綠", u"緑"), # 7EFF => 7DA0 7DD1
+ u"缀" : (u"綴", ), # 7F00 => 7DB4
+ u"缁" : (u"緇", ), # 7F01 => 7DC7
+ u"缂" : (u"緙", ), # 7F02 => 7DD9
+ u"缃" : (u"緗", ), # 7F03 => 7DD7
+ u"缄" : (u"緘", ), # 7F04 => 7DD8
+ u"缅" : (u"緬", ), # 7F05 => 7DEC
+ u"缆" : (u"纜", ), # 7F06 => 7E9C
+ u"缇" : (u"緹", ), # 7F07 => 7DF9
+ u"缈" : (u"緲", ), # 7F08 => 7DF2
+ u"缉" : (u"緝", ), # 7F09 => 7DDD
+ u"缊" : (u"緼", ), # 7F0A => 7DFC
+ u"缋" : (u"繢", ), # 7F0B => 7E62
+ u"缌" : (u"緦", ), # 7F0C => 7DE6
+ u"缍" : (u"綞", ), # 7F0D => 7D9E
+ u"缎" : (u"緞", ), # 7F0E => 7DDE
+ u"缏" : (u"緶", ), # 7F0F => 7DF6
+ u"缑" : (u"緱", ), # 7F11 => 7DF1
+ u"缒" : (u"縋", ), # 7F12 => 7E0B
+ u"缓" : (u"緩", ), # 7F13 => 7DE9
+ u"缔" : (u"締", ), # 7F14 => 7DE0
+ u"缕" : (u"縷", ), # 7F15 => 7E37
+ u"编" : (u"編", ), # 7F16 => 7DE8
+ u"缗" : (u"緡", ), # 7F17 => 7DE1
+ u"缘" : (u"緣", ), # 7F18 => 7DE3
+ u"缙" : (u"縉", ), # 7F19 => 7E09
+ u"缚" : (u"縛", ), # 7F1A => 7E1B
+ u"缛" : (u"縟", ), # 7F1B => 7E1F
+ u"缜" : (u"縝", ), # 7F1C => 7E1D
+ u"缝" : (u"縫", ), # 7F1D => 7E2B
+ u"缞" : (u"縗", ), # 7F1E => 7E17
+ u"缟" : (u"縞", ), # 7F1F => 7E1E
+ u"缠" : (u"纏", ), # 7F20 => 7E8F
+ u"缡" : (u"縭", ), # 7F21 => 7E2D
+ u"缢" : (u"縊", ), # 7F22 => 7E0A
+ u"缣" : (u"縑", ), # 7F23 => 7E11
+ u"缤" : (u"繽", ), # 7F24 => 7E7D
+ u"缥" : (u"縹", ), # 7F25 => 7E39
+ u"缦" : (u"縵", ), # 7F26 => 7E35
+ u"缧" : (u"縲", ), # 7F27 => 7E32
+ u"缨" : (u"纓", ), # 7F28 => 7E93
+ u"缩" : (u"縮", ), # 7F29 => 7E2E
+ u"缪" : (u"繆", ), # 7F2A => 7E46
+ u"缫" : (u"繅", ), # 7F2B => 7E45
+ u"缬" : (u"纈", ), # 7F2C => 7E88
+ u"缭" : (u"繚", ), # 7F2D => 7E5A
+ u"缮" : (u"繕", ), # 7F2E => 7E55
+ u"缯" : (u"繒", ), # 7F2F => 7E52
+ u"缰" : (u"繮", u"韁"), # 7F30 => 7E6E 97C1
+ u"缱" : (u"繾", ), # 7F31 => 7E7E
+ u"缲" : (u"繰", ), # 7F32 => 7E70
+ u"缳" : (u"繯", ), # 7F33 => 7E6F
+ u"缴" : (u"繳", ), # 7F34 => 7E73
+ u"缵" : (u"纘", ), # 7F35 => 7E98
+ u"罂" : (u"罌", ), # 7F42 => 7F4C
+ u"网" : (u"網", ), # 7F51 => 7DB2
+ u"罗" : (u"羅", ), # 7F57 => 7F85
+ u"罚" : (u"罰", u"罸"), # 7F5A => 7F70 7F78
+ u"罢" : (u"罷", ), # 7F62 => 7F77
+ u"罴" : (u"羆", ), # 7F74 => 7F86
+ u"羁" : (u"羈", u"覊"), # 7F81 => 7F88 898A
+ u"羟" : (u"羥", ), # 7F9F => 7FA5
+ u"羡" : (u"羨", ), # 7FA1 => 7FA8
+ u"翘" : (u"翹", ), # 7FD8 => 7FF9
+ u"翚" : (u"翬", ), # 7FDA => 7FEC
+ u"耢" : (u"耮", ), # 8022 => 802E
+ u"耧" : (u"耬", ), # 8027 => 802C
+ u"耸" : (u"聳", ), # 8038 => 8073
+ u"耻" : (u"恥", ), # 803B => 6065
+ u"聂" : (u"聶", ), # 8042 => 8076
+ u"聋" : (u"聾", ), # 804B => 807E
+ u"职" : (u"職", ), # 804C => 8077
+ u"聍" : (u"聹", ), # 804D => 8079
+ u"联" : (u"聯", ), # 8054 => 806F
+ u"聩" : (u"聵", ), # 8069 => 8075
+ u"聪" : (u"聰", ), # 806A => 8070
+ u"肃" : (u"肅", ), # 8083 => 8085
+ u"肠" : (u"腸", ), # 80A0 => 8178
+ u"肤" : (u"膚", ), # 80A4 => 819A
+ u"肮" : (u"骯", ), # 80AE => 9AAF
+ u"肷" : (u"膁", ), # 80B7 => 8181
+ u"肾" : (u"腎", ), # 80BE => 814E
+ u"肿" : (u"腫", ), # 80BF => 816B
+ u"胀" : (u"脹", ), # 80C0 => 8139
+ u"胁" : (u"脅", ), # 80C1 => 8105
+ u"胆" : (u"膽", ), # 80C6 => 81BD
+ u"胜" : (u"勝", ), # 80DC => 52DD
+ u"胡" : (u"鬍", ), # 80E1 => 9B0D
+ u"胧" : (u"朧", ), # 80E7 => 6727
+ u"胨" : (u"腖", ), # 80E8 => 8156
+ u"胪" : (u"臚", ), # 80EA => 81DA
+ u"胫" : (u"脛", ), # 80EB => 811B
+ u"胶" : (u"膠", ), # 80F6 => 81A0
+ u"脉" : (u"脈", ), # 8109 => 8108
+ u"脍" : (u"膾", ), # 810D => 81BE
+ u"脏" : (u"贜", u"髒"), # 810F => 8D1C 9AD2
+ u"脐" : (u"臍", ), # 8110 => 81CD
+ u"脑" : (u"腦", ), # 8111 => 8166
+ u"脓" : (u"膿", ), # 8113 => 81BF
+ u"脔" : (u"臠", ), # 8114 => 81E0
+ u"脚" : (u"腳", ), # 811A => 8173
+ u"脱" : (u"脫", ), # 8131 => 812B
+ u"脶" : (u"腡", ), # 8136 => 8161
+ u"脸" : (u"臉", ), # 8138 => 81C9
+ u"腊" : (u"臘", ), # 814A => 81D8
+ u"腌" : (u"醃", ), # 814C => 9183
+ u"腘" : (u"膕", ), # 8158 => 8195
+ u"腭" : (u"齶", ), # 816D => 9F76
+ u"腻" : (u"膩", ), # 817B => 81A9
+ u"腼" : (u"靦", ), # 817C => 9766
+ u"腽" : (u"膃", ), # 817D => 8183
+ u"腾" : (u"騰", ), # 817E => 9A30
+ u"膑" : (u"臏", ), # 8191 => 81CF
+ u"臜" : (u"臢", ), # 81DC => 81E2
+ u"致" : (u"緻", ), # 81F4 => 7DFB
+ u"舆" : (u"輿", ), # 8206 => 8F3F
+ u"舍" : (u"捨", ), # 820D => 6368
+ u"舣" : (u"艤", ), # 8223 => 8264
+ u"舰" : (u"艦", ), # 8230 => 8266
+ u"舱" : (u"艙", ), # 8231 => 8259
+ u"舻" : (u"艫", ), # 823B => 826B
+ u"艰" : (u"艱", ), # 8270 => 8271
+ u"艳" : (u"艶", u"豔"), # 8273 => 8276 8C54
+ u"艹" : (u"艸", ), # 8279 => 8278
+ u"艺" : (u"兿", u"藝"), # 827A => 517F 85DD
+ u"节" : (u"節", ), # 8282 => 7BC0
+ u"芈" : (u"羋", ), # 8288 => 7F8B
+ u"芗" : (u"薌", ), # 8297 => 858C
+ u"芜" : (u"蕪", ), # 829C => 856A
+ u"芦" : (u"蘆", ), # 82A6 => 8606
+ u"芸" : (u"蕓", ), # 82B8 => 8553
+ u"苁" : (u"蓯", ), # 82C1 => 84EF
+ u"苇" : (u"葦", ), # 82C7 => 8466
+ u"苈" : (u"藶", ), # 82C8 => 85F6
+ u"苋" : (u"莧", ), # 82CB => 83A7
+ u"苌" : (u"萇", ), # 82CC => 8407
+ u"苍" : (u"蒼", ), # 82CD => 84BC
+ u"苎" : (u"苧", ), # 82CE => 82E7
+ u"苏" : (u"囌", u"蘇"), # 82CF => 56CC 8607
+ u"苘" : (u"檾", ), # 82D8 => 6ABE
+ u"苹" : (u"蘋", ), # 82F9 => 860B
+ u"范" : (u"範", ), # 8303 => 7BC4
+ u"茎" : (u"莖", ), # 830E => 8396
+ u"茏" : (u"蘢", ), # 830F => 8622
+ u"茑" : (u"蔦", ), # 8311 => 8526
+ u"茔" : (u"塋", ), # 8314 => 584B
+ u"茕" : (u"煢", ), # 8315 => 7162
+ u"茧" : (u"繭", ), # 8327 => 7E6D
+ u"荆" : (u"荊", ), # 8346 => 834A
+ u"荐" : (u"薦", ), # 8350 => 85A6
+ u"荚" : (u"莢", ), # 835A => 83A2
+ u"荛" : (u"蕘", ), # 835B => 8558
+ u"荜" : (u"蓽", ), # 835C => 84FD
+ u"荞" : (u"蕎", ), # 835E => 854E
+ u"荟" : (u"薈", ), # 835F => 8588
+ u"荠" : (u"薺", ), # 8360 => 85BA
+ u"荡" : (u"蕩", ), # 8361 => 8569
+ u"荣" : (u"榮", ), # 8363 => 69AE
+ u"荤" : (u"葷", ), # 8364 => 8477
+ u"荥" : (u"滎", ), # 8365 => 6ECE
+ u"荦" : (u"犖", ), # 8366 => 7296
+ u"荧" : (u"熒", ), # 8367 => 7192
+ u"荨" : (u"蕁", ), # 8368 => 8541
+ u"荩" : (u"藎", ), # 8369 => 85CE
+ u"荪" : (u"蓀", ), # 836A => 84C0
+ u"荫" : (u"蔭", ), # 836B => 852D
+ u"荬" : (u"蕒", ), # 836C => 8552
+ u"荭" : (u"葒", ), # 836D => 8452
+ u"荮" : (u"葤", ), # 836E => 8464
+ u"药" : (u"藥", ), # 836F => 85E5
+ u"莅" : (u"蒞", ), # 8385 => 849E
+ u"莜" : (u"蓧", ), # 839C => 84E7
+ u"莱" : (u"萊", ), # 83B1 => 840A
+ u"莲" : (u"蓮", ), # 83B2 => 84EE
+ u"莳" : (u"蒔", ), # 83B3 => 8494
+ u"莴" : (u"萵", ), # 83B4 => 8435
+ u"莶" : (u"薟", ), # 83B6 => 859F
+ u"获" : (u"獲", u"穫"), # 83B7 => 7372 7A6B
+ u"莸" : (u"蕕", ), # 83B8 => 8555
+ u"莹" : (u"瑩", ), # 83B9 => 7469
+ u"莺" : (u"鶯", ), # 83BA => 9DAF
+ u"莼" : (u"蒓", u"蓴"), # 83BC => 8493 84F4
+ u"萚" : (u"蘀", ), # 841A => 8600
+ u"萝" : (u"蘿", ), # 841D => 863F
+ u"萤" : (u"螢", ), # 8424 => 87A2
+ u"营" : (u"營", ), # 8425 => 71DF
+ u"萦" : (u"縈", ), # 8426 => 7E08
+ u"萧" : (u"蕭", ), # 8427 => 856D
+ u"萨" : (u"薩", ), # 8428 => 85A9
+ u"葱" : (u"蔥", ), # 8471 => 8525
+ u"蒇" : (u"蕆", ), # 8487 => 8546
+ u"蒉" : (u"蕢", ), # 8489 => 8562
+ u"蒋" : (u"蔣", ), # 848B => 8523
+ u"蒌" : (u"蔞", ), # 848C => 851E
+ u"蒙" : (u"懞", u"濛", u"矇"), # 8499 => 61DE 6FDB 77C7
+ u"蓝" : (u"藍", ), # 84DD => 85CD
+ u"蓟" : (u"薊", ), # 84DF => 858A
+ u"蓠" : (u"蘺", ), # 84E0 => 863A
+ u"蓣" : (u"蕷", ), # 84E3 => 8577
+ u"蓥" : (u"鎣", ), # 84E5 => 93A3
+ u"蓦" : (u"驀", ), # 84E6 => 9A40
+ u"蔑" : (u"衊", ), # 8511 => 884A
+ u"蔷" : (u"薔", ), # 8537 => 8594
+ u"蔹" : (u"蘞", ), # 8539 => 861E
+ u"蔺" : (u"藺", ), # 853A => 85FA
+ u"蔼" : (u"藹", ), # 853C => 85F9
+ u"蕲" : (u"蘄", ), # 8572 => 8604
+ u"蕴" : (u"藴", u"蘊"), # 8574 => 85F4 860A
+ u"薮" : (u"藪", ), # 85AE => 85EA
+ u"藁" : (u"槁", ), # 85C1 => 69C1
+ u"藓" : (u"蘚", ), # 85D3 => 861A
+ u"虏" : (u"虜", ), # 864F => 865C
+ u"虑" : (u"慮", ), # 8651 => 616E
+ u"虚" : (u"虛", ), # 865A => 865B
+ u"虫" : (u"蟲", ), # 866B => 87F2
+ u"虬" : (u"虯", ), # 866C => 866F
+ u"虮" : (u"蟣", ), # 866E => 87E3
+ u"虽" : (u"雖", ), # 867D => 96D6
+ u"虾" : (u"蝦", ), # 867E => 8766
+ u"虿" : (u"蠆", ), # 867F => 8806
+ u"蚀" : (u"蝕", ), # 8680 => 8755
+ u"蚁" : (u"蟻", ), # 8681 => 87FB
+ u"蚂" : (u"螞", ), # 8682 => 879E
+ u"蚕" : (u"蠶", ), # 8695 => 8836
+ u"蚝" : (u"蠔", ), # 869D => 8814
+ u"蚬" : (u"蜆", ), # 86AC => 8706
+ u"蛊" : (u"蠱", ), # 86CA => 8831
+ u"蛎" : (u"蠣", ), # 86CE => 8823
+ u"蛏" : (u"蟶", ), # 86CF => 87F6
+ u"蛮" : (u"蠻", ), # 86EE => 883B
+ u"蛰" : (u"蟄", ), # 86F0 => 87C4
+ u"蛱" : (u"蛺", ), # 86F1 => 86FA
+ u"蛲" : (u"蟯", ), # 86F2 => 87EF
+ u"蛳" : (u"螄", ), # 86F3 => 8784
+ u"蛴" : (u"蠐", ), # 86F4 => 8810
+ u"蜕" : (u"蛻", ), # 8715 => 86FB
+ u"蜗" : (u"蝸", ), # 8717 => 8778
+ u"蜡" : (u"蠟", ), # 8721 => 881F
+ u"蝇" : (u"蠅", ), # 8747 => 8805
+ u"蝈" : (u"蟈", ), # 8748 => 87C8
+ u"蝉" : (u"蟬", ), # 8749 => 87EC
+ u"蝎" : (u"蠍", ), # 874E => 880D
+ u"蝼" : (u"螻", ), # 877C => 87BB
+ u"蝾" : (u"蠑", ), # 877E => 8811
+ u"螨" : (u"蟎", ), # 87A8 => 87CE
+ u"蟏" : (u"蠨", ), # 87CF => 8828
+ u"衅" : (u"釁", ), # 8845 => 91C1
+ u"衔" : (u"銜", ), # 8854 => 929C
+ u"补" : (u"補", ), # 8865 => 88DC
+ u"表" : (u"錶", ), # 8868 => 9336
+ u"衬" : (u"襯", ), # 886C => 896F
+ u"衮" : (u"袞", ), # 886E => 889E
+ u"袄" : (u"襖", ), # 8884 => 8956
+ u"袅" : (u"嫋", u"裊"), # 8885 => 5ACB 88CA
+ u"袜" : (u"襪", ), # 889C => 896A
+ u"袭" : (u"襲", ), # 88AD => 8972
+ u"装" : (u"裝", ), # 88C5 => 88DD
+ u"裆" : (u"襠", ), # 88C6 => 8960
+ u"裢" : (u"褳", ), # 88E2 => 8933
+ u"裣" : (u"襝", ), # 88E3 => 895D
+ u"裤" : (u"褲", ), # 88E4 => 8932
+ u"裥" : (u"襇", ), # 88E5 => 8947
+ u"褛" : (u"褸", ), # 891B => 8938
+ u"褴" : (u"襤", ), # 8934 => 8964
+ u"襁" : (u"繈", ), # 8941 => 7E48
+ u"见" : (u"見", ), # 89C1 => 898B
+ u"观" : (u"觀", ), # 89C2 => 89C0
+ u"觃" : (u"覎", ), # 89C3 => 898E
+ u"规" : (u"規", ), # 89C4 => 898F
+ u"觅" : (u"覓", ), # 89C5 => 8993
+ u"视" : (u"視", ), # 89C6 => 8996
+ u"觇" : (u"覘", ), # 89C7 => 8998
+ u"览" : (u"覧", u"覽"), # 89C8 => 89A7 89BD
+ u"觉" : (u"覺", ), # 89C9 => 89BA
+ u"觊" : (u"覬", ), # 89CA => 89AC
+ u"觋" : (u"覡", ), # 89CB => 89A1
+ u"觌" : (u"覿", ), # 89CC => 89BF
+ u"觎" : (u"覦", ), # 89CE => 89A6
+ u"觏" : (u"覯", ), # 89CF => 89AF
+ u"觐" : (u"覲", ), # 89D0 => 89B2
+ u"觑" : (u"覷", ), # 89D1 => 89B7
+ u"觞" : (u"觴", ), # 89DE => 89F4
+ u"触" : (u"觸", ), # 89E6 => 89F8
+ u"觯" : (u"觶", ), # 89EF => 89F6
+ u"誉" : (u"譽", ), # 8A89 => 8B7D
+ u"誊" : (u"謄", ), # 8A8A => 8B04
+ u"讠" : (u"訁", ), # 8BA0 => 8A01
+ u"计" : (u"計", ), # 8BA1 => 8A08
+ u"订" : (u"訂", ), # 8BA2 => 8A02
+ u"讣" : (u"訃", ), # 8BA3 => 8A03
+ u"认" : (u"認", ), # 8BA4 => 8A8D
+ u"讥" : (u"譏", ), # 8BA5 => 8B4F
+ u"讦" : (u"訐", ), # 8BA6 => 8A10
+ u"讧" : (u"訌", ), # 8BA7 => 8A0C
+ u"讨" : (u"討", ), # 8BA8 => 8A0E
+ u"让" : (u"讓", ), # 8BA9 => 8B93
+ u"讪" : (u"訕", ), # 8BAA => 8A15
+ u"讫" : (u"訖", ), # 8BAB => 8A16
+ u"训" : (u"訓", ), # 8BAD => 8A13
+ u"议" : (u"議", ), # 8BAE => 8B70
+ u"讯" : (u"訊", ), # 8BAF => 8A0A
+ u"记" : (u"記", ), # 8BB0 => 8A18
+ u"讲" : (u"講", ), # 8BB2 => 8B1B
+ u"讳" : (u"諱", ), # 8BB3 => 8AF1
+ u"讴" : (u"謳", ), # 8BB4 => 8B33
+ u"讵" : (u"詎", ), # 8BB5 => 8A4E
+ u"讶" : (u"訝", ), # 8BB6 => 8A1D
+ u"讷" : (u"訥", ), # 8BB7 => 8A25
+ u"许" : (u"許", ), # 8BB8 => 8A31
+ u"讹" : (u"訛", ), # 8BB9 => 8A1B
+ u"论" : (u"論", ), # 8BBA => 8AD6
+ u"讻" : (u"訩", ), # 8BBB => 8A29
+ u"讼" : (u"訟", ), # 8BBC => 8A1F
+ u"讽" : (u"諷", ), # 8BBD => 8AF7
+ u"设" : (u"設", ), # 8BBE => 8A2D
+ u"访" : (u"訪", ), # 8BBF => 8A2A
+ u"诀" : (u"訣", ), # 8BC0 => 8A23
+ u"证" : (u"證", ), # 8BC1 => 8B49
+ u"诂" : (u"詁", ), # 8BC2 => 8A41
+ u"诃" : (u"訶", ), # 8BC3 => 8A36
+ u"评" : (u"評", ), # 8BC4 => 8A55
+ u"诅" : (u"詛", ), # 8BC5 => 8A5B
+ u"识" : (u"識", ), # 8BC6 => 8B58
+ u"诇" : (u"詗", ), # 8BC7 => 8A57
+ u"诈" : (u"詐", ), # 8BC8 => 8A50
+ u"诉" : (u"訴", ), # 8BC9 => 8A34
+ u"诊" : (u"診", ), # 8BCA => 8A3A
+ u"诋" : (u"詆", ), # 8BCB => 8A46
+ u"诌" : (u"謅", ), # 8BCC => 8B05
+ u"词" : (u"詞", ), # 8BCD => 8A5E
+ u"诎" : (u"詘", ), # 8BCE => 8A58
+ u"诏" : (u"詔", ), # 8BCF => 8A54
+ u"译" : (u"譯", ), # 8BD1 => 8B6F
+ u"诒" : (u"詒", ), # 8BD2 => 8A52
+ u"诓" : (u"誆", ), # 8BD3 => 8A86
+ u"诔" : (u"誄", ), # 8BD4 => 8A84
+ u"试" : (u"試", ), # 8BD5 => 8A66
+ u"诖" : (u"詿", ), # 8BD6 => 8A7F
+ u"诗" : (u"詩", ), # 8BD7 => 8A69
+ u"诘" : (u"詰", ), # 8BD8 => 8A70
+ u"诙" : (u"詼", ), # 8BD9 => 8A7C
+ u"诚" : (u"誠", ), # 8BDA => 8AA0
+ u"诛" : (u"誅", ), # 8BDB => 8A85
+ u"诜" : (u"詵", ), # 8BDC => 8A75
+ u"话" : (u"話", ), # 8BDD => 8A71
+ u"诞" : (u"誕", ), # 8BDE => 8A95
+ u"诟" : (u"詬", ), # 8BDF => 8A6C
+ u"诠" : (u"詮", ), # 8BE0 => 8A6E
+ u"诡" : (u"詭", ), # 8BE1 => 8A6D
+ u"询" : (u"詢", ), # 8BE2 => 8A62
+ u"诣" : (u"詣", ), # 8BE3 => 8A63
+ u"诤" : (u"諍", ), # 8BE4 => 8ACD
+ u"该" : (u"該", ), # 8BE5 => 8A72
+ u"详" : (u"詳", ), # 8BE6 => 8A73
+ u"诧" : (u"詫", ), # 8BE7 => 8A6B
+ u"诨" : (u"諢", ), # 8BE8 => 8AE2
+ u"诩" : (u"詡", ), # 8BE9 => 8A61
+ u"诫" : (u"誡", ), # 8BEB => 8AA1
+ u"诬" : (u"誣", ), # 8BEC => 8AA3
+ u"语" : (u"語", ), # 8BED => 8A9E
+ u"诮" : (u"誚", ), # 8BEE => 8A9A
+ u"误" : (u"誤", ), # 8BEF => 8AA4
+ u"诰" : (u"誥", ), # 8BF0 => 8AA5
+ u"诱" : (u"誘", ), # 8BF1 => 8A98
+ u"诲" : (u"誨", ), # 8BF2 => 8AA8
+ u"诳" : (u"誑", ), # 8BF3 => 8A91
+ u"说" : (u"說", u"説"), # 8BF4 => 8AAA 8AAC
+ u"诵" : (u"誦", ), # 8BF5 => 8AA6
+ u"诶" : (u"誒", ), # 8BF6 => 8A92
+ u"请" : (u"請", ), # 8BF7 => 8ACB
+ u"诸" : (u"諸", ), # 8BF8 => 8AF8
+ u"诹" : (u"諏", ), # 8BF9 => 8ACF
+ u"诺" : (u"諾", ), # 8BFA => 8AFE
+ u"读" : (u"讀", ), # 8BFB => 8B80
+ u"诼" : (u"諑", ), # 8BFC => 8AD1
+ u"诽" : (u"誹", ), # 8BFD => 8AB9
+ u"课" : (u"課", ), # 8BFE => 8AB2
+ u"诿" : (u"諉", ), # 8BFF => 8AC9
+ u"谀" : (u"諛", ), # 8C00 => 8ADB
+ u"谁" : (u"誰", ), # 8C01 => 8AB0
+ u"谂" : (u"諗", ), # 8C02 => 8AD7
+ u"调" : (u"調", ), # 8C03 => 8ABF
+ u"谄" : (u"諂", ), # 8C04 => 8AC2
+ u"谅" : (u"諒", ), # 8C05 => 8AD2
+ u"谆" : (u"諄", ), # 8C06 => 8AC4
+ u"谇" : (u"誶", ), # 8C07 => 8AB6
+ u"谈" : (u"談", ), # 8C08 => 8AC7
+ u"谉" : (u"讅", ), # 8C09 => 8B85
+ u"谊" : (u"誼", ), # 8C0A => 8ABC
+ u"谋" : (u"謀", ), # 8C0B => 8B00
+ u"谌" : (u"諶", ), # 8C0C => 8AF6
+ u"谍" : (u"諜", ), # 8C0D => 8ADC
+ u"谎" : (u"謊", ), # 8C0E => 8B0A
+ u"谏" : (u"諫", ), # 8C0F => 8AEB
+ u"谐" : (u"諧", ), # 8C10 => 8AE7
+ u"谑" : (u"謔", ), # 8C11 => 8B14
+ u"谒" : (u"謁", ), # 8C12 => 8B01
+ u"谓" : (u"謂", ), # 8C13 => 8B02
+ u"谔" : (u"諤", ), # 8C14 => 8AE4
+ u"谕" : (u"諭", ), # 8C15 => 8AED
+ u"谖" : (u"諼", ), # 8C16 => 8AFC
+ u"谗" : (u"讒", ), # 8C17 => 8B92
+ u"谘" : (u"諮", ), # 8C18 => 8AEE
+ u"谙" : (u"諳", ), # 8C19 => 8AF3
+ u"谚" : (u"諺", ), # 8C1A => 8AFA
+ u"谛" : (u"諦", ), # 8C1B => 8AE6
+ u"谜" : (u"謎", ), # 8C1C => 8B0E
+ u"谝" : (u"諞", ), # 8C1D => 8ADE
+ u"谞" : (u"諝", ), # 8C1E => 8ADD
+ u"谟" : (u"謨", ), # 8C1F => 8B28
+ u"谠" : (u"讜", ), # 8C20 => 8B9C
+ u"谡" : (u"謖", ), # 8C21 => 8B16
+ u"谢" : (u"謝", ), # 8C22 => 8B1D
+ u"谣" : (u"謠", u"謡"), # 8C23 => 8B20 8B21
+ u"谤" : (u"謗", ), # 8C24 => 8B17
+ u"谥" : (u"諡", u"謚"), # 8C25 => 8AE1 8B1A
+ u"谦" : (u"謙", ), # 8C26 => 8B19
+ u"谧" : (u"謐", ), # 8C27 => 8B10
+ u"谨" : (u"謹", ), # 8C28 => 8B39
+ u"谩" : (u"謾", ), # 8C29 => 8B3E
+ u"谪" : (u"謫", ), # 8C2A => 8B2B
+ u"谫" : (u"譾", ), # 8C2B => 8B7E
+ u"谬" : (u"謬", ), # 8C2C => 8B2C
+ u"谭" : (u"譚", ), # 8C2D => 8B5A
+ u"谮" : (u"譖", ), # 8C2E => 8B56
+ u"谯" : (u"譙", ), # 8C2F => 8B59
+ u"谰" : (u"讕", ), # 8C30 => 8B95
+ u"谱" : (u"譜", ), # 8C31 => 8B5C
+ u"谲" : (u"譎", ), # 8C32 => 8B4E
+ u"谳" : (u"讞", ), # 8C33 => 8B9E
+ u"谴" : (u"譴", ), # 8C34 => 8B74
+ u"谵" : (u"譫", ), # 8C35 => 8B6B
+ u"谶" : (u"讖", ), # 8C36 => 8B96
+ u"谷" : (u"榖", ), # 8C37 => 6996
+ u"豮" : (u"豶", ), # 8C6E => 8C76
+ u"贝" : (u"貝", ), # 8D1D => 8C9D
+ u"贞" : (u"貞", ), # 8D1E => 8C9E
+ u"负" : (u"負", ), # 8D1F => 8CA0
+ u"贡" : (u"貢", ), # 8D21 => 8CA2
+ u"财" : (u"財", ), # 8D22 => 8CA1
+ u"责" : (u"責", ), # 8D23 => 8CAC
+ u"贤" : (u"賢", ), # 8D24 => 8CE2
+ u"败" : (u"敗", ), # 8D25 => 6557
+ u"账" : (u"賬", ), # 8D26 => 8CEC
+ u"货" : (u"貨", ), # 8D27 => 8CA8
+ u"质" : (u"質", ), # 8D28 => 8CEA
+ u"贩" : (u"販", ), # 8D29 => 8CA9
+ u"贪" : (u"貪", ), # 8D2A => 8CAA
+ u"贫" : (u"貧", ), # 8D2B => 8CA7
+ u"贬" : (u"貶", ), # 8D2C => 8CB6
+ u"购" : (u"購", ), # 8D2D => 8CFC
+ u"贮" : (u"貯", ), # 8D2E => 8CAF
+ u"贯" : (u"貫", ), # 8D2F => 8CAB
+ u"贰" : (u"貳", ), # 8D30 => 8CB3
+ u"贱" : (u"賤", ), # 8D31 => 8CE4
+ u"贲" : (u"賁", ), # 8D32 => 8CC1
+ u"贳" : (u"貰", ), # 8D33 => 8CB0
+ u"贴" : (u"貼", ), # 8D34 => 8CBC
+ u"贵" : (u"貴", ), # 8D35 => 8CB4
+ u"贶" : (u"貺", ), # 8D36 => 8CBA
+ u"贷" : (u"貸", ), # 8D37 => 8CB8
+ u"贸" : (u"貿", ), # 8D38 => 8CBF
+ u"费" : (u"費", ), # 8D39 => 8CBB
+ u"贺" : (u"賀", ), # 8D3A => 8CC0
+ u"贻" : (u"貽", ), # 8D3B => 8CBD
+ u"贼" : (u"賊", ), # 8D3C => 8CCA
+ u"贽" : (u"贄", ), # 8D3D => 8D04
+ u"贾" : (u"賈", ), # 8D3E => 8CC8
+ u"贿" : (u"賄", ), # 8D3F => 8CC4
+ u"赀" : (u"貲", ), # 8D40 => 8CB2
+ u"赁" : (u"賃", ), # 8D41 => 8CC3
+ u"赂" : (u"賂", ), # 8D42 => 8CC2
+ u"赃" : (u"臓", u"贓"), # 8D43 => 81D3 8D13
+ u"资" : (u"資", ), # 8D44 => 8CC7
+ u"赅" : (u"賅", ), # 8D45 => 8CC5
+ u"赆" : (u"贐", ), # 8D46 => 8D10
+ u"赇" : (u"賕", ), # 8D47 => 8CD5
+ u"赈" : (u"賑", ), # 8D48 => 8CD1
+ u"赉" : (u"賚", ), # 8D49 => 8CDA
+ u"赊" : (u"賒", ), # 8D4A => 8CD2
+ u"赋" : (u"賦", ), # 8D4B => 8CE6
+ u"赌" : (u"賭", ), # 8D4C => 8CED
+ u"赍" : (u"賫", u"齎"), # 8D4D => 8CEB 9F4E
+ u"赎" : (u"贖", ), # 8D4E => 8D16
+ u"赏" : (u"賞", ), # 8D4F => 8CDE
+ u"赐" : (u"賜", ), # 8D50 => 8CDC
+ u"赒" : (u"賙", ), # 8D52 => 8CD9
+ u"赓" : (u"賡", ), # 8D53 => 8CE1
+ u"赔" : (u"賠", ), # 8D54 => 8CE0
+ u"赕" : (u"賧", ), # 8D55 => 8CE7
+ u"赖" : (u"賴", ), # 8D56 => 8CF4
+ u"赗" : (u"賵", ), # 8D57 => 8CF5
+ u"赘" : (u"贅", ), # 8D58 => 8D05
+ u"赙" : (u"賻", ), # 8D59 => 8CFB
+ u"赚" : (u"賺", ), # 8D5A => 8CFA
+ u"赛" : (u"賽", ), # 8D5B => 8CFD
+ u"赜" : (u"賾", ), # 8D5C => 8CFE
+ u"赝" : (u"贋", u"贗"), # 8D5D => 8D0B 8D17
+ u"赞" : (u"贊", ), # 8D5E => 8D0A
+ u"赠" : (u"贈", ), # 8D60 => 8D08
+ u"赡" : (u"贍", ), # 8D61 => 8D0D
+ u"赢" : (u"贏", ), # 8D62 => 8D0F
+ u"赣" : (u"贛", ), # 8D63 => 8D1B
+ u"赪" : (u"赬", ), # 8D6A => 8D6C
+ u"赵" : (u"趙", ), # 8D75 => 8D99
+ u"赶" : (u"趕", ), # 8D76 => 8D95
+ u"趋" : (u"趨", ), # 8D8B => 8DA8
+ u"趱" : (u"趲", ), # 8DB1 => 8DB2
+ u"趸" : (u"躉", ), # 8DB8 => 8E89
+ u"跃" : (u"躍", ), # 8DC3 => 8E8D
+ u"跄" : (u"蹌", ), # 8DC4 => 8E4C
+ u"跖" : (u"蹠", ), # 8DD6 => 8E60
+ u"跞" : (u"躒", ), # 8DDE => 8E92
+ u"践" : (u"踐", ), # 8DF5 => 8E10
+ u"跷" : (u"蹺", ), # 8DF7 => 8E7A
+ u"跸" : (u"蹕", ), # 8DF8 => 8E55
+ u"跹" : (u"躚", ), # 8DF9 => 8E9A
+ u"跻" : (u"躋", ), # 8DFB => 8E8B
+ u"踊" : (u"踴", ), # 8E0A => 8E34
+ u"踌" : (u"躊", ), # 8E0C => 8E8A
+ u"踪" : (u"蹤", ), # 8E2A => 8E64
+ u"踬" : (u"躓", ), # 8E2C => 8E93
+ u"踯" : (u"躑", ), # 8E2F => 8E91
+ u"蹑" : (u"躡", ), # 8E51 => 8EA1
+ u"蹒" : (u"蹣", ), # 8E52 => 8E63
+ u"蹰" : (u"躕", ), # 8E70 => 8E95
+ u"蹿" : (u"躥", ), # 8E7F => 8EA5
+ u"躏" : (u"躪", ), # 8E8F => 8EAA
+ u"躜" : (u"躦", ), # 8E9C => 8EA6
+ u"躯" : (u"軀", ), # 8EAF => 8EC0
+ u"车" : (u"車", ), # 8F66 => 8ECA
+ u"轧" : (u"軋", ), # 8F67 => 8ECB
+ u"轨" : (u"軌", ), # 8F68 => 8ECC
+ u"轩" : (u"軒", ), # 8F69 => 8ED2
+ u"轫" : (u"軔", ), # 8F6B => 8ED4
+ u"转" : (u"轉", ), # 8F6C => 8F49
+ u"轭" : (u"軛", ), # 8F6D => 8EDB
+ u"轮" : (u"輪", ), # 8F6E => 8F2A
+ u"软" : (u"軟", ), # 8F6F => 8EDF
+ u"轰" : (u"轟", ), # 8F70 => 8F5F
+ u"轱" : (u"軲", ), # 8F71 => 8EF2
+ u"轲" : (u"軻", ), # 8F72 => 8EFB
+ u"轳" : (u"轤", ), # 8F73 => 8F64
+ u"轴" : (u"軸", ), # 8F74 => 8EF8
+ u"轵" : (u"軹", ), # 8F75 => 8EF9
+ u"轶" : (u"軼", ), # 8F76 => 8EFC
+ u"轷" : (u"軤", ), # 8F77 => 8EE4
+ u"轸" : (u"軫", ), # 8F78 => 8EEB
+ u"轹" : (u"轢", ), # 8F79 => 8F62
+ u"轺" : (u"軺", ), # 8F7A => 8EFA
+ u"轻" : (u"輕", ), # 8F7B => 8F15
+ u"轼" : (u"軾", ), # 8F7C => 8EFE
+ u"载" : (u"載", ), # 8F7D => 8F09
+ u"轾" : (u"輊", ), # 8F7E => 8F0A
+ u"轿" : (u"轎", ), # 8F7F => 8F4E
+ u"辁" : (u"輇", ), # 8F81 => 8F07
+ u"辂" : (u"輅", ), # 8F82 => 8F05
+ u"较" : (u"較", ), # 8F83 => 8F03
+ u"辄" : (u"輒", ), # 8F84 => 8F12
+ u"辅" : (u"輔", ), # 8F85 => 8F14
+ u"辆" : (u"輛", ), # 8F86 => 8F1B
+ u"辇" : (u"輦", ), # 8F87 => 8F26
+ u"辈" : (u"輩", ), # 8F88 => 8F29
+ u"辉" : (u"輝", ), # 8F89 => 8F1D
+ u"辊" : (u"輥", ), # 8F8A => 8F25
+ u"辋" : (u"輞", ), # 8F8B => 8F1E
+ u"辍" : (u"輟", ), # 8F8D => 8F1F
+ u"辎" : (u"輜", ), # 8F8E => 8F1C
+ u"辏" : (u"輳", ), # 8F8F => 8F33
+ u"辐" : (u"輻", ), # 8F90 => 8F3B
+ u"辑" : (u"輯", ), # 8F91 => 8F2F
+ u"输" : (u"輸", ), # 8F93 => 8F38
+ u"辔" : (u"轡", ), # 8F94 => 8F61
+ u"辕" : (u"轅", ), # 8F95 => 8F45
+ u"辖" : (u"轄", ), # 8F96 => 8F44
+ u"辗" : (u"輾", ), # 8F97 => 8F3E
+ u"辘" : (u"轆", ), # 8F98 => 8F46
+ u"辙" : (u"轍", ), # 8F99 => 8F4D
+ u"辚" : (u"轔", ), # 8F9A => 8F54
+ u"辞" : (u"辭", ), # 8F9E => 8FAD
+ u"辟" : (u"闢", ), # 8F9F => 95E2
+ u"辩" : (u"辯", ), # 8FA9 => 8FAF
+ u"辫" : (u"辮", ), # 8FAB => 8FAE
+ u"边" : (u"邊", ), # 8FB9 => 908A
+ u"辽" : (u"遼", ), # 8FBD => 907C
+ u"达" : (u"達", ), # 8FBE => 9054
+ u"迁" : (u"遷", ), # 8FC1 => 9077
+ u"过" : (u"過", ), # 8FC7 => 904E
+ u"迈" : (u"邁", ), # 8FC8 => 9081
+ u"运" : (u"運", ), # 8FD0 => 904B
+ u"还" : (u"還", ), # 8FD8 => 9084
+ u"这" : (u"這", ), # 8FD9 => 9019
+ u"进" : (u"進", ), # 8FDB => 9032
+ u"远" : (u"遠", ), # 8FDC => 9060
+ u"违" : (u"違", ), # 8FDD => 9055
+ u"连" : (u"連", ), # 8FDE => 9023
+ u"迟" : (u"遲", ), # 8FDF => 9072
+ u"迩" : (u"邇", ), # 8FE9 => 9087
+ u"迳" : (u"逕", ), # 8FF3 => 9015
+ u"迹" : (u"跡", ), # 8FF9 => 8DE1
+ u"适" : (u"適", ), # 9002 => 9069
+ u"选" : (u"選", ), # 9009 => 9078
+ u"逊" : (u"遜", ), # 900A => 905C
+ u"递" : (u"遞", ), # 9012 => 905E
+ u"逦" : (u"邐", ), # 9026 => 9090
+ u"逻" : (u"邏", ), # 903B => 908F
+ u"遗" : (u"遺", ), # 9057 => 907A
+ u"遥" : (u"遙", ), # 9065 => 9059
+ u"邓" : (u"鄧", ), # 9093 => 9127
+ u"邝" : (u"鄺", ), # 909D => 913A
+ u"邬" : (u"鄔", ), # 90AC => 9114
+ u"邮" : (u"郵", ), # 90AE => 90F5
+ u"邹" : (u"鄒", ), # 90B9 => 9112
+ u"邺" : (u"鄴", ), # 90BA => 9134
+ u"邻" : (u"鄰", ), # 90BB => 9130
+ u"郁" : (u"鬱", ), # 90C1 => 9B31
+ u"郄" : (u"郤", ), # 90C4 => 90E4
+ u"郏" : (u"郟", ), # 90CF => 90DF
+ u"郐" : (u"鄶", ), # 90D0 => 9136
+ u"郑" : (u"鄭", ), # 90D1 => 912D
+ u"郓" : (u"鄆", ), # 90D3 => 9106
+ u"郦" : (u"酈", ), # 90E6 => 9148
+ u"郧" : (u"鄖", ), # 90E7 => 9116
+ u"郸" : (u"鄲", ), # 90F8 => 9132
+ u"酝" : (u"醖", u"醞"), # 915D => 9196 919E
+ u"酰" : (u"醯", ), # 9170 => 91AF
+ u"酱" : (u"醤", u"醬"), # 9171 => 91A4 91AC
+ u"酽" : (u"釅", ), # 917D => 91C5
+ u"酾" : (u"釃", ), # 917E => 91C3
+ u"酿" : (u"釀", ), # 917F => 91C0
+ u"释" : (u"釋", ), # 91CA => 91CB
+ u"里" : (u"裏", ), # 91CC => 88CF
+ u"鉴" : (u"鑒", ), # 9274 => 9452
+ u"銮" : (u"鑾", ), # 92AE => 947E
+ u"錾" : (u"鏨", ), # 933E => 93E8
+ u"钆" : (u"釓", ), # 9486 => 91D3
+ u"钇" : (u"釔", ), # 9487 => 91D4
+ u"针" : (u"針", ), # 9488 => 91DD
+ u"钉" : (u"釘", ), # 9489 => 91D8
+ u"钊" : (u"釗", ), # 948A => 91D7
+ u"钋" : (u"釙", ), # 948B => 91D9
+ u"钌" : (u"釕", ), # 948C => 91D5
+ u"钍" : (u"釷", ), # 948D => 91F7
+ u"钎" : (u"釺", ), # 948E => 91FA
+ u"钏" : (u"釧", ), # 948F => 91E7
+ u"钐" : (u"釤", ), # 9490 => 91E4
+ u"钒" : (u"釩", ), # 9492 => 91E9
+ u"钓" : (u"釣", ), # 9493 => 91E3
+ u"钔" : (u"鍆", ), # 9494 => 9346
+ u"钕" : (u"釹", ), # 9495 => 91F9
+ u"钖" : (u"鍚", ), # 9496 => 935A
+ u"钗" : (u"釵", ), # 9497 => 91F5
+ u"钘" : (u"鈃", ), # 9498 => 9203
+ u"钙" : (u"鈣", ), # 9499 => 9223
+ u"钚" : (u"鈈", ), # 949A => 9208
+ u"钛" : (u"鈦", ), # 949B => 9226
+ u"钝" : (u"鈍", ), # 949D => 920D
+ u"钞" : (u"鈔", ), # 949E => 9214
+ u"钟" : (u"鐘", ), # 949F => 9418
+ u"钠" : (u"鈉", ), # 94A0 => 9209
+ u"钡" : (u"鋇", ), # 94A1 => 92C7
+ u"钢" : (u"鋼", ), # 94A2 => 92FC
+ u"钣" : (u"鈑", ), # 94A3 => 9211
+ u"钤" : (u"鈐", ), # 94A4 => 9210
+ u"钥" : (u"鑰", ), # 94A5 => 9470
+ u"钦" : (u"欽", ), # 94A6 => 6B3D
+ u"钧" : (u"鈞", ), # 94A7 => 921E
+ u"钨" : (u"鎢", ), # 94A8 => 93A2
+ u"钩" : (u"鈎", u"鉤"), # 94A9 => 920E 9264
+ u"钪" : (u"鈧", ), # 94AA => 9227
+ u"钫" : (u"鈁", ), # 94AB => 9201
+ u"钬" : (u"鈥", ), # 94AC => 9225
+ u"钭" : (u"鈄", ), # 94AD => 9204
+ u"钮" : (u"鈕", ), # 94AE => 9215
+ u"钯" : (u"鈀", ), # 94AF => 9200
+ u"钰" : (u"鈺", ), # 94B0 => 923A
+ u"钱" : (u"錢", ), # 94B1 => 9322
+ u"钲" : (u"鉦", ), # 94B2 => 9266
+ u"钳" : (u"鉗", ), # 94B3 => 9257
+ u"钴" : (u"鈷", ), # 94B4 => 9237
+ u"钵" : (u"缽", u"鉢"), # 94B5 => 7F3D 9262
+ u"钶" : (u"鈳", ), # 94B6 => 9233
+ u"钷" : (u"鉕", ), # 94B7 => 9255
+ u"钸" : (u"鈽", ), # 94B8 => 923D
+ u"钹" : (u"鈸", ), # 94B9 => 9238
+ u"钺" : (u"鉞", ), # 94BA => 925E
+ u"钻" : (u"鑽", ), # 94BB => 947D
+ u"钼" : (u"鉬", ), # 94BC => 926C
+ u"钽" : (u"鉭", ), # 94BD => 926D
+ u"钾" : (u"鉀", ), # 94BE => 9240
+ u"钿" : (u"鈿", ), # 94BF => 923F
+ u"铀" : (u"鈾", ), # 94C0 => 923E
+ u"铁" : (u"鐵", ), # 94C1 => 9435
+ u"铂" : (u"鉑", ), # 94C2 => 9251
+ u"铃" : (u"鈴", ), # 94C3 => 9234
+ u"铄" : (u"鑠", ), # 94C4 => 9460
+ u"铅" : (u"鉛", ), # 94C5 => 925B
+ u"铆" : (u"鉚", ), # 94C6 => 925A
+ u"铈" : (u"鈰", ), # 94C8 => 9230
+ u"铉" : (u"鉉", ), # 94C9 => 9249
+ u"铊" : (u"鉈", ), # 94CA => 9248
+ u"铋" : (u"鉍", ), # 94CB => 924D
+ u"铌" : (u"鈮", ), # 94CC => 922E
+ u"铍" : (u"鈹", ), # 94CD => 9239
+ u"铎" : (u"鐸", ), # 94CE => 9438
+ u"铏" : (u"鉶", ), # 94CF => 9276
+ u"铐" : (u"銬", ), # 94D0 => 92AC
+ u"铑" : (u"銠", ), # 94D1 => 92A0
+ u"铒" : (u"鉺", ), # 94D2 => 927A
+ u"铓" : (u"鋩", ), # 94D3 => 92E9
+ u"铕" : (u"銪", ), # 94D5 => 92AA
+ u"铖" : (u"鋮", ), # 94D6 => 92EE
+ u"铗" : (u"鋏", ), # 94D7 => 92CF
+ u"铘" : (u"鋣", ), # 94D8 => 92E3
+ u"铙" : (u"鐃", ), # 94D9 => 9403
+ u"铛" : (u"鐺", ), # 94DB => 943A
+ u"铜" : (u"銅", ), # 94DC => 9285
+ u"铝" : (u"鋁", ), # 94DD => 92C1
+ u"铞" : (u"銱", ), # 94DE => 92B1
+ u"铟" : (u"銦", ), # 94DF => 92A6
+ u"铠" : (u"鎧", ), # 94E0 => 93A7
+ u"铡" : (u"鍘", ), # 94E1 => 9358
+ u"铢" : (u"銖", ), # 94E2 => 9296
+ u"铣" : (u"銑", ), # 94E3 => 9291
+ u"铤" : (u"鋌", ), # 94E4 => 92CC
+ u"铥" : (u"銩", ), # 94E5 => 92A9
+ u"铧" : (u"鏵", ), # 94E7 => 93F5
+ u"铨" : (u"銓", ), # 94E8 => 9293
+ u"铩" : (u"鎩", ), # 94E9 => 93A9
+ u"铪" : (u"鉿", ), # 94EA => 927F
+ u"铫" : (u"銚", ), # 94EB => 929A
+ u"铬" : (u"鉻", ), # 94EC => 927B
+ u"铭" : (u"銘", ), # 94ED => 9298
+ u"铮" : (u"錚", ), # 94EE => 931A
+ u"铯" : (u"銫", ), # 94EF => 92AB
+ u"铰" : (u"鉸", ), # 94F0 => 9278
+ u"铱" : (u"銥", ), # 94F1 => 92A5
+ u"铲" : (u"鏟", ), # 94F2 => 93DF
+ u"铳" : (u"銃", ), # 94F3 => 9283
+ u"铴" : (u"鐋", ), # 94F4 => 940B
+ u"铵" : (u"銨", ), # 94F5 => 92A8
+ u"银" : (u"銀", ), # 94F6 => 9280
+ u"铷" : (u"銣", ), # 94F7 => 92A3
+ u"铸" : (u"鑄", ), # 94F8 => 9444
+ u"铹" : (u"鐒", ), # 94F9 => 9412
+ u"铺" : (u"鋪", ), # 94FA => 92EA
+ u"铼" : (u"錸", ), # 94FC => 9338
+ u"铽" : (u"鋱", ), # 94FD => 92F1
+ u"链" : (u"鏈", ), # 94FE => 93C8
+ u"铿" : (u"鏗", ), # 94FF => 93D7
+ u"销" : (u"銷", ), # 9500 => 92B7
+ u"锁" : (u"鎖", ), # 9501 => 9396
+ u"锂" : (u"鋰", ), # 9502 => 92F0
+ u"锃" : (u"鋥", ), # 9503 => 92E5
+ u"锄" : (u"鋤", ), # 9504 => 92E4
+ u"锅" : (u"鍋", ), # 9505 => 934B
+ u"锆" : (u"鋯", ), # 9506 => 92EF
+ u"锇" : (u"鋨", ), # 9507 => 92E8
+ u"锈" : (u"銹", u"鏽"), # 9508 => 92B9 93FD
+ u"锉" : (u"銼", ), # 9509 => 92BC
+ u"锊" : (u"鋝", ), # 950A => 92DD
+ u"锋" : (u"鋒", ), # 950B => 92D2
+ u"锌" : (u"鋅", ), # 950C => 92C5
+ u"锍" : (u"鋶", ), # 950D => 92F6
+ u"锎" : (u"鉲", u"鐦"), # 950E => 9272 9426
+ u"锏" : (u"鐧", ), # 950F => 9427
+ u"锐" : (u"銳", u"鋭"), # 9510 => 92B3 92ED
+ u"锑" : (u"銻", ), # 9511 => 92BB
+ u"锒" : (u"鋃", ), # 9512 => 92C3
+ u"锓" : (u"鋟", ), # 9513 => 92DF
+ u"锔" : (u"鋦", ), # 9514 => 92E6
+ u"锕" : (u"錒", ), # 9515 => 9312
+ u"锖" : (u"錆", ), # 9516 => 9306
+ u"锗" : (u"鍺", ), # 9517 => 937A
+ u"锘" : (u"鍩", ), # 9518 => 9369
+ u"错" : (u"錯", ), # 9519 => 932F
+ u"锚" : (u"錨", ), # 951A => 9328
+ u"锛" : (u"錛", ), # 951B => 931B
+ u"锝" : (u"鍀", ), # 951D => 9340
+ u"锞" : (u"錁", ), # 951E => 9301
+ u"锟" : (u"錕", ), # 951F => 9315
+ u"锡" : (u"錫", ), # 9521 => 932B
+ u"锢" : (u"錮", ), # 9522 => 932E
+ u"锣" : (u"鑼", ), # 9523 => 947C
+ u"锤" : (u"錘", ), # 9524 => 9318
+ u"锥" : (u"錐", ), # 9525 => 9310
+ u"锦" : (u"錦", ), # 9526 => 9326
+ u"锧" : (u"鑕", ), # 9527 => 9455
+ u"锨" : (u"鍁", ), # 9528 => 9341
+ u"锩" : (u"錈", ), # 9529 => 9308
+ u"锪" : (u"鍃", ), # 952A => 9343
+ u"锫" : (u"錇", ), # 952B => 9307
+ u"锬" : (u"錟", ), # 952C => 931F
+ u"锭" : (u"錠", ), # 952D => 9320
+ u"键" : (u"鍵", ), # 952E => 9375
+ u"锯" : (u"鋸", ), # 952F => 92F8
+ u"锰" : (u"錳", ), # 9530 => 9333
+ u"锱" : (u"錙", ), # 9531 => 9319
+ u"锲" : (u"鍥", ), # 9532 => 9365
+ u"锴" : (u"鍇", ), # 9534 => 9347
+ u"锵" : (u"鏘", ), # 9535 => 93D8
+ u"锶" : (u"鍶", ), # 9536 => 9376
+ u"锷" : (u"鍔", ), # 9537 => 9354
+ u"锸" : (u"鍤", ), # 9538 => 9364
+ u"锹" : (u"鍬", ), # 9539 => 936C
+ u"锺" : (u"鍾", ), # 953A => 937E
+ u"锻" : (u"鍛", ), # 953B => 935B
+ u"锼" : (u"鎪", ), # 953C => 93AA
+ u"锾" : (u"鍰", ), # 953E => 9370
+ u"锿" : (u"鎄", ), # 953F => 9384
+ u"镀" : (u"鍍", ), # 9540 => 934D
+ u"镁" : (u"鎂", ), # 9541 => 9382
+ u"镂" : (u"鏤", ), # 9542 => 93E4
+ u"镃" : (u"鎡", ), # 9543 => 93A1
+ u"镄" : (u"鐨", ), # 9544 => 9428
+ u"镅" : (u"鋂", u"鎇"), # 9545 => 92C2 9387
+ u"镆" : (u"鏌", ), # 9546 => 93CC
+ u"镇" : (u"鎮", ), # 9547 => 93AE
+ u"镉" : (u"鎘", ), # 9549 => 9398
+ u"镊" : (u"鑷", ), # 954A => 9477
+ u"镋" : (u"钂", ), # 954B => 9482
+ u"镌" : (u"鎸", u"鐫"), # 954C => 93B8 942B
+ u"镍" : (u"鎳", ), # 954D => 93B3
+ u"镎" : (u"錼", u"鎿"), # 954E => 933C 93BF
+ u"镏" : (u"鎦", ), # 954F => 93A6
+ u"镐" : (u"鎬", ), # 9550 => 93AC
+ u"镑" : (u"鎊", ), # 9551 => 938A
+ u"镒" : (u"鎰", ), # 9552 => 93B0
+ u"镓" : (u"鎵", ), # 9553 => 93B5
+ u"镔" : (u"鑌", ), # 9554 => 944C
+ u"镖" : (u"鏢", ), # 9556 => 93E2
+ u"镗" : (u"鏜", ), # 9557 => 93DC
+ u"镘" : (u"鏝", ), # 9558 => 93DD
+ u"镙" : (u"鏍", ), # 9559 => 93CD
+ u"镚" : (u"鏰", ), # 955A => 93F0
+ u"镛" : (u"鏞", ), # 955B => 93DE
+ u"镜" : (u"鏡", ), # 955C => 93E1
+ u"镝" : (u"鏑", ), # 955D => 93D1
+ u"镞" : (u"鏃", ), # 955E => 93C3
+ u"镟" : (u"鏇", ), # 955F => 93C7
+ u"镡" : (u"鐔", ), # 9561 => 9414
+ u"镢" : (u"鐝", u"钁"), # 9562 => 941D 9481
+ u"镣" : (u"鐐", ), # 9563 => 9410
+ u"镤" : (u"鏷", ), # 9564 => 93F7
+ u"镥" : (u"鑥", ), # 9565 => 9465
+ u"镦" : (u"鐓", ), # 9566 => 9413
+ u"镧" : (u"鑭", ), # 9567 => 946D
+ u"镨" : (u"鐠", ), # 9568 => 9420
+ u"镩" : (u"鑹", ), # 9569 => 9479
+ u"镪" : (u"鏹", ), # 956A => 93F9
+ u"镫" : (u"鐙", ), # 956B => 9419
+ u"镬" : (u"鑊", ), # 956C => 944A
+ u"镭" : (u"鐳", ), # 956D => 9433
+ u"镮" : (u"鐶", ), # 956E => 9436
+ u"镯" : (u"鐲", ), # 956F => 9432
+ u"镰" : (u"鐮", ), # 9570 => 942E
+ u"镱" : (u"鐿", ), # 9571 => 943F
+ u"镲" : (u"鑔", ), # 9572 => 9454
+ u"镳" : (u"鑣", ), # 9573 => 9463
+ u"镴" : (u"鑞", ), # 9574 => 945E
+ u"镶" : (u"鑲", ), # 9576 => 9472
+ u"长" : (u"長", ), # 957F => 9577
+ u"门" : (u"門", ), # 95E8 => 9580
+ u"闩" : (u"閂", ), # 95E9 => 9582
+ u"闪" : (u"閃", ), # 95EA => 9583
+ u"闫" : (u"閆", ), # 95EB => 9586
+ u"闭" : (u"閉", ), # 95ED => 9589
+ u"问" : (u"問", ), # 95EE => 554F
+ u"闯" : (u"闖", ), # 95EF => 95D6
+ u"闰" : (u"閏", ), # 95F0 => 958F
+ u"闱" : (u"闈", ), # 95F1 => 95C8
+ u"闲" : (u"閑", ), # 95F2 => 9591
+ u"闳" : (u"閎", ), # 95F3 => 958E
+ u"间" : (u"間", ), # 95F4 => 9593
+ u"闵" : (u"閔", ), # 95F5 => 9594
+ u"闶" : (u"閌", ), # 95F6 => 958C
+ u"闷" : (u"悶", ), # 95F7 => 60B6
+ u"闸" : (u"閘", ), # 95F8 => 9598
+ u"闹" : (u"閙", u"鬧"), # 95F9 => 9599 9B27
+ u"闺" : (u"閨", ), # 95FA => 95A8
+ u"闻" : (u"聞", ), # 95FB => 805E
+ u"闼" : (u"闥", ), # 95FC => 95E5
+ u"闽" : (u"閩", ), # 95FD => 95A9
+ u"闾" : (u"閭", ), # 95FE => 95AD
+ u"闿" : (u"闓", ), # 95FF => 95D3
+ u"阀" : (u"閥", ), # 9600 => 95A5
+ u"阁" : (u"閣", ), # 9601 => 95A3
+ u"阂" : (u"閡", ), # 9602 => 95A1
+ u"阃" : (u"閫", ), # 9603 => 95AB
+ u"阄" : (u"鬮", ), # 9604 => 9B2E
+ u"阅" : (u"閱", u"閲"), # 9605 => 95B1 95B2
+ u"阆" : (u"閬", ), # 9606 => 95AC
+ u"阈" : (u"閾", ), # 9608 => 95BE
+ u"阉" : (u"閹", ), # 9609 => 95B9
+ u"阊" : (u"閶", ), # 960A => 95B6
+ u"阋" : (u"鬩", ), # 960B => 9B29
+ u"阌" : (u"閿", ), # 960C => 95BF
+ u"阍" : (u"閽", ), # 960D => 95BD
+ u"阎" : (u"閻", ), # 960E => 95BB
+ u"阏" : (u"閼", ), # 960F => 95BC
+ u"阐" : (u"闡", ), # 9610 => 95E1
+ u"阑" : (u"闌", ), # 9611 => 95CC
+ u"阒" : (u"闃", ), # 9612 => 95C3
+ u"阔" : (u"闊", ), # 9614 => 95CA
+ u"阕" : (u"闋", ), # 9615 => 95CB
+ u"阖" : (u"闔", ), # 9616 => 95D4
+ u"阗" : (u"闐", ), # 9617 => 95D0
+ u"阙" : (u"闕", ), # 9619 => 95D5
+ u"阚" : (u"闞", ), # 961A => 95DE
+ u"队" : (u"隊", ), # 961F => 968A
+ u"阳" : (u"陽", ), # 9633 => 967D
+ u"阴" : (u"陰", ), # 9634 => 9670
+ u"阵" : (u"陣", ), # 9635 => 9663
+ u"阶" : (u"階", ), # 9636 => 968E
+ u"际" : (u"際", ), # 9645 => 969B
+ u"陆" : (u"陸", ), # 9646 => 9678
+ u"陇" : (u"隴", ), # 9647 => 96B4
+ u"陈" : (u"陳", ), # 9648 => 9673
+ u"陉" : (u"陘", ), # 9649 => 9658
+ u"陕" : (u"陝", ), # 9655 => 965D
+ u"陧" : (u"隉", ), # 9667 => 9689
+ u"陨" : (u"隕", ), # 9668 => 9695
+ u"险" : (u"險", ), # 9669 => 96AA
+ u"随" : (u"隨", ), # 968F => 96A8
+ u"隐" : (u"隱", ), # 9690 => 96B1
+ u"隶" : (u"隷", u"隸"), # 96B6 => 96B7 96B8
+ u"隽" : (u"雋", ), # 96BD => 96CB
+ u"难" : (u"難", ), # 96BE => 96E3
+ u"雏" : (u"雛", ), # 96CF => 96DB
+ u"雠" : (u"讎", ), # 96E0 => 8B8E
+ u"雳" : (u"靂", ), # 96F3 => 9742
+ u"雾" : (u"霧", ), # 96FE => 9727
+ u"霁" : (u"霽", ), # 9701 => 973D
+ u"霉" : (u"黴", ), # 9709 => 9EF4
+ u"霭" : (u"靄", ), # 972D => 9744
+ u"靓" : (u"靚", ), # 9753 => 975A
+ u"静" : (u"靜", ), # 9759 => 975C
+ u"面" : (u"麵", ), # 9762 => 9EB5
+ u"靥" : (u"靨", ), # 9765 => 9768
+ u"鞑" : (u"韃", ), # 9791 => 97C3
+ u"鞒" : (u"鞽", ), # 9792 => 97BD
+ u"鞯" : (u"韉", ), # 97AF => 97C9
+ u"鞴" : (u"韝", ), # 97B4 => 97DD
+ u"韦" : (u"韋", ), # 97E6 => 97CB
+ u"韧" : (u"韌", ), # 97E7 => 97CC
+ u"韨" : (u"韍", ), # 97E8 => 97CD
+ u"韩" : (u"韓", ), # 97E9 => 97D3
+ u"韪" : (u"韙", ), # 97EA => 97D9
+ u"韫" : (u"韞", ), # 97EB => 97DE
+ u"韬" : (u"韜", ), # 97EC => 97DC
+ u"韵" : (u"韻", ), # 97F5 => 97FB
+ u"页" : (u"頁", ), # 9875 => 9801
+ u"顶" : (u"頂", ), # 9876 => 9802
+ u"顷" : (u"頃", ), # 9877 => 9803
+ u"顸" : (u"頇", ), # 9878 => 9807
+ u"项" : (u"項", ), # 9879 => 9805
+ u"顺" : (u"順", ), # 987A => 9806
+ u"须" : (u"須", u"鬚"), # 987B => 9808 9B1A
+ u"顼" : (u"頊", ), # 987C => 980A
+ u"顽" : (u"頑", ), # 987D => 9811
+ u"顾" : (u"顧", ), # 987E => 9867
+ u"顿" : (u"頓", ), # 987F => 9813
+ u"颀" : (u"頎", ), # 9880 => 980E
+ u"颁" : (u"頒", ), # 9881 => 9812
+ u"颂" : (u"頌", ), # 9882 => 980C
+ u"颃" : (u"頏", ), # 9883 => 980F
+ u"预" : (u"預", ), # 9884 => 9810
+ u"颅" : (u"顱", ), # 9885 => 9871
+ u"领" : (u"領", ), # 9886 => 9818
+ u"颇" : (u"頗", ), # 9887 => 9817
+ u"颈" : (u"頸", ), # 9888 => 9838
+ u"颉" : (u"頡", ), # 9889 => 9821
+ u"颊" : (u"頰", ), # 988A => 9830
+ u"颋" : (u"頲", ), # 988B => 9832
+ u"颌" : (u"頜", ), # 988C => 981C
+ u"颍" : (u"潁", ), # 988D => 6F41
+ u"颏" : (u"頦", ), # 988F => 9826
+ u"颐" : (u"頤", ), # 9890 => 9824
+ u"频" : (u"頻", ), # 9891 => 983B
+ u"颓" : (u"頹", u"頽"), # 9893 => 9839 983D
+ u"颔" : (u"頷", ), # 9894 => 9837
+ u"颖" : (u"穎", ), # 9896 => 7A4E
+ u"颗" : (u"顆", ), # 9897 => 9846
+ u"题" : (u"題", ), # 9898 => 984C
+ u"颙" : (u"顒", ), # 9899 => 9852
+ u"颚" : (u"顎", ), # 989A => 984E
+ u"颛" : (u"顓", ), # 989B => 9853
+ u"颜" : (u"顏", u"顔"), # 989C => 984F 9854
+ u"额" : (u"額", ), # 989D => 984D
+ u"颞" : (u"顳", ), # 989E => 9873
+ u"颟" : (u"顢", ), # 989F => 9862
+ u"颠" : (u"顛", ), # 98A0 => 985B
+ u"颡" : (u"顙", ), # 98A1 => 9859
+ u"颢" : (u"顥", ), # 98A2 => 9865
+ u"颤" : (u"顫", ), # 98A4 => 986B
+ u"颥" : (u"顬", ), # 98A5 => 986C
+ u"颦" : (u"顰", ), # 98A6 => 9870
+ u"颧" : (u"顴", ), # 98A7 => 9874
+ u"风" : (u"風", ), # 98CE => 98A8
+ u"飑" : (u"颮", ), # 98D1 => 98AE
+ u"飒" : (u"颯", ), # 98D2 => 98AF
+ u"飓" : (u"颶", ), # 98D3 => 98B6
+ u"飔" : (u"颸", ), # 98D4 => 98B8
+ u"飕" : (u"颼", ), # 98D5 => 98BC
+ u"飗" : (u"飀", ), # 98D7 => 98C0
+ u"飘" : (u"飄", ), # 98D8 => 98C4
+ u"飙" : (u"飆", ), # 98D9 => 98C6
+ u"飚" : (u"飆", ), # 98DA => 98C6
+ u"飞" : (u"飛", ), # 98DE => 98DB
+ u"飨" : (u"饗", ), # 98E8 => 9957
+ u"餍" : (u"饜", ), # 990D => 995C
+ u"饥" : (u"饑", ), # 9965 => 9951
+ u"饦" : (u"飥", ), # 9966 => 98E5
+ u"饧" : (u"餳", ), # 9967 => 9933
+ u"饨" : (u"飩", ), # 9968 => 98E9
+ u"饩" : (u"餼", ), # 9969 => 993C
+ u"饪" : (u"飪", ), # 996A => 98EA
+ u"饫" : (u"飫", ), # 996B => 98EB
+ u"饬" : (u"飭", ), # 996C => 98ED
+ u"饭" : (u"飯", ), # 996D => 98EF
+ u"饮" : (u"飲", ), # 996E => 98F2
+ u"饯" : (u"餞", ), # 996F => 991E
+ u"饰" : (u"飾", ), # 9970 => 98FE
+ u"饱" : (u"飽", ), # 9971 => 98FD
+ u"饲" : (u"飼", ), # 9972 => 98FC
+ u"饳" : (u"飿", ), # 9973 => 98FF
+ u"饴" : (u"飴", ), # 9974 => 98F4
+ u"饵" : (u"餌", ), # 9975 => 990C
+ u"饶" : (u"饒", ), # 9976 => 9952
+ u"饷" : (u"餉", ), # 9977 => 9909
+ u"饸" : (u"餄", ), # 9978 => 9904
+ u"饹" : (u"餎", ), # 9979 => 990E
+ u"饺" : (u"餃", ), # 997A => 9903
+ u"饻" : (u"餏", ), # 997B => 990F
+ u"饼" : (u"餅", u"餠"), # 997C => 9905 9920
+ u"饽" : (u"餑", ), # 997D => 9911
+ u"饿" : (u"餓", ), # 997F => 9913
+ u"馀" : (u"餘", ), # 9980 => 9918
+ u"馁" : (u"餒", ), # 9981 => 9912
+ u"馃" : (u"餜", ), # 9983 => 991C
+ u"馄" : (u"餛", ), # 9984 => 991B
+ u"馅" : (u"餡", ), # 9985 => 9921
+ u"馆" : (u"館", ), # 9986 => 9928
+ u"馇" : (u"餷", ), # 9987 => 9937
+ u"馈" : (u"饋", ), # 9988 => 994B
+ u"馉" : (u"餶", ), # 9989 => 9936
+ u"馊" : (u"餿", ), # 998A => 993F
+ u"馋" : (u"饞", ), # 998B => 995E
+ u"馍" : (u"饃", ), # 998D => 9943
+ u"馎" : (u"餺", ), # 998E => 993A
+ u"馏" : (u"餾", ), # 998F => 993E
+ u"馐" : (u"饈", ), # 9990 => 9948
+ u"馑" : (u"饉", ), # 9991 => 9949
+ u"馒" : (u"饅", ), # 9992 => 9945
+ u"馓" : (u"饊", ), # 9993 => 994A
+ u"馔" : (u"饌", ), # 9994 => 994C
+ u"馕" : (u"饟", u"饢"), # 9995 => 995F 9962
+ u"马" : (u"馬", ), # 9A6C => 99AC
+ u"驭" : (u"馭", ), # 9A6D => 99AD
+ u"驮" : (u"馱", ), # 9A6E => 99B1
+ u"驯" : (u"馴", ), # 9A6F => 99B4
+ u"驰" : (u"馳", ), # 9A70 => 99B3
+ u"驱" : (u"驅", ), # 9A71 => 9A45
+ u"驳" : (u"駁", ), # 9A73 => 99C1
+ u"驴" : (u"驢", ), # 9A74 => 9A62
+ u"驵" : (u"駔", ), # 9A75 => 99D4
+ u"驶" : (u"駛", ), # 9A76 => 99DB
+ u"驷" : (u"駟", ), # 9A77 => 99DF
+ u"驸" : (u"駙", ), # 9A78 => 99D9
+ u"驹" : (u"駒", ), # 9A79 => 99D2
+ u"驺" : (u"騶", ), # 9A7A => 9A36
+ u"驻" : (u"駐", ), # 9A7B => 99D0
+ u"驼" : (u"駝", ), # 9A7C => 99DD
+ u"驽" : (u"駑", ), # 9A7D => 99D1
+ u"驾" : (u"駕", ), # 9A7E => 99D5
+ u"驿" : (u"驛", ), # 9A7F => 9A5B
+ u"骀" : (u"駘", ), # 9A80 => 99D8
+ u"骁" : (u"驍", ), # 9A81 => 9A4D
+ u"骂" : (u"罵", u"駡"), # 9A82 => 7F75 99E1
+ u"骄" : (u"驕", ), # 9A84 => 9A55
+ u"骅" : (u"驊", ), # 9A85 => 9A4A
+ u"骆" : (u"駱", ), # 9A86 => 99F1
+ u"骇" : (u"駭", ), # 9A87 => 99ED
+ u"骈" : (u"駢", ), # 9A88 => 99E2
+ u"骊" : (u"驪", ), # 9A8A => 9A6A
+ u"骋" : (u"騁", ), # 9A8B => 9A01
+ u"验" : (u"驗", ), # 9A8C => 9A57
+ u"骎" : (u"駸", ), # 9A8E => 99F8
+ u"骏" : (u"駿", ), # 9A8F => 99FF
+ u"骐" : (u"騏", ), # 9A90 => 9A0F
+ u"骑" : (u"騎", ), # 9A91 => 9A0E
+ u"骒" : (u"騍", ), # 9A92 => 9A0D
+ u"骓" : (u"騅", ), # 9A93 => 9A05
+ u"骖" : (u"驂", ), # 9A96 => 9A42
+ u"骗" : (u"騙", ), # 9A97 => 9A19
+ u"骘" : (u"騭", ), # 9A98 => 9A2D
+ u"骚" : (u"騷", ), # 9A9A => 9A37
+ u"骛" : (u"騖", ), # 9A9B => 9A16
+ u"骜" : (u"驁", ), # 9A9C => 9A41
+ u"骝" : (u"騮", ), # 9A9D => 9A2E
+ u"骞" : (u"騫", ), # 9A9E => 9A2B
+ u"骟" : (u"騸", ), # 9A9F => 9A38
+ u"骠" : (u"驃", ), # 9AA0 => 9A43
+ u"骡" : (u"騾", ), # 9AA1 => 9A3E
+ u"骢" : (u"驄", ), # 9AA2 => 9A44
+ u"骣" : (u"驏", ), # 9AA3 => 9A4F
+ u"骤" : (u"驟", ), # 9AA4 => 9A5F
+ u"骥" : (u"驥", ), # 9AA5 => 9A65
+ u"骧" : (u"驤", ), # 9AA7 => 9A64
+ u"髅" : (u"髏", ), # 9AC5 => 9ACF
+ u"髋" : (u"髖", ), # 9ACB => 9AD6
+ u"髌" : (u"髕", ), # 9ACC => 9AD5
+ u"鬓" : (u"鬢", ), # 9B13 => 9B22
+ u"魇" : (u"魘", ), # 9B47 => 9B58
+ u"魉" : (u"魎", ), # 9B49 => 9B4E
+ u"鱼" : (u"魚", ), # 9C7C => 9B5A
+ u"鱽" : (u"魛", ), # 9C7D => 9B5B
+ u"鱿" : (u"魷", ), # 9C7F => 9B77
+ u"鲁" : (u"魯", ), # 9C81 => 9B6F
+ u"鲂" : (u"魴", ), # 9C82 => 9B74
+ u"鲅" : (u"鮁", ), # 9C85 => 9B81
+ u"鲆" : (u"鮃", ), # 9C86 => 9B83
+ u"鲇" : (u"鯰", ), # 9C87 => 9BF0
+ u"鲈" : (u"鱸", ), # 9C88 => 9C78
+ u"鲊" : (u"鮓", ), # 9C8A => 9B93
+ u"鲋" : (u"鮒", ), # 9C8B => 9B92
+ u"鲍" : (u"鮑", ), # 9C8D => 9B91
+ u"鲎" : (u"鱟", ), # 9C8E => 9C5F
+ u"鲏" : (u"鮍", ), # 9C8F => 9B8D
+ u"鲐" : (u"鮐", ), # 9C90 => 9B90
+ u"鲑" : (u"鮭", ), # 9C91 => 9BAD
+ u"鲒" : (u"鮚", ), # 9C92 => 9B9A
+ u"鲔" : (u"鮪", ), # 9C94 => 9BAA
+ u"鲕" : (u"鮞", ), # 9C95 => 9B9E
+ u"鲖" : (u"鮦", ), # 9C96 => 9BA6
+ u"鲗" : (u"鰂", ), # 9C97 => 9C02
+ u"鲙" : (u"鱠", ), # 9C99 => 9C60
+ u"鲚" : (u"鱭", ), # 9C9A => 9C6D
+ u"鲛" : (u"鮫", ), # 9C9B => 9BAB
+ u"鲜" : (u"鮮", ), # 9C9C => 9BAE
+ u"鲝" : (u"鮺", ), # 9C9D => 9BBA
+ u"鲞" : (u"鯗", ), # 9C9E => 9BD7
+ u"鲟" : (u"鱘", ), # 9C9F => 9C58
+ u"鲠" : (u"鯁", ), # 9CA0 => 9BC1
+ u"鲡" : (u"鱺", ), # 9CA1 => 9C7A
+ u"鲢" : (u"鰱", ), # 9CA2 => 9C31
+ u"鲣" : (u"鰹", ), # 9CA3 => 9C39
+ u"鲤" : (u"鯉", ), # 9CA4 => 9BC9
+ u"鲥" : (u"鰣", ), # 9CA5 => 9C23
+ u"鲦" : (u"鰷", ), # 9CA6 => 9C37
+ u"鲧" : (u"鯀", ), # 9CA7 => 9BC0
+ u"鲨" : (u"鯊", ), # 9CA8 => 9BCA
+ u"鲩" : (u"鯇", ), # 9CA9 => 9BC7
+ u"鲫" : (u"鯽", ), # 9CAB => 9BFD
+ u"鲭" : (u"鯖", ), # 9CAD => 9BD6
+ u"鲮" : (u"鯪", ), # 9CAE => 9BEA
+ u"鲰" : (u"鯫", ), # 9CB0 => 9BEB
+ u"鲱" : (u"鯡", ), # 9CB1 => 9BE1
+ u"鲲" : (u"鯤", ), # 9CB2 => 9BE4
+ u"鲳" : (u"鯧", ), # 9CB3 => 9BE7
+ u"鲴" : (u"鯝", ), # 9CB4 => 9BDD
+ u"鲵" : (u"鯢", ), # 9CB5 => 9BE2
+ u"鲶" : (u"鯰", ), # 9CB6 => 9BF0
+ u"鲷" : (u"鯛", ), # 9CB7 => 9BDB
+ u"鲸" : (u"鯨", ), # 9CB8 => 9BE8
+ u"鲺" : (u"鯴", ), # 9CBA => 9BF4
+ u"鲻" : (u"鯔", ), # 9CBB => 9BD4
+ u"鲼" : (u"鱝", ), # 9CBC => 9C5D
+ u"鲽" : (u"鰈", ), # 9CBD => 9C08
+ u"鲿" : (u"鱨", ), # 9CBF => 9C68
+ u"鳁" : (u"鰛", ), # 9CC1 => 9C1B
+ u"鳃" : (u"鰓", ), # 9CC3 => 9C13
+ u"鳄" : (u"鰐", u"鱷"), # 9CC4 => 9C10 9C77
+ u"鳅" : (u"鰍", ), # 9CC5 => 9C0D
+ u"鳆" : (u"鰒", ), # 9CC6 => 9C12
+ u"鳇" : (u"鰉", ), # 9CC7 => 9C09
+ u"鳊" : (u"鯿", ), # 9CCA => 9BFF
+ u"鳋" : (u"鰠", ), # 9CCB => 9C20
+ u"鳌" : (u"鰲", u"鼇"), # 9CCC => 9C32 9F07
+ u"鳍" : (u"鰭", ), # 9CCD => 9C2D
+ u"鳎" : (u"鰨", ), # 9CCE => 9C28
+ u"鳏" : (u"鰥", ), # 9CCF => 9C25
+ u"鳐" : (u"鰩", ), # 9CD0 => 9C29
+ u"鳑" : (u"鰟", ), # 9CD1 => 9C1F
+ u"鳒" : (u"鰜", ), # 9CD2 => 9C1C
+ u"鳓" : (u"鰳", ), # 9CD3 => 9C33
+ u"鳔" : (u"鰾", ), # 9CD4 => 9C3E
+ u"鳕" : (u"鱈", ), # 9CD5 => 9C48
+ u"鳖" : (u"鱉", ), # 9CD6 => 9C49
+ u"鳗" : (u"鰻", ), # 9CD7 => 9C3B
+ u"鳘" : (u"鰵", ), # 9CD8 => 9C35
+ u"鳙" : (u"鱅", ), # 9CD9 => 9C45
+ u"鳛" : (u"鰼", ), # 9CDB => 9C3C
+ u"鳜" : (u"鱖", ), # 9CDC => 9C56
+ u"鳝" : (u"鱔", ), # 9CDD => 9C54
+ u"鳞" : (u"鱗", ), # 9CDE => 9C57
+ u"鳟" : (u"鱒", ), # 9CDF => 9C52
+ u"鳢" : (u"鱧", ), # 9CE2 => 9C67
+ u"鳣" : (u"鱣", ), # 9CE3 => 9C63
+ u"鸟" : (u"鳥", ), # 9E1F => 9CE5
+ u"鸠" : (u"鳩", ), # 9E20 => 9CE9
+ u"鸡" : (u"雞", u"鷄"), # 9E21 => 96DE 9DC4
+ u"鸢" : (u"鳶", ), # 9E22 => 9CF6
+ u"鸣" : (u"鳴", ), # 9E23 => 9CF4
+ u"鸥" : (u"鷗", ), # 9E25 => 9DD7
+ u"鸦" : (u"鴉", ), # 9E26 => 9D09
+ u"鸧" : (u"鶬", ), # 9E27 => 9DAC
+ u"鸨" : (u"鴇", ), # 9E28 => 9D07
+ u"鸩" : (u"鴆", ), # 9E29 => 9D06
+ u"鸪" : (u"鴣", ), # 9E2A => 9D23
+ u"鸫" : (u"鶇", ), # 9E2B => 9D87
+ u"鸬" : (u"鸕", ), # 9E2C => 9E15
+ u"鸭" : (u"鴨", ), # 9E2D => 9D28
+ u"鸮" : (u"鴞", ), # 9E2E => 9D1E
+ u"鸯" : (u"鴦", ), # 9E2F => 9D26
+ u"鸰" : (u"鴒", ), # 9E30 => 9D12
+ u"鸱" : (u"鴟", ), # 9E31 => 9D1F
+ u"鸲" : (u"鴝", ), # 9E32 => 9D1D
+ u"鸳" : (u"鴛", ), # 9E33 => 9D1B
+ u"鸵" : (u"鴕", ), # 9E35 => 9D15
+ u"鸶" : (u"鷥", ), # 9E36 => 9DE5
+ u"鸷" : (u"鷙", ), # 9E37 => 9DD9
+ u"鸸" : (u"鴯", ), # 9E38 => 9D2F
+ u"鸹" : (u"鴰", ), # 9E39 => 9D30
+ u"鸺" : (u"鵂", ), # 9E3A => 9D42
+ u"鸻" : (u"鴴", ), # 9E3B => 9D34
+ u"鸼" : (u"鵃", ), # 9E3C => 9D43
+ u"鸽" : (u"鴿", ), # 9E3D => 9D3F
+ u"鸾" : (u"鵉", u"鸞"), # 9E3E => 9D49 9E1E
+ u"鸿" : (u"鴻", ), # 9E3F => 9D3B
+ u"鹁" : (u"鵓", ), # 9E41 => 9D53
+ u"鹂" : (u"鸝", ), # 9E42 => 9E1D
+ u"鹃" : (u"鵑", ), # 9E43 => 9D51
+ u"鹄" : (u"鵠", ), # 9E44 => 9D60
+ u"鹅" : (u"鵝", ), # 9E45 => 9D5D
+ u"鹆" : (u"鵒", ), # 9E46 => 9D52
+ u"鹇" : (u"鷳", ), # 9E47 => 9DF3
+ u"鹈" : (u"鵜", ), # 9E48 => 9D5C
+ u"鹉" : (u"鵡", ), # 9E49 => 9D61
+ u"鹊" : (u"鵲", ), # 9E4A => 9D72
+ u"鹋" : (u"鶓", ), # 9E4B => 9D93
+ u"鹌" : (u"鵪", ), # 9E4C => 9D6A
+ u"鹎" : (u"鵯", ), # 9E4E => 9D6F
+ u"鹏" : (u"鵬", ), # 9E4F => 9D6C
+ u"鹐" : (u"鵮", ), # 9E50 => 9D6E
+ u"鹑" : (u"鶉", ), # 9E51 => 9D89
+ u"鹒" : (u"鶊", ), # 9E52 => 9D8A
+ u"鹕" : (u"鶘", ), # 9E55 => 9D98
+ u"鹖" : (u"鶡", ), # 9E56 => 9DA1
+ u"鹗" : (u"鶚", ), # 9E57 => 9D9A
+ u"鹘" : (u"鶻", ), # 9E58 => 9DBB
+ u"鹙" : (u"鶖", ), # 9E59 => 9D96
+ u"鹚" : (u"鶿", u"鷀"), # 9E5A => 9DBF 9DC0
+ u"鹛" : (u"鶥", ), # 9E5B => 9DA5
+ u"鹜" : (u"鶩", ), # 9E5C => 9DA9
+ u"鹞" : (u"鷂", ), # 9E5E => 9DC2
+ u"鹡" : (u"鶺", ), # 9E61 => 9DBA
+ u"鹣" : (u"鶼", ), # 9E63 => 9DBC
+ u"鹤" : (u"鶴", ), # 9E64 => 9DB4
+ u"鹥" : (u"鷖", ), # 9E65 => 9DD6
+ u"鹦" : (u"鸚", ), # 9E66 => 9E1A
+ u"鹧" : (u"鷓", ), # 9E67 => 9DD3
+ u"鹨" : (u"鷚", ), # 9E68 => 9DDA
+ u"鹩" : (u"鷯", ), # 9E69 => 9DEF
+ u"鹪" : (u"鷦", ), # 9E6A => 9DE6
+ u"鹫" : (u"鷲", ), # 9E6B => 9DF2
+ u"鹬" : (u"鷸", ), # 9E6C => 9DF8
+ u"鹭" : (u"鷺", ), # 9E6D => 9DFA
+ u"鹯" : (u"鸇", ), # 9E6F => 9E07
+ u"鹰" : (u"鷹", ), # 9E70 => 9DF9
+ u"鹱" : (u"鸌", ), # 9E71 => 9E0C
+ u"鹳" : (u"鸛", ), # 9E73 => 9E1B
+ u"鹾" : (u"鹺", ), # 9E7E => 9E7A
+ u"麦" : (u"麥", ), # 9EA6 => 9EA5
+ u"麸" : (u"麩", ), # 9EB8 => 9EA9
+ u"黄" : (u"黃", ), # 9EC4 => 9EC3
+ u"黉" : (u"黌", ), # 9EC9 => 9ECC
+ u"黡" : (u"黶", ), # 9EE1 => 9EF6
+ u"黩" : (u"黷", ), # 9EE9 => 9EF7
+ u"黪" : (u"黲", ), # 9EEA => 9EF2
+ u"黾" : (u"黽", ), # 9EFE => 9EFD
+ u"鼋" : (u"黿", ), # 9F0B => 9EFF
+ u"鼍" : (u"鼉", ), # 9F0D => 9F09
+ u"鼗" : (u"鞀", ), # 9F17 => 9780
+ u"鼹" : (u"鼴", ), # 9F39 => 9F34
+ u"齄" : (u"齇", ), # 9F44 => 9F47
+ u"齐" : (u"齊", ), # 9F50 => 9F4A
+ u"齑" : (u"齏", ), # 9F51 => 9F4F
+ u"齿" : (u"齒", ), # 9F7F => 9F52
+ u"龀" : (u"齔", ), # 9F80 => 9F54
+ u"龃" : (u"齟", ), # 9F83 => 9F5F
+ u"龄" : (u"齡", ), # 9F84 => 9F61
+ u"龅" : (u"齙", ), # 9F85 => 9F59
+ u"龆" : (u"齠", ), # 9F86 => 9F60
+ u"龇" : (u"齜", ), # 9F87 => 9F5C
+ u"龈" : (u"齦", ), # 9F88 => 9F66
+ u"龉" : (u"齬", ), # 9F89 => 9F6C
+ u"龊" : (u"齪", ), # 9F8A => 9F6A
+ u"龋" : (u"齲", ), # 9F8B => 9F72
+ u"龌" : (u"齷", ), # 9F8C => 9F77
+ u"龙" : (u"龍", ), # 9F99 => 9F8D
+ u"龚" : (u"龔", ), # 9F9A => 9F94
+ u"龛" : (u"龕", ), # 9F9B => 9F95
+ u"龟" : (u"龜", ), # 9F9F => 9F9C
+}
+
+# Traditional Chinese to Simplified Chinese
+T_2_S = {
+ u"㑳" : (u"㑇", ), # 3473 => 3447
+ u"㘚" : (u"㘎", ), # 361A => 360E
+ u"㥮" : (u"㤘", ), # 396E => 3918
+ u"㩳" : (u"㧐", ), # 3A73 => 39D0
+ u"䎱" : (u"䎬", ), # 43B1 => 43AC
+ u"䙡" : (u"䙌", ), # 4661 => 464C
+ u"䝼" : (u"䞍", ), # 477C => 478D
+ u"䥇" : (u"䦂", ), # 4947 => 4982
+ u"䦛" : (u"䦶", ), # 499B => 49B6
+ u"䦟" : (u"䦷", ), # 499F => 49B7
+ u"䱷" : (u"䲣", ), # 4C77 => 4CA3
+ u"丟" : (u"丢", ), # 4E1F => 4E22
+ u"並" : (u"并", ), # 4E26 => 5E76
+ u"么" : (u"幺", ), # 4E48 => 5E7A
+ u"乾" : (u"干", ), # 4E7E => 5E72
+ u"亂" : (u"乱", ), # 4E82 => 4E71
+ u"亙" : (u"亘", ), # 4E99 => 4E98
+ u"亞" : (u"亚", ), # 4E9E => 4E9A
+ u"佇" : (u"伫", ), # 4F47 => 4F2B
+ u"佘" : (u"畲", ), # 4F58 => 7572
+ u"來" : (u"来", ), # 4F86 => 6765
+ u"侖" : (u"仑", ), # 4F96 => 4ED1
+ u"侶" : (u"侣", ), # 4FB6 => 4FA3
+ u"俁" : (u"俣", ), # 4FC1 => 4FE3
+ u"係" : (u"系", ), # 4FC2 => 7CFB
+ u"俠" : (u"侠", ), # 4FE0 => 4FA0
+ u"倀" : (u"伥", ), # 5000 => 4F25
+ u"倆" : (u"俩", ), # 5006 => 4FE9
+ u"倉" : (u"仓", ), # 5009 => 4ED3
+ u"個" : (u"个", ), # 500B => 4E2A
+ u"們" : (u"们", ), # 5011 => 4EEC
+ u"倫" : (u"伦", ), # 502B => 4F26
+ u"偉" : (u"伟", ), # 5049 => 4F1F
+ u"側" : (u"侧", ), # 5074 => 4FA7
+ u"偵" : (u"侦", ), # 5075 => 4FA6
+ u"偽" : (u"伪", ), # 507D => 4F2A
+ u"傑" : (u"杰", ), # 5091 => 6770
+ u"傖" : (u"伧", ), # 5096 => 4F27
+ u"傘" : (u"伞", ), # 5098 => 4F1E
+ u"備" : (u"备", ), # 5099 => 5907
+ u"傢" : (u"家", ), # 50A2 => 5BB6
+ u"傭" : (u"佣", ), # 50AD => 4F63
+ u"傯" : (u"偬", ), # 50AF => 506C
+ u"傳" : (u"传", ), # 50B3 => 4F20
+ u"傴" : (u"伛", ), # 50B4 => 4F1B
+ u"債" : (u"债", ), # 50B5 => 503A
+ u"傷" : (u"伤", ), # 50B7 => 4F24
+ u"傾" : (u"倾", ), # 50BE => 503E
+ u"僂" : (u"偻", ), # 50C2 => 507B
+ u"僅" : (u"仅", ), # 50C5 => 4EC5
+ u"僉" : (u"佥", ), # 50C9 => 4F65
+ u"僑" : (u"侨", ), # 50D1 => 4FA8
+ u"僕" : (u"仆", ), # 50D5 => 4EC6
+ u"僞" : (u"伪", ), # 50DE => 4F2A
+ u"僥" : (u"侥", ), # 50E5 => 4FA5
+ u"僨" : (u"偾", ), # 50E8 => 507E
+ u"價" : (u"价", ), # 50F9 => 4EF7
+ u"儀" : (u"仪", ), # 5100 => 4EEA
+ u"儂" : (u"侬", ), # 5102 => 4FAC
+ u"億" : (u"亿", ), # 5104 => 4EBF
+ u"儈" : (u"侩", ), # 5108 => 4FA9
+ u"儉" : (u"俭", ), # 5109 => 4FED
+ u"儐" : (u"傧", ), # 5110 => 50A7
+ u"儔" : (u"俦", ), # 5114 => 4FE6
+ u"儕" : (u"侪", ), # 5115 => 4FAA
+ u"儘" : (u"尽", ), # 5118 => 5C3D
+ u"償" : (u"偿", ), # 511F => 507F
+ u"優" : (u"优", ), # 512A => 4F18
+ u"儲" : (u"储", ), # 5132 => 50A8
+ u"儷" : (u"俪", ), # 5137 => 4FEA
+ u"儺" : (u"傩", ), # 513A => 50A9
+ u"儻" : (u"傥", ), # 513B => 50A5
+ u"儼" : (u"俨", ), # 513C => 4FE8
+ u"兌" : (u"兑", ), # 514C => 5151
+ u"兒" : (u"儿", ), # 5152 => 513F
+ u"兗" : (u"兖", ), # 5157 => 5156
+ u"內" : (u"内", ), # 5167 => 5185
+ u"兩" : (u"两", ), # 5169 => 4E24
+ u"兿" : (u"艺", ), # 517F => 827A
+ u"冊" : (u"册", ), # 518A => 518C
+ u"冪" : (u"幂", ), # 51AA => 5E42
+ u"凍" : (u"冻", ), # 51CD => 51BB
+ u"凖" : (u"准", ), # 51D6 => 51C6
+ u"凜" : (u"凛", ), # 51DC => 51DB
+ u"凱" : (u"凯", ), # 51F1 => 51EF
+ u"別" : (u"别", ), # 5225 => 522B
+ u"刪" : (u"删", ), # 522A => 5220
+ u"剄" : (u"刭", ), # 5244 => 522D
+ u"則" : (u"则", ), # 5247 => 5219
+ u"剋" : (u"克", ), # 524B => 514B
+ u"剗" : (u"刬", ), # 5257 => 522C
+ u"剛" : (u"刚", ), # 525B => 521A
+ u"剝" : (u"剥", ), # 525D => 5265
+ u"剮" : (u"剐", ), # 526E => 5250
+ u"剴" : (u"剀", ), # 5274 => 5240
+ u"創" : (u"创", ), # 5275 => 521B
+ u"劃" : (u"划", ), # 5283 => 5212
+ u"劄" : (u"札", ), # 5284 => 672D
+ u"劇" : (u"剧", ), # 5287 => 5267
+ u"劈" : (u"噼", ), # 5288 => 567C
+ u"劉" : (u"刘", ), # 5289 => 5218
+ u"劊" : (u"刽", ), # 528A => 523D
+ u"劌" : (u"刿", ), # 528C => 523F
+ u"劍" : (u"剑", ), # 528D => 5251
+ u"劑" : (u"剂", ), # 5291 => 5242
+ u"勁" : (u"劲", ), # 52C1 => 52B2
+ u"動" : (u"动", ), # 52D5 => 52A8
+ u"務" : (u"务", ), # 52D9 => 52A1
+ u"勛" : (u"勋", ), # 52DB => 52CB
+ u"勝" : (u"胜", ), # 52DD => 80DC
+ u"勞" : (u"劳", ), # 52DE => 52B3
+ u"勢" : (u"势", ), # 52E2 => 52BF
+ u"勩" : (u"勚", ), # 52E9 => 52DA
+ u"勱" : (u"劢", ), # 52F1 => 52A2
+ u"勳" : (u"勋", ), # 52F3 => 52CB
+ u"勵" : (u"励", ), # 52F5 => 52B1
+ u"勸" : (u"劝", ), # 52F8 => 529D
+ u"勻" : (u"匀", ), # 52FB => 5300
+ u"匭" : (u"匦", ), # 532D => 5326
+ u"匯" : (u"汇", ), # 532F => 6C47
+ u"匱" : (u"匮", ), # 5331 => 532E
+ u"區" : (u"区", ), # 5340 => 533A
+ u"協" : (u"协", ), # 5354 => 534F
+ u"卻" : (u"却", ), # 537B => 5374
+ u"厙" : (u"厍", ), # 5399 => 538D
+ u"原" : (u"塬", ), # 539F => 586C
+ u"厠" : (u"厕", ), # 53A0 => 5395
+ u"厭" : (u"厌", ), # 53AD => 538C
+ u"厲" : (u"厉", ), # 53B2 => 5389
+ u"厴" : (u"厣", ), # 53B4 => 53A3
+ u"參" : (u"叁", u"参"), # 53C3 => 53C1 53C2
+ u"叢" : (u"丛", ), # 53E2 => 4E1B
+ u"吒" : (u"咤", ), # 5412 => 54A4
+ u"吳" : (u"吴", ), # 5433 => 5434
+ u"呂" : (u"吕", ), # 5442 => 5415
+ u"呱" : (u"哌", ), # 5471 => 54CC
+ u"呵" : (u"嗬", ), # 5475 => 55EC
+ u"呼" : (u"唿", ), # 547C => 553F
+ u"咼" : (u"呙", ), # 54BC => 5459
+ u"員" : (u"员", ), # 54E1 => 5458
+ u"哢" : (u"咔", ), # 54E2 => 5494
+ u"唄" : (u"呗", ), # 5504 => 5457
+ u"唕" : (u"唣", ), # 5515 => 5523
+ u"唚" : (u"吣", ), # 551A => 5423
+ u"問" : (u"问", ), # 554F => 95EE
+ u"啓" : (u"启", ), # 5553 => 542F
+ u"啞" : (u"哑", ), # 555E => 54D1
+ u"啟" : (u"启", ), # 555F => 542F
+ u"啢" : (u"唡", ), # 5562 => 5521
+ u"喎" : (u"㖞", ), # 558E => 359E
+ u"喚" : (u"唤", ), # 559A => 5524
+ u"喪" : (u"丧", ), # 55AA => 4E27
+ u"喬" : (u"乔", ), # 55AC => 4E54
+ u"單" : (u"单", ), # 55AE => 5355
+ u"喲" : (u"哟", ), # 55B2 => 54DF
+ u"嗆" : (u"呛", ), # 55C6 => 545B
+ u"嗇" : (u"啬", ), # 55C7 => 556C
+ u"嗊" : (u"唝", ), # 55CA => 551D
+ u"嗎" : (u"吗", ), # 55CE => 5417
+ u"嗚" : (u"呜", ), # 55DA => 545C
+ u"嗩" : (u"唢", ), # 55E9 => 5522
+ u"嗶" : (u"哔", ), # 55F6 => 54D4
+ u"嘆" : (u"叹", ), # 5606 => 53F9
+ u"嘍" : (u"喽", ), # 560D => 55BD
+ u"嘔" : (u"呕", ), # 5614 => 5455
+ u"嘖" : (u"啧", ), # 5616 => 5567
+ u"嘗" : (u"尝", ), # 5617 => 5C1D
+ u"嘜" : (u"唛", ), # 561C => 551B
+ u"嘩" : (u"哗", ), # 5629 => 54D7
+ u"嘮" : (u"唠", ), # 562E => 5520
+ u"嘯" : (u"啸", ), # 562F => 5578
+ u"嘰" : (u"叽", ), # 5630 => 53FD
+ u"嘵" : (u"哓", ), # 5635 => 54D3
+ u"嘸" : (u"呒", ), # 5638 => 5452
+ u"噁" : (u"恶", ), # 5641 => 6076
+ u"噅" : (u"咴", ), # 5645 => 54B4
+ u"噓" : (u"嘘", ), # 5653 => 5618
+ u"噝" : (u"咝", ), # 565D => 549D
+ u"噠" : (u"哒", ), # 5660 => 54D2
+ u"噥" : (u"哝", ), # 5665 => 54DD
+ u"噦" : (u"哕", ), # 5666 => 54D5
+ u"噯" : (u"嗳", ), # 566F => 55F3
+ u"噲" : (u"哙", ), # 5672 => 54D9
+ u"噴" : (u"喷", ), # 5674 => 55B7
+ u"噸" : (u"吨", ), # 5678 => 5428
+ u"噹" : (u"当", ), # 5679 => 5F53
+ u"嚀" : (u"咛", ), # 5680 => 549B
+ u"嚇" : (u"吓", ), # 5687 => 5413
+ u"嚌" : (u"哜", ), # 568C => 54DC
+ u"嚕" : (u"噜", ), # 5695 => 565C
+ u"嚙" : (u"啮", ), # 5699 => 556E
+ u"嚦" : (u"呖", ), # 56A6 => 5456
+ u"嚨" : (u"咙", ), # 56A8 => 5499
+ u"嚮" : (u"向", ), # 56AE => 5411
+ u"嚳" : (u"喾", ), # 56B3 => 55BE
+ u"嚴" : (u"严", ), # 56B4 => 4E25
+ u"嚶" : (u"嘤", ), # 56B6 => 5624
+ u"囀" : (u"啭", ), # 56C0 => 556D
+ u"囁" : (u"嗫", ), # 56C1 => 55EB
+ u"囂" : (u"嚣", ), # 56C2 => 56A3
+ u"囅" : (u"冁", ), # 56C5 => 5181
+ u"囈" : (u"呓", ), # 56C8 => 5453
+ u"囉" : (u"啰", ), # 56C9 => 5570
+ u"囌" : (u"苏", ), # 56CC => 82CF
+ u"囑" : (u"嘱", ), # 56D1 => 5631
+ u"囪" : (u"囱", ), # 56EA => 56F1
+ u"圇" : (u"囵", ), # 5707 => 56F5
+ u"國" : (u"国", ), # 570B => 56FD
+ u"圍" : (u"围", ), # 570D => 56F4
+ u"園" : (u"园", ), # 5712 => 56ED
+ u"圓" : (u"圆", ), # 5713 => 5706
+ u"圖" : (u"图", ), # 5716 => 56FE
+ u"團" : (u"团", ), # 5718 => 56E2
+ u"坰" : (u"垧", ), # 5770 => 57A7
+ u"垵" : (u"埯", ), # 57B5 => 57EF
+ u"埡" : (u"垭", ), # 57E1 => 57AD
+ u"執" : (u"执", ), # 57F7 => 6267
+ u"堅" : (u"坚", ), # 5805 => 575A
+ u"堊" : (u"垩", ), # 580A => 57A9
+ u"堖" : (u"垴", ), # 5816 => 57B4
+ u"堝" : (u"埚", ), # 581D => 57DA
+ u"堯" : (u"尧", ), # 582F => 5C27
+ u"報" : (u"报", ), # 5831 => 62A5
+ u"場" : (u"场", ), # 5834 => 573A
+ u"堿" : (u"碱", ), # 583F => 78B1
+ u"塊" : (u"块", ), # 584A => 5757
+ u"塋" : (u"茔", ), # 584B => 8314
+ u"塏" : (u"垲", ), # 584F => 57B2
+ u"塒" : (u"埘", ), # 5852 => 57D8
+ u"塗" : (u"涂", ), # 5857 => 6D82
+ u"塚" : (u"冢", ), # 585A => 51A2
+ u"塢" : (u"坞", ), # 5862 => 575E
+ u"塤" : (u"埙", ), # 5864 => 57D9
+ u"塵" : (u"尘", ), # 5875 => 5C18
+ u"塹" : (u"堑", ), # 5879 => 5811
+ u"墊" : (u"垫", u"埝"), # 588A => 57AB 57DD
+ u"墜" : (u"坠", ), # 589C => 5760
+ u"墮" : (u"堕", ), # 58AE => 5815
+ u"墳" : (u"坟", ), # 58B3 => 575F
+ u"墻" : (u"墙", ), # 58BB => 5899
+ u"墾" : (u"垦", ), # 58BE => 57A6
+ u"壇" : (u"坛", ), # 58C7 => 575B
+ u"壐" : (u"玺", ), # 58D0 => 73BA
+ u"壓" : (u"压", ), # 58D3 => 538B
+ u"壘" : (u"垒", ), # 58D8 => 5792
+ u"壙" : (u"圹", ), # 58D9 => 5739
+ u"壚" : (u"垆", ), # 58DA => 5786
+ u"壞" : (u"坏", ), # 58DE => 574F
+ u"壟" : (u"垄", u"垅"), # 58DF => 5784 5785
+ u"壢" : (u"坜", ), # 58E2 => 575C
+ u"壩" : (u"坝", ), # 58E9 => 575D
+ u"壯" : (u"壮", ), # 58EF => 58EE
+ u"壺" : (u"壶", ), # 58FA => 58F6
+ u"壽" : (u"寿", ), # 58FD => 5BFF
+ u"夀" : (u"寿", ), # 5900 => 5BFF
+ u"夠" : (u"够", ), # 5920 => 591F
+ u"夢" : (u"梦", ), # 5922 => 68A6
+ u"夥" : (u"伙", ), # 5925 => 4F19
+ u"夾" : (u"夹", ), # 593E => 5939
+ u"奐" : (u"奂", ), # 5950 => 5942
+ u"奧" : (u"奥", ), # 5967 => 5965
+ u"奩" : (u"奁", ), # 5969 => 5941
+ u"奪" : (u"夺", ), # 596A => 593A
+ u"奬" : (u"奖", ), # 596C => 5956
+ u"奮" : (u"奋", ), # 596E => 594B
+ u"妝" : (u"妆", ), # 599D => 5986
+ u"姍" : (u"姗", ), # 59CD => 59D7
+ u"娛" : (u"娱", ), # 5A1B => 5A31
+ u"婁" : (u"娄", ), # 5A41 => 5A04
+ u"婦" : (u"妇", ), # 5A66 => 5987
+ u"婭" : (u"娅", ), # 5A6D => 5A05
+ u"媧" : (u"娲", ), # 5AA7 => 5A32
+ u"媯" : (u"妫", ), # 5AAF => 59AB
+ u"媼" : (u"媪", ), # 5ABC => 5AAA
+ u"媽" : (u"妈", ), # 5ABD => 5988
+ u"嫋" : (u"袅", ), # 5ACB => 8885
+ u"嫗" : (u"妪", ), # 5AD7 => 59AA
+ u"嫵" : (u"妩", ), # 5AF5 => 59A9
+ u"嫻" : (u"娴", ), # 5AFB => 5A34
+ u"嫿" : (u"婳", ), # 5AFF => 5A73
+ u"嬈" : (u"娆", ), # 5B08 => 5A06
+ u"嬋" : (u"婵", ), # 5B0B => 5A75
+ u"嬌" : (u"娇", ), # 5B0C => 5A07
+ u"嬙" : (u"嫱", ), # 5B19 => 5AF1
+ u"嬡" : (u"嫒", ), # 5B21 => 5AD2
+ u"嬤" : (u"嬷", ), # 5B24 => 5B37
+ u"嬪" : (u"嫔", ), # 5B2A => 5AD4
+ u"嬰" : (u"婴", ), # 5B30 => 5A74
+ u"嬸" : (u"婶", ), # 5B38 => 5A76
+ u"孌" : (u"娈", ), # 5B4C => 5A08
+ u"孫" : (u"孙", ), # 5B6B => 5B59
+ u"學" : (u"学", ), # 5B78 => 5B66
+ u"孿" : (u"孪", ), # 5B7F => 5B6A
+ u"宮" : (u"宫", ), # 5BAE => 5BAB
+ u"寜" : (u"宁", ), # 5BDC => 5B81
+ u"寢" : (u"寝", ), # 5BE2 => 5BDD
+ u"實" : (u"实", ), # 5BE6 => 5B9E
+ u"審" : (u"审", ), # 5BE9 => 5BA1
+ u"寫" : (u"写", ), # 5BEB => 5199
+ u"寬" : (u"宽", ), # 5BEC => 5BBD
+ u"寵" : (u"宠", ), # 5BF5 => 5BA0
+ u"寶" : (u"宝", ), # 5BF6 => 5B9D
+ u"將" : (u"将", ), # 5C07 => 5C06
+ u"專" : (u"专", ), # 5C08 => 4E13
+ u"尋" : (u"寻", ), # 5C0B => 5BFB
+ u"對" : (u"对", ), # 5C0D => 5BF9
+ u"導" : (u"导", ), # 5C0E => 5BFC
+ u"尷" : (u"尴", ), # 5C37 => 5C34
+ u"屆" : (u"届", ), # 5C46 => 5C4A
+ u"屍" : (u"尸", ), # 5C4D => 5C38
+ u"屙" : (u"疴", ), # 5C59 => 75B4
+ u"屜" : (u"屉", ), # 5C5C => 5C49
+ u"屢" : (u"屡", ), # 5C62 => 5C61
+ u"層" : (u"层", ), # 5C64 => 5C42
+ u"屨" : (u"屦", ), # 5C68 => 5C66
+ u"屬" : (u"属", ), # 5C6C => 5C5E
+ u"岡" : (u"冈", ), # 5CA1 => 5188
+ u"峴" : (u"岘", ), # 5CF4 => 5C98
+ u"島" : (u"岛", ), # 5CF6 => 5C9B
+ u"峽" : (u"峡", ), # 5CFD => 5CE1
+ u"崍" : (u"崃", ), # 5D0D => 5D03
+ u"崗" : (u"岗", ), # 5D17 => 5C97
+ u"崠" : (u"岽", ), # 5D20 => 5CBD
+ u"崢" : (u"峥", ), # 5D22 => 5CE5
+ u"崬" : (u"岽", ), # 5D2C => 5CBD
+ u"崳" : (u"嵛", ), # 5D33 => 5D5B
+ u"嵐" : (u"岚", ), # 5D50 => 5C9A
+ u"嵗" : (u"岁", ), # 5D57 => 5C81
+ u"嶁" : (u"嵝", ), # 5D81 => 5D5D
+ u"嶄" : (u"崭", ), # 5D84 => 5D2D
+ u"嶇" : (u"岖", ), # 5D87 => 5C96
+ u"嶔" : (u"嵚", ), # 5D94 => 5D5A
+ u"嶗" : (u"崂", ), # 5D97 => 5D02
+ u"嶠" : (u"峤", ), # 5DA0 => 5CE4
+ u"嶢" : (u"峣", ), # 5DA2 => 5CE3
+ u"嶧" : (u"峄", ), # 5DA7 => 5CC4
+ u"嶨" : (u"峃", ), # 5DA8 => 5CC3
+ u"嶴" : (u"岙", ), # 5DB4 => 5C99
+ u"嶸" : (u"嵘", ), # 5DB8 => 5D58
+ u"嶺" : (u"岭", ), # 5DBA => 5CAD
+ u"嶼" : (u"屿", ), # 5DBC => 5C7F
+ u"嶽" : (u"岳", ), # 5DBD => 5CB3
+ u"巋" : (u"岿", ), # 5DCB => 5CBF
+ u"巒" : (u"峦", ), # 5DD2 => 5CE6
+ u"巔" : (u"巅", ), # 5DD4 => 5DC5
+ u"巰" : (u"巯", ), # 5DF0 => 5DEF
+ u"巹" : (u"卺", ), # 5DF9 => 537A
+ u"帥" : (u"帅", ), # 5E25 => 5E05
+ u"師" : (u"师", ), # 5E2B => 5E08
+ u"帳" : (u"帐", ), # 5E33 => 5E10
+ u"帶" : (u"带", ), # 5E36 => 5E26
+ u"幀" : (u"帧", ), # 5E40 => 5E27
+ u"幃" : (u"帏", ), # 5E43 => 5E0F
+ u"幗" : (u"帼", ), # 5E57 => 5E3C
+ u"幘" : (u"帻", ), # 5E58 => 5E3B
+ u"幟" : (u"帜", ), # 5E5F => 5E1C
+ u"幣" : (u"币", ), # 5E63 => 5E01
+ u"幫" : (u"帮", ), # 5E6B => 5E2E
+ u"幬" : (u"帱", ), # 5E6C => 5E31
+ u"幹" : (u"干", ), # 5E79 => 5E72
+ u"幾" : (u"几", ), # 5E7E => 51E0
+ u"庫" : (u"库", ), # 5EAB => 5E93
+ u"廁" : (u"厕", ), # 5EC1 => 5395
+ u"廂" : (u"厢", ), # 5EC2 => 53A2
+ u"廄" : (u"厩", ), # 5EC4 => 53A9
+ u"廈" : (u"厦", ), # 5EC8 => 53A6
+ u"廎" : (u"庼", ), # 5ECE => 5EBC
+ u"廚" : (u"厨", ), # 5EDA => 53A8
+ u"廝" : (u"厮", ), # 5EDD => 53AE
+ u"廟" : (u"庙", ), # 5EDF => 5E99
+ u"廠" : (u"厂", ), # 5EE0 => 5382
+ u"廡" : (u"庑", ), # 5EE1 => 5E91
+ u"廢" : (u"废", ), # 5EE2 => 5E9F
+ u"廣" : (u"广", ), # 5EE3 => 5E7F
+ u"廩" : (u"廪", ), # 5EE9 => 5EEA
+ u"廬" : (u"庐", ), # 5EEC => 5E90
+ u"廳" : (u"厅", ), # 5EF3 => 5385
+ u"弳" : (u"弪", ), # 5F33 => 5F2A
+ u"張" : (u"张", ), # 5F35 => 5F20
+ u"強" : (u"强", u"犟"), # 5F37 => 5F3A 729F
+ u"彆" : (u"别", ), # 5F46 => 522B
+ u"彈" : (u"弹", ), # 5F48 => 5F39
+ u"彌" : (u"弥", ), # 5F4C => 5F25
+ u"彎" : (u"弯", ), # 5F4E => 5F2F
+ u"彙" : (u"汇", ), # 5F59 => 6C47
+ u"彥" : (u"彦", ), # 5F65 => 5F66
+ u"後" : (u"后", ), # 5F8C => 540E
+ u"徑" : (u"径", ), # 5F91 => 5F84
+ u"從" : (u"从", ), # 5F9E => 4ECE
+ u"徠" : (u"徕", ), # 5FA0 => 5F95
+ u"復" : (u"复", ), # 5FA9 => 590D
+ u"徵" : (u"征", ), # 5FB5 => 5F81
+ u"徹" : (u"彻", ), # 5FB9 => 5F7B
+ u"怵" : (u"憷", ), # 6035 => 61B7
+ u"恥" : (u"耻", ), # 6065 => 803B
+ u"悅" : (u"悦", ), # 6085 => 60A6
+ u"悵" : (u"怅", ), # 60B5 => 6005
+ u"悶" : (u"闷", ), # 60B6 => 95F7
+ u"惡" : (u"恶", ), # 60E1 => 6076
+ u"惱" : (u"恼", ), # 60F1 => 607C
+ u"惲" : (u"恽", ), # 60F2 => 607D
+ u"惻" : (u"恻", ), # 60FB => 607B
+ u"愛" : (u"爱", ), # 611B => 7231
+ u"愜" : (u"惬", ), # 611C => 60EC
+ u"愨" : (u"悫", ), # 6128 => 60AB
+ u"愴" : (u"怆", ), # 6134 => 6006
+ u"愷" : (u"恺", ), # 6137 => 607A
+ u"愾" : (u"忾", ), # 613E => 5FFE
+ u"態" : (u"态", ), # 614B => 6001
+ u"慍" : (u"愠", ), # 614D => 6120
+ u"慘" : (u"惨", ), # 6158 => 60E8
+ u"慚" : (u"惭", ), # 615A => 60ED
+ u"慟" : (u"恸", ), # 615F => 6078
+ u"慣" : (u"惯", ), # 6163 => 60EF
+ u"慤" : (u"悫", ), # 6164 => 60AB
+ u"慪" : (u"怄", ), # 616A => 6004
+ u"慫" : (u"怂", ), # 616B => 6002
+ u"慮" : (u"虑", ), # 616E => 8651
+ u"慳" : (u"悭", ), # 6173 => 60AD
+ u"慶" : (u"庆", ), # 6176 => 5E86
+ u"憂" : (u"忧", ), # 6182 => 5FE7
+ u"憊" : (u"惫", ), # 618A => 60EB
+ u"憐" : (u"怜", ), # 6190 => 601C
+ u"憑" : (u"凭", ), # 6191 => 51ED
+ u"憒" : (u"愦", ), # 6192 => 6126
+ u"憚" : (u"惮", ), # 619A => 60EE
+ u"憤" : (u"愤", ), # 61A4 => 6124
+ u"憫" : (u"悯", ), # 61AB => 60AF
+ u"憮" : (u"怃", ), # 61AE => 6003
+ u"憲" : (u"宪", ), # 61B2 => 5BAA
+ u"憶" : (u"忆", ), # 61B6 => 5FC6
+ u"懇" : (u"恳", ), # 61C7 => 6073
+ u"應" : (u"应", ), # 61C9 => 5E94
+ u"懌" : (u"怿", ), # 61CC => 603F
+ u"懍" : (u"懔", ), # 61CD => 61D4
+ u"懞" : (u"蒙", ), # 61DE => 8499
+ u"懟" : (u"怼", ), # 61DF => 603C
+ u"懣" : (u"懑", ), # 61E3 => 61D1
+ u"懨" : (u"恹", ), # 61E8 => 6079
+ u"懲" : (u"惩", ), # 61F2 => 60E9
+ u"懶" : (u"懒", ), # 61F6 => 61D2
+ u"懷" : (u"怀", ), # 61F7 => 6000
+ u"懸" : (u"悬", ), # 61F8 => 60AC
+ u"懺" : (u"忏", ), # 61FA => 5FCF
+ u"懼" : (u"惧", ), # 61FC => 60E7
+ u"懾" : (u"慑", ), # 61FE => 6151
+ u"戀" : (u"恋", ), # 6200 => 604B
+ u"戇" : (u"戆", ), # 6207 => 6206
+ u"戔" : (u"戋", ), # 6214 => 620B
+ u"戠" : (u"只", ), # 6220 => 53EA
+ u"戧" : (u"戗", ), # 6227 => 6217
+ u"戩" : (u"戬", ), # 6229 => 622C
+ u"戰" : (u"战", ), # 6230 => 6218
+ u"戲" : (u"戏", ), # 6232 => 620F
+ u"戶" : (u"户", ), # 6236 => 6237
+ u"扡" : (u"扦", ), # 6261 => 6266
+ u"拋" : (u"抛", ), # 62CB => 629B
+ u"挾" : (u"挟", ), # 633E => 631F
+ u"捨" : (u"舍", ), # 6368 => 820D
+ u"捫" : (u"扪", ), # 636B => 626A
+ u"捲" : (u"卷", ), # 6372 => 5377
+ u"掃" : (u"扫", ), # 6383 => 626B
+ u"掄" : (u"抡", ), # 6384 => 62A1
+ u"掆" : (u"㧏", ), # 6386 => 39CF
+ u"掗" : (u"挜", ), # 6397 => 631C
+ u"掙" : (u"挣", ), # 6399 => 6323
+ u"掛" : (u"挂", ), # 639B => 6302
+ u"揀" : (u"拣", ), # 63C0 => 62E3
+ u"揚" : (u"扬", ), # 63DA => 626C
+ u"換" : (u"换", ), # 63DB => 6362
+ u"揮" : (u"挥", ), # 63EE => 6325
+ u"損" : (u"损", ), # 640D => 635F
+ u"搖" : (u"摇", ), # 6416 => 6447
+ u"搗" : (u"捣", ), # 6417 => 6363
+ u"搶" : (u"抢", ), # 6436 => 62A2
+ u"摑" : (u"掴", ), # 6451 => 63B4
+ u"摜" : (u"掼", ), # 645C => 63BC
+ u"摟" : (u"搂", ), # 645F => 6402
+ u"摣" : (u"揸", ), # 6463 => 63F8
+ u"摯" : (u"挚", ), # 646F => 631A
+ u"摳" : (u"抠", ), # 6473 => 62A0
+ u"摶" : (u"抟", ), # 6476 => 629F
+ u"摺" : (u"折", ), # 647A => 6298
+ u"摻" : (u"掺", ), # 647B => 63BA
+ u"撃" : (u"击", ), # 6483 => 51FB
+ u"撈" : (u"捞", ), # 6488 => 635E
+ u"撏" : (u"挦", ), # 648F => 6326
+ u"撐" : (u"撑", ), # 6490 => 6491
+ u"撓" : (u"挠", ), # 6493 => 6320
+ u"撚" : (u"捻", ), # 649A => 637B
+ u"撟" : (u"挢", ), # 649F => 6322
+ u"撣" : (u"掸", ), # 64A3 => 63B8
+ u"撥" : (u"拨", ), # 64A5 => 62E8
+ u"撫" : (u"抚", ), # 64AB => 629A
+ u"撲" : (u"扑", ), # 64B2 => 6251
+ u"撳" : (u"揿", ), # 64B3 => 63FF
+ u"撻" : (u"挞", ), # 64BB => 631E
+ u"撾" : (u"挝", ), # 64BE => 631D
+ u"撿" : (u"捡", ), # 64BF => 6361
+ u"擁" : (u"拥", ), # 64C1 => 62E5
+ u"擄" : (u"掳", ), # 64C4 => 63B3
+ u"擇" : (u"择", ), # 64C7 => 62E9
+ u"擊" : (u"击", ), # 64CA => 51FB
+ u"擋" : (u"挡", ), # 64CB => 6321
+ u"擓" : (u"㧟", ), # 64D3 => 39DF
+ u"擔" : (u"担", ), # 64D4 => 62C5
+ u"據" : (u"据", ), # 64DA => 636E
+ u"擠" : (u"挤", ), # 64E0 => 6324
+ u"擬" : (u"拟", ), # 64EC => 62DF
+ u"擯" : (u"摈", ), # 64EF => 6448
+ u"擰" : (u"拧", ), # 64F0 => 62E7
+ u"擱" : (u"搁", ), # 64F1 => 6401
+ u"擲" : (u"掷", ), # 64F2 => 63B7
+ u"擴" : (u"扩", ), # 64F4 => 6269
+ u"擷" : (u"撷", ), # 64F7 => 64B7
+ u"擹" : (u"摊", ), # 64F9 => 644A
+ u"擺" : (u"摆", ), # 64FA => 6446
+ u"擻" : (u"擞", ), # 64FB => 64DE
+ u"擼" : (u"撸", ), # 64FC => 64B8
+ u"擾" : (u"扰", ), # 64FE => 6270
+ u"攄" : (u"摅", ), # 6504 => 6445
+ u"攆" : (u"撵", ), # 6506 => 64B5
+ u"攏" : (u"拢", ), # 650F => 62E2
+ u"攔" : (u"拦", ), # 6514 => 62E6
+ u"攖" : (u"撄", ), # 6516 => 6484
+ u"攙" : (u"搀", ), # 6519 => 6400
+ u"攛" : (u"撺", ), # 651B => 64BA
+ u"攜" : (u"携", ), # 651C => 643A
+ u"攝" : (u"摄", ), # 651D => 6444
+ u"攢" : (u"攒", ), # 6522 => 6512
+ u"攣" : (u"挛", ), # 6523 => 631B
+ u"攤" : (u"摊", ), # 6524 => 644A
+ u"攪" : (u"搅", ), # 652A => 6405
+ u"攬" : (u"揽", ), # 652C => 63FD
+ u"敗" : (u"败", ), # 6557 => 8D25
+ u"敘" : (u"叙", ), # 6558 => 53D9
+ u"敵" : (u"敌", ), # 6575 => 654C
+ u"數" : (u"数", ), # 6578 => 6570
+ u"斂" : (u"敛", ), # 6582 => 655B
+ u"斃" : (u"毙", ), # 6583 => 6BD9
+ u"斕" : (u"斓", ), # 6595 => 6593
+ u"斬" : (u"斩", ), # 65AC => 65A9
+ u"斷" : (u"断", ), # 65B7 => 65AD
+ u"時" : (u"时", ), # 6642 => 65F6
+ u"晉" : (u"晋", ), # 6649 => 664B
+ u"晝" : (u"昼", ), # 665D => 663C
+ u"暈" : (u"晕", ), # 6688 => 6655
+ u"暉" : (u"晖", ), # 6689 => 6656
+ u"暘" : (u"旸", ), # 6698 => 65F8
+ u"暢" : (u"畅", ), # 66A2 => 7545
+ u"暫" : (u"暂", ), # 66AB => 6682
+ u"曄" : (u"晔", ), # 66C4 => 6654
+ u"曆" : (u"历", ), # 66C6 => 5386
+ u"曇" : (u"昙", ), # 66C7 => 6619
+ u"曉" : (u"晓", ), # 66C9 => 6653
+ u"曖" : (u"暧", ), # 66D6 => 66A7
+ u"曠" : (u"旷", ), # 66E0 => 65F7
+ u"曨" : (u"昽", ), # 66E8 => 663D
+ u"曬" : (u"晒", ), # 66EC => 6652
+ u"書" : (u"书", ), # 66F8 => 4E66
+ u"會" : (u"会", ), # 6703 => 4F1A
+ u"朧" : (u"胧", ), # 6727 => 80E7
+ u"東" : (u"东", ), # 6771 => 4E1C
+ u"柵" : (u"栅", ), # 67F5 => 6805
+ u"梔" : (u"栀", ), # 6894 => 6800
+ u"梘" : (u"枧", ), # 6898 => 67A7
+ u"條" : (u"条", ), # 689D => 6761
+ u"梟" : (u"枭", ), # 689F => 67AD
+ u"棄" : (u"弃", ), # 68C4 => 5F03
+ u"棖" : (u"枨", ), # 68D6 => 67A8
+ u"棗" : (u"枣", ), # 68D7 => 67A3
+ u"棟" : (u"栋", ), # 68DF => 680B
+ u"棡" : (u"㭎", ), # 68E1 => 3B4E
+ u"棧" : (u"栈", ), # 68E7 => 6808
+ u"棬" : (u"桊", ), # 68EC => 684A
+ u"棲" : (u"栖", ), # 68F2 => 6816
+ u"椏" : (u"桠", ), # 690F => 6860
+ u"楊" : (u"杨", ), # 694A => 6768
+ u"楓" : (u"枫", ), # 6953 => 67AB
+ u"楨" : (u"桢", ), # 6968 => 6862
+ u"業" : (u"业", ), # 696D => 4E1A
+ u"極" : (u"极", ), # 6975 => 6781
+ u"榖" : (u"谷", ), # 6996 => 8C37
+ u"榪" : (u"杩", ), # 69AA => 6769
+ u"榮" : (u"荣", ), # 69AE => 8363
+ u"榿" : (u"桤", ), # 69BF => 6864
+ u"槁" : (u"藁", ), # 69C1 => 85C1
+ u"構" : (u"构", ), # 69CB => 6784
+ u"槍" : (u"枪", ), # 69CD => 67AA
+ u"様" : (u"样", ), # 69D8 => 6837
+ u"槧" : (u"椠", ), # 69E7 => 6920
+ u"槨" : (u"椁", ), # 69E8 => 6901
+ u"槳" : (u"桨", ), # 69F3 => 6868
+ u"樁" : (u"桩", ), # 6A01 => 6869
+ u"樂" : (u"乐", ), # 6A02 => 4E50
+ u"樅" : (u"枞", ), # 6A05 => 679E
+ u"樓" : (u"楼", ), # 6A13 => 697C
+ u"標" : (u"标", ), # 6A19 => 6807
+ u"樞" : (u"枢", ), # 6A1E => 67A2
+ u"樣" : (u"样", ), # 6A23 => 6837
+ u"樸" : (u"朴", ), # 6A38 => 6734
+ u"樹" : (u"树", ), # 6A39 => 6811
+ u"樺" : (u"桦", ), # 6A3A => 6866
+ u"橈" : (u"桡", ), # 6A48 => 6861
+ u"橋" : (u"桥", ), # 6A4B => 6865
+ u"機" : (u"机", ), # 6A5F => 673A
+ u"橢" : (u"椭", ), # 6A62 => 692D
+ u"橫" : (u"横", ), # 6A6B => 6A2A
+ u"檁" : (u"檩", ), # 6A81 => 6AA9
+ u"檉" : (u"柽", ), # 6A89 => 67FD
+ u"檔" : (u"档", ), # 6A94 => 6863
+ u"檜" : (u"桧", ), # 6A9C => 6867
+ u"檟" : (u"槚", ), # 6A9F => 69DA
+ u"檢" : (u"检", ), # 6AA2 => 68C0
+ u"檣" : (u"樯", ), # 6AA3 => 6A2F
+ u"檯" : (u"台", ), # 6AAF => 53F0
+ u"檳" : (u"槟", ), # 6AB3 => 69DF
+ u"檸" : (u"柠", ), # 6AB8 => 67E0
+ u"檻" : (u"槛", ), # 6ABB => 69DB
+ u"檾" : (u"苘", ), # 6ABE => 82D8
+ u"櫃" : (u"柜", ), # 6AC3 => 67DC
+ u"櫓" : (u"橹", ), # 6AD3 => 6A79
+ u"櫚" : (u"榈", ), # 6ADA => 6988
+ u"櫛" : (u"栉", ), # 6ADB => 6809
+ u"櫝" : (u"椟", ), # 6ADD => 691F
+ u"櫞" : (u"橼", ), # 6ADE => 6A7C
+ u"櫟" : (u"栎", ), # 6ADF => 680E
+ u"櫥" : (u"橱", ), # 6AE5 => 6A71
+ u"櫧" : (u"槠", ), # 6AE7 => 69E0
+ u"櫨" : (u"栌", ), # 6AE8 => 680C
+ u"櫪" : (u"枥", ), # 6AEA => 67A5
+ u"櫫" : (u"橥", ), # 6AEB => 6A65
+ u"櫬" : (u"榇", ), # 6AEC => 6987
+ u"櫳" : (u"栊", ), # 6AF3 => 680A
+ u"櫸" : (u"榉", ), # 6AF8 => 6989
+ u"櫻" : (u"樱", ), # 6AFB => 6A31
+ u"欄" : (u"栏", ), # 6B04 => 680F
+ u"權" : (u"权", ), # 6B0A => 6743
+ u"欏" : (u"椤", ), # 6B0F => 6924
+ u"欒" : (u"栾", ), # 6B12 => 683E
+ u"欖" : (u"榄", ), # 6B16 => 6984
+ u"欞" : (u"棂", ), # 6B1E => 68C2
+ u"欽" : (u"钦", ), # 6B3D => 94A6
+ u"歎" : (u"叹", ), # 6B4E => 53F9
+ u"歐" : (u"欧", ), # 6B50 => 6B27
+ u"歟" : (u"欤", ), # 6B5F => 6B24
+ u"歡" : (u"欢", ), # 6B61 => 6B22
+ u"歲" : (u"岁", ), # 6B72 => 5C81
+ u"歷" : (u"历", ), # 6B77 => 5386
+ u"歸" : (u"归", ), # 6B78 => 5F52
+ u"歿" : (u"殁", ), # 6B7F => 6B81
+ u"殘" : (u"残", ), # 6B98 => 6B8B
+ u"殞" : (u"殒", ), # 6B9E => 6B92
+ u"殤" : (u"殇", ), # 6BA4 => 6B87
+ u"殫" : (u"殚", ), # 6BAB => 6B9A
+ u"殮" : (u"殓", ), # 6BAE => 6B93
+ u"殯" : (u"殡", ), # 6BAF => 6BA1
+ u"殲" : (u"歼", ), # 6BB2 => 6B7C
+ u"殺" : (u"杀", ), # 6BBA => 6740
+ u"殻" : (u"壳", ), # 6BBB => 58F3
+ u"殼" : (u"壳", ), # 6BBC => 58F3
+ u"毀" : (u"毁", ), # 6BC0 => 6BC1
+ u"毆" : (u"殴", ), # 6BC6 => 6BB4
+ u"毿" : (u"毵", ), # 6BFF => 6BF5
+ u"氈" : (u"毡", ), # 6C08 => 6BE1
+ u"氌" : (u"氇", ), # 6C0C => 6C07
+ u"氣" : (u"气", ), # 6C23 => 6C14
+ u"氫" : (u"氢", ), # 6C2B => 6C22
+ u"氬" : (u"氩", ), # 6C2C => 6C29
+ u"氳" : (u"氲", ), # 6C33 => 6C32
+ u"氹" : (u"凼", ), # 6C39 => 51FC
+ u"汙" : (u"污", ), # 6C59 => 6C61
+ u"決" : (u"决", ), # 6C7A => 51B3
+ u"沒" : (u"没", ), # 6C92 => 6CA1
+ u"沖" : (u"冲", ), # 6C96 => 51B2
+ u"況" : (u"况", ), # 6CC1 => 51B5
+ u"洶" : (u"汹", ), # 6D36 => 6C79
+ u"浹" : (u"浃", ), # 6D79 => 6D43
+ u"涇" : (u"泾", ), # 6D87 => 6CFE
+ u"涼" : (u"凉", ), # 6DBC => 51C9
+ u"淒" : (u"凄", ), # 6DD2 => 51C4
+ u"淚" : (u"泪", ), # 6DDA => 6CEA
+ u"淥" : (u"渌", ), # 6DE5 => 6E0C
+ u"淨" : (u"净", ), # 6DE8 => 51C0
+ u"淩" : (u"凌", ), # 6DE9 => 51CC
+ u"淪" : (u"沦", ), # 6DEA => 6CA6
+ u"淵" : (u"渊", ), # 6DF5 => 6E0A
+ u"淶" : (u"涞", ), # 6DF6 => 6D9E
+ u"淺" : (u"浅", ), # 6DFA => 6D45
+ u"渙" : (u"涣", ), # 6E19 => 6DA3
+ u"減" : (u"减", ), # 6E1B => 51CF
+ u"渢" : (u"沨", ), # 6E22 => 6CA8
+ u"渦" : (u"涡", ), # 6E26 => 6DA1
+ u"測" : (u"测", ), # 6E2C => 6D4B
+ u"渾" : (u"浑", ), # 6E3E => 6D51
+ u"湊" : (u"凑", ), # 6E4A => 51D1
+ u"湞" : (u"浈", ), # 6E5E => 6D48
+ u"湣" : (u"愍", ), # 6E63 => 610D
+ u"湧" : (u"涌", ), # 6E67 => 6D8C
+ u"湯" : (u"汤", ), # 6E6F => 6C64
+ u"溈" : (u"沩", ), # 6E88 => 6CA9
+ u"溜" : (u"熘", ), # 6E9C => 7198
+ u"溝" : (u"沟", ), # 6E9D => 6C9F
+ u"溫" : (u"温", ), # 6EAB => 6E29
+ u"溮" : (u"浉", ), # 6EAE => 6D49
+ u"溳" : (u"涢", ), # 6EB3 => 6DA2
+ u"滄" : (u"沧", ), # 6EC4 => 6CA7
+ u"滅" : (u"灭", ), # 6EC5 => 706D
+ u"滌" : (u"涤", ), # 6ECC => 6DA4
+ u"滎" : (u"荥", ), # 6ECE => 8365
+ u"滬" : (u"沪", ), # 6EEC => 6CAA
+ u"滯" : (u"滞", ), # 6EEF => 6EDE
+ u"滲" : (u"渗", ), # 6EF2 => 6E17
+ u"滷" : (u"卤", ), # 6EF7 => 5364
+ u"滸" : (u"浒", ), # 6EF8 => 6D52
+ u"滻" : (u"浐", ), # 6EFB => 6D50
+ u"滾" : (u"滚", u"磙"), # 6EFE => 6EDA 78D9
+ u"滿" : (u"满", ), # 6EFF => 6EE1
+ u"漁" : (u"渔", ), # 6F01 => 6E14
+ u"漊" : (u"溇", ), # 6F0A => 6E87
+ u"漚" : (u"沤", ), # 6F1A => 6CA4
+ u"漢" : (u"汉", ), # 6F22 => 6C49
+ u"漣" : (u"涟", ), # 6F23 => 6D9F
+ u"漬" : (u"渍", ), # 6F2C => 6E0D
+ u"漲" : (u"涨", ), # 6F32 => 6DA8
+ u"漵" : (u"溆", ), # 6F35 => 6E86
+ u"漸" : (u"渐", ), # 6F38 => 6E10
+ u"漿" : (u"浆", ), # 6F3F => 6D46
+ u"潁" : (u"颍", ), # 6F41 => 988D
+ u"潑" : (u"泼", ), # 6F51 => 6CFC
+ u"潔" : (u"洁", ), # 6F54 => 6D01
+ u"潛" : (u"潜", ), # 6F5B => 6F5C
+ u"潤" : (u"润", ), # 6F64 => 6DA6
+ u"潯" : (u"浔", ), # 6F6F => 6D54
+ u"潰" : (u"溃", ), # 6F70 => 6E83
+ u"潷" : (u"滗", ), # 6F77 => 6ED7
+ u"潿" : (u"涠", ), # 6F7F => 6DA0
+ u"澀" : (u"涩", ), # 6F80 => 6DA9
+ u"澆" : (u"浇", ), # 6F86 => 6D47
+ u"澇" : (u"涝", ), # 6F87 => 6D9D
+ u"澗" : (u"涧", ), # 6F97 => 6DA7
+ u"澠" : (u"渑", ), # 6FA0 => 6E11
+ u"澤" : (u"泽", ), # 6FA4 => 6CFD
+ u"澦" : (u"滪", ), # 6FA6 => 6EEA
+ u"澩" : (u"泶", ), # 6FA9 => 6CF6
+ u"澮" : (u"浍", ), # 6FAE => 6D4D
+ u"澱" : (u"淀", ), # 6FB1 => 6DC0
+ u"澾" : (u"㳠", ), # 6FBE => 3CE0
+ u"濁" : (u"浊", ), # 6FC1 => 6D4A
+ u"濃" : (u"浓", ), # 6FC3 => 6D53
+ u"濕" : (u"湿", ), # 6FD5 => 6E7F
+ u"濘" : (u"泞", ), # 6FD8 => 6CDE
+ u"濛" : (u"蒙", ), # 6FDB => 8499
+ u"濜" : (u"浕", ), # 6FDC => 6D55
+ u"濟" : (u"济", ), # 6FDF => 6D4E
+ u"濤" : (u"涛", ), # 6FE4 => 6D9B
+ u"濫" : (u"滥", u"漤"), # 6FEB => 6EE5 6F24
+ u"濰" : (u"潍", ), # 6FF0 => 6F4D
+ u"濱" : (u"滨", ), # 6FF1 => 6EE8
+ u"濺" : (u"溅", ), # 6FFA => 6E85
+ u"濼" : (u"泺", ), # 6FFC => 6CFA
+ u"濾" : (u"滤", ), # 6FFE => 6EE4
+ u"瀅" : (u"滢", ), # 7005 => 6EE2
+ u"瀆" : (u"渎", ), # 7006 => 6E0E
+ u"瀉" : (u"泻", ), # 7009 => 6CFB
+ u"瀋" : (u"沈", u"渖"), # 700B => 6C88 6E16
+ u"瀏" : (u"浏", ), # 700F => 6D4F
+ u"瀕" : (u"濒", ), # 7015 => 6FD2
+ u"瀘" : (u"泸", ), # 7018 => 6CF8
+ u"瀝" : (u"沥", ), # 701D => 6CA5
+ u"瀟" : (u"潇", ), # 701F => 6F47
+ u"瀠" : (u"潆", ), # 7020 => 6F46
+ u"瀦" : (u"潴", ), # 7026 => 6F74
+ u"瀧" : (u"泷", ), # 7027 => 6CF7
+ u"瀨" : (u"濑", ), # 7028 => 6FD1
+ u"瀰" : (u"弥", ), # 7030 => 5F25
+ u"瀲" : (u"潋", ), # 7032 => 6F4B
+ u"瀾" : (u"澜", ), # 703E => 6F9C
+ u"灃" : (u"沣", ), # 7043 => 6CA3
+ u"灄" : (u"滠", ), # 7044 => 6EE0
+ u"灑" : (u"洒", ), # 7051 => 6D12
+ u"灕" : (u"漓", ), # 7055 => 6F13
+ u"灘" : (u"滩", ), # 7058 => 6EE9
+ u"灝" : (u"灏", ), # 705D => 704F
+ u"灣" : (u"湾", ), # 7063 => 6E7E
+ u"灤" : (u"滦", ), # 7064 => 6EE6
+ u"灧" : (u"滟", ), # 7067 => 6EDF
+ u"灩" : (u"滟", ), # 7069 => 6EDF
+ u"災" : (u"灾", ), # 707D => 707E
+ u"為" : (u"为", ), # 70BA => 4E3A
+ u"烏" : (u"乌", ), # 70CF => 4E4C
+ u"烴" : (u"烃", ), # 70F4 => 70C3
+ u"無" : (u"无", ), # 7121 => 65E0
+ u"焼" : (u"烧", ), # 713C => 70E7
+ u"煆" : (u"煅", ), # 7146 => 7145
+ u"煉" : (u"炼", ), # 7149 => 70BC
+ u"煒" : (u"炜", ), # 7152 => 709C
+ u"煙" : (u"烟", ), # 7159 => 70DF
+ u"煢" : (u"茕", ), # 7162 => 8315
+ u"煥" : (u"焕", ), # 7165 => 7115
+ u"煩" : (u"烦", ), # 7169 => 70E6
+ u"煬" : (u"炀", ), # 716C => 7080
+ u"熒" : (u"荧", ), # 7192 => 8367
+ u"熗" : (u"炝", ), # 7197 => 709D
+ u"熱" : (u"热", ), # 71B1 => 70ED
+ u"熾" : (u"炽", ), # 71BE => 70BD
+ u"燁" : (u"烨", ), # 71C1 => 70E8
+ u"燈" : (u"灯", ), # 71C8 => 706F
+ u"燉" : (u"炖", ), # 71C9 => 7096
+ u"燒" : (u"烧", ), # 71D2 => 70E7
+ u"燙" : (u"烫", ), # 71D9 => 70EB
+ u"燜" : (u"焖", ), # 71DC => 7116
+ u"營" : (u"营", ), # 71DF => 8425
+ u"燦" : (u"灿", ), # 71E6 => 707F
+ u"燭" : (u"烛", ), # 71ED => 70DB
+ u"燴" : (u"烩", ), # 71F4 => 70E9
+ u"燼" : (u"烬", ), # 71FC => 70EC
+ u"燾" : (u"焘", ), # 71FE => 7118
+ u"爍" : (u"烁", ), # 720D => 70C1
+ u"爐" : (u"炉", ), # 7210 => 7089
+ u"爛" : (u"烂", ), # 721B => 70C2
+ u"爭" : (u"争", ), # 722D => 4E89
+ u"爺" : (u"爷", ), # 723A => 7237
+ u"爾" : (u"尔", ), # 723E => 5C14
+ u"爿" : (u"丬", ), # 723F => 4E2C
+ u"牆" : (u"墙", ), # 7246 => 5899
+ u"牘" : (u"牍", ), # 7258 => 724D
+ u"牽" : (u"牵", ), # 727D => 7275
+ u"犖" : (u"荦", ), # 7296 => 8366
+ u"犛" : (u"牦", ), # 729B => 7266
+ u"犢" : (u"犊", ), # 72A2 => 728A
+ u"犧" : (u"牺", ), # 72A7 => 727A
+ u"犬" : (u"犭", ), # 72AC => 72AD
+ u"狀" : (u"状", ), # 72C0 => 72B6
+ u"狹" : (u"狭", ), # 72F9 => 72ED
+ u"狽" : (u"狈", ), # 72FD => 72C8
+ u"猙" : (u"狰", ), # 7319 => 72F0
+ u"猛" : (u"勐", ), # 731B => 52D0
+ u"猶" : (u"犹", ), # 7336 => 72B9
+ u"猻" : (u"狲", ), # 733B => 72F2
+ u"獁" : (u"犸", ), # 7341 => 72B8
+ u"獄" : (u"狱", ), # 7344 => 72F1
+ u"獅" : (u"狮", ), # 7345 => 72EE
+ u"獎" : (u"奖", ), # 734E => 5956
+ u"獨" : (u"独", ), # 7368 => 72EC
+ u"獪" : (u"狯", ), # 736A => 72EF
+ u"獫" : (u"猃", ), # 736B => 7303
+ u"獰" : (u"狞", ), # 7370 => 72DE
+ u"獲" : (u"获", ), # 7372 => 83B7
+ u"獵" : (u"猎", ), # 7375 => 730E
+ u"獷" : (u"犷", ), # 7377 => 72B7
+ u"獸" : (u"兽", ), # 7378 => 517D
+ u"獺" : (u"獭", ), # 737A => 736D
+ u"獻" : (u"献", ), # 737B => 732E
+ u"獼" : (u"猕", ), # 737C => 7315
+ u"玀" : (u"猡", ), # 7380 => 7321
+ u"玨" : (u"珏", ), # 73A8 => 73CF
+ u"現" : (u"现", ), # 73FE => 73B0
+ u"琺" : (u"珐", ), # 743A => 73D0
+ u"琿" : (u"珲", ), # 743F => 73F2
+ u"瑉" : (u"珉", ), # 7449 => 73C9
+ u"瑋" : (u"玮", ), # 744B => 73AE
+ u"瑣" : (u"琐", ), # 7463 => 7410
+ u"瑤" : (u"瑶", ), # 7464 => 7476
+ u"瑩" : (u"莹", ), # 7469 => 83B9
+ u"瑪" : (u"玛", ), # 746A => 739B
+ u"瑲" : (u"玱", ), # 7472 => 73B1
+ u"璉" : (u"琏", ), # 7489 => 740F
+ u"璡" : (u"琎", ), # 74A1 => 740E
+ u"璣" : (u"玑", ), # 74A3 => 7391
+ u"璦" : (u"瑷", ), # 74A6 => 7477
+ u"環" : (u"环", ), # 74B0 => 73AF
+ u"璽" : (u"玺", ), # 74BD => 73BA
+ u"璿" : (u"璇", ), # 74BF => 7487
+ u"瓊" : (u"琼", ), # 74CA => 743C
+ u"瓏" : (u"珑", ), # 74CF => 73D1
+ u"瓔" : (u"璎", ), # 74D4 => 748E
+ u"瓚" : (u"瓒", ), # 74DA => 74D2
+ u"甌" : (u"瓯", ), # 750C => 74EF
+ u"甕" : (u"瓮", ), # 7515 => 74EE
+ u"產" : (u"产", ), # 7522 => 4EA7
+ u"産" : (u"产", ), # 7523 => 4EA7
+ u"甯" : (u"宁", ), # 752F => 5B81
+ u"畝" : (u"亩", ), # 755D => 4EA9
+ u"畢" : (u"毕", ), # 7562 => 6BD5
+ u"畫" : (u"画", ), # 756B => 753B
+ u"異" : (u"异", ), # 7570 => 5F02
+ u"當" : (u"当", ), # 7576 => 5F53
+ u"疇" : (u"畴", ), # 7587 => 7574
+ u"疊" : (u"叠", ), # 758A => 53E0
+ u"痙" : (u"痉", ), # 75D9 => 75C9
+ u"瘂" : (u"痖", ), # 7602 => 75D6
+ u"瘋" : (u"疯", ), # 760B => 75AF
+ u"瘍" : (u"疡", ), # 760D => 75A1
+ u"瘓" : (u"痪", ), # 7613 => 75EA
+ u"瘞" : (u"瘗", ), # 761E => 7617
+ u"瘡" : (u"疮", ), # 7621 => 75AE
+ u"瘧" : (u"疟", ), # 7627 => 759F
+ u"瘮" : (u"瘆", ), # 762E => 7606
+ u"瘺" : (u"瘘", ), # 763A => 7618
+ u"瘻" : (u"瘘", ), # 763B => 7618
+ u"療" : (u"疗", ), # 7642 => 7597
+ u"癆" : (u"痨", ), # 7646 => 75E8
+ u"癇" : (u"痫", ), # 7647 => 75EB
+ u"癉" : (u"瘅", ), # 7649 => 7605
+ u"癘" : (u"疠", ), # 7658 => 75A0
+ u"癟" : (u"瘪", ), # 765F => 762A
+ u"癡" : (u"痴", ), # 7661 => 75F4
+ u"癢" : (u"痒", ), # 7662 => 75D2
+ u"癤" : (u"疖", ), # 7664 => 7596
+ u"癥" : (u"症", ), # 7665 => 75C7
+ u"癧" : (u"疬", ), # 7667 => 75AC
+ u"癩" : (u"癞", ), # 7669 => 765E
+ u"癬" : (u"癣", ), # 766C => 7663
+ u"癭" : (u"瘿", ), # 766D => 763F
+ u"癮" : (u"瘾", ), # 766E => 763E
+ u"癰" : (u"痈", ), # 7670 => 75C8
+ u"癱" : (u"瘫", ), # 7671 => 762B
+ u"癲" : (u"癫", ), # 7672 => 766B
+ u"發" : (u"发", ), # 767C => 53D1
+ u"皚" : (u"皑", ), # 769A => 7691
+ u"皰" : (u"疱", ), # 76B0 => 75B1
+ u"皸" : (u"皲", ), # 76B8 => 76B2
+ u"皺" : (u"皱", ), # 76BA => 76B1
+ u"盜" : (u"盗", ), # 76DC => 76D7
+ u"盞" : (u"盏", ), # 76DE => 76CF
+ u"盡" : (u"尽", ), # 76E1 => 5C3D
+ u"監" : (u"监", ), # 76E3 => 76D1
+ u"盤" : (u"盘", ), # 76E4 => 76D8
+ u"盧" : (u"卢", ), # 76E7 => 5362
+ u"眥" : (u"眦", ), # 7725 => 7726
+ u"眾" : (u"众", ), # 773E => 4F17
+ u"睏" : (u"困", ), # 774F => 56F0
+ u"睜" : (u"睁", ), # 775C => 7741
+ u"睞" : (u"睐", ), # 775E => 7750
+ u"瞘" : (u"眍", ), # 7798 => 770D
+ u"瞜" : (u"䁖", ), # 779C => 4056
+ u"瞞" : (u"瞒", ), # 779E => 7792
+ u"瞭" : (u"了", ), # 77AD => 4E86
+ u"瞼" : (u"睑", ), # 77BC => 7751
+ u"矇" : (u"蒙", ), # 77C7 => 8499
+ u"矚" : (u"瞩", ), # 77DA => 77A9
+ u"矯" : (u"矫", ), # 77EF => 77EB
+ u"矽" : (u"硅", ), # 77FD => 7845
+ u"硃" : (u"朱", ), # 7843 => 6731
+ u"硤" : (u"硖", ), # 7864 => 7856
+ u"硨" : (u"砗", ), # 7868 => 7817
+ u"硯" : (u"砚", ), # 786F => 781A
+ u"碩" : (u"硕", ), # 78A9 => 7855
+ u"碭" : (u"砀", ), # 78AD => 7800
+ u"碸" : (u"砜", ), # 78B8 => 781C
+ u"確" : (u"确", ), # 78BA => 786E
+ u"碼" : (u"码", ), # 78BC => 7801
+ u"磑" : (u"硙", ), # 78D1 => 7859
+ u"磚" : (u"砖", ), # 78DA => 7816
+ u"磣" : (u"碜", ), # 78E3 => 789C
+ u"磧" : (u"碛", ), # 78E7 => 789B
+ u"磯" : (u"矶", ), # 78EF => 77F6
+ u"磽" : (u"硗", ), # 78FD => 7857
+ u"礄" : (u"硚", ), # 7904 => 785A
+ u"礎" : (u"础", ), # 790E => 7840
+ u"礙" : (u"碍", ), # 7919 => 788D
+ u"礦" : (u"矿", ), # 7926 => 77FF
+ u"礪" : (u"砺", ), # 792A => 783A
+ u"礫" : (u"砾", ), # 792B => 783E
+ u"礬" : (u"矾", ), # 792C => 77FE
+ u"礱" : (u"砻", ), # 7931 => 783B
+ u"祗" : (u"只", ), # 7957 => 53EA
+ u"祿" : (u"禄", ), # 797F => 7984
+ u"禍" : (u"祸", ), # 798D => 7978
+ u"禎" : (u"祯", ), # 798E => 796F
+ u"禕" : (u"祎", ), # 7995 => 794E
+ u"禦" : (u"御", ), # 79A6 => 5FA1
+ u"禪" : (u"禅", ), # 79AA => 7985
+ u"禮" : (u"礼", ), # 79AE => 793C
+ u"禰" : (u"祢", ), # 79B0 => 7962
+ u"禱" : (u"祷", ), # 79B1 => 7977
+ u"禿" : (u"秃", ), # 79BF => 79C3
+ u"秈" : (u"籼", ), # 79C8 => 7C7C
+ u"稅" : (u"税", ), # 7A05 => 7A0E
+ u"稈" : (u"秆", ), # 7A08 => 79C6
+ u"稟" : (u"禀", ), # 7A1F => 7980
+ u"種" : (u"种", ), # 7A2E => 79CD
+ u"稱" : (u"称", ), # 7A31 => 79F0
+ u"穇" : (u"䅟", ), # 7A47 => 415F
+ u"穌" : (u"稣", ), # 7A4C => 7A23
+ u"積" : (u"积", ), # 7A4D => 79EF
+ u"穎" : (u"颖", ), # 7A4E => 9896
+ u"穡" : (u"穑", ), # 7A61 => 7A51
+ u"穢" : (u"秽", ), # 7A62 => 79FD
+ u"穩" : (u"稳", ), # 7A69 => 7A33
+ u"穫" : (u"获", ), # 7A6B => 83B7
+ u"穭" : (u"稆", ), # 7A6D => 7A06
+ u"窩" : (u"窝", ), # 7AA9 => 7A9D
+ u"窪" : (u"洼", ), # 7AAA => 6D3C
+ u"窮" : (u"穷", ), # 7AAE => 7A77
+ u"窯" : (u"窑", ), # 7AAF => 7A91
+ u"窵" : (u"窎", ), # 7AB5 => 7A8E
+ u"窶" : (u"窭", ), # 7AB6 => 7AAD
+ u"窺" : (u"窥", ), # 7ABA => 7AA5
+ u"竄" : (u"窜", ), # 7AC4 => 7A9C
+ u"竅" : (u"窍", ), # 7AC5 => 7A8D
+ u"竇" : (u"窦", ), # 7AC7 => 7AA6
+ u"竈" : (u"灶", ), # 7AC8 => 7076
+ u"竊" : (u"窃", ), # 7ACA => 7A83
+ u"竪" : (u"竖", ), # 7AEA => 7AD6
+ u"競" : (u"竞", ), # 7AF6 => 7ADE
+ u"筆" : (u"笔", ), # 7B46 => 7B14
+ u"筍" : (u"笋", ), # 7B4D => 7B0B
+ u"筧" : (u"笕", ), # 7B67 => 7B15
+ u"箋" : (u"笺", ), # 7B8B => 7B3A
+ u"箏" : (u"筝", ), # 7B8F => 7B5D
+ u"節" : (u"节", ), # 7BC0 => 8282
+ u"範" : (u"范", ), # 7BC4 => 8303
+ u"築" : (u"筑", ), # 7BC9 => 7B51
+ u"篋" : (u"箧", ), # 7BCB => 7BA7
+ u"篤" : (u"笃", ), # 7BE4 => 7B03
+ u"篩" : (u"筛", ), # 7BE9 => 7B5B
+ u"篳" : (u"筚", ), # 7BF3 => 7B5A
+ u"簀" : (u"箦", ), # 7C00 => 7BA6
+ u"簍" : (u"篓", ), # 7C0D => 7BD3
+ u"簞" : (u"箪", ), # 7C1E => 7BAA
+ u"簡" : (u"简", ), # 7C21 => 7B80
+ u"簣" : (u"篑", ), # 7C23 => 7BD1
+ u"簫" : (u"箫", ), # 7C2B => 7BAB
+ u"簷" : (u"檐", ), # 7C37 => 6A90
+ u"簽" : (u"签", ), # 7C3D => 7B7E
+ u"簾" : (u"帘", ), # 7C3E => 5E18
+ u"籃" : (u"篮", ), # 7C43 => 7BEE
+ u"籌" : (u"筹", ), # 7C4C => 7B79
+ u"籙" : (u"箓", ), # 7C59 => 7B93
+ u"籜" : (u"箨", ), # 7C5C => 7BA8
+ u"籟" : (u"籁", ), # 7C5F => 7C41
+ u"籠" : (u"笼", ), # 7C60 => 7B3C
+ u"籤" : (u"签", ), # 7C64 => 7B7E
+ u"籩" : (u"笾", ), # 7C69 => 7B3E
+ u"籪" : (u"簖", ), # 7C6A => 7C16
+ u"籬" : (u"篱", ), # 7C6C => 7BF1
+ u"籮" : (u"箩", ), # 7C6E => 7BA9
+ u"籲" : (u"吁", ), # 7C72 => 5401
+ u"粵" : (u"粤", ), # 7CB5 => 7CA4
+ u"糊" : (u"煳", ), # 7CCA => 7173
+ u"糝" : (u"糁", ), # 7CDD => 7CC1
+ u"糞" : (u"粪", ), # 7CDE => 7CAA
+ u"糧" : (u"粮", ), # 7CE7 => 7CAE
+ u"糰" : (u"团", ), # 7CF0 => 56E2
+ u"糲" : (u"粝", ), # 7CF2 => 7C9D
+ u"糴" : (u"籴", ), # 7CF4 => 7C74
+ u"糶" : (u"粜", ), # 7CF6 => 7C9C
+ u"糸" : (u"纟", ), # 7CF8 => 7E9F
+ u"糾" : (u"纠", ), # 7CFE => 7EA0
+ u"紀" : (u"纪", ), # 7D00 => 7EAA
+ u"紂" : (u"纣", ), # 7D02 => 7EA3
+ u"約" : (u"约", ), # 7D04 => 7EA6
+ u"紅" : (u"红", ), # 7D05 => 7EA2
+ u"紆" : (u"纡", ), # 7D06 => 7EA1
+ u"紇" : (u"纥", ), # 7D07 => 7EA5
+ u"紈" : (u"纨", ), # 7D08 => 7EA8
+ u"紉" : (u"纫", ), # 7D09 => 7EAB
+ u"紋" : (u"纹", ), # 7D0B => 7EB9
+ u"納" : (u"纳", ), # 7D0D => 7EB3
+ u"紐" : (u"纽", ), # 7D10 => 7EBD
+ u"紓" : (u"纾", ), # 7D13 => 7EBE
+ u"純" : (u"纯", ), # 7D14 => 7EAF
+ u"紕" : (u"纰", ), # 7D15 => 7EB0
+ u"紖" : (u"纼", ), # 7D16 => 7EBC
+ u"紗" : (u"纱", ), # 7D17 => 7EB1
+ u"紙" : (u"纸", ), # 7D19 => 7EB8
+ u"級" : (u"级", ), # 7D1A => 7EA7
+ u"紛" : (u"纷", ), # 7D1B => 7EB7
+ u"紜" : (u"纭", ), # 7D1C => 7EAD
+ u"紝" : (u"纴", ), # 7D1D => 7EB4
+ u"紡" : (u"纺", ), # 7D21 => 7EBA
+ u"紬" : (u"䌷", ), # 7D2C => 4337
+ u"紮" : (u"扎", ), # 7D2E => 624E
+ u"細" : (u"细", ), # 7D30 => 7EC6
+ u"紱" : (u"绂", ), # 7D31 => 7EC2
+ u"紲" : (u"绁", ), # 7D32 => 7EC1
+ u"紳" : (u"绅", ), # 7D33 => 7EC5
+ u"紹" : (u"绍", ), # 7D39 => 7ECD
+ u"紺" : (u"绀", ), # 7D3A => 7EC0
+ u"紼" : (u"绋", ), # 7D3C => 7ECB
+ u"紿" : (u"绐", ), # 7D3F => 7ED0
+ u"絀" : (u"绌", ), # 7D40 => 7ECC
+ u"終" : (u"终", ), # 7D42 => 7EC8
+ u"組" : (u"组", ), # 7D44 => 7EC4
+ u"絆" : (u"绊", ), # 7D46 => 7ECA
+ u"絎" : (u"绗", ), # 7D4E => 7ED7
+ u"絏" : (u"绁", ), # 7D4F => 7EC1
+ u"結" : (u"结", ), # 7D50 => 7ED3
+ u"絕" : (u"绝", ), # 7D55 => 7EDD
+ u"絛" : (u"绦", ), # 7D5B => 7EE6
+ u"絝" : (u"绔", ), # 7D5D => 7ED4
+ u"絞" : (u"绞", ), # 7D5E => 7EDE
+ u"絡" : (u"络", ), # 7D61 => 7EDC
+ u"絢" : (u"绚", ), # 7D62 => 7EDA
+ u"給" : (u"给", ), # 7D66 => 7ED9
+ u"絨" : (u"绒", ), # 7D68 => 7ED2
+ u"絰" : (u"绖", ), # 7D70 => 7ED6
+ u"統" : (u"统", ), # 7D71 => 7EDF
+ u"絲" : (u"丝", ), # 7D72 => 4E1D
+ u"絳" : (u"绛", ), # 7D73 => 7EDB
+ u"絶" : (u"绝", ), # 7D76 => 7EDD
+ u"絹" : (u"绢", ), # 7D79 => 7EE2
+ u"綁" : (u"绑", ), # 7D81 => 7ED1
+ u"綃" : (u"绡", ), # 7D83 => 7EE1
+ u"綆" : (u"绠", ), # 7D86 => 7EE0
+ u"綈" : (u"绨", ), # 7D88 => 7EE8
+ u"綉" : (u"绣", ), # 7D89 => 7EE3
+ u"綏" : (u"绥", ), # 7D8F => 7EE5
+ u"經" : (u"经", ), # 7D93 => 7ECF
+ u"綜" : (u"综", ), # 7D9C => 7EFC
+ u"綞" : (u"缍", ), # 7D9E => 7F0D
+ u"綠" : (u"绿", ), # 7DA0 => 7EFF
+ u"綢" : (u"绸", ), # 7DA2 => 7EF8
+ u"綣" : (u"绻", ), # 7DA3 => 7EFB
+ u"綫" : (u"线", ), # 7DAB => 7EBF
+ u"綬" : (u"绶", ), # 7DAC => 7EF6
+ u"維" : (u"维", ), # 7DAD => 7EF4
+ u"綰" : (u"绾", ), # 7DB0 => 7EFE
+ u"綱" : (u"纲", ), # 7DB1 => 7EB2
+ u"網" : (u"网", ), # 7DB2 => 7F51
+ u"綳" : (u"绷", ), # 7DB3 => 7EF7
+ u"綴" : (u"缀", ), # 7DB4 => 7F00
+ u"綸" : (u"纶", ), # 7DB8 => 7EB6
+ u"綹" : (u"绺", ), # 7DB9 => 7EFA
+ u"綺" : (u"绮", ), # 7DBA => 7EEE
+ u"綻" : (u"绽", ), # 7DBB => 7EFD
+ u"綽" : (u"绰", ), # 7DBD => 7EF0
+ u"綾" : (u"绫", ), # 7DBE => 7EEB
+ u"綿" : (u"绵", ), # 7DBF => 7EF5
+ u"緄" : (u"绲", ), # 7DC4 => 7EF2
+ u"緇" : (u"缁", ), # 7DC7 => 7F01
+ u"緊" : (u"紧", ), # 7DCA => 7D27
+ u"緋" : (u"绯", ), # 7DCB => 7EEF
+ u"緑" : (u"绿", ), # 7DD1 => 7EFF
+ u"緒" : (u"绪", ), # 7DD2 => 7EEA
+ u"緔" : (u"绱", ), # 7DD4 => 7EF1
+ u"緗" : (u"缃", ), # 7DD7 => 7F03
+ u"緘" : (u"缄", ), # 7DD8 => 7F04
+ u"緙" : (u"缂", ), # 7DD9 => 7F02
+ u"線" : (u"线", ), # 7DDA => 7EBF
+ u"緝" : (u"缉", ), # 7DDD => 7F09
+ u"緞" : (u"缎", ), # 7DDE => 7F0E
+ u"締" : (u"缔", ), # 7DE0 => 7F14
+ u"緡" : (u"缗", ), # 7DE1 => 7F17
+ u"緣" : (u"缘", ), # 7DE3 => 7F18
+ u"緦" : (u"缌", ), # 7DE6 => 7F0C
+ u"編" : (u"编", ), # 7DE8 => 7F16
+ u"緩" : (u"缓", ), # 7DE9 => 7F13
+ u"緬" : (u"缅", ), # 7DEC => 7F05
+ u"緯" : (u"纬", ), # 7DEF => 7EAC
+ u"緱" : (u"缑", ), # 7DF1 => 7F11
+ u"緲" : (u"缈", ), # 7DF2 => 7F08
+ u"練" : (u"练", ), # 7DF4 => 7EC3
+ u"緶" : (u"缏", ), # 7DF6 => 7F0F
+ u"緹" : (u"缇", ), # 7DF9 => 7F07
+ u"緻" : (u"致", ), # 7DFB => 81F4
+ u"緼" : (u"缊", ), # 7DFC => 7F0A
+ u"縈" : (u"萦", ), # 7E08 => 8426
+ u"縉" : (u"缙", ), # 7E09 => 7F19
+ u"縊" : (u"缢", ), # 7E0A => 7F22
+ u"縋" : (u"缒", ), # 7E0B => 7F12
+ u"縐" : (u"绉", ), # 7E10 => 7EC9
+ u"縑" : (u"缣", ), # 7E11 => 7F23
+ u"縗" : (u"缞", ), # 7E17 => 7F1E
+ u"縛" : (u"缚", ), # 7E1B => 7F1A
+ u"縝" : (u"缜", ), # 7E1D => 7F1C
+ u"縞" : (u"缟", ), # 7E1E => 7F1F
+ u"縟" : (u"缛", ), # 7E1F => 7F1B
+ u"縣" : (u"县", ), # 7E23 => 53BF
+ u"縧" : (u"绦", ), # 7E27 => 7EE6
+ u"縫" : (u"缝", ), # 7E2B => 7F1D
+ u"縭" : (u"缡", ), # 7E2D => 7F21
+ u"縮" : (u"缩", ), # 7E2E => 7F29
+ u"縱" : (u"纵", ), # 7E31 => 7EB5
+ u"縲" : (u"缧", ), # 7E32 => 7F27
+ u"縴" : (u"纤", ), # 7E34 => 7EA4
+ u"縵" : (u"缦", ), # 7E35 => 7F26
+ u"縶" : (u"絷", ), # 7E36 => 7D77
+ u"縷" : (u"缕", ), # 7E37 => 7F15
+ u"縹" : (u"缥", ), # 7E39 => 7F25
+ u"總" : (u"总", ), # 7E3D => 603B
+ u"績" : (u"绩", ), # 7E3E => 7EE9
+ u"繃" : (u"绷", ), # 7E43 => 7EF7
+ u"繅" : (u"缫", ), # 7E45 => 7F2B
+ u"繆" : (u"缪", ), # 7E46 => 7F2A
+ u"繈" : (u"襁", ), # 7E48 => 8941
+ u"繒" : (u"缯", ), # 7E52 => 7F2F
+ u"織" : (u"织", ), # 7E54 => 7EC7
+ u"繕" : (u"缮", ), # 7E55 => 7F2E
+ u"繚" : (u"缭", ), # 7E5A => 7F2D
+ u"繞" : (u"绕", ), # 7E5E => 7ED5
+ u"繡" : (u"绣", ), # 7E61 => 7EE3
+ u"繢" : (u"缋", ), # 7E62 => 7F0B
+ u"繩" : (u"绳", ), # 7E69 => 7EF3
+ u"繪" : (u"绘", ), # 7E6A => 7ED8
+ u"繫" : (u"系", ), # 7E6B => 7CFB
+ u"繭" : (u"茧", ), # 7E6D => 8327
+ u"繮" : (u"缰", ), # 7E6E => 7F30
+ u"繯" : (u"缳", ), # 7E6F => 7F33
+ u"繰" : (u"缲", ), # 7E70 => 7F32
+ u"繳" : (u"缴", ), # 7E73 => 7F34
+ u"繹" : (u"绎", ), # 7E79 => 7ECE
+ u"繼" : (u"继", ), # 7E7C => 7EE7
+ u"繽" : (u"缤", ), # 7E7D => 7F24
+ u"繾" : (u"缱", ), # 7E7E => 7F31
+ u"纈" : (u"缬", ), # 7E88 => 7F2C
+ u"纊" : (u"纩", ), # 7E8A => 7EA9
+ u"續" : (u"续", ), # 7E8C => 7EED
+ u"纍" : (u"累", ), # 7E8D => 7D2F
+ u"纏" : (u"缠", ), # 7E8F => 7F20
+ u"纓" : (u"缨", ), # 7E93 => 7F28
+ u"纔" : (u"才", ), # 7E94 => 624D
+ u"纖" : (u"纤", ), # 7E96 => 7EA4
+ u"纘" : (u"缵", ), # 7E98 => 7F35
+ u"纜" : (u"缆", ), # 7E9C => 7F06
+ u"缽" : (u"钵", ), # 7F3D => 94B5
+ u"罌" : (u"罂", ), # 7F4C => 7F42
+ u"罎" : (u"坛", ), # 7F4E => 575B
+ u"罰" : (u"罚", ), # 7F70 => 7F5A
+ u"罵" : (u"骂", ), # 7F75 => 9A82
+ u"罷" : (u"罢", ), # 7F77 => 7F62
+ u"罸" : (u"罚", ), # 7F78 => 7F5A
+ u"羅" : (u"罗", ), # 7F85 => 7F57
+ u"羆" : (u"罴", ), # 7F86 => 7F74
+ u"羈" : (u"羁", ), # 7F88 => 7F81
+ u"羋" : (u"芈", ), # 7F8B => 8288
+ u"羥" : (u"羟", ), # 7FA5 => 7F9F
+ u"羨" : (u"羡", ), # 7FA8 => 7FA1
+ u"義" : (u"义", ), # 7FA9 => 4E49
+ u"習" : (u"习", ), # 7FD2 => 4E60
+ u"翬" : (u"翚", ), # 7FEC => 7FDA
+ u"翹" : (u"翘", ), # 7FF9 => 7FD8
+ u"耬" : (u"耧", ), # 802C => 8027
+ u"耮" : (u"耢", ), # 802E => 8022
+ u"聖" : (u"圣", ), # 8056 => 5723
+ u"聞" : (u"闻", ), # 805E => 95FB
+ u"聯" : (u"联", ), # 806F => 8054
+ u"聰" : (u"聪", ), # 8070 => 806A
+ u"聲" : (u"声", ), # 8072 => 58F0
+ u"聳" : (u"耸", ), # 8073 => 8038
+ u"聵" : (u"聩", ), # 8075 => 8069
+ u"聶" : (u"聂", ), # 8076 => 8042
+ u"職" : (u"职", ), # 8077 => 804C
+ u"聹" : (u"聍", ), # 8079 => 804D
+ u"聽" : (u"听", ), # 807D => 542C
+ u"聾" : (u"聋", ), # 807E => 804B
+ u"肅" : (u"肃", ), # 8085 => 8083
+ u"脅" : (u"胁", ), # 8105 => 80C1
+ u"脈" : (u"脉", ), # 8108 => 8109
+ u"脊" : (u"嵴", ), # 810A => 5D74
+ u"脛" : (u"胫", ), # 811B => 80EB
+ u"脫" : (u"脱", ), # 812B => 8131
+ u"脹" : (u"胀", ), # 8139 => 80C0
+ u"腎" : (u"肾", ), # 814E => 80BE
+ u"腖" : (u"胨", ), # 8156 => 80E8
+ u"腡" : (u"脶", ), # 8161 => 8136
+ u"腦" : (u"脑", ), # 8166 => 8111
+ u"腫" : (u"肿", ), # 816B => 80BF
+ u"腳" : (u"脚", ), # 8173 => 811A
+ u"腸" : (u"肠", ), # 8178 => 80A0
+ u"膁" : (u"肷", ), # 8181 => 80B7
+ u"膃" : (u"腽", ), # 8183 => 817D
+ u"膕" : (u"腘", ), # 8195 => 8158
+ u"膚" : (u"肤", ), # 819A => 80A4
+ u"膞" : (u"䏝", ), # 819E => 43DD
+ u"膠" : (u"胶", ), # 81A0 => 80F6
+ u"膩" : (u"腻", ), # 81A9 => 817B
+ u"膽" : (u"胆", ), # 81BD => 80C6
+ u"膾" : (u"脍", ), # 81BE => 810D
+ u"膿" : (u"脓", ), # 81BF => 8113
+ u"臉" : (u"脸", ), # 81C9 => 8138
+ u"臍" : (u"脐", ), # 81CD => 8110
+ u"臏" : (u"膑", ), # 81CF => 8191
+ u"臒" : (u"癯", ), # 81D2 => 766F
+ u"臓" : (u"赃", ), # 81D3 => 8D43
+ u"臘" : (u"腊", ), # 81D8 => 814A
+ u"臚" : (u"胪", ), # 81DA => 80EA
+ u"臠" : (u"脔", ), # 81E0 => 8114
+ u"臢" : (u"臜", ), # 81E2 => 81DC
+ u"臥" : (u"卧", ), # 81E5 => 5367
+ u"臨" : (u"临", ), # 81E8 => 4E34
+ u"臺" : (u"台", ), # 81FA => 53F0
+ u"與" : (u"与", ), # 8207 => 4E0E
+ u"興" : (u"兴", ), # 8208 => 5174
+ u"舉" : (u"举", ), # 8209 => 4E3E
+ u"舊" : (u"旧", ), # 820A => 65E7
+ u"艙" : (u"舱", ), # 8259 => 8231
+ u"艤" : (u"舣", ), # 8264 => 8223
+ u"艦" : (u"舰", ), # 8266 => 8230
+ u"艫" : (u"舻", ), # 826B => 823B
+ u"艱" : (u"艰", ), # 8271 => 8270
+ u"艶" : (u"艳", ), # 8276 => 8273
+ u"艸" : (u"艹", ), # 8278 => 8279
+ u"芻" : (u"刍", ), # 82BB => 520D
+ u"苧" : (u"苎", ), # 82E7 => 82CE
+ u"茲" : (u"兹", ), # 8332 => 5179
+ u"荊" : (u"荆", ), # 834A => 8346
+ u"莊" : (u"庄", ), # 838A => 5E84
+ u"莖" : (u"茎", ), # 8396 => 830E
+ u"莢" : (u"荚", ), # 83A2 => 835A
+ u"莧" : (u"苋", ), # 83A7 => 82CB
+ u"華" : (u"华", ), # 83EF => 534E
+ u"萇" : (u"苌", ), # 8407 => 82CC
+ u"萊" : (u"莱", ), # 840A => 83B1
+ u"萬" : (u"万", ), # 842C => 4E07
+ u"萵" : (u"莴", ), # 8435 => 83B4
+ u"葉" : (u"叶", ), # 8449 => 53F6
+ u"葒" : (u"荭", ), # 8452 => 836D
+ u"著" : (u"着", ), # 8457 => 7740
+ u"葤" : (u"荮", ), # 8464 => 836E
+ u"葦" : (u"苇", ), # 8466 => 82C7
+ u"葷" : (u"荤", ), # 8477 => 8364
+ u"蒓" : (u"莼", ), # 8493 => 83BC
+ u"蒔" : (u"莳", ), # 8494 => 83B3
+ u"蒞" : (u"莅", ), # 849E => 8385
+ u"蒼" : (u"苍", ), # 84BC => 82CD
+ u"蓀" : (u"荪", ), # 84C0 => 836A
+ u"蓋" : (u"盖", ), # 84CB => 76D6
+ u"蓧" : (u"莜", ), # 84E7 => 839C
+ u"蓮" : (u"莲", ), # 84EE => 83B2
+ u"蓯" : (u"苁", ), # 84EF => 82C1
+ u"蓴" : (u"莼", ), # 84F4 => 83BC
+ u"蓽" : (u"荜", ), # 84FD => 835C
+ u"蔔" : (u"卜", ), # 8514 => 535C
+ u"蔞" : (u"蒌", ), # 851E => 848C
+ u"蔣" : (u"蒋", ), # 8523 => 848B
+ u"蔥" : (u"葱", ), # 8525 => 8471
+ u"蔦" : (u"茑", ), # 8526 => 8311
+ u"蔭" : (u"荫", ), # 852D => 836B
+ u"蕁" : (u"荨", ), # 8541 => 8368
+ u"蕆" : (u"蒇", ), # 8546 => 8487
+ u"蕎" : (u"荞", ), # 854E => 835E
+ u"蕒" : (u"荬", ), # 8552 => 836C
+ u"蕓" : (u"芸", ), # 8553 => 82B8
+ u"蕕" : (u"莸", ), # 8555 => 83B8
+ u"蕘" : (u"荛", ), # 8558 => 835B
+ u"蕢" : (u"蒉", ), # 8562 => 8489
+ u"蕩" : (u"荡", ), # 8569 => 8361
+ u"蕪" : (u"芜", ), # 856A => 829C
+ u"蕭" : (u"萧", ), # 856D => 8427
+ u"蕷" : (u"蓣", ), # 8577 => 84E3
+ u"薈" : (u"荟", ), # 8588 => 835F
+ u"薊" : (u"蓟", ), # 858A => 84DF
+ u"薌" : (u"芗", ), # 858C => 8297
+ u"薑" : (u"姜", ), # 8591 => 59DC
+ u"薔" : (u"蔷", ), # 8594 => 8537
+ u"薟" : (u"莶", ), # 859F => 83B6
+ u"薦" : (u"荐", ), # 85A6 => 8350
+ u"薩" : (u"萨", ), # 85A9 => 8428
+ u"薺" : (u"荠", ), # 85BA => 8360
+ u"藉" : (u"借", ), # 85C9 => 501F
+ u"藍" : (u"蓝", ), # 85CD => 84DD
+ u"藎" : (u"荩", ), # 85CE => 8369
+ u"藝" : (u"艺", ), # 85DD => 827A
+ u"藥" : (u"药", ), # 85E5 => 836F
+ u"藪" : (u"薮", ), # 85EA => 85AE
+ u"藭" : (u"䓖", ), # 85ED => 44D6
+ u"藴" : (u"蕴", ), # 85F4 => 8574
+ u"藶" : (u"苈", ), # 85F6 => 82C8
+ u"藹" : (u"蔼", ), # 85F9 => 853C
+ u"藺" : (u"蔺", ), # 85FA => 853A
+ u"蘀" : (u"萚", ), # 8600 => 841A
+ u"蘄" : (u"蕲", ), # 8604 => 8572
+ u"蘆" : (u"芦", ), # 8606 => 82A6
+ u"蘇" : (u"苏", ), # 8607 => 82CF
+ u"蘊" : (u"蕴", ), # 860A => 8574
+ u"蘋" : (u"苹", ), # 860B => 82F9
+ u"蘚" : (u"藓", ), # 861A => 85D3
+ u"蘞" : (u"蔹", ), # 861E => 8539
+ u"蘢" : (u"茏", ), # 8622 => 830F
+ u"蘭" : (u"兰", ), # 862D => 5170
+ u"蘺" : (u"蓠", ), # 863A => 84E0
+ u"蘿" : (u"萝", ), # 863F => 841D
+ u"處" : (u"处", ), # 8655 => 5904
+ u"虛" : (u"虚", ), # 865B => 865A
+ u"虜" : (u"虏", ), # 865C => 864F
+ u"號" : (u"号", ), # 865F => 53F7
+ u"虧" : (u"亏", ), # 8667 => 4E8F
+ u"虯" : (u"虬", ), # 866F => 866C
+ u"蛺" : (u"蛱", ), # 86FA => 86F1
+ u"蛻" : (u"蜕", ), # 86FB => 8715
+ u"蜆" : (u"蚬", ), # 8706 => 86AC
+ u"蝕" : (u"蚀", ), # 8755 => 8680
+ u"蝟" : (u"猬", ), # 875F => 732C
+ u"蝦" : (u"虾", ), # 8766 => 867E
+ u"蝸" : (u"蜗", ), # 8778 => 8717
+ u"螄" : (u"蛳", ), # 8784 => 86F3
+ u"螞" : (u"蚂", ), # 879E => 8682
+ u"螢" : (u"萤", ), # 87A2 => 8424
+ u"螻" : (u"蝼", ), # 87BB => 877C
+ u"蟄" : (u"蛰", ), # 87C4 => 86F0
+ u"蟈" : (u"蝈", ), # 87C8 => 8748
+ u"蟎" : (u"螨", ), # 87CE => 87A8
+ u"蟣" : (u"虮", ), # 87E3 => 866E
+ u"蟬" : (u"蝉", ), # 87EC => 8749
+ u"蟯" : (u"蛲", ), # 87EF => 86F2
+ u"蟲" : (u"虫", ), # 87F2 => 866B
+ u"蟶" : (u"蛏", ), # 87F6 => 86CF
+ u"蟻" : (u"蚁", ), # 87FB => 8681
+ u"蠅" : (u"蝇", ), # 8805 => 8747
+ u"蠆" : (u"虿", ), # 8806 => 867F
+ u"蠍" : (u"蝎", ), # 880D => 874E
+ u"蠐" : (u"蛴", ), # 8810 => 86F4
+ u"蠑" : (u"蝾", ), # 8811 => 877E
+ u"蠔" : (u"蚝", ), # 8814 => 869D
+ u"蠟" : (u"蜡", ), # 881F => 8721
+ u"蠣" : (u"蛎", ), # 8823 => 86CE
+ u"蠨" : (u"蟏", ), # 8828 => 87CF
+ u"蠱" : (u"蛊", ), # 8831 => 86CA
+ u"蠶" : (u"蚕", ), # 8836 => 8695
+ u"蠻" : (u"蛮", ), # 883B => 86EE
+ u"衆" : (u"众", ), # 8846 => 4F17
+ u"衊" : (u"蔑", ), # 884A => 8511
+ u"術" : (u"术", ), # 8853 => 672F
+ u"衛" : (u"卫", ), # 885B => 536B
+ u"衝" : (u"冲", ), # 885D => 51B2
+ u"衹" : (u"只", ), # 8879 => 53EA
+ u"袞" : (u"衮", ), # 889E => 886E
+ u"裊" : (u"袅", ), # 88CA => 8885
+ u"裏" : (u"里", ), # 88CF => 91CC
+ u"補" : (u"补", ), # 88DC => 8865
+ u"裝" : (u"装", ), # 88DD => 88C5
+ u"製" : (u"制", ), # 88FD => 5236
+ u"複" : (u"复", ), # 8907 => 590D
+ u"褲" : (u"裤", ), # 8932 => 88E4
+ u"褳" : (u"裢", ), # 8933 => 88E2
+ u"褸" : (u"褛", ), # 8938 => 891B
+ u"褻" : (u"亵", ), # 893B => 4EB5
+ u"襆" : (u"幞", ), # 8946 => 5E5E
+ u"襇" : (u"裥", ), # 8947 => 88E5
+ u"襖" : (u"袄", ), # 8956 => 8884
+ u"襝" : (u"裣", ), # 895D => 88E3
+ u"襠" : (u"裆", ), # 8960 => 88C6
+ u"襤" : (u"褴", ), # 8964 => 8934
+ u"襪" : (u"袜", ), # 896A => 889C
+ u"襬" : (u"摆", ), # 896C => 6446
+ u"襯" : (u"衬", ), # 896F => 886C
+ u"襲" : (u"袭", ), # 8972 => 88AD
+ u"覊" : (u"羁", ), # 898A => 7F81
+ u"見" : (u"见", ), # 898B => 89C1
+ u"覎" : (u"觃", ), # 898E => 89C3
+ u"規" : (u"规", ), # 898F => 89C4
+ u"覓" : (u"觅", ), # 8993 => 89C5
+ u"視" : (u"视", ), # 8996 => 89C6
+ u"覘" : (u"觇", ), # 8998 => 89C7
+ u"覡" : (u"觋", ), # 89A1 => 89CB
+ u"覦" : (u"觎", ), # 89A6 => 89CE
+ u"覧" : (u"览", ), # 89A7 => 89C8
+ u"親" : (u"亲", ), # 89AA => 4EB2
+ u"覬" : (u"觊", ), # 89AC => 89CA
+ u"覯" : (u"觏", ), # 89AF => 89CF
+ u"覲" : (u"觐", ), # 89B2 => 89D0
+ u"覷" : (u"觑", ), # 89B7 => 89D1
+ u"覺" : (u"觉", ), # 89BA => 89C9
+ u"覽" : (u"览", ), # 89BD => 89C8
+ u"覿" : (u"觌", ), # 89BF => 89CC
+ u"觀" : (u"观", ), # 89C0 => 89C2
+ u"觴" : (u"觞", ), # 89F4 => 89DE
+ u"觶" : (u"觯", ), # 89F6 => 89EF
+ u"觸" : (u"触", ), # 89F8 => 89E6
+ u"訁" : (u"讠", ), # 8A01 => 8BA0
+ u"訂" : (u"订", ), # 8A02 => 8BA2
+ u"訃" : (u"讣", ), # 8A03 => 8BA3
+ u"計" : (u"计", ), # 8A08 => 8BA1
+ u"訊" : (u"讯", ), # 8A0A => 8BAF
+ u"訌" : (u"讧", ), # 8A0C => 8BA7
+ u"討" : (u"讨", ), # 8A0E => 8BA8
+ u"訐" : (u"讦", ), # 8A10 => 8BA6
+ u"訓" : (u"训", ), # 8A13 => 8BAD
+ u"訕" : (u"讪", ), # 8A15 => 8BAA
+ u"訖" : (u"讫", ), # 8A16 => 8BAB
+ u"記" : (u"记", ), # 8A18 => 8BB0
+ u"訛" : (u"讹", ), # 8A1B => 8BB9
+ u"訝" : (u"讶", ), # 8A1D => 8BB6
+ u"訟" : (u"讼", ), # 8A1F => 8BBC
+ u"訢" : (u"䜣", ), # 8A22 => 4723
+ u"訣" : (u"诀", ), # 8A23 => 8BC0
+ u"訥" : (u"讷", ), # 8A25 => 8BB7
+ u"訩" : (u"讻", ), # 8A29 => 8BBB
+ u"訪" : (u"访", ), # 8A2A => 8BBF
+ u"設" : (u"设", ), # 8A2D => 8BBE
+ u"許" : (u"许", ), # 8A31 => 8BB8
+ u"訴" : (u"诉", ), # 8A34 => 8BC9
+ u"訶" : (u"诃", ), # 8A36 => 8BC3
+ u"診" : (u"诊", ), # 8A3A => 8BCA
+ u"詁" : (u"诂", ), # 8A41 => 8BC2
+ u"詆" : (u"诋", ), # 8A46 => 8BCB
+ u"詎" : (u"讵", ), # 8A4E => 8BB5
+ u"詐" : (u"诈", ), # 8A50 => 8BC8
+ u"詒" : (u"诒", ), # 8A52 => 8BD2
+ u"詔" : (u"诏", ), # 8A54 => 8BCF
+ u"評" : (u"评", ), # 8A55 => 8BC4
+ u"詗" : (u"诇", ), # 8A57 => 8BC7
+ u"詘" : (u"诎", ), # 8A58 => 8BCE
+ u"詛" : (u"诅", ), # 8A5B => 8BC5
+ u"詞" : (u"词", ), # 8A5E => 8BCD
+ u"詠" : (u"咏", ), # 8A60 => 548F
+ u"詡" : (u"诩", ), # 8A61 => 8BE9
+ u"詢" : (u"询", ), # 8A62 => 8BE2
+ u"詣" : (u"诣", ), # 8A63 => 8BE3
+ u"試" : (u"试", ), # 8A66 => 8BD5
+ u"詩" : (u"诗", ), # 8A69 => 8BD7
+ u"詫" : (u"诧", ), # 8A6B => 8BE7
+ u"詬" : (u"诟", ), # 8A6C => 8BDF
+ u"詭" : (u"诡", ), # 8A6D => 8BE1
+ u"詮" : (u"诠", ), # 8A6E => 8BE0
+ u"詰" : (u"诘", ), # 8A70 => 8BD8
+ u"話" : (u"话", ), # 8A71 => 8BDD
+ u"該" : (u"该", ), # 8A72 => 8BE5
+ u"詳" : (u"详", ), # 8A73 => 8BE6
+ u"詵" : (u"诜", ), # 8A75 => 8BDC
+ u"詼" : (u"诙", ), # 8A7C => 8BD9
+ u"詿" : (u"诖", ), # 8A7F => 8BD6
+ u"誄" : (u"诔", ), # 8A84 => 8BD4
+ u"誅" : (u"诛", ), # 8A85 => 8BDB
+ u"誆" : (u"诓", ), # 8A86 => 8BD3
+ u"誇" : (u"夸", ), # 8A87 => 5938
+ u"認" : (u"认", ), # 8A8D => 8BA4
+ u"誑" : (u"诳", ), # 8A91 => 8BF3
+ u"誒" : (u"诶", ), # 8A92 => 8BF6
+ u"誕" : (u"诞", ), # 8A95 => 8BDE
+ u"誘" : (u"诱", ), # 8A98 => 8BF1
+ u"誚" : (u"诮", ), # 8A9A => 8BEE
+ u"語" : (u"语", ), # 8A9E => 8BED
+ u"誠" : (u"诚", ), # 8AA0 => 8BDA
+ u"誡" : (u"诫", ), # 8AA1 => 8BEB
+ u"誣" : (u"诬", ), # 8AA3 => 8BEC
+ u"誤" : (u"误", ), # 8AA4 => 8BEF
+ u"誥" : (u"诰", ), # 8AA5 => 8BF0
+ u"誦" : (u"诵", ), # 8AA6 => 8BF5
+ u"誨" : (u"诲", ), # 8AA8 => 8BF2
+ u"說" : (u"说", ), # 8AAA => 8BF4
+ u"説" : (u"说", ), # 8AAC => 8BF4
+ u"誰" : (u"谁", ), # 8AB0 => 8C01
+ u"課" : (u"课", ), # 8AB2 => 8BFE
+ u"誶" : (u"谇", ), # 8AB6 => 8C07
+ u"誹" : (u"诽", ), # 8AB9 => 8BFD
+ u"誼" : (u"谊", ), # 8ABC => 8C0A
+ u"調" : (u"调", ), # 8ABF => 8C03
+ u"諂" : (u"谄", ), # 8AC2 => 8C04
+ u"諄" : (u"谆", ), # 8AC4 => 8C06
+ u"談" : (u"谈", ), # 8AC7 => 8C08
+ u"諉" : (u"诿", ), # 8AC9 => 8BFF
+ u"請" : (u"请", ), # 8ACB => 8BF7
+ u"諍" : (u"诤", ), # 8ACD => 8BE4
+ u"諏" : (u"诹", ), # 8ACF => 8BF9
+ u"諑" : (u"诼", ), # 8AD1 => 8BFC
+ u"諒" : (u"谅", ), # 8AD2 => 8C05
+ u"論" : (u"论", ), # 8AD6 => 8BBA
+ u"諗" : (u"谂", ), # 8AD7 => 8C02
+ u"諛" : (u"谀", ), # 8ADB => 8C00
+ u"諜" : (u"谍", ), # 8ADC => 8C0D
+ u"諝" : (u"谞", ), # 8ADD => 8C1E
+ u"諞" : (u"谝", ), # 8ADE => 8C1D
+ u"諡" : (u"谥", ), # 8AE1 => 8C25
+ u"諢" : (u"诨", ), # 8AE2 => 8BE8
+ u"諤" : (u"谔", ), # 8AE4 => 8C14
+ u"諦" : (u"谛", ), # 8AE6 => 8C1B
+ u"諧" : (u"谐", ), # 8AE7 => 8C10
+ u"諫" : (u"谏", ), # 8AEB => 8C0F
+ u"諭" : (u"谕", ), # 8AED => 8C15
+ u"諮" : (u"谘", ), # 8AEE => 8C18
+ u"諱" : (u"讳", ), # 8AF1 => 8BB3
+ u"諳" : (u"谙", ), # 8AF3 => 8C19
+ u"諶" : (u"谌", ), # 8AF6 => 8C0C
+ u"諷" : (u"讽", ), # 8AF7 => 8BBD
+ u"諸" : (u"诸", ), # 8AF8 => 8BF8
+ u"諺" : (u"谚", ), # 8AFA => 8C1A
+ u"諼" : (u"谖", ), # 8AFC => 8C16
+ u"諾" : (u"诺", ), # 8AFE => 8BFA
+ u"謀" : (u"谋", ), # 8B00 => 8C0B
+ u"謁" : (u"谒", ), # 8B01 => 8C12
+ u"謂" : (u"谓", ), # 8B02 => 8C13
+ u"謄" : (u"誊", ), # 8B04 => 8A8A
+ u"謅" : (u"诌", ), # 8B05 => 8BCC
+ u"謊" : (u"谎", ), # 8B0A => 8C0E
+ u"謎" : (u"谜", ), # 8B0E => 8C1C
+ u"謐" : (u"谧", ), # 8B10 => 8C27
+ u"謔" : (u"嚯", u"谑"), # 8B14 => 56AF 8C11
+ u"謖" : (u"谡", ), # 8B16 => 8C21
+ u"謗" : (u"谤", ), # 8B17 => 8C24
+ u"謙" : (u"谦", ), # 8B19 => 8C26
+ u"謚" : (u"谥", ), # 8B1A => 8C25
+ u"講" : (u"讲", ), # 8B1B => 8BB2
+ u"謝" : (u"谢", ), # 8B1D => 8C22
+ u"謠" : (u"谣", ), # 8B20 => 8C23
+ u"謡" : (u"谣", ), # 8B21 => 8C23
+ u"謨" : (u"谟", ), # 8B28 => 8C1F
+ u"謫" : (u"谪", ), # 8B2B => 8C2A
+ u"謬" : (u"谬", ), # 8B2C => 8C2C
+ u"謳" : (u"讴", ), # 8B33 => 8BB4
+ u"謹" : (u"谨", ), # 8B39 => 8C28
+ u"謾" : (u"谩", ), # 8B3E => 8C29
+ u"證" : (u"证", ), # 8B49 => 8BC1
+ u"譎" : (u"谲", ), # 8B4E => 8C32
+ u"譏" : (u"讥", ), # 8B4F => 8BA5
+ u"譖" : (u"谮", ), # 8B56 => 8C2E
+ u"識" : (u"识", ), # 8B58 => 8BC6
+ u"譙" : (u"谯", ), # 8B59 => 8C2F
+ u"譚" : (u"谭", ), # 8B5A => 8C2D
+ u"譜" : (u"谱", ), # 8B5C => 8C31
+ u"譫" : (u"谵", ), # 8B6B => 8C35
+ u"譯" : (u"译", ), # 8B6F => 8BD1
+ u"議" : (u"议", ), # 8B70 => 8BAE
+ u"譴" : (u"谴", ), # 8B74 => 8C34
+ u"護" : (u"护", ), # 8B77 => 62A4
+ u"譽" : (u"誉", ), # 8B7D => 8A89
+ u"譾" : (u"谫", ), # 8B7E => 8C2B
+ u"讀" : (u"读", ), # 8B80 => 8BFB
+ u"讅" : (u"谉", ), # 8B85 => 8C09
+ u"變" : (u"变", ), # 8B8A => 53D8
+ u"讌" : (u"䜩", ), # 8B8C => 4729
+ u"讎" : (u"雠", ), # 8B8E => 96E0
+ u"讒" : (u"谗", ), # 8B92 => 8C17
+ u"讓" : (u"让", ), # 8B93 => 8BA9
+ u"讕" : (u"谰", ), # 8B95 => 8C30
+ u"讖" : (u"谶", ), # 8B96 => 8C36
+ u"讜" : (u"谠", ), # 8B9C => 8C20
+ u"讞" : (u"谳", ), # 8B9E => 8C33
+ u"豈" : (u"岂", ), # 8C48 => 5C82
+ u"豎" : (u"竖", ), # 8C4E => 7AD6
+ u"豐" : (u"丰", ), # 8C50 => 4E30
+ u"豔" : (u"艳", ), # 8C54 => 8273
+ u"豬" : (u"猪", ), # 8C6C => 732A
+ u"豶" : (u"豮", ), # 8C76 => 8C6E
+ u"貓" : (u"猫", ), # 8C93 => 732B
+ u"貝" : (u"贝", ), # 8C9D => 8D1D
+ u"貞" : (u"贞", ), # 8C9E => 8D1E
+ u"負" : (u"负", ), # 8CA0 => 8D1F
+ u"財" : (u"财", ), # 8CA1 => 8D22
+ u"貢" : (u"贡", ), # 8CA2 => 8D21
+ u"貧" : (u"贫", ), # 8CA7 => 8D2B
+ u"貨" : (u"货", ), # 8CA8 => 8D27
+ u"販" : (u"贩", ), # 8CA9 => 8D29
+ u"貪" : (u"贪", ), # 8CAA => 8D2A
+ u"貫" : (u"贯", ), # 8CAB => 8D2F
+ u"責" : (u"责", ), # 8CAC => 8D23
+ u"貯" : (u"贮", ), # 8CAF => 8D2E
+ u"貰" : (u"贳", ), # 8CB0 => 8D33
+ u"貲" : (u"赀", ), # 8CB2 => 8D40
+ u"貳" : (u"贰", ), # 8CB3 => 8D30
+ u"貴" : (u"贵", ), # 8CB4 => 8D35
+ u"貶" : (u"贬", ), # 8CB6 => 8D2C
+ u"買" : (u"买", ), # 8CB7 => 4E70
+ u"貸" : (u"贷", ), # 8CB8 => 8D37
+ u"貺" : (u"贶", ), # 8CBA => 8D36
+ u"費" : (u"费", ), # 8CBB => 8D39
+ u"貼" : (u"贴", ), # 8CBC => 8D34
+ u"貽" : (u"贻", ), # 8CBD => 8D3B
+ u"貿" : (u"贸", ), # 8CBF => 8D38
+ u"賀" : (u"贺", ), # 8CC0 => 8D3A
+ u"賁" : (u"贲", ), # 8CC1 => 8D32
+ u"賂" : (u"赂", ), # 8CC2 => 8D42
+ u"賃" : (u"赁", ), # 8CC3 => 8D41
+ u"賄" : (u"贿", ), # 8CC4 => 8D3F
+ u"賅" : (u"赅", ), # 8CC5 => 8D45
+ u"資" : (u"资", ), # 8CC7 => 8D44
+ u"賈" : (u"贾", ), # 8CC8 => 8D3E
+ u"賊" : (u"贼", ), # 8CCA => 8D3C
+ u"賑" : (u"赈", ), # 8CD1 => 8D48
+ u"賒" : (u"赊", ), # 8CD2 => 8D4A
+ u"賓" : (u"宾", ), # 8CD3 => 5BBE
+ u"賕" : (u"赇", ), # 8CD5 => 8D47
+ u"賙" : (u"赒", ), # 8CD9 => 8D52
+ u"賚" : (u"赉", ), # 8CDA => 8D49
+ u"賜" : (u"赐", ), # 8CDC => 8D50
+ u"賞" : (u"赏", ), # 8CDE => 8D4F
+ u"賠" : (u"赔", ), # 8CE0 => 8D54
+ u"賡" : (u"赓", ), # 8CE1 => 8D53
+ u"賢" : (u"贤", ), # 8CE2 => 8D24
+ u"賣" : (u"卖", ), # 8CE3 => 5356
+ u"賤" : (u"贱", ), # 8CE4 => 8D31
+ u"賦" : (u"赋", ), # 8CE6 => 8D4B
+ u"賧" : (u"赕", ), # 8CE7 => 8D55
+ u"質" : (u"质", ), # 8CEA => 8D28
+ u"賫" : (u"赍", ), # 8CEB => 8D4D
+ u"賬" : (u"账", ), # 8CEC => 8D26
+ u"賭" : (u"赌", ), # 8CED => 8D4C
+ u"賴" : (u"赖", ), # 8CF4 => 8D56
+ u"賵" : (u"赗", ), # 8CF5 => 8D57
+ u"賺" : (u"赚", ), # 8CFA => 8D5A
+ u"賻" : (u"赙", ), # 8CFB => 8D59
+ u"購" : (u"购", ), # 8CFC => 8D2D
+ u"賽" : (u"赛", ), # 8CFD => 8D5B
+ u"賾" : (u"赜", ), # 8CFE => 8D5C
+ u"贄" : (u"贽", ), # 8D04 => 8D3D
+ u"贅" : (u"赘", ), # 8D05 => 8D58
+ u"贈" : (u"赠", ), # 8D08 => 8D60
+ u"贊" : (u"赞", ), # 8D0A => 8D5E
+ u"贋" : (u"赝", ), # 8D0B => 8D5D
+ u"贍" : (u"赡", ), # 8D0D => 8D61
+ u"贏" : (u"赢", ), # 8D0F => 8D62
+ u"贐" : (u"赆", ), # 8D10 => 8D46
+ u"贓" : (u"赃", ), # 8D13 => 8D43
+ u"贖" : (u"赎", ), # 8D16 => 8D4E
+ u"贗" : (u"赝", ), # 8D17 => 8D5D
+ u"贛" : (u"赣", ), # 8D1B => 8D63
+ u"贜" : (u"脏", ), # 8D1C => 810F
+ u"赬" : (u"赪", ), # 8D6C => 8D6A
+ u"趕" : (u"赶", ), # 8D95 => 8D76
+ u"趙" : (u"赵", ), # 8D99 => 8D75
+ u"趨" : (u"趋", ), # 8DA8 => 8D8B
+ u"趲" : (u"趱", ), # 8DB2 => 8DB1
+ u"跡" : (u"迹", ), # 8DE1 => 8FF9
+ u"踐" : (u"践", ), # 8E10 => 8DF5
+ u"踴" : (u"踊", ), # 8E34 => 8E0A
+ u"蹌" : (u"跄", ), # 8E4C => 8DC4
+ u"蹕" : (u"跸", ), # 8E55 => 8DF8
+ u"蹠" : (u"跖", ), # 8E60 => 8DD6
+ u"蹣" : (u"蹒", ), # 8E63 => 8E52
+ u"蹤" : (u"踪", ), # 8E64 => 8E2A
+ u"蹺" : (u"跷", ), # 8E7A => 8DF7
+ u"躉" : (u"趸", ), # 8E89 => 8DB8
+ u"躊" : (u"踌", ), # 8E8A => 8E0C
+ u"躋" : (u"跻", ), # 8E8B => 8DFB
+ u"躍" : (u"跃", ), # 8E8D => 8DC3
+ u"躑" : (u"踯", ), # 8E91 => 8E2F
+ u"躒" : (u"跞", ), # 8E92 => 8DDE
+ u"躓" : (u"踬", ), # 8E93 => 8E2C
+ u"躕" : (u"蹰", ), # 8E95 => 8E70
+ u"躚" : (u"跹", ), # 8E9A => 8DF9
+ u"躡" : (u"蹑", ), # 8EA1 => 8E51
+ u"躥" : (u"蹿", ), # 8EA5 => 8E7F
+ u"躦" : (u"躜", ), # 8EA6 => 8E9C
+ u"躪" : (u"躏", ), # 8EAA => 8E8F
+ u"軀" : (u"躯", ), # 8EC0 => 8EAF
+ u"車" : (u"车", ), # 8ECA => 8F66
+ u"軋" : (u"轧", ), # 8ECB => 8F67
+ u"軌" : (u"轨", ), # 8ECC => 8F68
+ u"軍" : (u"军", ), # 8ECD => 519B
+ u"軒" : (u"轩", ), # 8ED2 => 8F69
+ u"軔" : (u"轫", ), # 8ED4 => 8F6B
+ u"軛" : (u"轭", ), # 8EDB => 8F6D
+ u"軟" : (u"软", ), # 8EDF => 8F6F
+ u"軤" : (u"轷", ), # 8EE4 => 8F77
+ u"軫" : (u"轸", ), # 8EEB => 8F78
+ u"軲" : (u"轱", ), # 8EF2 => 8F71
+ u"軸" : (u"轴", ), # 8EF8 => 8F74
+ u"軹" : (u"轵", ), # 8EF9 => 8F75
+ u"軺" : (u"轺", ), # 8EFA => 8F7A
+ u"軻" : (u"轲", ), # 8EFB => 8F72
+ u"軼" : (u"轶", ), # 8EFC => 8F76
+ u"軾" : (u"轼", ), # 8EFE => 8F7C
+ u"較" : (u"较", ), # 8F03 => 8F83
+ u"輅" : (u"辂", ), # 8F05 => 8F82
+ u"輇" : (u"辁", ), # 8F07 => 8F81
+ u"載" : (u"载", ), # 8F09 => 8F7D
+ u"輊" : (u"轾", ), # 8F0A => 8F7E
+ u"輒" : (u"辄", ), # 8F12 => 8F84
+ u"輔" : (u"辅", ), # 8F14 => 8F85
+ u"輕" : (u"轻", ), # 8F15 => 8F7B
+ u"輛" : (u"辆", ), # 8F1B => 8F86
+ u"輜" : (u"辎", ), # 8F1C => 8F8E
+ u"輝" : (u"辉", ), # 8F1D => 8F89
+ u"輞" : (u"辋", ), # 8F1E => 8F8B
+ u"輟" : (u"辍", ), # 8F1F => 8F8D
+ u"輥" : (u"辊", ), # 8F25 => 8F8A
+ u"輦" : (u"辇", ), # 8F26 => 8F87
+ u"輩" : (u"辈", ), # 8F29 => 8F88
+ u"輪" : (u"轮", ), # 8F2A => 8F6E
+ u"輯" : (u"辑", ), # 8F2F => 8F91
+ u"輳" : (u"辏", ), # 8F33 => 8F8F
+ u"輸" : (u"输", ), # 8F38 => 8F93
+ u"輻" : (u"辐", ), # 8F3B => 8F90
+ u"輾" : (u"辗", ), # 8F3E => 8F97
+ u"輿" : (u"舆", ), # 8F3F => 8206
+ u"轂" : (u"毂", ), # 8F42 => 6BC2
+ u"轄" : (u"辖", ), # 8F44 => 8F96
+ u"轅" : (u"辕", ), # 8F45 => 8F95
+ u"轆" : (u"辘", ), # 8F46 => 8F98
+ u"轉" : (u"转", ), # 8F49 => 8F6C
+ u"轍" : (u"辙", ), # 8F4D => 8F99
+ u"轎" : (u"轿", ), # 8F4E => 8F7F
+ u"轔" : (u"辚", ), # 8F54 => 8F9A
+ u"轟" : (u"轰", ), # 8F5F => 8F70
+ u"轡" : (u"辔", ), # 8F61 => 8F94
+ u"轢" : (u"轹", ), # 8F62 => 8F79
+ u"轤" : (u"轳", ), # 8F64 => 8F73
+ u"辦" : (u"办", ), # 8FA6 => 529E
+ u"辭" : (u"辞", ), # 8FAD => 8F9E
+ u"辮" : (u"辫", ), # 8FAE => 8FAB
+ u"辯" : (u"辩", ), # 8FAF => 8FA9
+ u"農" : (u"农", ), # 8FB2 => 519C
+ u"迴" : (u"回", ), # 8FF4 => 56DE
+ u"退" : (u"煺", ), # 9000 => 717A
+ u"逕" : (u"迳", ), # 9015 => 8FF3
+ u"這" : (u"这", ), # 9019 => 8FD9
+ u"連" : (u"连", ), # 9023 => 8FDE
+ u"進" : (u"进", ), # 9032 => 8FDB
+ u"運" : (u"运", ), # 904B => 8FD0
+ u"過" : (u"过", ), # 904E => 8FC7
+ u"達" : (u"达", ), # 9054 => 8FBE
+ u"違" : (u"违", ), # 9055 => 8FDD
+ u"遙" : (u"遥", ), # 9059 => 9065
+ u"遜" : (u"逊", ), # 905C => 900A
+ u"遝" : (u"沓", ), # 905D => 6C93
+ u"遞" : (u"递", ), # 905E => 9012
+ u"遠" : (u"远", ), # 9060 => 8FDC
+ u"適" : (u"适", ), # 9069 => 9002
+ u"遲" : (u"迟", ), # 9072 => 8FDF
+ u"遷" : (u"迁", ), # 9077 => 8FC1
+ u"選" : (u"选", ), # 9078 => 9009
+ u"遺" : (u"遗", ), # 907A => 9057
+ u"遼" : (u"辽", ), # 907C => 8FBD
+ u"邁" : (u"迈", ), # 9081 => 8FC8
+ u"還" : (u"还", ), # 9084 => 8FD8
+ u"邇" : (u"迩", ), # 9087 => 8FE9
+ u"邊" : (u"边", ), # 908A => 8FB9
+ u"邏" : (u"逻", ), # 908F => 903B
+ u"邐" : (u"逦", ), # 9090 => 9026
+ u"郟" : (u"郏", ), # 90DF => 90CF
+ u"郤" : (u"郄", ), # 90E4 => 90C4
+ u"郵" : (u"邮", ), # 90F5 => 90AE
+ u"鄆" : (u"郓", ), # 9106 => 90D3
+ u"鄉" : (u"乡", ), # 9109 => 4E61
+ u"鄒" : (u"邹", ), # 9112 => 90B9
+ u"鄔" : (u"邬", ), # 9114 => 90AC
+ u"鄖" : (u"郧", ), # 9116 => 90E7
+ u"鄧" : (u"邓", ), # 9127 => 9093
+ u"鄭" : (u"郑", ), # 912D => 90D1
+ u"鄰" : (u"邻", ), # 9130 => 90BB
+ u"鄲" : (u"郸", ), # 9132 => 90F8
+ u"鄴" : (u"邺", ), # 9134 => 90BA
+ u"鄶" : (u"郐", ), # 9136 => 90D0
+ u"鄺" : (u"邝", ), # 913A => 909D
+ u"酈" : (u"郦", ), # 9148 => 90E6
+ u"醃" : (u"腌", ), # 9183 => 814C
+ u"醖" : (u"酝", ), # 9196 => 915D
+ u"醜" : (u"丑", ), # 919C => 4E11
+ u"醞" : (u"酝", ), # 919E => 915D
+ u"醤" : (u"酱", ), # 91A4 => 9171
+ u"醫" : (u"医", ), # 91AB => 533B
+ u"醬" : (u"酱", ), # 91AC => 9171
+ u"醯" : (u"酰", ), # 91AF => 9170
+ u"釀" : (u"酿", ), # 91C0 => 917F
+ u"釁" : (u"衅", ), # 91C1 => 8845
+ u"釃" : (u"酾", ), # 91C3 => 917E
+ u"釅" : (u"酽", ), # 91C5 => 917D
+ u"釋" : (u"释", ), # 91CB => 91CA
+ u"釓" : (u"钆", ), # 91D3 => 9486
+ u"釔" : (u"钇", ), # 91D4 => 9487
+ u"釕" : (u"钌", ), # 91D5 => 948C
+ u"釗" : (u"钊", ), # 91D7 => 948A
+ u"釘" : (u"钉", ), # 91D8 => 9489
+ u"釙" : (u"钋", ), # 91D9 => 948B
+ u"針" : (u"针", ), # 91DD => 9488
+ u"釣" : (u"钓", ), # 91E3 => 9493
+ u"釤" : (u"钐", ), # 91E4 => 9490
+ u"釧" : (u"钏", ), # 91E7 => 948F
+ u"釩" : (u"钒", ), # 91E9 => 9492
+ u"釵" : (u"钗", ), # 91F5 => 9497
+ u"釷" : (u"钍", ), # 91F7 => 948D
+ u"釹" : (u"钕", ), # 91F9 => 9495
+ u"釺" : (u"钎", ), # 91FA => 948E
+ u"釾" : (u"䥺", ), # 91FE => 497A
+ u"鈀" : (u"钯", ), # 9200 => 94AF
+ u"鈁" : (u"钫", ), # 9201 => 94AB
+ u"鈃" : (u"钘", ), # 9203 => 9498
+ u"鈄" : (u"钭", ), # 9204 => 94AD
+ u"鈈" : (u"钚", ), # 9208 => 949A
+ u"鈉" : (u"钠", ), # 9209 => 94A0
+ u"鈍" : (u"钝", ), # 920D => 949D
+ u"鈎" : (u"钩", ), # 920E => 94A9
+ u"鈐" : (u"钤", ), # 9210 => 94A4
+ u"鈑" : (u"钣", ), # 9211 => 94A3
+ u"鈔" : (u"钞", ), # 9214 => 949E
+ u"鈕" : (u"钮", ), # 9215 => 94AE
+ u"鈞" : (u"钧", ), # 921E => 94A7
+ u"鈣" : (u"钙", ), # 9223 => 9499
+ u"鈥" : (u"钬", ), # 9225 => 94AC
+ u"鈦" : (u"钛", ), # 9226 => 949B
+ u"鈧" : (u"钪", ), # 9227 => 94AA
+ u"鈮" : (u"铌", ), # 922E => 94CC
+ u"鈰" : (u"铈", ), # 9230 => 94C8
+ u"鈳" : (u"钶", ), # 9233 => 94B6
+ u"鈴" : (u"铃", ), # 9234 => 94C3
+ u"鈷" : (u"钴", ), # 9237 => 94B4
+ u"鈸" : (u"钹", ), # 9238 => 94B9
+ u"鈹" : (u"铍", ), # 9239 => 94CD
+ u"鈺" : (u"钰", ), # 923A => 94B0
+ u"鈽" : (u"钸", ), # 923D => 94B8
+ u"鈾" : (u"铀", ), # 923E => 94C0
+ u"鈿" : (u"钿", ), # 923F => 94BF
+ u"鉀" : (u"钾", ), # 9240 => 94BE
+ u"鉈" : (u"铊", ), # 9248 => 94CA
+ u"鉉" : (u"铉", ), # 9249 => 94C9
+ u"鉍" : (u"铋", ), # 924D => 94CB
+ u"鉑" : (u"铂", ), # 9251 => 94C2
+ u"鉕" : (u"钷", ), # 9255 => 94B7
+ u"鉗" : (u"钳", ), # 9257 => 94B3
+ u"鉚" : (u"铆", ), # 925A => 94C6
+ u"鉛" : (u"铅", ), # 925B => 94C5
+ u"鉞" : (u"钺", ), # 925E => 94BA
+ u"鉢" : (u"钵", ), # 9262 => 94B5
+ u"鉤" : (u"钩", ), # 9264 => 94A9
+ u"鉦" : (u"钲", ), # 9266 => 94B2
+ u"鉬" : (u"钼", ), # 926C => 94BC
+ u"鉭" : (u"钽", ), # 926D => 94BD
+ u"鉲" : (u"锎", ), # 9272 => 950E
+ u"鉶" : (u"铏", ), # 9276 => 94CF
+ u"鉸" : (u"铰", ), # 9278 => 94F0
+ u"鉺" : (u"铒", ), # 927A => 94D2
+ u"鉻" : (u"铬", ), # 927B => 94EC
+ u"鉿" : (u"铪", ), # 927F => 94EA
+ u"銀" : (u"银", ), # 9280 => 94F6
+ u"銃" : (u"铳", ), # 9283 => 94F3
+ u"銅" : (u"铜", ), # 9285 => 94DC
+ u"銑" : (u"铣", ), # 9291 => 94E3
+ u"銓" : (u"铨", ), # 9293 => 94E8
+ u"銖" : (u"铢", ), # 9296 => 94E2
+ u"銘" : (u"铭", ), # 9298 => 94ED
+ u"銚" : (u"铫", ), # 929A => 94EB
+ u"銜" : (u"衔", ), # 929C => 8854
+ u"銠" : (u"铑", ), # 92A0 => 94D1
+ u"銣" : (u"铷", ), # 92A3 => 94F7
+ u"銥" : (u"铱", ), # 92A5 => 94F1
+ u"銦" : (u"铟", ), # 92A6 => 94DF
+ u"銨" : (u"铵", ), # 92A8 => 94F5
+ u"銩" : (u"铥", ), # 92A9 => 94E5
+ u"銪" : (u"铕", ), # 92AA => 94D5
+ u"銫" : (u"铯", ), # 92AB => 94EF
+ u"銬" : (u"铐", ), # 92AC => 94D0
+ u"銱" : (u"铞", ), # 92B1 => 94DE
+ u"銳" : (u"锐", ), # 92B3 => 9510
+ u"銷" : (u"销", ), # 92B7 => 9500
+ u"銹" : (u"锈", ), # 92B9 => 9508
+ u"銻" : (u"锑", ), # 92BB => 9511
+ u"銼" : (u"锉", ), # 92BC => 9509
+ u"鋁" : (u"铝", ), # 92C1 => 94DD
+ u"鋂" : (u"镅", ), # 92C2 => 9545
+ u"鋃" : (u"锒", ), # 92C3 => 9512
+ u"鋅" : (u"锌", ), # 92C5 => 950C
+ u"鋇" : (u"钡", ), # 92C7 => 94A1
+ u"鋌" : (u"铤", ), # 92CC => 94E4
+ u"鋏" : (u"铗", ), # 92CF => 94D7
+ u"鋒" : (u"锋", ), # 92D2 => 950B
+ u"鋝" : (u"锊", ), # 92DD => 950A
+ u"鋟" : (u"锓", ), # 92DF => 9513
+ u"鋣" : (u"铘", ), # 92E3 => 94D8
+ u"鋤" : (u"锄", ), # 92E4 => 9504
+ u"鋥" : (u"锃", ), # 92E5 => 9503
+ u"鋦" : (u"锔", ), # 92E6 => 9514
+ u"鋨" : (u"锇", ), # 92E8 => 9507
+ u"鋩" : (u"铓", ), # 92E9 => 94D3
+ u"鋪" : (u"铺", ), # 92EA => 94FA
+ u"鋭" : (u"锐", ), # 92ED => 9510
+ u"鋮" : (u"铖", ), # 92EE => 94D6
+ u"鋯" : (u"锆", ), # 92EF => 9506
+ u"鋰" : (u"锂", ), # 92F0 => 9502
+ u"鋱" : (u"铽", ), # 92F1 => 94FD
+ u"鋶" : (u"锍", ), # 92F6 => 950D
+ u"鋸" : (u"锯", ), # 92F8 => 952F
+ u"鋼" : (u"钢", ), # 92FC => 94A2
+ u"錁" : (u"锞", ), # 9301 => 951E
+ u"錄" : (u"录", ), # 9304 => 5F55
+ u"錆" : (u"锖", ), # 9306 => 9516
+ u"錇" : (u"锫", ), # 9307 => 952B
+ u"錈" : (u"锩", ), # 9308 => 9529
+ u"錐" : (u"锥", ), # 9310 => 9525
+ u"錒" : (u"锕", ), # 9312 => 9515
+ u"錕" : (u"锟", ), # 9315 => 951F
+ u"錘" : (u"锤", ), # 9318 => 9524
+ u"錙" : (u"锱", ), # 9319 => 9531
+ u"錚" : (u"铮", ), # 931A => 94EE
+ u"錛" : (u"锛", ), # 931B => 951B
+ u"錟" : (u"锬", ), # 931F => 952C
+ u"錠" : (u"锭", ), # 9320 => 952D
+ u"錢" : (u"钱", ), # 9322 => 94B1
+ u"錦" : (u"锦", ), # 9326 => 9526
+ u"錨" : (u"锚", ), # 9328 => 951A
+ u"錫" : (u"锡", ), # 932B => 9521
+ u"錮" : (u"锢", ), # 932E => 9522
+ u"錯" : (u"错", ), # 932F => 9519
+ u"録" : (u"录", ), # 9332 => 5F55
+ u"錳" : (u"锰", ), # 9333 => 9530
+ u"錶" : (u"表", ), # 9336 => 8868
+ u"錸" : (u"铼", ), # 9338 => 94FC
+ u"錼" : (u"镎", ), # 933C => 954E
+ u"鍀" : (u"锝", ), # 9340 => 951D
+ u"鍁" : (u"锨", ), # 9341 => 9528
+ u"鍃" : (u"锪", ), # 9343 => 952A
+ u"鍆" : (u"钔", ), # 9346 => 9494
+ u"鍇" : (u"锴", ), # 9347 => 9534
+ u"鍋" : (u"锅", ), # 934B => 9505
+ u"鍍" : (u"镀", ), # 934D => 9540
+ u"鍔" : (u"锷", ), # 9354 => 9537
+ u"鍘" : (u"铡", ), # 9358 => 94E1
+ u"鍚" : (u"钖", ), # 935A => 9496
+ u"鍛" : (u"锻", ), # 935B => 953B
+ u"鍤" : (u"锸", ), # 9364 => 9538
+ u"鍥" : (u"锲", ), # 9365 => 9532
+ u"鍩" : (u"锘", ), # 9369 => 9518
+ u"鍬" : (u"锹", ), # 936C => 9539
+ u"鍰" : (u"锾", ), # 9370 => 953E
+ u"鍵" : (u"键", ), # 9375 => 952E
+ u"鍶" : (u"锶", ), # 9376 => 9536
+ u"鍺" : (u"锗", ), # 937A => 9517
+ u"鍾" : (u"锺", ), # 937E => 953A
+ u"鎂" : (u"镁", ), # 9382 => 9541
+ u"鎄" : (u"锿", ), # 9384 => 953F
+ u"鎇" : (u"镅", ), # 9387 => 9545
+ u"鎊" : (u"镑", ), # 938A => 9551
+ u"鎖" : (u"锁", ), # 9396 => 9501
+ u"鎘" : (u"镉", ), # 9398 => 9549
+ u"鎡" : (u"镃", ), # 93A1 => 9543
+ u"鎢" : (u"钨", ), # 93A2 => 94A8
+ u"鎣" : (u"蓥", ), # 93A3 => 84E5
+ u"鎦" : (u"镏", ), # 93A6 => 954F
+ u"鎧" : (u"铠", ), # 93A7 => 94E0
+ u"鎩" : (u"铩", ), # 93A9 => 94E9
+ u"鎪" : (u"锼", ), # 93AA => 953C
+ u"鎬" : (u"镐", ), # 93AC => 9550
+ u"鎮" : (u"镇", ), # 93AE => 9547
+ u"鎰" : (u"镒", ), # 93B0 => 9552
+ u"鎳" : (u"镍", ), # 93B3 => 954D
+ u"鎵" : (u"镓", ), # 93B5 => 9553
+ u"鎸" : (u"镌", ), # 93B8 => 954C
+ u"鎿" : (u"镎", ), # 93BF => 954E
+ u"鏃" : (u"镞", ), # 93C3 => 955E
+ u"鏇" : (u"旋", u"镟"), # 93C7 => 65CB 955F
+ u"鏈" : (u"链", ), # 93C8 => 94FE
+ u"鏌" : (u"镆", ), # 93CC => 9546
+ u"鏍" : (u"镙", ), # 93CD => 9559
+ u"鏑" : (u"镝", ), # 93D1 => 955D
+ u"鏗" : (u"铿", ), # 93D7 => 94FF
+ u"鏘" : (u"锵", ), # 93D8 => 9535
+ u"鏜" : (u"镗", ), # 93DC => 9557
+ u"鏝" : (u"镘", ), # 93DD => 9558
+ u"鏞" : (u"镛", ), # 93DE => 955B
+ u"鏟" : (u"铲", ), # 93DF => 94F2
+ u"鏡" : (u"镜", ), # 93E1 => 955C
+ u"鏢" : (u"镖", ), # 93E2 => 9556
+ u"鏤" : (u"镂", ), # 93E4 => 9542
+ u"鏨" : (u"錾", ), # 93E8 => 933E
+ u"鏰" : (u"镚", ), # 93F0 => 955A
+ u"鏵" : (u"铧", ), # 93F5 => 94E7
+ u"鏷" : (u"镤", ), # 93F7 => 9564
+ u"鏹" : (u"镪", ), # 93F9 => 956A
+ u"鏺" : (u"䥽", ), # 93FA => 497D
+ u"鏽" : (u"锈", ), # 93FD => 9508
+ u"鐃" : (u"铙", ), # 9403 => 94D9
+ u"鐋" : (u"铴", ), # 940B => 94F4
+ u"鐐" : (u"镣", ), # 9410 => 9563
+ u"鐒" : (u"铹", ), # 9412 => 94F9
+ u"鐓" : (u"镦", ), # 9413 => 9566
+ u"鐔" : (u"镡", ), # 9414 => 9561
+ u"鐘" : (u"钟", ), # 9418 => 949F
+ u"鐙" : (u"镫", ), # 9419 => 956B
+ u"鐝" : (u"镢", ), # 941D => 9562
+ u"鐠" : (u"镨", ), # 9420 => 9568
+ u"鐥" : (u"䦅", ), # 9425 => 4985
+ u"鐦" : (u"锎", ), # 9426 => 950E
+ u"鐧" : (u"锏", ), # 9427 => 950F
+ u"鐨" : (u"镄", ), # 9428 => 9544
+ u"鐫" : (u"镌", ), # 942B => 954C
+ u"鐮" : (u"镰", ), # 942E => 9570
+ u"鐯" : (u"䦃", ), # 942F => 4983
+ u"鐲" : (u"镯", ), # 9432 => 956F
+ u"鐳" : (u"镭", ), # 9433 => 956D
+ u"鐵" : (u"铁", ), # 9435 => 94C1
+ u"鐶" : (u"镮", ), # 9436 => 956E
+ u"鐸" : (u"铎", ), # 9438 => 94CE
+ u"鐺" : (u"铛", ), # 943A => 94DB
+ u"鐿" : (u"镱", ), # 943F => 9571
+ u"鑄" : (u"铸", ), # 9444 => 94F8
+ u"鑊" : (u"镬", ), # 944A => 956C
+ u"鑌" : (u"镔", ), # 944C => 9554
+ u"鑒" : (u"鉴", ), # 9452 => 9274
+ u"鑔" : (u"镲", ), # 9454 => 9572
+ u"鑕" : (u"锧", ), # 9455 => 9527
+ u"鑞" : (u"镴", ), # 945E => 9574
+ u"鑠" : (u"铄", ), # 9460 => 94C4
+ u"鑣" : (u"镳", ), # 9463 => 9573
+ u"鑥" : (u"镥", ), # 9465 => 9565
+ u"鑭" : (u"镧", ), # 946D => 9567
+ u"鑰" : (u"钥", ), # 9470 => 94A5
+ u"鑲" : (u"镶", ), # 9472 => 9576
+ u"鑷" : (u"镊", ), # 9477 => 954A
+ u"鑹" : (u"镩", ), # 9479 => 9569
+ u"鑼" : (u"锣", ), # 947C => 9523
+ u"鑽" : (u"钻", ), # 947D => 94BB
+ u"鑾" : (u"銮", ), # 947E => 92AE
+ u"鑿" : (u"凿", ), # 947F => 51FF
+ u"钁" : (u"䦆", u"镢"), # 9481 => 4986 9562
+ u"钂" : (u"镋", ), # 9482 => 954B
+ u"镟" : (u"碹", ), # 955F => 78B9
+ u"長" : (u"长", ), # 9577 => 957F
+ u"門" : (u"门", ), # 9580 => 95E8
+ u"閂" : (u"闩", ), # 9582 => 95E9
+ u"閃" : (u"闪", ), # 9583 => 95EA
+ u"閆" : (u"闫", ), # 9586 => 95EB
+ u"閉" : (u"闭", ), # 9589 => 95ED
+ u"開" : (u"开", ), # 958B => 5F00
+ u"閌" : (u"闶", ), # 958C => 95F6
+ u"閎" : (u"闳", ), # 958E => 95F3
+ u"閏" : (u"闰", ), # 958F => 95F0
+ u"閑" : (u"闲", ), # 9591 => 95F2
+ u"間" : (u"间", ), # 9593 => 95F4
+ u"閔" : (u"闵", ), # 9594 => 95F5
+ u"閘" : (u"闸", ), # 9598 => 95F8
+ u"閙" : (u"闹", ), # 9599 => 95F9
+ u"閡" : (u"阂", ), # 95A1 => 9602
+ u"閣" : (u"阁", ), # 95A3 => 9601
+ u"閤" : (u"合", ), # 95A4 => 5408
+ u"閥" : (u"阀", ), # 95A5 => 9600
+ u"閨" : (u"闺", ), # 95A8 => 95FA
+ u"閩" : (u"闽", ), # 95A9 => 95FD
+ u"閫" : (u"阃", ), # 95AB => 9603
+ u"閬" : (u"阆", ), # 95AC => 9606
+ u"閭" : (u"闾", ), # 95AD => 95FE
+ u"閱" : (u"阅", ), # 95B1 => 9605
+ u"閲" : (u"阅", ), # 95B2 => 9605
+ u"閶" : (u"阊", ), # 95B6 => 960A
+ u"閹" : (u"阉", ), # 95B9 => 9609
+ u"閻" : (u"阎", ), # 95BB => 960E
+ u"閼" : (u"阏", ), # 95BC => 960F
+ u"閽" : (u"阍", ), # 95BD => 960D
+ u"閾" : (u"阈", ), # 95BE => 9608
+ u"閿" : (u"阌", ), # 95BF => 960C
+ u"闃" : (u"阒", ), # 95C3 => 9612
+ u"闆" : (u"板", ), # 95C6 => 677F
+ u"闈" : (u"闱", ), # 95C8 => 95F1
+ u"闊" : (u"阔", ), # 95CA => 9614
+ u"闋" : (u"阕", ), # 95CB => 9615
+ u"闌" : (u"阑", ), # 95CC => 9611
+ u"闐" : (u"阗", ), # 95D0 => 9617
+ u"闓" : (u"闿", ), # 95D3 => 95FF
+ u"闔" : (u"阖", ), # 95D4 => 9616
+ u"闕" : (u"阙", ), # 95D5 => 9619
+ u"闖" : (u"闯", ), # 95D6 => 95EF
+ u"關" : (u"关", ), # 95DC => 5173
+ u"闞" : (u"阚", ), # 95DE => 961A
+ u"闡" : (u"阐", ), # 95E1 => 9610
+ u"闢" : (u"辟", ), # 95E2 => 8F9F
+ u"闥" : (u"闼", ), # 95E5 => 95FC
+ u"阪" : (u"坂", ), # 962A => 5742
+ u"陘" : (u"陉", ), # 9658 => 9649
+ u"陝" : (u"陕", ), # 965D => 9655
+ u"陣" : (u"阵", ), # 9663 => 9635
+ u"陰" : (u"阴", ), # 9670 => 9634
+ u"陳" : (u"陈", ), # 9673 => 9648
+ u"陸" : (u"陆", ), # 9678 => 9646
+ u"陽" : (u"阳", ), # 967D => 9633
+ u"隉" : (u"陧", ), # 9689 => 9667
+ u"隊" : (u"队", ), # 968A => 961F
+ u"階" : (u"阶", ), # 968E => 9636
+ u"隕" : (u"陨", ), # 9695 => 9668
+ u"際" : (u"际", ), # 969B => 9645
+ u"隨" : (u"随", ), # 96A8 => 968F
+ u"險" : (u"险", ), # 96AA => 9669
+ u"隱" : (u"隐", ), # 96B1 => 9690
+ u"隴" : (u"陇", ), # 96B4 => 9647
+ u"隷" : (u"隶", ), # 96B7 => 96B6
+ u"隸" : (u"隶", ), # 96B8 => 96B6
+ u"隻" : (u"只", ), # 96BB => 53EA
+ u"雋" : (u"隽", ), # 96CB => 96BD
+ u"雖" : (u"虽", ), # 96D6 => 867D
+ u"雙" : (u"双", ), # 96D9 => 53CC
+ u"雛" : (u"雏", ), # 96DB => 96CF
+ u"雜" : (u"杂", ), # 96DC => 6742
+ u"雞" : (u"鸡", ), # 96DE => 9E21
+ u"離" : (u"离", ), # 96E2 => 79BB
+ u"難" : (u"难", ), # 96E3 => 96BE
+ u"雲" : (u"云", ), # 96F2 => 4E91
+ u"電" : (u"电", ), # 96FB => 7535
+ u"霧" : (u"雾", ), # 9727 => 96FE
+ u"霽" : (u"霁", ), # 973D => 9701
+ u"靂" : (u"雳", ), # 9742 => 96F3
+ u"靄" : (u"霭", ), # 9744 => 972D
+ u"靆" : (u"叇", ), # 9746 => 53C7
+ u"靈" : (u"灵", ), # 9748 => 7075
+ u"靉" : (u"叆", ), # 9749 => 53C6
+ u"靚" : (u"靓", ), # 975A => 9753
+ u"靜" : (u"静", ), # 975C => 9759
+ u"靦" : (u"腼", ), # 9766 => 817C
+ u"靨" : (u"靥", ), # 9768 => 9765
+ u"鞀" : (u"鼗", ), # 9780 => 9F17
+ u"鞏" : (u"巩", ), # 978F => 5DE9
+ u"鞦" : (u"秋", ), # 97A6 => 79CB
+ u"鞽" : (u"鞒", ), # 97BD => 9792
+ u"韁" : (u"缰", ), # 97C1 => 7F30
+ u"韃" : (u"鞑", ), # 97C3 => 9791
+ u"韆" : (u"千", ), # 97C6 => 5343
+ u"韉" : (u"鞯", ), # 97C9 => 97AF
+ u"韋" : (u"韦", ), # 97CB => 97E6
+ u"韌" : (u"韧", ), # 97CC => 97E7
+ u"韍" : (u"韨", ), # 97CD => 97E8
+ u"韓" : (u"韩", ), # 97D3 => 97E9
+ u"韙" : (u"韪", ), # 97D9 => 97EA
+ u"韜" : (u"韬", ), # 97DC => 97EC
+ u"韝" : (u"鞴", ), # 97DD => 97B4
+ u"韞" : (u"韫", ), # 97DE => 97EB
+ u"韻" : (u"韵", ), # 97FB => 97F5
+ u"響" : (u"响", ), # 97FF => 54CD
+ u"頁" : (u"页", ), # 9801 => 9875
+ u"頂" : (u"顶", ), # 9802 => 9876
+ u"頃" : (u"顷", ), # 9803 => 9877
+ u"項" : (u"项", ), # 9805 => 9879
+ u"順" : (u"顺", ), # 9806 => 987A
+ u"頇" : (u"顸", ), # 9807 => 9878
+ u"須" : (u"须", ), # 9808 => 987B
+ u"頊" : (u"顼", ), # 980A => 987C
+ u"頌" : (u"颂", ), # 980C => 9882
+ u"頎" : (u"颀", ), # 980E => 9880
+ u"頏" : (u"颃", ), # 980F => 9883
+ u"預" : (u"预", ), # 9810 => 9884
+ u"頑" : (u"顽", ), # 9811 => 987D
+ u"頒" : (u"颁", ), # 9812 => 9881
+ u"頓" : (u"顿", ), # 9813 => 987F
+ u"頗" : (u"颇", ), # 9817 => 9887
+ u"領" : (u"领", ), # 9818 => 9886
+ u"頜" : (u"颌", ), # 981C => 988C
+ u"頡" : (u"颉", ), # 9821 => 9889
+ u"頤" : (u"颐", ), # 9824 => 9890
+ u"頦" : (u"颏", ), # 9826 => 988F
+ u"頭" : (u"头", ), # 982D => 5934
+ u"頰" : (u"颊", ), # 9830 => 988A
+ u"頲" : (u"颋", ), # 9832 => 988B
+ u"頷" : (u"颔", ), # 9837 => 9894
+ u"頸" : (u"颈", ), # 9838 => 9888
+ u"頹" : (u"颓", ), # 9839 => 9893
+ u"頻" : (u"频", ), # 983B => 9891
+ u"頽" : (u"颓", ), # 983D => 9893
+ u"顆" : (u"颗", ), # 9846 => 9897
+ u"題" : (u"题", ), # 984C => 9898
+ u"額" : (u"额", ), # 984D => 989D
+ u"顎" : (u"颚", ), # 984E => 989A
+ u"顏" : (u"颜", ), # 984F => 989C
+ u"顒" : (u"颙", ), # 9852 => 9899
+ u"顓" : (u"颛", ), # 9853 => 989B
+ u"顔" : (u"颜", ), # 9854 => 989C
+ u"願" : (u"愿", ), # 9858 => 613F
+ u"顙" : (u"颡", ), # 9859 => 98A1
+ u"顛" : (u"颠", ), # 985B => 98A0
+ u"類" : (u"类", ), # 985E => 7C7B
+ u"顢" : (u"颟", ), # 9862 => 989F
+ u"顥" : (u"颢", ), # 9865 => 98A2
+ u"顧" : (u"顾", ), # 9867 => 987E
+ u"顫" : (u"颤", ), # 986B => 98A4
+ u"顬" : (u"颥", ), # 986C => 98A5
+ u"顯" : (u"显", ), # 986F => 663E
+ u"顰" : (u"颦", ), # 9870 => 98A6
+ u"顱" : (u"颅", ), # 9871 => 9885
+ u"顳" : (u"颞", ), # 9873 => 989E
+ u"顴" : (u"颧", ), # 9874 => 98A7
+ u"風" : (u"风", ), # 98A8 => 98CE
+ u"颮" : (u"飑", ), # 98AE => 98D1
+ u"颯" : (u"飒", ), # 98AF => 98D2
+ u"颱" : (u"台", ), # 98B1 => 53F0
+ u"颳" : (u"刮", ), # 98B3 => 522E
+ u"颶" : (u"飓", ), # 98B6 => 98D3
+ u"颸" : (u"飔", ), # 98B8 => 98D4
+ u"颼" : (u"飕", ), # 98BC => 98D5
+ u"飀" : (u"飗", ), # 98C0 => 98D7
+ u"飄" : (u"飘", ), # 98C4 => 98D8
+ u"飆" : (u"飙", u"飚"), # 98C6 => 98D9 98DA
+ u"飛" : (u"飞", ), # 98DB => 98DE
+ u"飥" : (u"饦", ), # 98E5 => 9966
+ u"飩" : (u"饨", ), # 98E9 => 9968
+ u"飪" : (u"饪", ), # 98EA => 996A
+ u"飫" : (u"饫", ), # 98EB => 996B
+ u"飭" : (u"饬", ), # 98ED => 996C
+ u"飯" : (u"饭", ), # 98EF => 996D
+ u"飲" : (u"饮", ), # 98F2 => 996E
+ u"飴" : (u"饴", ), # 98F4 => 9974
+ u"飼" : (u"饲", ), # 98FC => 9972
+ u"飽" : (u"饱", ), # 98FD => 9971
+ u"飾" : (u"饰", ), # 98FE => 9970
+ u"飿" : (u"饳", ), # 98FF => 9973
+ u"餃" : (u"饺", ), # 9903 => 997A
+ u"餄" : (u"饸", ), # 9904 => 9978
+ u"餅" : (u"饼", ), # 9905 => 997C
+ u"餉" : (u"饷", ), # 9909 => 9977
+ u"養" : (u"养", ), # 990A => 517B
+ u"餌" : (u"饵", ), # 990C => 9975
+ u"餎" : (u"饹", ), # 990E => 9979
+ u"餏" : (u"饻", ), # 990F => 997B
+ u"餑" : (u"饽", ), # 9911 => 997D
+ u"餒" : (u"馁", ), # 9912 => 9981
+ u"餓" : (u"饿", ), # 9913 => 997F
+ u"餘" : (u"余", u"馀"), # 9918 => 4F59 9980
+ u"餛" : (u"馄", ), # 991B => 9984
+ u"餜" : (u"馃", ), # 991C => 9983
+ u"餞" : (u"饯", ), # 991E => 996F
+ u"餠" : (u"饼", ), # 9920 => 997C
+ u"餡" : (u"馅", ), # 9921 => 9985
+ u"館" : (u"馆", ), # 9928 => 9986
+ u"餱" : (u"糇", ), # 9931 => 7CC7
+ u"餳" : (u"饧", ), # 9933 => 9967
+ u"餶" : (u"馉", ), # 9936 => 9989
+ u"餷" : (u"馇", ), # 9937 => 9987
+ u"餺" : (u"馎", ), # 993A => 998E
+ u"餼" : (u"饩", ), # 993C => 9969
+ u"餾" : (u"馏", ), # 993E => 998F
+ u"餿" : (u"馊", ), # 993F => 998A
+ u"饃" : (u"馍", ), # 9943 => 998D
+ u"饅" : (u"馒", ), # 9945 => 9992
+ u"饈" : (u"馐", ), # 9948 => 9990
+ u"饉" : (u"馑", ), # 9949 => 9991
+ u"饊" : (u"馓", ), # 994A => 9993
+ u"饋" : (u"馈", ), # 994B => 9988
+ u"饌" : (u"馔", ), # 994C => 9994
+ u"饑" : (u"饥", ), # 9951 => 9965
+ u"饒" : (u"饶", ), # 9952 => 9976
+ u"饗" : (u"飨", ), # 9957 => 98E8
+ u"饜" : (u"餍", ), # 995C => 990D
+ u"饞" : (u"馋", ), # 995E => 998B
+ u"饟" : (u"馕", ), # 995F => 9995
+ u"饢" : (u"馕", ), # 9962 => 9995
+ u"馬" : (u"马", ), # 99AC => 9A6C
+ u"馭" : (u"驭", ), # 99AD => 9A6D
+ u"馮" : (u"冯", ), # 99AE => 51AF
+ u"馱" : (u"驮", ), # 99B1 => 9A6E
+ u"馳" : (u"驰", ), # 99B3 => 9A70
+ u"馴" : (u"驯", ), # 99B4 => 9A6F
+ u"駁" : (u"驳", ), # 99C1 => 9A73
+ u"駐" : (u"驻", ), # 99D0 => 9A7B
+ u"駑" : (u"驽", ), # 99D1 => 9A7D
+ u"駒" : (u"驹", ), # 99D2 => 9A79
+ u"駔" : (u"驵", ), # 99D4 => 9A75
+ u"駕" : (u"驾", ), # 99D5 => 9A7E
+ u"駘" : (u"骀", ), # 99D8 => 9A80
+ u"駙" : (u"驸", ), # 99D9 => 9A78
+ u"駛" : (u"驶", ), # 99DB => 9A76
+ u"駝" : (u"驼", ), # 99DD => 9A7C
+ u"駟" : (u"驷", ), # 99DF => 9A77
+ u"駡" : (u"骂", ), # 99E1 => 9A82
+ u"駢" : (u"骈", ), # 99E2 => 9A88
+ u"駭" : (u"骇", ), # 99ED => 9A87
+ u"駱" : (u"骆", ), # 99F1 => 9A86
+ u"駸" : (u"骎", ), # 99F8 => 9A8E
+ u"駿" : (u"骏", ), # 99FF => 9A8F
+ u"騁" : (u"骋", ), # 9A01 => 9A8B
+ u"騅" : (u"骓", ), # 9A05 => 9A93
+ u"騍" : (u"骒", ), # 9A0D => 9A92
+ u"騎" : (u"骑", ), # 9A0E => 9A91
+ u"騏" : (u"骐", ), # 9A0F => 9A90
+ u"騖" : (u"骛", ), # 9A16 => 9A9B
+ u"騙" : (u"骗", ), # 9A19 => 9A97
+ u"騫" : (u"骞", ), # 9A2B => 9A9E
+ u"騭" : (u"骘", ), # 9A2D => 9A98
+ u"騮" : (u"骝", ), # 9A2E => 9A9D
+ u"騰" : (u"腾", ), # 9A30 => 817E
+ u"騶" : (u"驺", ), # 9A36 => 9A7A
+ u"騷" : (u"骚", ), # 9A37 => 9A9A
+ u"騸" : (u"骟", ), # 9A38 => 9A9F
+ u"騾" : (u"骡", ), # 9A3E => 9AA1
+ u"驀" : (u"蓦", ), # 9A40 => 84E6
+ u"驁" : (u"骜", ), # 9A41 => 9A9C
+ u"驂" : (u"骖", ), # 9A42 => 9A96
+ u"驃" : (u"骠", ), # 9A43 => 9AA0
+ u"驄" : (u"骢", ), # 9A44 => 9AA2
+ u"驅" : (u"驱", ), # 9A45 => 9A71
+ u"驊" : (u"骅", ), # 9A4A => 9A85
+ u"驍" : (u"骁", ), # 9A4D => 9A81
+ u"驏" : (u"骣", ), # 9A4F => 9AA3
+ u"驕" : (u"骄", ), # 9A55 => 9A84
+ u"驗" : (u"验", ), # 9A57 => 9A8C
+ u"驚" : (u"惊", ), # 9A5A => 60CA
+ u"驛" : (u"驿", ), # 9A5B => 9A7F
+ u"驟" : (u"骤", ), # 9A5F => 9AA4
+ u"驢" : (u"驴", ), # 9A62 => 9A74
+ u"驤" : (u"骧", ), # 9A64 => 9AA7
+ u"驥" : (u"骥", ), # 9A65 => 9AA5
+ u"驪" : (u"骊", ), # 9A6A => 9A8A
+ u"骯" : (u"肮", ), # 9AAF => 80AE
+ u"髏" : (u"髅", ), # 9ACF => 9AC5
+ u"髒" : (u"脏", ), # 9AD2 => 810F
+ u"體" : (u"体", ), # 9AD4 => 4F53
+ u"髕" : (u"髌", ), # 9AD5 => 9ACC
+ u"髖" : (u"髋", ), # 9AD6 => 9ACB
+ u"髮" : (u"发", ), # 9AEE => 53D1
+ u"鬁" : (u"疬", ), # 9B01 => 75AC
+ u"鬆" : (u"松", ), # 9B06 => 677E
+ u"鬍" : (u"胡", ), # 9B0D => 80E1
+ u"鬚" : (u"须", ), # 9B1A => 987B
+ u"鬢" : (u"鬓", ), # 9B22 => 9B13
+ u"鬥" : (u"斗", ), # 9B25 => 6597
+ u"鬧" : (u"闹", ), # 9B27 => 95F9
+ u"鬩" : (u"阋", ), # 9B29 => 960B
+ u"鬮" : (u"阄", ), # 9B2E => 9604
+ u"鬱" : (u"郁", ), # 9B31 => 90C1
+ u"魎" : (u"魉", ), # 9B4E => 9B49
+ u"魘" : (u"魇", ), # 9B58 => 9B47
+ u"魚" : (u"鱼", ), # 9B5A => 9C7C
+ u"魛" : (u"鱽", ), # 9B5B => 9C7D
+ u"魯" : (u"鲁", ), # 9B6F => 9C81
+ u"魴" : (u"鲂", ), # 9B74 => 9C82
+ u"魷" : (u"鱿", ), # 9B77 => 9C7F
+ u"鮁" : (u"鲅", ), # 9B81 => 9C85
+ u"鮃" : (u"鲆", ), # 9B83 => 9C86
+ u"鮍" : (u"鲏", ), # 9B8D => 9C8F
+ u"鮐" : (u"鲐", ), # 9B90 => 9C90
+ u"鮑" : (u"鲍", ), # 9B91 => 9C8D
+ u"鮒" : (u"鲋", ), # 9B92 => 9C8B
+ u"鮓" : (u"鲊", ), # 9B93 => 9C8A
+ u"鮚" : (u"鲒", ), # 9B9A => 9C92
+ u"鮞" : (u"鲕", ), # 9B9E => 9C95
+ u"鮣" : (u"䲟", ), # 9BA3 => 4C9F
+ u"鮦" : (u"鲖", ), # 9BA6 => 9C96
+ u"鮪" : (u"鲔", ), # 9BAA => 9C94
+ u"鮫" : (u"鲛", ), # 9BAB => 9C9B
+ u"鮭" : (u"鲑", ), # 9BAD => 9C91
+ u"鮮" : (u"鲜", ), # 9BAE => 9C9C
+ u"鮺" : (u"鲝", ), # 9BBA => 9C9D
+ u"鯀" : (u"鲧", ), # 9BC0 => 9CA7
+ u"鯁" : (u"鲠", ), # 9BC1 => 9CA0
+ u"鯇" : (u"鲩", ), # 9BC7 => 9CA9
+ u"鯉" : (u"鲤", ), # 9BC9 => 9CA4
+ u"鯊" : (u"鲨", ), # 9BCA => 9CA8
+ u"鯔" : (u"鲻", ), # 9BD4 => 9CBB
+ u"鯖" : (u"鲭", ), # 9BD6 => 9CAD
+ u"鯗" : (u"鲞", ), # 9BD7 => 9C9E
+ u"鯛" : (u"鲷", ), # 9BDB => 9CB7
+ u"鯝" : (u"鲴", ), # 9BDD => 9CB4
+ u"鯡" : (u"鲱", ), # 9BE1 => 9CB1
+ u"鯢" : (u"鲵", ), # 9BE2 => 9CB5
+ u"鯤" : (u"鲲", ), # 9BE4 => 9CB2
+ u"鯧" : (u"鲳", ), # 9BE7 => 9CB3
+ u"鯨" : (u"鲸", ), # 9BE8 => 9CB8
+ u"鯪" : (u"鲮", ), # 9BEA => 9CAE
+ u"鯫" : (u"鲰", ), # 9BEB => 9CB0
+ u"鯰" : (u"鲇", u"鲶"), # 9BF0 => 9C87 9CB6
+ u"鯴" : (u"鲺", ), # 9BF4 => 9CBA
+ u"鯽" : (u"鲫", ), # 9BFD => 9CAB
+ u"鯿" : (u"鳊", ), # 9BFF => 9CCA
+ u"鰂" : (u"鲗", ), # 9C02 => 9C97
+ u"鰆" : (u"䲠", ), # 9C06 => 4CA0
+ u"鰈" : (u"鲽", ), # 9C08 => 9CBD
+ u"鰉" : (u"鳇", ), # 9C09 => 9CC7
+ u"鰌" : (u"䲡", ), # 9C0C => 4CA1
+ u"鰍" : (u"鳅", ), # 9C0D => 9CC5
+ u"鰐" : (u"鳄", ), # 9C10 => 9CC4
+ u"鰒" : (u"鳆", ), # 9C12 => 9CC6
+ u"鰓" : (u"鳃", ), # 9C13 => 9CC3
+ u"鰛" : (u"鳁", ), # 9C1B => 9CC1
+ u"鰜" : (u"鳒", ), # 9C1C => 9CD2
+ u"鰟" : (u"鳑", ), # 9C1F => 9CD1
+ u"鰠" : (u"鳋", ), # 9C20 => 9CCB
+ u"鰣" : (u"鲥", ), # 9C23 => 9CA5
+ u"鰥" : (u"鳏", ), # 9C25 => 9CCF
+ u"鰧" : (u"䲢", ), # 9C27 => 4CA2
+ u"鰨" : (u"鳎", ), # 9C28 => 9CCE
+ u"鰩" : (u"鳐", ), # 9C29 => 9CD0
+ u"鰭" : (u"鳍", ), # 9C2D => 9CCD
+ u"鰱" : (u"鲢", ), # 9C31 => 9CA2
+ u"鰲" : (u"鳌", ), # 9C32 => 9CCC
+ u"鰳" : (u"鳓", ), # 9C33 => 9CD3
+ u"鰵" : (u"鳘", ), # 9C35 => 9CD8
+ u"鰷" : (u"鲦", ), # 9C37 => 9CA6
+ u"鰹" : (u"鲣", ), # 9C39 => 9CA3
+ u"鰻" : (u"鳗", ), # 9C3B => 9CD7
+ u"鰼" : (u"鳛", ), # 9C3C => 9CDB
+ u"鰾" : (u"鳔", ), # 9C3E => 9CD4
+ u"鱅" : (u"鳙", ), # 9C45 => 9CD9
+ u"鱈" : (u"鳕", ), # 9C48 => 9CD5
+ u"鱉" : (u"鳖", ), # 9C49 => 9CD6
+ u"鱒" : (u"鳟", ), # 9C52 => 9CDF
+ u"鱔" : (u"鳝", ), # 9C54 => 9CDD
+ u"鱖" : (u"鳜", ), # 9C56 => 9CDC
+ u"鱗" : (u"鳞", ), # 9C57 => 9CDE
+ u"鱘" : (u"鲟", ), # 9C58 => 9C9F
+ u"鱝" : (u"鲼", ), # 9C5D => 9CBC
+ u"鱟" : (u"鲎", ), # 9C5F => 9C8E
+ u"鱠" : (u"鲙", ), # 9C60 => 9C99
+ u"鱣" : (u"鳣", ), # 9C63 => 9CE3
+ u"鱧" : (u"鳢", ), # 9C67 => 9CE2
+ u"鱨" : (u"鲿", ), # 9C68 => 9CBF
+ u"鱭" : (u"鲚", ), # 9C6D => 9C9A
+ u"鱷" : (u"鳄", ), # 9C77 => 9CC4
+ u"鱸" : (u"鲈", ), # 9C78 => 9C88
+ u"鱺" : (u"鲡", ), # 9C7A => 9CA1
+ u"鳥" : (u"鸟", ), # 9CE5 => 9E1F
+ u"鳧" : (u"凫", ), # 9CE7 => 51EB
+ u"鳩" : (u"鸠", ), # 9CE9 => 9E20
+ u"鳬" : (u"凫", ), # 9CEC => 51EB
+ u"鳳" : (u"凤", ), # 9CF3 => 51E4
+ u"鳴" : (u"鸣", ), # 9CF4 => 9E23
+ u"鳶" : (u"鸢", ), # 9CF6 => 9E22
+ u"鳾" : (u"䴓", ), # 9CFE => 4D13
+ u"鴆" : (u"鸩", ), # 9D06 => 9E29
+ u"鴇" : (u"鸨", ), # 9D07 => 9E28
+ u"鴉" : (u"鸦", ), # 9D09 => 9E26
+ u"鴒" : (u"鸰", ), # 9D12 => 9E30
+ u"鴕" : (u"鸵", ), # 9D15 => 9E35
+ u"鴛" : (u"鸳", ), # 9D1B => 9E33
+ u"鴝" : (u"鸲", ), # 9D1D => 9E32
+ u"鴞" : (u"鸮", ), # 9D1E => 9E2E
+ u"鴟" : (u"鸱", ), # 9D1F => 9E31
+ u"鴣" : (u"鸪", ), # 9D23 => 9E2A
+ u"鴦" : (u"鸯", ), # 9D26 => 9E2F
+ u"鴨" : (u"鸭", ), # 9D28 => 9E2D
+ u"鴯" : (u"鸸", ), # 9D2F => 9E38
+ u"鴰" : (u"鸹", ), # 9D30 => 9E39
+ u"鴴" : (u"鸻", ), # 9D34 => 9E3B
+ u"鴷" : (u"䴕", ), # 9D37 => 4D15
+ u"鴻" : (u"鸿", ), # 9D3B => 9E3F
+ u"鴿" : (u"鸽", ), # 9D3F => 9E3D
+ u"鵁" : (u"䴔", ), # 9D41 => 4D14
+ u"鵂" : (u"鸺", ), # 9D42 => 9E3A
+ u"鵃" : (u"鸼", ), # 9D43 => 9E3C
+ u"鵉" : (u"鸾", ), # 9D49 => 9E3E
+ u"鵑" : (u"鹃", ), # 9D51 => 9E43
+ u"鵒" : (u"鹆", ), # 9D52 => 9E46
+ u"鵓" : (u"鹁", ), # 9D53 => 9E41
+ u"鵜" : (u"鹈", ), # 9D5C => 9E48
+ u"鵝" : (u"鹅", ), # 9D5D => 9E45
+ u"鵠" : (u"鹄", ), # 9D60 => 9E44
+ u"鵡" : (u"鹉", ), # 9D61 => 9E49
+ u"鵪" : (u"鹌", ), # 9D6A => 9E4C
+ u"鵬" : (u"鹏", ), # 9D6C => 9E4F
+ u"鵮" : (u"鹐", ), # 9D6E => 9E50
+ u"鵯" : (u"鹎", ), # 9D6F => 9E4E
+ u"鵲" : (u"鹊", ), # 9D72 => 9E4A
+ u"鶄" : (u"䴖", ), # 9D84 => 4D16
+ u"鶇" : (u"鸫", ), # 9D87 => 9E2B
+ u"鶉" : (u"鹑", ), # 9D89 => 9E51
+ u"鶊" : (u"鹒", ), # 9D8A => 9E52
+ u"鶓" : (u"鹋", ), # 9D93 => 9E4B
+ u"鶖" : (u"鹙", ), # 9D96 => 9E59
+ u"鶘" : (u"鹕", ), # 9D98 => 9E55
+ u"鶚" : (u"鹗", ), # 9D9A => 9E57
+ u"鶡" : (u"鹖", ), # 9DA1 => 9E56
+ u"鶥" : (u"鹛", ), # 9DA5 => 9E5B
+ u"鶩" : (u"鹜", ), # 9DA9 => 9E5C
+ u"鶪" : (u"䴗", ), # 9DAA => 4D17
+ u"鶬" : (u"鸧", ), # 9DAC => 9E27
+ u"鶯" : (u"莺", ), # 9DAF => 83BA
+ u"鶴" : (u"鹤", ), # 9DB4 => 9E64
+ u"鶺" : (u"鹡", ), # 9DBA => 9E61
+ u"鶻" : (u"鹘", ), # 9DBB => 9E58
+ u"鶼" : (u"鹣", ), # 9DBC => 9E63
+ u"鶿" : (u"鹚", ), # 9DBF => 9E5A
+ u"鷀" : (u"鹚", ), # 9DC0 => 9E5A
+ u"鷂" : (u"鹞", ), # 9DC2 => 9E5E
+ u"鷄" : (u"鸡", ), # 9DC4 => 9E21
+ u"鷉" : (u"䴘", ), # 9DC9 => 4D18
+ u"鷓" : (u"鹧", ), # 9DD3 => 9E67
+ u"鷖" : (u"鹥", ), # 9DD6 => 9E65
+ u"鷗" : (u"鸥", ), # 9DD7 => 9E25
+ u"鷙" : (u"鸷", ), # 9DD9 => 9E37
+ u"鷚" : (u"鹨", ), # 9DDA => 9E68
+ u"鷥" : (u"鸶", ), # 9DE5 => 9E36
+ u"鷦" : (u"鹪", ), # 9DE6 => 9E6A
+ u"鷯" : (u"鹩", ), # 9DEF => 9E69
+ u"鷲" : (u"鹫", ), # 9DF2 => 9E6B
+ u"鷳" : (u"鹇", ), # 9DF3 => 9E47
+ u"鷸" : (u"鹬", ), # 9DF8 => 9E6C
+ u"鷹" : (u"鹰", ), # 9DF9 => 9E70
+ u"鷺" : (u"鹭", ), # 9DFA => 9E6D
+ u"鸇" : (u"鹯", ), # 9E07 => 9E6F
+ u"鸊" : (u"䴙", ), # 9E0A => 4D19
+ u"鸌" : (u"鹱", ), # 9E0C => 9E71
+ u"鸕" : (u"鸬", ), # 9E15 => 9E2C
+ u"鸚" : (u"鹦", ), # 9E1A => 9E66
+ u"鸛" : (u"鹳", ), # 9E1B => 9E73
+ u"鸝" : (u"鹂", ), # 9E1D => 9E42
+ u"鸞" : (u"鸾", ), # 9E1E => 9E3E
+ u"鹵" : (u"卤", ), # 9E75 => 5364
+ u"鹸" : (u"硷", ), # 9E78 => 7877
+ u"鹹" : (u"咸", ), # 9E79 => 54B8
+ u"鹺" : (u"鹾", ), # 9E7A => 9E7E
+ u"鹼" : (u"硷", ), # 9E7C => 7877
+ u"鹽" : (u"盐", ), # 9E7D => 76D0
+ u"麅" : (u"狍", ), # 9E85 => 72CD
+ u"麗" : (u"丽", ), # 9E97 => 4E3D
+ u"麥" : (u"麦", ), # 9EA5 => 9EA6
+ u"麩" : (u"麸", ), # 9EA9 => 9EB8
+ u"麯" : (u"曲", ), # 9EAF => 66F2
+ u"麵" : (u"面", ), # 9EB5 => 9762
+ u"麼" : (u"么", ), # 9EBC => 4E48
+ u"麽" : (u"么", ), # 9EBD => 4E48
+ u"黃" : (u"黄", ), # 9EC3 => 9EC4
+ u"黌" : (u"黉", ), # 9ECC => 9EC9
+ u"點" : (u"点", ), # 9EDE => 70B9
+ u"黨" : (u"党", ), # 9EE8 => 515A
+ u"黲" : (u"黪", ), # 9EF2 => 9EEA
+ u"黴" : (u"霉", ), # 9EF4 => 9709
+ u"黶" : (u"黡", ), # 9EF6 => 9EE1
+ u"黷" : (u"黩", ), # 9EF7 => 9EE9
+ u"黽" : (u"黾", ), # 9EFD => 9EFE
+ u"黿" : (u"鼋", ), # 9EFF => 9F0B
+ u"鼇" : (u"鳌", ), # 9F07 => 9CCC
+ u"鼉" : (u"鼍", ), # 9F09 => 9F0D
+ u"鼕" : (u"冬", ), # 9F15 => 51AC
+ u"鼴" : (u"鼹", ), # 9F34 => 9F39
+ u"齇" : (u"齄", ), # 9F47 => 9F44
+ u"齊" : (u"齐", ), # 9F4A => 9F50
+ u"齋" : (u"斋", ), # 9F4B => 658B
+ u"齎" : (u"赍", ), # 9F4E => 8D4D
+ u"齏" : (u"齑", ), # 9F4F => 9F51
+ u"齒" : (u"齿", ), # 9F52 => 9F7F
+ u"齔" : (u"龀", ), # 9F54 => 9F80
+ u"齙" : (u"龅", ), # 9F59 => 9F85
+ u"齜" : (u"龇", ), # 9F5C => 9F87
+ u"齟" : (u"龃", ), # 9F5F => 9F83
+ u"齠" : (u"龆", ), # 9F60 => 9F86
+ u"齡" : (u"龄", ), # 9F61 => 9F84
+ u"齣" : (u"出", ), # 9F63 => 51FA
+ u"齦" : (u"龈", ), # 9F66 => 9F88
+ u"齧" : (u"啮", ), # 9F67 => 556E
+ u"齪" : (u"龊", ), # 9F6A => 9F8A
+ u"齬" : (u"龉", ), # 9F6C => 9F89
+ u"齲" : (u"龋", ), # 9F72 => 9F8B
+ u"齶" : (u"腭", ), # 9F76 => 816D
+ u"齷" : (u"龌", ), # 9F77 => 9F8C
+ u"龍" : (u"龙", ), # 9F8D => 9F99
+ u"龐" : (u"庞", ), # 9F90 => 5E9E
+ u"龑" : (u"䶮", ), # 9F91 => 4DAE
+ u"龔" : (u"龚", ), # 9F94 => 9F9A
+ u"龕" : (u"龛", ), # 9F95 => 9F9B
+ u"龜" : (u"龟", ), # 9F9C => 9F9F
+}
diff --git a/scripts/update-simptrad-table.py b/scripts/update-simptrad-table.py
new file mode 100755
index 0000000..718231d
--- /dev/null
+++ b/scripts/update-simptrad-table.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+import sys
+sys.path.append(".")
+
+from ZhConversion import *
+from valid_hanzi import *
+
+def convert(s, d, n):
+ out = u""
+ end = len(s)
+ begin = 0
+ while begin < end:
+ for i in range(min(n, end - begin), 0, -1):
+ t = s[begin:begin+i]
+ t = d.get(t, t if i == 1 else None)
+ if t:
+ break
+ out = out + t
+ begin += i
+ return out
+
+def filter_more(records, n):
+ han = filter(lambda (k, v): len(k) <= n, records)
+ hand = dict(han)
+ hanm = filter(lambda (k, v): convert(k, hand, n) != v, records)
+ return hanm + han
+
+def filter_func(args):
+ k, v = args
+ # length is not equal or length > 6
+ if len(k) != len(v) or len(k) > 6:
+ return False
+ # k includes invalid hanzi
+ if not all(c in valid_hanzi for c in k):
+ return False
+ # v includes invalid hanzi
+ if not all(c in valid_hanzi for c in v):
+ return False
+
+ # # check chars in k and v
+ # for c1, c2 in zip(k, v):
+ # if c1 == c2:
+ # continue
+ # if c2 not in S_2_T.get(c1, []):
+ # return False
+ return True
+
+def get_records():
+ records = zh2Hant.items()
+
+ records = filter(filter_func, records)
+
+ maxlen = max(map(lambda (k,v): len(k), records))
+ for i in range(1, maxlen - 1):
+ records = filter_more(records, i)
+ records = map(lambda (k, v): (k.encode("utf8"), v.encode("utf8")), records)
+ records.sort()
+ return maxlen, records
+
+def main():
+ print "static const gchar *simp_to_trad[][2] = {"
+ maxlen, records = get_records()
+ for s, ts in records:
+ print ' { "%s", "%s" },' % (s, ts)
+ print "};"
+ print '#define SIMP_TO_TRAD_MAX_LEN (%d)' % maxlen
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/valid_hanzi.py b/scripts/valid_hanzi.py
new file mode 120000
index 0000000..8eb09ba
--- /dev/null
+++ b/scripts/valid_hanzi.py
@@ -0,0 +1 @@
+../data/db/android/valid_hanzi.py \ No newline at end of file
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..719dffb
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,6 @@
+*.o
+.deps
+.libs
+pinyin.xml
+pinyin.xml.in
+ibus-engine-pinyin
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..917c46a
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,193 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# @MAINTAINER_MODE_FALSE@skip_gentable=test -f $@ ||
+
+# AM_CFLAGS = \
+# @IBUS_CFLAGS@ \
+# @SQLITE_CFLAGS@ \
+# -DPKGDATADIR=\"$(pkgdatadir)\" \
+# $(NULL)
+# AM_CXXFLAGS = $(AM_CFLAGS)
+# AM_LDADD = \
+# @IBUS_LIBS@ \
+# @SQLITE_LIBS@ \
+# $(NULL)
+#
+
+libpyzyincludedir = $(includedir)/libpyzy-1.0
+libpyzyinclude_HEADERS = \
+ PyZyInputContext.h \
+ PyZyConfig.h \
+ $(NULL)
+lib_LTLIBRARIES = libpyzy.la
+
+#libexec_PROGRAMS = ibus-engine-pinyin
+libpyzy_built_c_sources = \
+ $(NULL)
+libpyzy_built_h_sources = \
+ PyZyBopomofoKeyboard.h \
+ PyZyPinyinParserTable.h \
+ PyZySimpTradConverterTable.h \
+ $(NULL)
+libpyzy_c_sources = \
+ PyZyInputContext.cc \
+ PyZyBopomofoContext.cc \
+ PyZyConfig.cc \
+ PyZyDatabase.cc \
+ PyZyDoublePinyinContext.cc \
+ PyZyFullPinyinContext.cc \
+ PyZyPhoneticContext.cc \
+ PyZyPhraseEditor.cc \
+ PyZyPinyinContext.cc \
+ PyZyPinyinParser.cc \
+ PyZySimpTradConverter.cc \
+ PyZyDynamicSpecialPhrase.cc \
+ PyZySpecialPhraseTable.cc \
+ $(NULL)
+# PyZyTest.cc
+libpyzy_h_sources = \
+ PyZyInputContext.h \
+ PyZyBopomofo.h \
+ PyZyBopomofoContext.h \
+ PyZyConfig.h \
+ PyZyDatabase.h \
+ PyZyDoublePinyinContext.h \
+ PyZyDoublePinyinTable.h \
+ PyZyFullPinyinContext.h \
+ PyZyPhoneticContext.h \
+ PyZyPhrase.h \
+ PyZyPhraseArray.h \
+ PyZyPhraseEditor.h \
+ PyZyPinyinArray.h \
+ PyZyPinyinContext.h \
+ PyZyPinyinParser.h \
+ PyZySimpTradConverter.h \
+ PyZySpecialPhrase.h \
+ PyZyDynamicSpecialPhrase.h \
+ PyZySpecialPhraseTable.h \
+ PyZyString.h \
+ PyZyTypes.h \
+ PyZyUtil.h \
+ $(NULL)
+
+libpyzy_la_SOURCES = \
+ $(libpyzy_c_sources) \
+ $(libpyzy_h_sources) \
+ $(libpyzy_built_c_sources) \
+ $(libpyzy_built_h_sources) \
+ $(NULL)
+
+
+libpyzy_la_CXXFLAGS = \
+ @GLIB2_CFLAGS@ \
+ @SQLITE_CFLAGS@ \
+ @OPENCC_CFLAGS@ \
+ -DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\" \
+ -DPKGDATADIR=\"$(pkgdatadir)\" \
+ -DLIBEXECDIR=\"$(libexecdir)\" \
+ $(NULL)
+
+if HAVE_BOOST
+libpyzy_la_CXXFLAGS += \
+ @BOOST_CPPFLAGS@ \
+ $(NULL)
+else
+libpyzy_la_CXXFLAGS += \
+ -std=c++0x \
+ $(NULL)
+endif
+
+libpyzy_la_LIBADD = \
+ @GLIB2_LIBS@ \
+ @SQLITE_LIBS@ \
+ @OPENCC_LIBS@ \
+ -lgtest \
+ $(NULL)
+
+if HAVE_LIBUUID
+libpyzy_la_CXXFLAGS += $(LIBUUID_CFLAGS)
+libpyzy_la_LIBADD += $(LIBUUID_LIBS)
+endif
+
+BUILT_SOURCES = \
+ $(libpyzy_built_c_sources) \
+ $(libpyzy_built_h_sources) \
+ $(NULL)
+
+pkgdata_DATA = \
+ phrases.txt \
+ $(NULL)
+
+component_DATA = \
+ pinyin.xml \
+ $(NULL)
+componentdir = @datadir@/ibus/component
+
+EXTRA_DIST = \
+ pinyin.xml.in \
+ phrases.txt \
+ $(NULL)
+
+CLEANFILES = \
+ pinyin.xml \
+ ZhConversion.* \
+ $(NULL)
+
+PyZyBopomofoKeyboard.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genbopomofokeyboard.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZyPinyinParserTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genpytable.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZySimpTradConverterTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/update-simptrad-table.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+update-simptrad-table:
+ $(RM) ZhConversion.php ZhConversion.py PyZySimpTradConverterTable.h
+ $(MAKE) ZhConversion.php
+ $(MAKE) ZhConversion.py
+ $(MAKE) PyZySimpTradConverterTable.h
+
+pinyin.xml: pinyin.xml.in
+ $(AM_V_GEN) \
+ ( \
+ libexecdir=${libexecdir}; \
+ pkgdatadir=${pkgdatadir}; \
+ s=`cat $<`; \
+ eval "echo \"$${s}\""; \
+ ) > $@
+
+ZhConversion.php:
+ $(AM_V_GEN) \
+ svn cat http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/ZhConversion.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
+ZhConversion.py: ZhConversion.php
+ $(AM_V_GEN) \
+ php $(top_srcdir)/scripts/php_2_py.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
diff --git a/src/Makefile.am.lib b/src/Makefile.am.lib
new file mode 100644
index 0000000..917c46a
--- /dev/null
+++ b/src/Makefile.am.lib
@@ -0,0 +1,193 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# @MAINTAINER_MODE_FALSE@skip_gentable=test -f $@ ||
+
+# AM_CFLAGS = \
+# @IBUS_CFLAGS@ \
+# @SQLITE_CFLAGS@ \
+# -DPKGDATADIR=\"$(pkgdatadir)\" \
+# $(NULL)
+# AM_CXXFLAGS = $(AM_CFLAGS)
+# AM_LDADD = \
+# @IBUS_LIBS@ \
+# @SQLITE_LIBS@ \
+# $(NULL)
+#
+
+libpyzyincludedir = $(includedir)/libpyzy-1.0
+libpyzyinclude_HEADERS = \
+ PyZyInputContext.h \
+ PyZyConfig.h \
+ $(NULL)
+lib_LTLIBRARIES = libpyzy.la
+
+#libexec_PROGRAMS = ibus-engine-pinyin
+libpyzy_built_c_sources = \
+ $(NULL)
+libpyzy_built_h_sources = \
+ PyZyBopomofoKeyboard.h \
+ PyZyPinyinParserTable.h \
+ PyZySimpTradConverterTable.h \
+ $(NULL)
+libpyzy_c_sources = \
+ PyZyInputContext.cc \
+ PyZyBopomofoContext.cc \
+ PyZyConfig.cc \
+ PyZyDatabase.cc \
+ PyZyDoublePinyinContext.cc \
+ PyZyFullPinyinContext.cc \
+ PyZyPhoneticContext.cc \
+ PyZyPhraseEditor.cc \
+ PyZyPinyinContext.cc \
+ PyZyPinyinParser.cc \
+ PyZySimpTradConverter.cc \
+ PyZyDynamicSpecialPhrase.cc \
+ PyZySpecialPhraseTable.cc \
+ $(NULL)
+# PyZyTest.cc
+libpyzy_h_sources = \
+ PyZyInputContext.h \
+ PyZyBopomofo.h \
+ PyZyBopomofoContext.h \
+ PyZyConfig.h \
+ PyZyDatabase.h \
+ PyZyDoublePinyinContext.h \
+ PyZyDoublePinyinTable.h \
+ PyZyFullPinyinContext.h \
+ PyZyPhoneticContext.h \
+ PyZyPhrase.h \
+ PyZyPhraseArray.h \
+ PyZyPhraseEditor.h \
+ PyZyPinyinArray.h \
+ PyZyPinyinContext.h \
+ PyZyPinyinParser.h \
+ PyZySimpTradConverter.h \
+ PyZySpecialPhrase.h \
+ PyZyDynamicSpecialPhrase.h \
+ PyZySpecialPhraseTable.h \
+ PyZyString.h \
+ PyZyTypes.h \
+ PyZyUtil.h \
+ $(NULL)
+
+libpyzy_la_SOURCES = \
+ $(libpyzy_c_sources) \
+ $(libpyzy_h_sources) \
+ $(libpyzy_built_c_sources) \
+ $(libpyzy_built_h_sources) \
+ $(NULL)
+
+
+libpyzy_la_CXXFLAGS = \
+ @GLIB2_CFLAGS@ \
+ @SQLITE_CFLAGS@ \
+ @OPENCC_CFLAGS@ \
+ -DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\" \
+ -DPKGDATADIR=\"$(pkgdatadir)\" \
+ -DLIBEXECDIR=\"$(libexecdir)\" \
+ $(NULL)
+
+if HAVE_BOOST
+libpyzy_la_CXXFLAGS += \
+ @BOOST_CPPFLAGS@ \
+ $(NULL)
+else
+libpyzy_la_CXXFLAGS += \
+ -std=c++0x \
+ $(NULL)
+endif
+
+libpyzy_la_LIBADD = \
+ @GLIB2_LIBS@ \
+ @SQLITE_LIBS@ \
+ @OPENCC_LIBS@ \
+ -lgtest \
+ $(NULL)
+
+if HAVE_LIBUUID
+libpyzy_la_CXXFLAGS += $(LIBUUID_CFLAGS)
+libpyzy_la_LIBADD += $(LIBUUID_LIBS)
+endif
+
+BUILT_SOURCES = \
+ $(libpyzy_built_c_sources) \
+ $(libpyzy_built_h_sources) \
+ $(NULL)
+
+pkgdata_DATA = \
+ phrases.txt \
+ $(NULL)
+
+component_DATA = \
+ pinyin.xml \
+ $(NULL)
+componentdir = @datadir@/ibus/component
+
+EXTRA_DIST = \
+ pinyin.xml.in \
+ phrases.txt \
+ $(NULL)
+
+CLEANFILES = \
+ pinyin.xml \
+ ZhConversion.* \
+ $(NULL)
+
+PyZyBopomofoKeyboard.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genbopomofokeyboard.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZyPinyinParserTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genpytable.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZySimpTradConverterTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/update-simptrad-table.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+update-simptrad-table:
+ $(RM) ZhConversion.php ZhConversion.py PyZySimpTradConverterTable.h
+ $(MAKE) ZhConversion.php
+ $(MAKE) ZhConversion.py
+ $(MAKE) PyZySimpTradConverterTable.h
+
+pinyin.xml: pinyin.xml.in
+ $(AM_V_GEN) \
+ ( \
+ libexecdir=${libexecdir}; \
+ pkgdatadir=${pkgdatadir}; \
+ s=`cat $<`; \
+ eval "echo \"$${s}\""; \
+ ) > $@
+
+ZhConversion.php:
+ $(AM_V_GEN) \
+ svn cat http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/ZhConversion.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
+ZhConversion.py: ZhConversion.php
+ $(AM_V_GEN) \
+ php $(top_srcdir)/scripts/php_2_py.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
diff --git a/src/Makefile.am.test b/src/Makefile.am.test
new file mode 100644
index 0000000..f81368b
--- /dev/null
+++ b/src/Makefile.am.test
@@ -0,0 +1,186 @@
+# vim:set noet ts=4:
+#
+# ibus-pinyin - The Chinese PinYin engine for IBus
+#
+# Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# @MAINTAINER_MODE_FALSE@skip_gentable=test -f $@ ||
+
+# AM_CFLAGS = \
+# @IBUS_CFLAGS@ \
+# @SQLITE_CFLAGS@ \
+# -DPKGDATADIR=\"$(pkgdatadir)\" \
+# $(NULL)
+# AM_CXXFLAGS = $(AM_CFLAGS)
+# AM_LDADD = \
+# @IBUS_LIBS@ \
+# @SQLITE_LIBS@ \
+# $(NULL)
+# p
+
+libexec_PROGRAMS = ibus-engine-pinyin
+ibus_engine_pinyin_built_c_sources = \
+ $(NULL)
+ibus_engine_pinyin_built_h_sources = \
+ PyZyBopomofoKeyboard.h \
+ PyZyPinyinParserTable.h \
+ PyZySimpTradConverterTable.h \
+ $(NULL)
+ibus_engine_pinyin_c_sources = \
+ PyZyInputContext.cc \
+ PyZyBopomofoContext.cc \
+ PyZyConfig.cc \
+ PyZyDatabase.cc \
+ PyZyDoublePinyinContext.cc \
+ PyZyFullPinyinContext.cc \
+ PyZyPhoneticContext.cc \
+ PyZyPhraseEditor.cc \
+ PyZyPinyinContext.cc \
+ PyZyPinyinParser.cc \
+ PyZySimpTradConverter.cc \
+ PyZyDynamicSpecialPhrase.cc \
+ PyZySpecialPhraseTable.cc \
+ PyZyTest.cc \
+ $(NULL)
+ibus_engine_pinyin_h_sources = \
+ PyZyInputContext.h \
+ PyZyBopomofo.h \
+ PyZyBopomofoContext.h \
+ PyZyConfig.h \
+ PyZyDatabase.h \
+ PyZyDoublePinyinContext.h \
+ PyZyDoublePinyinTable.h \
+ PyZyFullPinyinContext.h \
+ PyZyPhoneticContext.h \
+ PyZyPhrase.h \
+ PyZyPhraseArray.h \
+ PyZyPhraseEditor.h \
+ PyZyPinyinArray.h \
+ PyZyPinyinContext.h \
+ PyZyPinyinParser.h \
+ PyZySimpTradConverter.h \
+ PyZySpecialPhrase.h \
+ PyZyDynamicSpecialPhrase.h \
+ PyZySpecialPhraseTable.h \
+ PyZyString.h \
+ PyZyTypes.h \
+ PyZyUtil.h \
+ $(NULL)
+
+ibus_engine_pinyin_SOURCES = \
+ $(ibus_engine_pinyin_c_sources) \
+ $(ibus_engine_pinyin_h_sources) \
+ $(ibus_engine_pinyin_built_c_sources) \
+ $(ibus_engine_pinyin_built_h_sources) \
+ $(NULL)
+
+
+ibus_engine_pinyin_CXXFLAGS = \
+ @GLIB2_CFLAGS@ \
+ @SQLITE_CFLAGS@ \
+ @OPENCC_CFLAGS@ \
+ -DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\" \
+ -DPKGDATADIR=\"$(pkgdatadir)\" \
+ -DLIBEXECDIR=\"$(libexecdir)\" \
+ $(NULL)
+
+if HAVE_BOOST
+ibus_engine_pinyin_CXXFLAGS += \
+ @BOOST_CPPFLAGS@ \
+ $(NULL)
+else
+ibus_engine_pinyin_CXXFLAGS += \
+ -std=c++0x \
+ $(NULL)
+endif
+
+ibus_engine_pinyin_LDADD = \
+ @GLIB2_LIBS@ \
+ @SQLITE_LIBS@ \
+ @OPENCC_LIBS@ \
+ -lgtest \
+ $(NULL)
+
+if HAVE_LIBUUID
+ibus_engine_pinyin_CXXFLAGS += $(LIBUUID_CFLAGS)
+ibus_engine_pinyin_LDADD += $(LIBUUID_LIBS)
+endif
+
+BUILT_SOURCES = \
+ $(ibus_engine_built_c_sources) \
+ $(ibus_engine_built_h_sources) \
+ $(NULL)
+
+pkgdata_DATA = \
+ phrases.txt \
+ $(NULL)
+
+component_DATA = \
+ pinyin.xml \
+ $(NULL)
+componentdir = @datadir@/ibus/component
+
+EXTRA_DIST = \
+ pinyin.xml.in \
+ phrases.txt \
+ $(NULL)
+
+CLEANFILES = \
+ pinyin.xml \
+ ZhConversion.* \
+ $(NULL)
+
+PyZyBopomofoKeyboard.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genbopomofokeyboard.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZyPinyinParserTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/genpytable.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+PyZySimpTradConverterTable.h:
+ $(AM_V_GEN) \
+ $(PYTHON) $(top_srcdir)/scripts/update-simptrad-table.py > $@ || \
+ ( $(RM) $@; exit 1 )
+
+update-simptrad-table:
+ $(RM) ZhConversion.php ZhConversion.py PyZySimpTradConverterTable.h
+ $(MAKE) ZhConversion.php
+ $(MAKE) ZhConversion.py
+ $(MAKE) PyZySimpTradConverterTable.h
+
+pinyin.xml: pinyin.xml.in
+ $(AM_V_GEN) \
+ ( \
+ libexecdir=${libexecdir}; \
+ pkgdatadir=${pkgdatadir}; \
+ s=`cat $<`; \
+ eval "echo \"$${s}\""; \
+ ) > $@
+
+ZhConversion.php:
+ $(AM_V_GEN) \
+ svn cat http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/ZhConversion.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
+ZhConversion.py: ZhConversion.php
+ $(AM_V_GEN) \
+ php $(top_srcdir)/scripts/php_2_py.php > $@ || \
+ ( $(RM) $@; exit 1 )
+
diff --git a/src/PyZyBopomofo.h b/src/PyZyBopomofo.h
new file mode 100644
index 0000000..a1eadc4
--- /dev/null
+++ b/src/PyZyBopomofo.h
@@ -0,0 +1,80 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (c) 2010 BYVoid <byvoid1@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __BOPOMOFO_H_
+#define __BOPOMOFO_H_
+
+#define MAX_BOPOMOFO_LEN (4)
+
+#define BOPOMOFO_ZERO (0)
+#define BOPOMOFO_B (1)
+#define BOPOMOFO_P (2)
+#define BOPOMOFO_M (3)
+#define BOPOMOFO_F (4)
+#define BOPOMOFO_D (5)
+#define BOPOMOFO_T (6)
+#define BOPOMOFO_N (7)
+#define BOPOMOFO_L (8)
+#define BOPOMOFO_G (9)
+#define BOPOMOFO_K (10)
+#define BOPOMOFO_H (11)
+#define BOPOMOFO_J (12)
+#define BOPOMOFO_Q (13)
+#define BOPOMOFO_X (14)
+#define BOPOMOFO_ZH (15)
+#define BOPOMOFO_CH (16)
+#define BOPOMOFO_SH (17)
+#define BOPOMOFO_R (18)
+#define BOPOMOFO_Z (19)
+#define BOPOMOFO_C (20)
+#define BOPOMOFO_S (21)
+#define BOPOMOFO_I (22)
+#define BOPOMOFO_U (23)
+#define BOPOMOFO_V (24)
+#define BOPOMOFO_A (25)
+#define BOPOMOFO_O (26)
+#define BOPOMOFO_E (27)
+#define BOPOMOFO_E2 (28)
+#define BOPOMOFO_AI (29)
+#define BOPOMOFO_EI (30)
+#define BOPOMOFO_AO (31)
+#define BOPOMOFO_OU (32)
+#define BOPOMOFO_AN (33)
+#define BOPOMOFO_EN (34)
+#define BOPOMOFO_ANG (35)
+#define BOPOMOFO_ENG (36)
+#define BOPOMOFO_ER (37)
+#define BOPOMOFO_TONE_2 (38)
+#define BOPOMOFO_TONE_3 (39)
+#define BOPOMOFO_TONE_4 (40)
+#define BOPOMOFO_TONE_5 (41)
+
+const static wchar_t bopomofo_char[] = {
+ L'\0', L'ㄅ', L'ㄆ', L'ㄇ', L'ㄈ', L'ㄉ', L'ㄊ', L'ㄋ', L'ㄌ', L'ㄍ', L'ㄎ',
+ L'ㄏ', L'ㄐ', L'ㄑ', L'ㄒ', L'ㄓ', L'ㄔ', L'ㄕ', L'ㄖ', L'ㄗ', L'ㄘ', L'ㄙ',
+
+ L'ㄧ', L'ㄨ', L'ㄩ', L'ㄚ', L'ㄛ', L'ㄜ', L'ㄝ', L'ㄞ', L'ㄟ', L'ㄠ', L'ㄡ',
+ L'ㄢ', L'ㄣ', L'ㄤ', L'ㄥ', L'ㄦ',
+
+ L'ˊ', L'ˇ', L'ˋ', L'˙',
+};
+
+#endif /* __BOPOMOFO_H_ */
diff --git a/src/PyZyBopomofoContext.cc b/src/PyZyBopomofoContext.cc
new file mode 100644
index 0000000..7e15ff6
--- /dev/null
+++ b/src/PyZyBopomofoContext.cc
@@ -0,0 +1,502 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (c) 2010 BYVoid <byvoid1@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyBopomofoContext.h"
+#include "PyZyConfig.h"
+#include "PyZySimpTradConverter.h"
+#include "PyZyPinyinParser.h"
+
+namespace PyZy {
+#include "PyZyBopomofoKeyboard.h"
+
+const static gchar * bopomofo_select_keys[] = {
+ "1234567890",
+ "asdfghjkl;",
+ "1qaz2wsxed",
+ "asdfzxcvgb",
+ "1234qweras",
+ "aoeu;qjkix",
+ "aoeuhtnsid",
+ "aoeuidhtns",
+ "qweasdzxcr"
+};
+
+BopomofoContext::BopomofoContext (Config & config, PhoneticContext::Observer *observer)
+ : PhoneticContext (config, observer),
+ m_select_mode (FALSE)
+{
+}
+
+BopomofoContext::~BopomofoContext (void)
+{
+}
+
+void
+BopomofoContext::reset ()
+{
+ m_select_mode = FALSE;
+ PhoneticContext::reset ();
+}
+
+gboolean
+BopomofoContext::insert (gint ch)
+{
+ /* is full */
+ if (G_UNLIKELY (m_text.length () >= MAX_PINYIN_LEN))
+ return TRUE;
+
+ m_text.insert (m_cursor++, ch);
+
+ if (G_UNLIKELY (!(m_config.option () & PINYIN_INCOMPLETE_PINYIN))) {
+ updateSpecialPhrases ();
+ updatePinyin ();
+ }
+ else if (G_LIKELY (m_cursor <= m_pinyin_len + 2)) {
+ updateSpecialPhrases ();
+ updatePinyin ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::removeCharBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+ m_text.erase (m_cursor, 1);
+
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::removeCharAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor, 1);
+ updatePreeditText ();
+ updateAuxiliaryText ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::removeWordBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ guint cursor;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ cursor = m_pinyin_len;
+ }
+ else {
+ const Pinyin & p = *m_pinyin.back ();
+ cursor = m_cursor - p.len;
+ m_pinyin_len -= p.len;
+ m_pinyin.pop_back ();
+ }
+
+ m_text.erase (cursor, m_cursor - cursor);
+ m_cursor = cursor;
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::removeWordAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor, -1);
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::moveCursorLeft (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::moveCursorRight (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor ++;
+
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::moveCursorLeftByWord (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ m_cursor = m_pinyin_len;
+ return TRUE;
+ }
+
+ const Pinyin & p = *m_pinyin.back ();
+ m_cursor -= p.len;
+ m_pinyin_len -= p.len;
+ m_pinyin.pop_back ();
+
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::moveCursorRightByWord (void)
+{
+ return moveCursorToEnd ();
+}
+
+gboolean
+BopomofoContext::moveCursorToBegin (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor = 0;
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+
+ return TRUE;
+}
+
+gboolean
+BopomofoContext::moveCursorToEnd (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor = m_text.length ();
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+bool
+BopomofoContext::processKeyEvent (unsigned short key_event)
+{
+ const guint key_code = key_event & 0x00ff;
+ const guint vkey_code = key_event & 0xff00;
+
+ if (vkey_code == 0 && keyvalToBopomofo (key_code) != BOPOMOFO_ZERO) {
+ m_select_mode = FALSE;
+ return insert (key_code);
+ }
+
+ switch (vkey_code) {
+ case VKEY_BOPOMOFO_SELECT_MODE:
+ m_select_mode = TRUE;
+ return TRUE;
+
+ case VKEY_CANDIDATE_SELECT:
+ case VKEY_CANDIDATE_FOCUS:
+ case VKEY_CANDIDATE_RESET:
+ case VKEY_PAGE_PREVIOUS:
+ case VKEY_PAGE_NEXT:
+ case VKEY_PAGE_BEGIN:
+ case VKEY_PAGE_END:
+ m_select_mode = TRUE;
+ break;
+
+ case VKEY_CURSOR_RIGHT:
+ case VKEY_CURSOR_LEFT:
+ case VKEY_CURSOR_RIGHT_BY_WORD:
+ case VKEY_CURSOR_LEFT_BY_WORD:
+ case VKEY_CURSOR_TO_BEGIN:
+ case VKEY_CURSOR_TO_END:
+ case VKEY_DELETE_CHARACTER_AFTER:
+ case VKEY_DELETE_WORD_BEFORE:
+ case VKEY_DELETE_WORD_AFTER:
+ m_select_mode = FALSE;
+ break;
+ }
+
+ return PhoneticContext::processKeyEvent (key_event);
+}
+
+void
+BopomofoContext::updatePinyin (void)
+{
+ if (G_UNLIKELY (m_text.empty ())) {
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+ }
+ else {
+ bopomofo.clear();
+ for(String::iterator i = m_text.begin (); i != m_text.end (); ++i) {
+ bopomofo += bopomofo_char[keyvalToBopomofo (*i)];
+ }
+
+ m_pinyin_len = PinyinParser::parseBopomofo (bopomofo, // bopomofo
+ m_cursor, // text length
+ m_config.option (), // option
+ m_pinyin, // result
+ MAX_PHRASE_LEN); // max result length
+ }
+
+ updatePhraseEditor ();
+ update ();
+}
+
+void
+BopomofoContext::updateAuxiliaryText (void)
+{
+ if (G_UNLIKELY (m_text.empty () ||
+ m_phrase_editor.candidates ().size () == 0)) {
+ m_auxiliary_text = "";
+ m_observer->auxiliaryTextChanged ();
+ return;
+ }
+
+ m_buffer.clear ();
+
+ if (m_selected_special_phrase.empty ()) {
+ guint si = 0;
+ guint m_text_len = m_text.length();
+ for (guint i = m_phrase_editor.cursor (); i < m_pinyin.size (); ++i) {
+ if (G_LIKELY (i != m_phrase_editor.cursor ()))
+ m_buffer << ',';
+ m_buffer << (gunichar *)m_pinyin[i]->bopomofo;
+ for (guint sj = 0; m_pinyin[i]->bopomofo[sj] == bopomofo_char[keyvalToBopomofo(m_text.c_str()[si])] ; si++,sj++);
+
+ if (si < m_text_len) {
+ gint ch = keyvalToBopomofo(m_text.c_str()[si]);
+ if (ch >= BOPOMOFO_TONE_2 && ch <= BOPOMOFO_TONE_5) {
+ m_buffer.appendUnichar(bopomofo_char[ch]);
+ ++si;
+ }
+ }
+ }
+
+ for (String::iterator i = m_text.begin () + m_pinyin_len; i != m_text.end (); i++) {
+ if (m_cursor == (guint)(i - m_text.begin ()))
+ m_buffer << '|';
+ m_buffer.appendUnichar (bopomofo_char[keyvalToBopomofo (*i)]);
+ }
+ if (m_cursor == m_text.length ())
+ m_buffer << '|';
+ }
+ else {
+ if (m_cursor < m_text.size ()) {
+ m_buffer << '|' << textAfterCursor ();
+ }
+ }
+
+ m_auxiliary_text = m_buffer;
+ m_observer->auxiliaryTextChanged ();
+}
+
+void
+BopomofoContext::commit ()
+{
+ if (G_UNLIKELY (m_buffer.empty ()))
+ return;
+
+ m_buffer.clear ();
+
+ if (m_select_mode) {
+ m_buffer << m_phrase_editor.selectedString ();
+
+ const gchar *p;
+
+ if (m_selected_special_phrase.empty ()) {
+ p = textAfterPinyin (m_buffer.utf8Length ());
+ }
+ else {
+ m_buffer << m_selected_special_phrase;
+ p = textAfterCursor ();
+ }
+
+ while (*p != '\0') {
+ m_buffer.appendUnichar ((gunichar)bopomofo_char[keyvalToBopomofo (*p++)]);
+ }
+ }
+ else {
+ m_buffer << m_text;
+ }
+
+ m_phrase_editor.commit ();
+ reset ();
+ update ();
+ m_observer->commitText (m_buffer);
+}
+
+void
+BopomofoContext::updatePreeditText (void)
+{
+ /* preedit text = selected phrases + highlight candidate + rest text */
+ if (G_UNLIKELY (m_phrase_editor.empty () && m_text.empty ())) {
+ m_preedit_text.clear ();
+ m_observer->preeditTextChanged ();
+ return;
+ }
+
+ guint edit_begin_word = 0;
+ guint edit_end_word = 0;
+ guint edit_begin_byte = 0;
+ guint edit_end_byte = 0;
+
+ m_buffer.clear ();
+ m_preedit_text.clear ();
+
+ /* add selected phrases */
+ m_buffer << m_phrase_editor.selectedString ();
+
+ if (G_UNLIKELY (! m_selected_special_phrase.empty ())) {
+ /* add selected special phrase */
+ m_buffer << m_selected_special_phrase;
+ edit_begin_word = edit_end_word = m_buffer.utf8Length ();
+ edit_begin_byte = edit_end_byte = m_buffer.size ();
+
+ /* append text after cursor */
+ m_buffer << textAfterCursor ();
+ }
+ else {
+ edit_begin_word = m_buffer.utf8Length ();
+ edit_begin_byte = m_buffer.size ();
+
+ if (m_candidates.size () > 0) {
+ guint index = m_focused_candidate;
+
+ if (index < m_special_phrases.size ()) {
+ m_buffer << m_special_phrases[index].c_str ();
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+
+ /* append text after cursor */
+ m_buffer << textAfterCursor ();
+ }
+ else {
+ const Phrase & candidate = m_phrase_editor.candidate (index - m_special_phrases.size ());
+ if (m_text.size () == m_cursor) {
+ /* cursor at end */
+ if (m_config.modeSimp ())
+ m_buffer << candidate;
+ else
+ SimpTradConverter::simpToTrad (candidate, m_buffer);
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+
+ /* append rest text */
+ for (const gchar *p=m_text.c_str() + m_pinyin_len; *p ;++p) {
+ m_buffer.appendUnichar(bopomofo_char[keyvalToBopomofo(*p)]);
+ }
+ }
+ else {
+ for (const gchar *p = m_text.c_str (); *p; ++p) {
+ if ((guint) (p - m_text.c_str ()) == m_cursor)
+ m_buffer << ' ';
+ m_buffer.appendUnichar (bopomofo_char[keyvalToBopomofo (*p)]);
+ }
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+ }
+ }
+ }
+ else {
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+ for (const gchar *p=m_text.c_str () + m_pinyin_len; *p ; ++p) {
+ m_buffer.appendUnichar (bopomofo_char[keyvalToBopomofo (*p)]);
+ }
+ }
+ }
+
+ if (edit_end_byte != 0) {
+ m_preedit_text.selected_text = m_buffer.substr (0, edit_begin_byte);
+ m_preedit_text.candidate_text = m_buffer.substr (edit_begin_byte, edit_end_byte - edit_begin_byte);
+ m_preedit_text.rest_text = m_buffer.substr (edit_end_byte);
+ }
+
+ m_observer->preeditTextChanged ();
+}
+
+static gint
+keyboard_cmp (gconstpointer p1, gconstpointer p2)
+{
+ const gint s1 = GPOINTER_TO_INT (p1);
+ const guint8 *s2 = (const guint8 *) p2;
+ return s1 - s2[0];
+}
+
+gint
+BopomofoContext::keyvalToBopomofo(gint ch)
+{
+ const gint keyboard = m_config.bopomofoKeyboardMapping ();
+ const guint8 *brs;
+ brs = (const guint8 *) std::bsearch (GINT_TO_POINTER (ch),
+ bopomofo_keyboard[keyboard],
+ G_N_ELEMENTS (bopomofo_keyboard[keyboard]),
+ sizeof(bopomofo_keyboard[keyboard][0]),
+ keyboard_cmp);
+ if (G_UNLIKELY (brs == NULL))
+ return BOPOMOFO_ZERO;
+ return brs[1];
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyBopomofoContext.h b/src/PyZyBopomofoContext.h
new file mode 100644
index 0000000..c9f9ffb
--- /dev/null
+++ b/src/PyZyBopomofoContext.h
@@ -0,0 +1,69 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (c) 2010 BYVoid <byvoid1@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __BOPOMOFO_CONTEXT_H_
+#define __BOPOMOFO_CONTEXT_H_
+
+#include "PyZyPhoneticContext.h"
+
+namespace PyZy {
+
+class Config;
+
+class BopomofoContext : public PhoneticContext {
+
+public:
+ BopomofoContext (Config & config, PhoneticContext::Observer *observer);
+ ~BopomofoContext (void);
+ bool processKeyEvent (unsigned short key_event);
+ void reset ();
+
+protected:
+ std::wstring bopomofo;
+ gboolean m_select_mode;
+
+ gboolean processBopomofo (guint keyval, guint keycode, guint modifiers);
+
+ void updateAuxiliaryText ();
+ void updatePinyin ();
+ void updatePreeditText ();
+
+ void commit ();
+
+ gboolean insert (gint ch);
+ gint keyvalToBopomofo(gint ch);
+
+ gboolean removeCharBefore (void);
+ gboolean removeCharAfter (void);
+ gboolean removeWordBefore (void);
+ gboolean removeWordAfter (void);
+
+ gboolean moveCursorLeft (void);
+ gboolean moveCursorRight (void);
+ gboolean moveCursorLeftByWord (void);
+ gboolean moveCursorRightByWord (void);
+ gboolean moveCursorToBegin (void);
+ gboolean moveCursorToEnd (void);
+};
+
+};
+
+#endif // __BOPOMOFO_CONTEXT_H_
diff --git a/src/PyZyBopomofoKeyboard.h b/src/PyZyBopomofoKeyboard.h
new file mode 100644
index 0000000..1ec0e81
--- /dev/null
+++ b/src/PyZyBopomofoKeyboard.h
@@ -0,0 +1,203 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (c) 2010 BYVoid <byvoid1@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __BOPOMOFO_KEYBOARD_H_
+#define __BOPOMOFO_KEYBOARD_H_
+
+#include "PyZyBopomofo.h"
+
+static const guint8
+bopomofo_keyboard[][41][2] = {
+ {
+ { ',' , BOPOMOFO_E2 },
+ { '-' , BOPOMOFO_ER },
+ { '.' , BOPOMOFO_OU },
+ { '/' , BOPOMOFO_ENG },
+ { '0' , BOPOMOFO_AN },
+ { '1' , BOPOMOFO_B },
+ { '2' , BOPOMOFO_D },
+ { '3' , BOPOMOFO_TONE_3 },
+ { '4' , BOPOMOFO_TONE_4 },
+ { '5' , BOPOMOFO_ZH },
+ { '6' , BOPOMOFO_TONE_2 },
+ { '7' , BOPOMOFO_TONE_5 },
+ { '8' , BOPOMOFO_A },
+ { '9' , BOPOMOFO_AI },
+ { ';' , BOPOMOFO_ANG },
+ { 'a' , BOPOMOFO_M },
+ { 'b' , BOPOMOFO_R },
+ { 'c' , BOPOMOFO_H },
+ { 'd' , BOPOMOFO_K },
+ { 'e' , BOPOMOFO_G },
+ { 'f' , BOPOMOFO_Q },
+ { 'g' , BOPOMOFO_SH },
+ { 'h' , BOPOMOFO_C },
+ { 'i' , BOPOMOFO_O },
+ { 'j' , BOPOMOFO_U },
+ { 'k' , BOPOMOFO_E },
+ { 'l' , BOPOMOFO_AO },
+ { 'm' , BOPOMOFO_V },
+ { 'n' , BOPOMOFO_S },
+ { 'o' , BOPOMOFO_EI },
+ { 'p' , BOPOMOFO_EN },
+ { 'q' , BOPOMOFO_P },
+ { 'r' , BOPOMOFO_J },
+ { 's' , BOPOMOFO_N },
+ { 't' , BOPOMOFO_CH },
+ { 'u' , BOPOMOFO_I },
+ { 'v' , BOPOMOFO_X },
+ { 'w' , BOPOMOFO_T },
+ { 'x' , BOPOMOFO_L },
+ { 'y' , BOPOMOFO_Z },
+ { 'z' , BOPOMOFO_F },
+ },
+ {
+ { '\'', BOPOMOFO_V },
+ { ',' , BOPOMOFO_E2 },
+ { '-' , BOPOMOFO_I },
+ { '.' , BOPOMOFO_OU },
+ { '/' , BOPOMOFO_ENG },
+ { '0' , BOPOMOFO_AN },
+ { '1' , BOPOMOFO_TONE_5 },
+ { '2' , BOPOMOFO_B },
+ { '3' , BOPOMOFO_D },
+ { '6' , BOPOMOFO_ZH },
+ { '8' , BOPOMOFO_A },
+ { '9' , BOPOMOFO_AI },
+ { ';' , BOPOMOFO_ANG },
+ { '=' , BOPOMOFO_ER },
+ { '[' , BOPOMOFO_U },
+ { 'a' , BOPOMOFO_TONE_3 },
+ { 'b' , BOPOMOFO_X },
+ { 'c' , BOPOMOFO_L },
+ { 'd' , BOPOMOFO_N },
+ { 'e' , BOPOMOFO_T },
+ { 'f' , BOPOMOFO_K },
+ { 'g' , BOPOMOFO_Q },
+ { 'h' , BOPOMOFO_SH },
+ { 'i' , BOPOMOFO_O },
+ { 'j' , BOPOMOFO_C },
+ { 'k' , BOPOMOFO_E },
+ { 'l' , BOPOMOFO_AO },
+ { 'm' , BOPOMOFO_S },
+ { 'n' , BOPOMOFO_R },
+ { 'o' , BOPOMOFO_EI },
+ { 'p' , BOPOMOFO_EN },
+ { 'q' , BOPOMOFO_TONE_2 },
+ { 'r' , BOPOMOFO_G },
+ { 's' , BOPOMOFO_M },
+ { 't' , BOPOMOFO_J },
+ { 'u' , BOPOMOFO_Z },
+ { 'v' , BOPOMOFO_H },
+ { 'w' , BOPOMOFO_P },
+ { 'x' , BOPOMOFO_F },
+ { 'y' , BOPOMOFO_CH },
+ { 'z' , BOPOMOFO_TONE_4 },
+ },
+ {
+ { '\'', BOPOMOFO_C },
+ { ',' , BOPOMOFO_ZH },
+ { '-' , BOPOMOFO_ENG },
+ { '.' , BOPOMOFO_CH },
+ { '/' , BOPOMOFO_SH },
+ { '0' , BOPOMOFO_ANG },
+ { '1' , BOPOMOFO_TONE_5 },
+ { '2' , BOPOMOFO_TONE_2 },
+ { '3' , BOPOMOFO_TONE_3 },
+ { '4' , BOPOMOFO_TONE_4 },
+ { '7' , BOPOMOFO_Q },
+ { '8' , BOPOMOFO_AN },
+ { '9' , BOPOMOFO_EN },
+ { ';' , BOPOMOFO_Z },
+ { '=' , BOPOMOFO_ER },
+ { 'a' , BOPOMOFO_A },
+ { 'b' , BOPOMOFO_B },
+ { 'c' , BOPOMOFO_X },
+ { 'd' , BOPOMOFO_D },
+ { 'e' , BOPOMOFO_I },
+ { 'f' , BOPOMOFO_F },
+ { 'g' , BOPOMOFO_J },
+ { 'h' , BOPOMOFO_H },
+ { 'i' , BOPOMOFO_AI },
+ { 'j' , BOPOMOFO_R },
+ { 'k' , BOPOMOFO_K },
+ { 'l' , BOPOMOFO_L },
+ { 'm' , BOPOMOFO_M },
+ { 'n' , BOPOMOFO_N },
+ { 'o' , BOPOMOFO_O },
+ { 'p' , BOPOMOFO_P },
+ { 'q' , BOPOMOFO_EI },
+ { 'r' , BOPOMOFO_E },
+ { 's' , BOPOMOFO_S },
+ { 't' , BOPOMOFO_T },
+ { 'u' , BOPOMOFO_V },
+ { 'v' , BOPOMOFO_G },
+ { 'w' , BOPOMOFO_E2 },
+ { 'x' , BOPOMOFO_U },
+ { 'y' , BOPOMOFO_OU },
+ { 'z' , BOPOMOFO_AO },
+ },
+ {
+ { ',' , BOPOMOFO_TONE_3 },
+ { '-' , BOPOMOFO_H },
+ { '.' , BOPOMOFO_TONE_4 },
+ { '/' , BOPOMOFO_TONE_5 },
+ { '0' , BOPOMOFO_K },
+ { '1' , BOPOMOFO_B },
+ { '2' , BOPOMOFO_P },
+ { '3' , BOPOMOFO_M },
+ { '4' , BOPOMOFO_F },
+ { '5' , BOPOMOFO_D },
+ { '6' , BOPOMOFO_T },
+ { '7' , BOPOMOFO_N },
+ { '8' , BOPOMOFO_L },
+ { '9' , BOPOMOFO_G },
+ { ';' , BOPOMOFO_AO },
+ { 'a' , BOPOMOFO_I },
+ { 'b' , BOPOMOFO_ENG },
+ { 'c' , BOPOMOFO_EN },
+ { 'd' , BOPOMOFO_V },
+ { 'e' , BOPOMOFO_X },
+ { 'f' , BOPOMOFO_A },
+ { 'g' , BOPOMOFO_O },
+ { 'h' , BOPOMOFO_E },
+ { 'i' , BOPOMOFO_Z },
+ { 'j' , BOPOMOFO_E2 },
+ { 'k' , BOPOMOFO_AI },
+ { 'l' , BOPOMOFO_EI },
+ { 'm' , BOPOMOFO_TONE_2 },
+ { 'n' , BOPOMOFO_ER },
+ { 'o' , BOPOMOFO_C },
+ { 'p' , BOPOMOFO_S },
+ { 'q' , BOPOMOFO_J },
+ { 'r' , BOPOMOFO_ZH },
+ { 's' , BOPOMOFO_U },
+ { 't' , BOPOMOFO_CH },
+ { 'u' , BOPOMOFO_R },
+ { 'v' , BOPOMOFO_ANG },
+ { 'w' , BOPOMOFO_Q },
+ { 'x' , BOPOMOFO_AN },
+ { 'y' , BOPOMOFO_SH },
+ { 'z' , BOPOMOFO_OU },
+ },
+};
+
+#endif // __BOPOMOFO_KEYBOARD_H_
diff --git a/src/PyZyConfig.cc b/src/PyZyConfig.cc
new file mode 100644
index 0000000..f72d450
--- /dev/null
+++ b/src/PyZyConfig.cc
@@ -0,0 +1,176 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyConfig.h"
+
+#include "PyZyUtil.h"
+#include "PyZyTypes.h"
+#include "PyZyDoublePinyinTable.h"
+
+namespace PyZy {
+
+const guint PINYIN_DEFAULT_OPTION =
+ PINYIN_INCOMPLETE_PINYIN |
+ PINYIN_CORRECT_ALL |
+ PINYIN_FUZZY_C_CH |
+ // PINYIN_FUZZY_CH_C |
+ PINYIN_FUZZY_Z_ZH |
+ // PINYIN_FUZZY_ZH_Z |
+ PINYIN_FUZZY_S_SH |
+ // PINYIN_FUZZY_SH_S |
+ PINYIN_FUZZY_L_N |
+ // PINYIN_FUZZY_N_L |
+ PINYIN_FUZZY_F_H |
+ // PINYIN_FUZZY_H_F |
+ // PINYIN_FUZZY_L_R |
+ // PINYIN_FUZZY_R_L |
+ PINYIN_FUZZY_K_G |
+ PINYIN_FUZZY_G_K |
+ PINYIN_FUZZY_AN_ANG |
+ PINYIN_FUZZY_ANG_AN |
+ PINYIN_FUZZY_EN_ENG |
+ PINYIN_FUZZY_ENG_EN |
+ PINYIN_FUZZY_IN_ING |
+ PINYIN_FUZZY_ING_IN |
+ // PINYIN_FUZZY_IAN_IANG |
+ // PINYIN_FUZZY_IANG_IAN |
+ // PINYIN_FUZZY_UAN_UANG |
+ // PINYIN_FUZZY_UANG_UAN |
+ 0;
+
+struct Config::ConfigImpl {
+ bool m_special_phrases;
+ bool m_mode_simp;
+ unsigned int m_option;
+ unsigned int m_option_mask;
+ unsigned int m_double_pinyin_schema;
+ unsigned int m_bopomofo_keyboard_mapping;
+ unsigned int m_page_size;
+};
+
+Config::Config ()
+ : m_impl (new Config::ConfigImpl)
+{
+ readDefaultValues ();
+}
+
+Config::~Config ()
+{
+ delete m_impl;
+}
+
+/* Accessors */
+unsigned int Config::option (void) const { return m_impl->m_option; }
+unsigned int Config::doublePinyinSchema (void) const { return m_impl->m_double_pinyin_schema; }
+bool Config::specialPhrases (void) const { return m_impl->m_special_phrases; }
+bool Config::modeSimp (void) const { return m_impl->m_mode_simp; }
+unsigned int Config::bopomofoKeyboardMapping (void) const { return m_impl->m_bopomofo_keyboard_mapping; }
+unsigned int Config::pageSize (void) const { return m_impl->m_page_size; }
+
+void Config::setOption (unsigned int value) { m_impl->m_option = value; }
+void Config::setDoublePinyinSchema (unsigned int value) { m_impl->m_double_pinyin_schema = value; }
+void Config::setSpecialPhrases (bool value) { m_impl->m_special_phrases = value; }
+void Config::setModeSimp (bool value) { m_impl->m_mode_simp = value; }
+void Config::setBopomofoKeyboardMapping (unsigned int value) { m_impl->m_bopomofo_keyboard_mapping = value; }
+void Config::setPageSize (unsigned int value) { m_impl->m_page_size = value; }
+
+void
+Config::readDefaultValues ()
+{
+ m_impl->m_option = PINYIN_DEFAULT_OPTION;
+ m_impl->m_option_mask = PINYIN_INCOMPLETE_PINYIN | PINYIN_CORRECT_ALL;
+ m_impl->m_page_size = 5;
+ m_impl->m_double_pinyin_schema = 0;
+ m_impl->m_mode_simp = TRUE;
+ m_impl->m_special_phrases = TRUE;
+ m_impl->m_bopomofo_keyboard_mapping = 0;
+}
+
+
+/* Pinyin Config */
+struct PinyinConfig::PinyinConfigImpl {
+ static std::unique_ptr <PinyinConfig> m_instance;
+};
+
+std::unique_ptr<PinyinConfig> PinyinConfig::PinyinConfigImpl::m_instance;
+
+PinyinConfig::PinyinConfig ()
+ : Config ()
+{
+}
+
+PinyinConfig &
+PinyinConfig::instance ()
+{
+ return *PinyinConfigImpl::m_instance;
+}
+
+void
+PinyinConfig::init ()
+{
+ if (PinyinConfigImpl::m_instance == NULL) {
+ PinyinConfigImpl::m_instance.reset (new PinyinConfig ());
+ PinyinConfigImpl::m_instance->readDefaultValues ();
+ }
+}
+
+void
+PinyinConfig::readDefaultValues ()
+{
+ Config::readDefaultValues ();
+}
+
+
+/* Bopomofo Config */
+
+struct BopomofoConfig::BopomofoConfigImpl {
+ static std::unique_ptr <BopomofoConfig> m_instance;
+};
+
+std::unique_ptr<BopomofoConfig> BopomofoConfig::BopomofoConfigImpl::m_instance;
+
+BopomofoConfig::BopomofoConfig ()
+ : Config ()
+{
+}
+
+BopomofoConfig &
+BopomofoConfig::instance ()
+{
+ return *BopomofoConfigImpl::m_instance;
+}
+
+void
+BopomofoConfig::init ()
+{
+ if (BopomofoConfigImpl::m_instance == NULL) {
+ BopomofoConfigImpl::m_instance.reset (new BopomofoConfig ());
+ BopomofoConfigImpl::m_instance->readDefaultValues ();
+ }
+}
+
+void
+BopomofoConfig::readDefaultValues (void)
+{
+ Config::readDefaultValues ();
+ m_impl->m_special_phrases = FALSE;
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyConfig.h b/src/PyZyConfig.h
new file mode 100644
index 0000000..6e64a52
--- /dev/null
+++ b/src/PyZyConfig.h
@@ -0,0 +1,96 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __CONFIG_H_
+#define __CONFIG_H_
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string>
+
+namespace PyZy {
+
+#define MAX_PINYIN_LEN 64
+
+class Config {
+protected:
+ Config (void);
+ virtual ~Config (void);
+
+private:
+ Config (const Config & obj) { }
+
+public:
+ virtual void readDefaultValues (void);
+
+ unsigned int option (void) const;
+ unsigned int doublePinyinSchema (void) const;
+ bool specialPhrases (void) const;
+ bool modeSimp (void) const;
+ unsigned int bopomofoKeyboardMapping (void) const;
+ unsigned int pageSize (void) const;
+
+ void setOption (unsigned int value);
+ void setDoublePinyinSchema (unsigned int value);
+ void setSpecialPhrases (bool value);
+ void setModeSimp (bool value);
+ void setBopomofoKeyboardMapping (unsigned int value);
+ void setPageSize (unsigned int value);
+
+protected:
+ struct ConfigImpl;
+ ConfigImpl *m_impl;
+};
+
+/* PinyinConfig */
+class PinyinConfig : public Config {
+public:
+ static void init ();
+ static PinyinConfig & instance (void);
+
+protected:
+ PinyinConfig ();
+ virtual void readDefaultValues (void);
+
+private:
+ struct PinyinConfigImpl;
+ PinyinConfigImpl *m_pinyin_impl;
+};
+
+/* Bopomof Config */
+class BopomofoConfig : public Config {
+public:
+ static void init ();
+ static BopomofoConfig & instance (void);
+
+protected:
+ BopomofoConfig ();
+ virtual void readDefaultValues (void);
+
+private:
+ struct BopomofoConfigImpl;
+ BopomofoConfigImpl *m_bopomofo_impl;
+};
+
+}; // namespace PyZy
+
+#endif // __CONFIG_H_
diff --git a/src/PyZyDatabase.cc b/src/PyZyDatabase.cc
new file mode 100644
index 0000000..174c81f
--- /dev/null
+++ b/src/PyZyDatabase.cc
@@ -0,0 +1,744 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyDatabase.h"
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <sqlite3.h>
+#include "PyZyUtil.h"
+#include "PyZyPinyinArray.h"
+
+namespace PyZy {
+
+#define DB_CACHE_SIZE "5000"
+#define DB_INDEX_SIZE (3)
+/* define columns */
+#define DB_COLUMN_USER_FREQ (0)
+#define DB_COLUMN_PHRASE (1)
+#define DB_COLUMN_FREQ (2)
+#define DB_COLUMN_S0 (3)
+
+#define DB_PREFETCH_LEN (6)
+#define DB_BACKUP_TIMEOUT (60)
+
+#define USER_DICTIONARY_FILE "user-1.3.db"
+
+std::unique_ptr<Database> Database::m_instance;
+
+class Conditions : public std::vector<std::string> {
+public:
+ Conditions (void) : std::vector<std::string> (1) {}
+
+ void double_ (void) {
+ gint i = size ();
+ do {
+ push_back (at (--i));
+ } while (i > 0);
+ }
+
+ void triple (void) {
+ gint i = size ();
+ do {
+ const std::string & value = std::vector<std::string>::at (--i);
+ push_back (value);
+ push_back (value);
+ } while (i > 0);
+ }
+
+ void appendVPrintf (gint begin, gint end, const gchar *fmt, va_list args) {
+ gchar str[64];
+ g_vsnprintf (str, sizeof(str), fmt, args);
+ for (gint i = begin; i < end; i++) {
+ at (i) += str;
+ }
+ }
+
+ void appendPrintf (gint begin, gint end, const gchar *fmt, ...) {
+ va_list args;
+ va_start (args, fmt);
+ appendVPrintf (begin, end, fmt, args);
+ va_end (args);
+ }
+};
+
+class SQLStmt {
+public:
+ SQLStmt (sqlite3 *db)
+ : m_db (db), m_stmt (NULL) {
+ g_assert (m_db != NULL);
+ }
+
+ ~SQLStmt () {
+ if (m_stmt != NULL) {
+ if (sqlite3_finalize (m_stmt) != SQLITE_OK) {
+ g_warning ("destroy sqlite stmt failed!");
+ }
+ }
+ }
+
+ gboolean prepare (const String &sql) {
+ if (sqlite3_prepare (m_db,
+ sql.c_str (),
+ sql.size (),
+ &m_stmt,
+ NULL) != SQLITE_OK) {
+ g_warning ("parse sql failed!\n %s", sql.c_str ());
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ gboolean step (void) {
+ switch (sqlite3_step (m_stmt)) {
+ case SQLITE_ROW:
+ return TRUE;
+ case SQLITE_DONE:
+ return FALSE;
+ default:
+ g_warning ("sqlites step error!");
+ return FALSE;
+ }
+ }
+
+ const gchar *columnText (guint col) {
+ return (const gchar *) sqlite3_column_text (m_stmt, col);
+ }
+
+ gint columnInt (guint col) {
+ return sqlite3_column_int (m_stmt, col);
+ }
+
+private:
+ sqlite3 *m_db;
+ sqlite3_stmt *m_stmt;
+};
+
+Query::Query (const PinyinArray & pinyin,
+ guint pinyin_begin,
+ guint pinyin_len,
+ guint option)
+ : m_pinyin (pinyin),
+ m_pinyin_begin (pinyin_begin),
+ m_pinyin_len (pinyin_len),
+ m_option (option)
+{
+ g_assert (m_pinyin.size () >= pinyin_begin + pinyin_len);
+}
+
+Query::~Query (void)
+{
+}
+
+gint
+Query::fill (PhraseArray &phrases, gint count)
+{
+ gint row = 0;
+
+ while (m_pinyin_len > 0) {
+ if (G_LIKELY (m_stmt.get () == NULL)) {
+ m_stmt = Database::instance ().query (m_pinyin, m_pinyin_begin, m_pinyin_len, -1, m_option);
+ g_assert (m_stmt.get () != NULL);
+ }
+
+ while (m_stmt->step ()) {
+ Phrase phrase;
+
+ g_strlcpy (phrase.phrase,
+ m_stmt->columnText (DB_COLUMN_PHRASE),
+ sizeof (phrase.phrase));
+ phrase.freq = m_stmt->columnInt (DB_COLUMN_FREQ);
+ phrase.user_freq = m_stmt->columnInt (DB_COLUMN_USER_FREQ);
+ phrase.len = m_pinyin_len;
+
+ for (guint i = 0, column = DB_COLUMN_S0; i < m_pinyin_len; i++) {
+ phrase.pinyin_id[i].sheng = m_stmt->columnInt (column++);
+ phrase.pinyin_id[i].yun = m_stmt->columnInt (column++);
+ }
+
+ phrases.push_back (phrase);
+ row ++;
+ if (G_UNLIKELY (row == count)) {
+ return row;
+ }
+ }
+
+ m_stmt.reset ();
+ m_pinyin_len --;
+ }
+
+ return row;
+}
+
+Database::Database (const std::string &user_data_dir)
+ : m_db (NULL)
+ , m_timeout_id (0)
+ , m_timer (g_timer_new ())
+ , m_user_data_dir (user_data_dir)
+{
+ open ();
+}
+
+Database::~Database (void)
+{
+ g_timer_destroy (m_timer);
+ if (m_timeout_id != 0) {
+ saveUserDB ();
+ g_source_remove (m_timeout_id);
+ }
+ if (m_db) {
+ if (sqlite3_close (m_db) != SQLITE_OK) {
+ g_warning ("close sqlite database failed!");
+ }
+ }
+}
+
+inline gboolean
+Database::executeSQL (const gchar *sql, sqlite3 *db)
+{
+ if (db == NULL)
+ db = m_db;
+
+ gchar *errmsg = NULL;
+ if (sqlite3_exec (db, sql, NULL, NULL, &errmsg) != SQLITE_OK) {
+ g_warning ("%s: %s", errmsg, sql);
+ sqlite3_free (errmsg);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+gboolean
+Database::open (void)
+{
+ do {
+#if (SQLITE_VERSION_NUMBER >= 3006000)
+ sqlite3_initialize ();
+#endif
+ static const gchar * maindb [] = {
+ PKGDATADIR"/db/local.db",
+ PKGDATADIR"/db/open-phrase.db",
+ PKGDATADIR"/db/android.db",
+ "main.db",
+ };
+
+ guint i;
+ for (i = 0; i < G_N_ELEMENTS (maindb); i++) {
+ if (!g_file_test(maindb[i], G_FILE_TEST_IS_REGULAR))
+ continue;
+ if (sqlite3_open_v2 (maindb[i], &m_db,
+ SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
+ break;
+ }
+ }
+
+ if (i == G_N_ELEMENTS (maindb)) {
+ g_warning ("can not open main database");
+ break;
+ }
+
+ m_sql.clear ();
+
+ /* Set synchronous=OFF, write user database will become much faster.
+ * It will cause user database corrupted, if the operatering system
+ * crashes or computer loses power.
+ * */
+ m_sql << "PRAGMA synchronous=OFF;\n";
+
+ /* Set the cache size for better performance */
+ m_sql << "PRAGMA cache_size=" DB_CACHE_SIZE ";\n";
+
+ /* Using memory for temp store */
+ // m_sql << "PRAGMA temp_store=MEMORY;\n";
+
+ /* Set journal mode */
+ // m_sql << "PRAGMA journal_mode=PERSIST;\n";
+
+ /* Using EXCLUSIVE locking mode on databases
+ * for better performance */
+ m_sql << "PRAGMA locking_mode=EXCLUSIVE;\n";
+ if (!executeSQL (m_sql))
+ break;
+
+ loadUserDB ();
+#if 0
+ /* Attach user database */
+
+ g_mkdir_with_parents (m_user_data_dir, 0750);
+ m_buffer.clear ();
+ m_buffer << m_user_data_dir << G_DIR_SEPARATOR_S << USER_DICTIONARY_FILE;
+
+ retval = openUserDB (m_buffer);
+ if (!retval) {
+ g_warning ("Can not open user database %s", m_buffer.c_str ());
+ if (!openUserDB (":memory:"))
+ goto _failed;
+ }
+#endif
+
+ /* prefetch some tables */
+ // prefetch ();
+
+ return TRUE;
+ } while (0);
+
+ if (m_db) {
+ sqlite3_close (m_db);
+ m_db = NULL;
+ }
+ return FALSE;
+}
+
+gboolean
+Database::loadUserDB (void)
+{
+ sqlite3 *userdb = NULL;
+ do {
+ /* Attach user database */
+ m_sql.printf ("ATTACH DATABASE \":memory:\" AS userdb;");
+ if (!executeSQL (m_sql))
+ break;
+
+ g_mkdir_with_parents (m_user_data_dir, 0750);
+ m_buffer.clear ();
+ m_buffer << m_user_data_dir << G_DIR_SEPARATOR_S << USER_DICTIONARY_FILE;
+
+ gint flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
+ if (sqlite3_open_v2 (m_buffer, &userdb, flags, NULL) != SQLITE_OK &&
+ sqlite3_open_v2 (":memory:", &userdb, flags, NULL) != SQLITE_OK)
+ break;
+
+ m_sql = "BEGIN TRANSACTION;\n";
+ /* create desc table*/
+ m_sql << "CREATE TABLE IF NOT EXISTS desc (name PRIMARY KEY, value TEXT);\n";
+ m_sql << "INSERT OR IGNORE INTO desc VALUES " << "('version', '1.2.0');\n"
+ << "INSERT OR IGNORE INTO desc VALUES " << "('uuid', '" << UUID () << "');\n"
+ << "INSERT OR IGNORE INTO desc VALUES " << "('hostname', '" << Hostname () << "');\n"
+ << "INSERT OR IGNORE INTO desc VALUES " << "('username', '" << Env ("USERNAME") << "');\n"
+ << "INSERT OR IGNORE INTO desc VALUES " << "('create-time', datetime());\n"
+ << "INSERT OR IGNORE INTO desc VALUES " << "('attach-time', datetime());\n";
+
+ /* create phrase tables */
+ for (guint i = 0; i < MAX_PHRASE_LEN; i++) {
+ m_sql.appendPrintf ("CREATE TABLE IF NOT EXISTS py_phrase_%d (user_freq, phrase TEXT, freq INTEGER ", i);
+ for (guint j = 0; j <= i; j++)
+ m_sql.appendPrintf (",s%d INTEGER, y%d INTEGER", j, j);
+ m_sql << ");\n";
+ }
+
+ /* create index */
+ m_sql << "CREATE UNIQUE INDEX IF NOT EXISTS " << "index_0_0 ON py_phrase_0(s0,y0,phrase);\n";
+ m_sql << "CREATE UNIQUE INDEX IF NOT EXISTS " << "index_1_0 ON py_phrase_1(s0,y0,s1,y1,phrase);\n";
+ m_sql << "CREATE INDEX IF NOT EXISTS " << "index_1_1 ON py_phrase_1(s0,s1,y1);\n";
+ for (guint i = 2; i < MAX_PHRASE_LEN; i++) {
+ m_sql << "CREATE UNIQUE INDEX IF NOT EXISTS " << "index_" << i << "_0 ON py_phrase_" << i
+ << "(s0,y0";
+ for (guint j = 1; j <= i; j++)
+ m_sql << ",s" << j << ",y" << j;
+ m_sql << ",phrase);\n";
+ m_sql << "CREATE INDEX IF NOT EXISTS " << "index_" << i << "_1 ON py_phrase_" << i << "(s0,s1,s2,y2);\n";
+ }
+ m_sql << "COMMIT;";
+
+ if (!executeSQL (m_sql, userdb))
+ break;
+
+ sqlite3_backup *backup = sqlite3_backup_init (m_db, "userdb", userdb, "main");
+
+ if (backup) {
+ sqlite3_backup_step (backup, -1);
+ sqlite3_backup_finish (backup);
+ }
+
+ sqlite3_close (userdb);
+ return TRUE;
+ } while (0);
+
+ if (userdb)
+ sqlite3_close (userdb);
+ return FALSE;
+}
+
+gboolean
+Database::saveUserDB (void)
+{
+ g_mkdir_with_parents (m_user_data_dir, 0750);
+ m_buffer.clear ();
+ m_buffer << m_user_data_dir << G_DIR_SEPARATOR_S << USER_DICTIONARY_FILE;
+
+ String tmpfile = m_buffer + "-tmp";
+ sqlite3 *userdb = NULL;
+ do {
+ /* remove tmpfile if it exist */
+ g_unlink (tmpfile);
+
+ gint flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
+ if (sqlite3_open_v2 (tmpfile, &userdb, flags, NULL) != SQLITE_OK)
+ break;
+
+ sqlite3_backup *backup = sqlite3_backup_init (userdb, "main", m_db, "userdb");
+
+ if (backup == NULL)
+ break;
+
+ sqlite3_backup_step (backup, -1);
+ sqlite3_backup_finish (backup);
+ sqlite3_close (userdb);
+
+ g_rename (tmpfile, m_buffer);
+
+ return TRUE;
+ } while (0);
+
+ if (userdb != NULL)
+ sqlite3_close (userdb);
+ g_unlink (tmpfile);
+
+ return FALSE;
+}
+
+void
+Database::prefetch (void)
+{
+ m_sql.clear ();
+ for (guint i = 0; i < DB_PREFETCH_LEN; i++)
+ m_sql << "SELECT * FROM py_phrase_" << i << ";\n";
+
+ // g_debug ("prefetching ...");
+ executeSQL (m_sql);
+ // g_debug ("done");
+}
+
+gboolean
+Database::timeoutCallback (gpointer data)
+{
+ Database *self = static_cast<Database*> (data);
+
+ /* Get elapsed time since last modification of database. */
+ guint elapsed = (guint)g_timer_elapsed (self->m_timer, NULL);
+
+ if (elapsed >= DB_BACKUP_TIMEOUT &&
+ self->saveUserDB ()) {
+ self->m_timeout_id = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void
+Database::modified (void)
+{
+ /* Restart the timer */
+ g_timer_start (m_timer);
+
+ if (m_timeout_id != 0)
+ return;
+
+ m_timeout_id = g_timeout_add_seconds (DB_BACKUP_TIMEOUT,
+ Database::timeoutCallback,
+ static_cast<gpointer> (this));
+}
+
+inline static gboolean
+pinyin_option_check_sheng (guint option, gint id, gint fid)
+{
+ switch ((id << 16) | fid) {
+ case (PINYIN_ID_C << 16) | PINYIN_ID_CH:
+ return (option & PINYIN_FUZZY_C_CH);
+ case (PINYIN_ID_CH << 16) | PINYIN_ID_C:
+ return (option & PINYIN_FUZZY_CH_C);
+ case (PINYIN_ID_Z << 16) | PINYIN_ID_ZH:
+ return (option & PINYIN_FUZZY_Z_ZH);
+ case (PINYIN_ID_ZH << 16) | PINYIN_ID_Z:
+ return (option & PINYIN_FUZZY_ZH_Z);
+ case (PINYIN_ID_S << 16) | PINYIN_ID_SH:
+ return (option & PINYIN_FUZZY_S_SH);
+ case (PINYIN_ID_SH << 16) | PINYIN_ID_S:
+ return (option & PINYIN_FUZZY_SH_S);
+ case (PINYIN_ID_L << 16) | PINYIN_ID_N:
+ return (option & PINYIN_FUZZY_L_N);
+ case (PINYIN_ID_N << 16) | PINYIN_ID_L:
+ return (option & PINYIN_FUZZY_N_L);
+ case (PINYIN_ID_F << 16) | PINYIN_ID_H:
+ return (option & PINYIN_FUZZY_F_H);
+ case (PINYIN_ID_H << 16) | PINYIN_ID_F:
+ return (option & PINYIN_FUZZY_H_F);
+ case (PINYIN_ID_L << 16) | PINYIN_ID_R:
+ return (option & PINYIN_FUZZY_L_R);
+ case (PINYIN_ID_R << 16) | PINYIN_ID_L:
+ return (option & PINYIN_FUZZY_R_L);
+ case (PINYIN_ID_K << 16) | PINYIN_ID_G:
+ return (option & PINYIN_FUZZY_K_G);
+ case (PINYIN_ID_G << 16) | PINYIN_ID_K:
+ return (option & PINYIN_FUZZY_G_K);
+ default: return FALSE;
+ }
+}
+
+inline static gboolean
+pinyin_option_check_yun (guint option, gint id, gint fid)
+{
+ switch ((id << 16) | fid) {
+ case (PINYIN_ID_AN << 16) | PINYIN_ID_ANG:
+ return (option & PINYIN_FUZZY_AN_ANG);
+ case (PINYIN_ID_ANG << 16) | PINYIN_ID_AN:
+ return (option & PINYIN_FUZZY_ANG_AN);
+ case (PINYIN_ID_EN << 16) | PINYIN_ID_ENG:
+ return (option & PINYIN_FUZZY_EN_ENG);
+ case (PINYIN_ID_ENG << 16) | PINYIN_ID_EN:
+ return (option & PINYIN_FUZZY_ENG_EN);
+ case (PINYIN_ID_IN << 16) | PINYIN_ID_ING:
+ return (option & PINYIN_FUZZY_IN_ING);
+ case (PINYIN_ID_ING << 16) | PINYIN_ID_IN:
+ return (option & PINYIN_FUZZY_ING_IN);
+ case (PINYIN_ID_IAN << 16) | PINYIN_ID_IANG:
+ return (option & PINYIN_FUZZY_IAN_IANG);
+ case (PINYIN_ID_IANG << 16) | PINYIN_ID_IAN:
+ return (option & PINYIN_FUZZY_IANG_IAN);
+ case (PINYIN_ID_UAN << 16) | PINYIN_ID_UANG:
+ return (option & PINYIN_FUZZY_UAN_UANG);
+ case (PINYIN_ID_UANG << 16) | PINYIN_ID_UAN:
+ return (option & PINYIN_FUZZY_UANG_UAN);
+ default: return FALSE;
+ }
+}
+
+SQLStmtPtr
+Database::query (const PinyinArray &pinyin,
+ guint pinyin_begin,
+ guint pinyin_len,
+ gint m,
+ guint option)
+{
+ g_assert (pinyin_begin < pinyin.size ());
+ g_assert (pinyin_len <= pinyin.size () - pinyin_begin);
+ g_assert (pinyin_len <= MAX_PHRASE_LEN);
+
+ /* prepare sql */
+ Conditions conditions;
+
+ for (guint i = 0; i < pinyin_len; i++) {
+ const Pinyin *p;
+ gboolean fs1, fs2;
+ p = pinyin[i + pinyin_begin];
+
+ fs1 = pinyin_option_check_sheng (option, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng);
+ fs2 = pinyin_option_check_sheng (option, p->pinyin_id[0].sheng, p->pinyin_id[2].sheng);
+
+ if (G_LIKELY (i > 0))
+ conditions.appendPrintf (0, conditions.size (),
+ " AND ");
+
+ if (G_UNLIKELY (fs1 || fs2)) {
+ if (G_LIKELY (i < DB_INDEX_SIZE)) {
+ if (fs1 && fs2 == 0) {
+ conditions.double_ ();
+ conditions.appendPrintf (0, conditions.size () >> 1,
+ "s%d=%d", i, p->pinyin_id[0].sheng);
+ conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
+ "s%d=%d", i, p->pinyin_id[1].sheng);
+ }
+ else if (fs1 == 0 && fs2) {
+ conditions.double_ ();
+ conditions.appendPrintf (0, conditions.size () >> 1,
+ "s%d=%d", i, p->pinyin_id[0].sheng);
+ conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
+ "s%d=%d", i, p->pinyin_id[2].sheng);
+ }
+ else {
+ gint len = conditions.size ();
+ conditions.triple ();
+ conditions.appendPrintf (0, len,
+ "s%d=%d", i, p->pinyin_id[0].sheng);
+ conditions.appendPrintf (len, len << 1,
+ "s%d=%d", i, p->pinyin_id[1].sheng);
+ conditions.appendPrintf (len << 1, conditions.size (),
+ "s%d=%d", i, p->pinyin_id[2].sheng);
+ }
+ }
+ else {
+ if (fs1 && fs2 == 0) {
+ conditions.appendPrintf (0, conditions.size (),
+ "s%d IN (%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng);
+ }
+ else if (fs1 == 0 && fs2) {
+ conditions.appendPrintf (0, conditions.size (),
+ "s%d IN (%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[2].sheng);
+ }
+ else {
+ conditions.appendPrintf (0, conditions.size (),
+ "s%d IN (%d,%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng, p->pinyin_id[2].sheng);
+ }
+ }
+ }
+ else {
+ conditions.appendPrintf (0, conditions.size (),
+ "s%d=%d", i, p->pinyin_id[0].sheng);
+ }
+
+ if (p->pinyin_id[0].yun != PINYIN_ID_ZERO) {
+ if (pinyin_option_check_yun (option, p->pinyin_id[0].yun, p->pinyin_id[1].yun)) {
+ if (G_LIKELY (i < DB_INDEX_SIZE)) {
+ conditions.double_ ();
+ conditions.appendPrintf (0, conditions.size () >> 1,
+ " AND y%d=%d", i, p->pinyin_id[0].yun);
+ conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
+ " and y%d=%d", i, p->pinyin_id[1].yun);
+ }
+ else {
+ conditions.appendPrintf (0, conditions.size (),
+ " AND y%d IN (%d,%d)", i, p->pinyin_id[0].yun, p->pinyin_id[1].yun);
+ }
+ }
+ else {
+ conditions.appendPrintf (0, conditions.size (),
+ " AND y%d=%d", i, p->pinyin_id[0].yun);
+ }
+ }
+ }
+
+
+ m_buffer.clear ();
+ for (guint i = 0; i < conditions.size (); i++) {
+ if (G_UNLIKELY (i == 0))
+ m_buffer << " (" << conditions[i] << ")\n";
+ else
+ m_buffer << " OR (" << conditions[i] << ")\n";
+ }
+
+ m_sql.clear ();
+ gint id = pinyin_len - 1;
+ m_sql << "SELECT * FROM ("
+ "SELECT 0 AS user_freq, * FROM main.py_phrase_" << id << " WHERE " << m_buffer << " UNION ALL "
+ "SELECT * FROM userdb.py_phrase_" << id << " WHERE " << m_buffer << ") "
+ "GROUP BY phrase ORDER BY user_freq DESC, freq DESC";
+ if (m > 0)
+ m_sql << " LIMIT " << m;
+#if 0
+ g_debug ("sql =\n%s", m_sql.c_str ());
+#endif
+
+ /* query database */
+ SQLStmtPtr stmt (new SQLStmt (m_db));
+
+ if (!stmt->prepare (m_sql)) {
+ stmt.reset ();
+ }
+
+ return stmt;
+}
+
+inline void
+Database::phraseWhereSql (const Phrase & p, String & sql)
+{
+ sql << " WHERE";
+ sql << " s0=" << p.pinyin_id[0].sheng
+ << " AND y0=" << p.pinyin_id[0].yun;
+ for (guint i = 1; i < p.len; i++) {
+ sql << " AND s" << i << '=' << p.pinyin_id[i].sheng
+ << " AND y" << i << '=' << p.pinyin_id[i].yun;
+ }
+ sql << " AND phrase=\"" << p.phrase << "\"";
+
+}
+
+inline void
+Database::phraseSql (const Phrase & p, String & sql)
+{
+ sql << "INSERT OR IGNORE INTO userdb.py_phrase_" << p.len - 1
+ << " VALUES(" << 0 /* user_freq */
+ << ",\"" << p.phrase << '"' /* phrase */
+ << ',' << p.freq; /* freq */
+
+ for (guint i = 0; i < p.len; i++) {
+ sql << ',' << p.pinyin_id[i].sheng << ',' << p.pinyin_id[i].yun;
+ }
+
+ sql << ");\n";
+
+ sql << "UPDATE userdb.py_phrase_" << p.len - 1
+ << " SET user_freq=user_freq+1";
+
+ phraseWhereSql (p, sql);
+ sql << ";\n";
+}
+
+void
+Database::commit (const PhraseArray &phrases)
+{
+ Phrase phrase = {""};
+
+ m_sql = "BEGIN TRANSACTION;\n";
+ for (guint i = 0; i < phrases.size (); i++) {
+ phrase += phrases[i];
+ phraseSql (phrases[i], m_sql);
+ }
+ if (phrases.size () > 1)
+ phraseSql (phrase, m_sql);
+ m_sql << "COMMIT;\n";
+
+ executeSQL (m_sql);
+ modified ();
+}
+
+void
+Database::remove (const Phrase & phrase)
+{
+ m_sql = "BEGIN TRANSACTION;\n";
+ m_sql << "DELETE FROM userdb.py_phrase_" << phrase.len - 1;
+ phraseWhereSql (phrase, m_sql);
+ m_sql << ";\n";
+ m_sql << "COMMIT;\n";
+
+ executeSQL (m_sql);
+ modified ();
+}
+
+void
+Database::init ()
+{
+ if (m_instance.get () == NULL) {
+ m_instance.reset (new Database ("libpyzy"));
+ }
+}
+
+void
+Database::init (const std::string & user_data_dir)
+{
+ String cache_dir = g_get_user_cache_dir ();
+ String absolute_data_dir =
+ cache_dir +
+ G_DIR_SEPARATOR_S +
+ user_data_dir;
+ absolute_data_dir.replace ("/", G_DIR_SEPARATOR_S);
+
+ if (m_instance.get () == NULL) {
+ m_instance.reset (new Database (absolute_data_dir));
+ }
+}
+
+void
+Database::finalize (void)
+{
+ m_instance.reset (NULL);
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyDatabase.h b/src/PyZyDatabase.h
new file mode 100644
index 0000000..a084b0b
--- /dev/null
+++ b/src/PyZyDatabase.h
@@ -0,0 +1,114 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DATABASE_H_
+#define __DATABASE_H_
+
+#include "PyZyUtil.h"
+#include "PyZyString.h"
+#include "PyZyTypes.h"
+#include "PyZyPhraseArray.h"
+
+typedef struct sqlite3 sqlite3;
+
+namespace PyZy {
+
+class PinyinArray;
+struct Phrase;
+
+class SQLStmt;
+typedef std::shared_ptr<SQLStmt> SQLStmtPtr;
+
+class Database;
+
+class Query {
+public:
+ Query (const PinyinArray & pinyin,
+ guint pinyin_begin,
+ guint pinyin_len,
+ guint option);
+ ~Query (void);
+ gint fill (PhraseArray &phrases, gint count);
+
+private:
+ const PinyinArray & m_pinyin;
+ guint m_pinyin_begin;
+ guint m_pinyin_len;
+ guint m_option;
+ SQLStmtPtr m_stmt;
+};
+
+class Database {
+public:
+ ~Database ();
+protected:
+ Database (const std::string & user_data_dir);
+
+public:
+ static void init (void);
+ static void init (const std::string & data_dir);
+
+ SQLStmtPtr query (const PinyinArray & pinyin,
+ guint pinyin_begin,
+ guint pinyin_len,
+ gint m,
+ guint option);
+ void commit (const PhraseArray & phrases);
+ void remove (const Phrase & phrase);
+
+ void conditionsDouble (void);
+ void conditionsTriple (void);
+
+ static void finalize (void);
+ static Database & instance (void)
+ {
+ if (m_instance == NULL) {
+ g_error ("Error: Please call PhoneticContext::init () !");
+ }
+ return *m_instance;
+ }
+
+private:
+ gboolean open (void);
+ gboolean loadUserDB (void);
+ gboolean saveUserDB (void);
+ void prefetch (void);
+ void phraseSql (const Phrase & p, String & sql);
+ void phraseWhereSql (const Phrase & p, String & sql);
+ gboolean executeSQL (const gchar *sql, sqlite3 *db = NULL);
+ void modified (void);
+ static gboolean timeoutCallback (gpointer data);
+
+private:
+ sqlite3 *m_db; /* sqlite3 database */
+
+ String m_sql; /* sql stmt */
+ String m_buffer; /* temp buffer */
+ guint m_timeout_id;
+ GTimer *m_timer;
+ String m_user_data_dir;
+
+private:
+ static std::unique_ptr<Database> m_instance;
+};
+
+}; // namespace PyZy
+
+#endif // __DATABASE_H_
diff --git a/src/PyZyDoublePinyinContext.cc b/src/PyZyDoublePinyinContext.cc
new file mode 100644
index 0000000..e2023af
--- /dev/null
+++ b/src/PyZyDoublePinyinContext.cc
@@ -0,0 +1,467 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyDoublePinyinContext.h"
+#include "PyZyConfig.h"
+#include "PyZyPinyinParser.h"
+
+namespace PyZy {
+
+#define DEFINE_DOUBLE_PINYIN_TABLES
+#include "PyZyDoublePinyinTable.h"
+
+/*
+ * c in 'a' ... 'z' => id = c - 'a'
+ * c == ';' => id = 26
+ * else => id = -1
+ */
+#define ID(c) \
+ ((c >= 'a' && c <= 'z') ? c - 'a' : (c == ';' ? 26 : -1))
+
+#define ID_TO_SHENG(id) \
+ (double_pinyin_map[m_config.doublePinyinSchema ()].sheng[id])
+#define ID_TO_YUNS(id) \
+ (double_pinyin_map[m_config.doublePinyinSchema ()].yun[id])
+
+#define IS_ALPHA(c) \
+ ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
+
+DoublePinyinContext::DoublePinyinContext (Config & config, PhoneticContext::Observer *observer)
+ : PinyinContext (config, observer)
+{
+}
+
+gboolean
+DoublePinyinContext::insert (gint ch)
+{
+ gint id;
+ /* is full */
+ if (G_UNLIKELY (m_text.length () >= MAX_PINYIN_LEN))
+ return TRUE;
+
+ id = ID (ch);
+ if (id == -1) {
+ /* it is not availidate ch */
+ return FALSE;
+ }
+
+ if (G_UNLIKELY (m_text.empty () &&
+ ID_TO_SHENG (id) == PINYIN_ID_VOID)) {
+ return FALSE;
+ }
+
+ m_text.insert (m_cursor++, ch);
+
+ if (m_cursor > m_pinyin_len + 2 || updatePinyin (FALSE) == FALSE) {
+ if (!IS_ALPHA (ch)) {
+ m_text.erase (--m_cursor, 1);
+ return FALSE;
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ return TRUE;
+ }
+ }
+ else {
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ return TRUE;
+ }
+}
+
+gboolean
+DoublePinyinContext::removeCharBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+ m_text.erase (m_cursor, 1);
+
+ if (updatePinyin (FALSE)) {
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::removeCharAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor, 1);
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::removeWordBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ m_text.erase (m_pinyin_len, m_cursor - m_pinyin_len);
+ m_cursor = m_pinyin_len;
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ else {
+ m_pinyin_len = m_pinyin.back ().begin;
+ m_pinyin.pop_back ();
+ m_text.erase (m_pinyin_len, m_cursor - m_pinyin_len);
+ m_cursor = m_pinyin_len;
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::removeWordAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor);
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::moveCursorLeft (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+
+ if (m_cursor >= m_pinyin_len) {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ else {
+ if (updatePinyin (FALSE)) {
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::moveCursorRight (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor ++;
+ if (updatePinyin (FALSE)) {
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::moveCursorLeftByWord (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ m_cursor = m_pinyin_len;
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ else {
+ m_cursor = m_pinyin_len = m_pinyin.back ().begin;
+ m_pinyin.pop_back ();
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::moveCursorRightByWord (void)
+{
+ return moveCursorToEnd ();
+}
+
+gboolean
+DoublePinyinContext::moveCursorToBegin (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor = 0;
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+
+ return TRUE;
+}
+
+gboolean
+DoublePinyinContext::moveCursorToEnd (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor = m_text.length ();
+ if (updatePinyin (FALSE)) {
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ return TRUE;
+}
+
+void
+DoublePinyinContext::reset (void)
+{
+ PinyinContext::reset ();
+}
+
+inline const Pinyin *
+DoublePinyinContext::isPinyin (gint i)
+{
+ if ((m_config.option () & PINYIN_INCOMPLETE_PINYIN) == 0) {
+ return NULL;
+ }
+
+ gint8 sheng = ID_TO_SHENG (i);
+
+ if (sheng == PINYIN_ID_VOID) {
+ return NULL;
+ }
+
+ return PinyinParser::isPinyin (sheng, 0, PINYIN_INCOMPLETE_PINYIN);
+}
+
+inline const Pinyin *
+DoublePinyinContext::isPinyin (gint i, gint j)
+{
+ const Pinyin *pinyin;
+ gint8 sheng = ID_TO_SHENG (i);
+ const gint8 *yun = ID_TO_YUNS (j);
+
+ if (sheng == PINYIN_ID_VOID || yun[0] == PINYIN_ID_VOID)
+ return NULL;
+
+ if (sheng == PINYIN_ID_ZERO && yun[0] == PINYIN_ID_ZERO)
+ return NULL;
+
+ if (yun[1] == PINYIN_ID_VOID) {
+ return PinyinParser::isPinyin (sheng, yun[0],
+ m_config.option () & (PINYIN_FUZZY_ALL | PINYIN_CORRECT_V_TO_U));
+ }
+
+ pinyin = PinyinParser::isPinyin (sheng, yun[0],
+ m_config.option () & (PINYIN_FUZZY_ALL));
+ if (pinyin == NULL)
+ pinyin = PinyinParser::isPinyin (sheng, yun[1],
+ m_config.option () & (PINYIN_FUZZY_ALL));
+ if (pinyin != NULL)
+ return pinyin;
+
+ /* if sheng == j q x y and yun == v, try to correct v to u */
+ if ((m_config.option () & PINYIN_CORRECT_V_TO_U) == 0)
+ return NULL;
+
+ if (yun[0] != PINYIN_ID_V && yun[1] != PINYIN_ID_V)
+ return NULL;
+
+ switch (sheng) {
+ case PINYIN_ID_J:
+ case PINYIN_ID_Q:
+ case PINYIN_ID_X:
+ case PINYIN_ID_Y:
+ return PinyinParser::isPinyin (sheng, PINYIN_ID_V,
+ m_config.option () & (PINYIN_FUZZY_ALL | PINYIN_CORRECT_V_TO_U));
+ default:
+ return NULL;
+ }
+}
+
+inline gboolean
+DoublePinyinContext::updatePinyin (gboolean all)
+{
+ gboolean retval = FALSE;
+
+ if (all &&
+ (m_pinyin_len != 0 || !m_pinyin.empty ())) {
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+ retval = TRUE;
+ }
+
+ if (m_pinyin_len > m_cursor) {
+ retval = TRUE;
+ while (m_pinyin_len > m_cursor) {
+ m_pinyin_len = m_pinyin.back ().begin;
+ m_pinyin.pop_back ();
+ }
+ }
+
+ if (m_pinyin_len == m_cursor) {
+ return retval;
+ }
+
+ if (m_pinyin_len < m_cursor) {
+ guint len = m_pinyin_len;
+ if (m_pinyin.empty () == FALSE &&
+ m_pinyin.back ()->flags & PINYIN_INCOMPLETE_PINYIN) {
+ const Pinyin *pinyin = isPinyin (ID (m_text[m_pinyin_len -1]),ID (m_text[m_pinyin_len]));
+ if (pinyin) {
+ m_pinyin.pop_back ();
+ m_pinyin.append (pinyin, m_pinyin_len - 1, 2);
+ m_pinyin_len += 1;
+ }
+ }
+ while (m_pinyin_len < m_cursor && m_pinyin.size () < MAX_PHRASE_LEN) {
+ const Pinyin *pinyin = NULL;
+ if (m_pinyin_len == m_cursor - 1) {
+ pinyin = isPinyin (ID (m_text[m_pinyin_len]));
+ }
+ else {
+ pinyin = isPinyin (ID (m_text[m_pinyin_len]), ID (m_text[m_pinyin_len + 1]));
+ if (pinyin == NULL)
+ pinyin = isPinyin (ID (m_text[m_pinyin_len]));
+ }
+ if (pinyin == NULL)
+ break;
+ if (pinyin->flags & PINYIN_INCOMPLETE_PINYIN) {
+ m_pinyin.append (pinyin, m_pinyin_len, 1);
+ m_pinyin_len += 1;
+ }
+ else {
+ m_pinyin.append (pinyin, m_pinyin_len, 2);
+ m_pinyin_len += 2;
+ }
+ }
+ if (len == m_pinyin_len)
+ return retval;
+ return TRUE;
+ }
+ return retval;
+}
+
+bool
+DoublePinyinContext::processKeyEvent (unsigned short key_event)
+{
+ const guint key_code = key_event && 0xff;
+
+ // handle ';' key
+ if (G_UNLIKELY (key_code == ';')) {
+ if (insert (key_code)) {
+ return TRUE;
+ }
+ }
+
+ return PinyinContext::processKeyEvent (key_event);
+}
+
+}; // namespace PyZy
+
+
diff --git a/src/PyZyDoublePinyinContext.h b/src/PyZyDoublePinyinContext.h
new file mode 100644
index 0000000..d14df38
--- /dev/null
+++ b/src/PyZyDoublePinyinContext.h
@@ -0,0 +1,64 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DOUBLE_PINYIN_CONTEXT_H_
+#define __DOUBLE_PINYIN_CONTEXT_H_
+
+#include "PyZyPinyinContext.h"
+
+namespace PyZy {
+
+class Config;
+
+class DoublePinyinContext : public PinyinContext {
+
+public:
+ DoublePinyinContext (Config & config, PhoneticContext::Observer *observer);
+
+ gboolean insert (gint ch);
+
+ gboolean removeCharBefore (void);
+ gboolean removeCharAfter (void);
+ gboolean removeWordBefore (void);
+ gboolean removeWordAfter (void);
+
+ gboolean moveCursorLeft (void);
+ gboolean moveCursorRight (void);
+ gboolean moveCursorLeftByWord (void);
+ gboolean moveCursorRightByWord (void);
+ gboolean moveCursorToBegin (void);
+ gboolean moveCursorToEnd (void);
+
+ /* override virtual functions */
+ bool processKeyEvent (unsigned short key_event);
+ void reset (void);
+
+protected:
+ gboolean updatePinyin (gboolean all);
+
+private:
+ const Pinyin *isPinyin (gint i, gint j);
+ const Pinyin *isPinyin (gint i);
+
+};
+
+}; // namespace PyZy
+
+#endif // __DOUBLE_PINYIN_CONTEXT_H_
diff --git a/src/PyZyDoublePinyinTable.h b/src/PyZyDoublePinyinTable.h
new file mode 100644
index 0000000..dbad859
--- /dev/null
+++ b/src/PyZyDoublePinyinTable.h
@@ -0,0 +1,398 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DOUBLE_PINYIN_TABLE_H_
+#define __DOUBLE_PINYIN_TABLE_H_
+
+#define DOUBLE_PINYIN_MSPY (0)
+#define DOUBLE_PINYIN_ZRM (1)
+#define DOUBLE_PINYIN_ABC (2)
+#define DOUBLE_PINYIN_ZGPY (3)
+#define DOUBLE_PINYIN_PYJJ (4)
+#define DOUBLE_PINYIN_XHE (5)
+#define DOUBLE_PINYIN_LAST (5)
+
+#ifdef DEFINE_DOUBLE_PINYIN_TABLES
+
+#define PINYIN_ID_AEO PINYIN_ID_ZERO
+
+static const gint8 double_pinyin_mspy_sheng[] = {
+ PINYIN_ID_AEO, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_AEO, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_CH, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_SH, // U
+ PINYIN_ID_ZH, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_mspy_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // B
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // C
+ { PINYIN_ID_UANG, PINYIN_ID_IANG }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // G
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // J
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // K
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // L
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
+ { PINYIN_ID_IN, PINYIN_ID_VOID }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
+ { PINYIN_ID_UAN, PINYIN_ID_ER }, // R
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
+ { PINYIN_ID_UE, PINYIN_ID_VOID }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_UI, PINYIN_ID_UE }, // V
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // W
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // X
+ { PINYIN_ID_UAI, PINYIN_ID_V }, // Y
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_ING, PINYIN_ID_VOID }, // ;
+};
+static const gint8 double_pinyin_zrm_sheng[] = {
+ PINYIN_ID_AEO, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_AEO, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_CH, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_SH, // U
+ PINYIN_ID_ZH, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_zrm_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // B
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // C
+ { PINYIN_ID_UANG, PINYIN_ID_IANG }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // G
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // J
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // K
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // L
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
+ { PINYIN_ID_IN, PINYIN_ID_VOID }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
+ { PINYIN_ID_UAN, PINYIN_ID_ER }, // R
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
+ { PINYIN_ID_UE, PINYIN_ID_VOID }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_UI, PINYIN_ID_V }, // V
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // W
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // X
+ { PINYIN_ID_UAI, PINYIN_ID_ING }, // Y
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
+};
+static const gint8 double_pinyin_abc_sheng[] = {
+ PINYIN_ID_ZH, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_CH, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_VOID, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_VOID, // U
+ PINYIN_ID_SH, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_abc_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // B
+ { PINYIN_ID_IN, PINYIN_ID_UAI }, // C
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // G
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // J
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // K
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // L
+ { PINYIN_ID_UE, PINYIN_ID_UI }, // M
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_UAN, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // Q
+ { PINYIN_ID_ER, PINYIN_ID_IU }, // R
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
+ { PINYIN_ID_IANG, PINYIN_ID_UANG }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_V, PINYIN_ID_UE }, // V
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // W
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // X
+ { PINYIN_ID_ING, PINYIN_ID_VOID }, // Y
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
+};
+static const gint8 double_pinyin_zgpy_sheng[] = {
+ PINYIN_ID_CH, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_AEO, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_SH, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_ZH, // U
+ PINYIN_ID_VOID, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_zgpy_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // B
+ { PINYIN_ID_VOID, PINYIN_ID_VOID }, // C
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_IANG, PINYIN_ID_UANG }, // G
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_ER, PINYIN_ID_IU }, // J
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // K
+ { PINYIN_ID_UAN, PINYIN_ID_VOID }, // L
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // M
+ { PINYIN_ID_UE, PINYIN_ID_UI }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // Q
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // R
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // S
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_V, PINYIN_ID_VOID }, // V
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // W
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // X
+ { PINYIN_ID_IN, PINYIN_ID_UAI }, // Y
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_ING, PINYIN_ID_VOID }, // ;
+};
+static const gint8 double_pinyin_pyjj_sheng[] = {
+ PINYIN_ID_ZERO, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_AEO, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_SH, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_CH, // U
+ PINYIN_ID_ZH, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_pyjj_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // B
+ { PINYIN_ID_UAN, PINYIN_ID_VOID }, // C
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // G
+ { PINYIN_ID_IANG, PINYIN_ID_UANG }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // J
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // K
+ { PINYIN_ID_IN, PINYIN_ID_VOID }, // L
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // M
+ { PINYIN_ID_IU, PINYIN_ID_VOID }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_ER, PINYIN_ID_ING }, // Q
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // R
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // S
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_V, PINYIN_ID_UI }, // V
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // W
+ { PINYIN_ID_UAI, PINYIN_ID_UE }, // X
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // Y
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
+};
+static const gint8 double_pinyin_xhe_sheng[] = {
+ PINYIN_ID_AEO, // A
+ PINYIN_ID_B, // B
+ PINYIN_ID_C, // C
+ PINYIN_ID_D, // D
+ PINYIN_ID_AEO, // E
+ PINYIN_ID_F, // F
+ PINYIN_ID_G, // G
+ PINYIN_ID_H, // H
+ PINYIN_ID_CH, // I
+ PINYIN_ID_J, // J
+ PINYIN_ID_K, // K
+ PINYIN_ID_L, // L
+ PINYIN_ID_M, // M
+ PINYIN_ID_N, // N
+ PINYIN_ID_ZERO, // O
+ PINYIN_ID_P, // P
+ PINYIN_ID_Q, // Q
+ PINYIN_ID_R, // R
+ PINYIN_ID_S, // S
+ PINYIN_ID_T, // T
+ PINYIN_ID_SH, // U
+ PINYIN_ID_ZH, // V
+ PINYIN_ID_W, // W
+ PINYIN_ID_X, // X
+ PINYIN_ID_Y, // Y
+ PINYIN_ID_Z, // Z
+ PINYIN_ID_VOID, // ;
+};
+static const gint8 double_pinyin_xhe_yun[][2] = {
+ { PINYIN_ID_A, PINYIN_ID_VOID }, // A
+ { PINYIN_ID_IN, PINYIN_ID_VOID }, // B
+ { PINYIN_ID_AO, PINYIN_ID_VOID }, // C
+ { PINYIN_ID_AI, PINYIN_ID_VOID }, // D
+ { PINYIN_ID_E, PINYIN_ID_VOID }, // E
+ { PINYIN_ID_EN, PINYIN_ID_VOID }, // F
+ { PINYIN_ID_ENG, PINYIN_ID_NG }, // G
+ { PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
+ { PINYIN_ID_I, PINYIN_ID_VOID }, // I
+ { PINYIN_ID_AN, PINYIN_ID_VOID }, // J
+ { PINYIN_ID_UAI, PINYIN_ID_ING }, // K
+ { PINYIN_ID_IANG, PINYIN_ID_UANG }, // L
+ { PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
+ { PINYIN_ID_IAO, PINYIN_ID_VOID }, // N
+ { PINYIN_ID_UO, PINYIN_ID_O }, // O
+ { PINYIN_ID_IE, PINYIN_ID_VOID }, // P
+ { PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
+ { PINYIN_ID_UAN, PINYIN_ID_ER }, // R
+ { PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
+ { PINYIN_ID_UE, PINYIN_ID_VOID }, // T
+ { PINYIN_ID_U, PINYIN_ID_VOID }, // U
+ { PINYIN_ID_V, PINYIN_ID_UI }, // V
+ { PINYIN_ID_EI, PINYIN_ID_VOID }, // W
+ { PINYIN_ID_IA, PINYIN_ID_UA }, // X
+ { PINYIN_ID_UN, PINYIN_ID_VOID }, // Y
+ { PINYIN_ID_OU, PINYIN_ID_VOID }, // Z
+ { PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
+};
+
+static const struct {
+ const gint8 (&sheng)[27];
+ const gint8 (&yun)[27][2];
+} double_pinyin_map [] = {
+ { double_pinyin_mspy_sheng, double_pinyin_mspy_yun },
+ { double_pinyin_zrm_sheng, double_pinyin_zrm_yun },
+ { double_pinyin_abc_sheng, double_pinyin_abc_yun },
+ { double_pinyin_zgpy_sheng, double_pinyin_zgpy_yun },
+ { double_pinyin_pyjj_sheng, double_pinyin_pyjj_yun },
+ { double_pinyin_xhe_sheng, double_pinyin_xhe_yun },
+};
+#endif // DEFINE_DOUBLE_PINYIN_TABLE
+
+#endif // __DOUBLE_PINYIN_TABLE_H_
diff --git a/src/PyZyDynamicSpecialPhrase.cc b/src/PyZyDynamicSpecialPhrase.cc
new file mode 100644
index 0000000..6f6b0a3
--- /dev/null
+++ b/src/PyZyDynamicSpecialPhrase.cc
@@ -0,0 +1,206 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyDynamicSpecialPhrase.h"
+
+namespace PyZy {
+
+DynamicSpecialPhrase::~DynamicSpecialPhrase (void)
+{
+}
+
+std::string
+DynamicSpecialPhrase::text (void)
+{
+ /* get the current time */
+ std::time_t rawtime;
+ std::time (&rawtime);
+ m_time = *std::localtime (&rawtime);
+
+ std::string result;
+
+ size_t pos = 0;
+ size_t pnext;
+ gint s = 0;
+ while (s != 2) {
+ switch (s) {
+ case 0: // expect "${"
+ pnext = m_text.find ("${", pos);
+ if (pnext == m_text.npos) {
+ result += m_text.substr (pos);
+ s = 2;
+ }
+ else {
+ result += m_text.substr (pos, pnext - pos);
+ pos = pnext + 2;
+ s = 1;
+ }
+ break;
+ case 1: // expect "}"
+ pnext = m_text.find ("}", pos);
+ if (pnext == m_text.npos) {
+ result += "${";
+ result += m_text.substr (pos);
+ s = 2;
+ }
+ else {
+ result += variable (m_text.substr(pos, pnext - pos));
+ pos = pnext + 1;
+ s = 0;
+ }
+ break;
+ default: /* should not be reached */
+ g_assert_not_reached ();
+ }
+ }
+ return result;
+}
+
+inline const std::string
+DynamicSpecialPhrase::dec (gint d, const gchar *fmt)
+{
+ gchar string [32];
+ g_snprintf (string, sizeof (string), fmt, d);
+ return string;
+}
+
+inline const std::string
+DynamicSpecialPhrase::year_cn (gboolean yy)
+{
+ static const gchar * const digits[] = {
+ "〇", "一", "二", "三", "四",
+ "五", "六", "七", "八", "九"
+ };
+
+ gint year = m_time.tm_year + 1900;
+ gint bit = 0;
+ if (yy) {
+ year %= 100;
+ bit = 2;
+ }
+
+ std::string result;
+ while (year != 0 || bit > 0) {
+ result.insert(0, digits[year % 10]);
+ year /= 10;
+ bit -= 1;
+ }
+ return result;
+}
+
+inline const std::string
+DynamicSpecialPhrase::month_cn (void)
+{
+ static const gchar * const month_num[] = {
+ "一", "二", "三", "四", "五", "六", "七", "八",
+ "九", "十", "十一", "十二"
+ };
+ return month_num[m_time.tm_mon];
+}
+
+inline const std::string
+DynamicSpecialPhrase::weekday_cn (void)
+{
+ static const gchar * const week_num[] = {
+ "日", "一", "二", "三", "四", "五", "六"
+ };
+ return week_num[m_time.tm_wday];
+}
+
+inline const std::string
+DynamicSpecialPhrase::hour_cn (guint i)
+{
+ static const gchar * const hour_num[] = {
+ "零", "一", "二", "三", "四",
+ "五", "六", "七", "八", "九",
+ "十", "十一", "十二", "十三", "十四",
+ "十五", "十六", "十七", "十八", "十九",
+ "二十", "二十一", "二十二", "二十三",
+ };
+ return hour_num[i];
+}
+
+inline const std::string
+DynamicSpecialPhrase::fullhour_cn (void)
+{
+ return hour_cn (m_time.tm_hour);
+}
+
+inline const std::string
+DynamicSpecialPhrase::halfhour_cn (void)
+{
+ return hour_cn (m_time.tm_hour % 12);
+}
+
+inline const std::string
+DynamicSpecialPhrase::day_cn (void)
+{
+ static const gchar * const day_num[] = {
+ "", "一", "二", "三", "四",
+ "五", "六", "七", "八", "九",
+ "", "十","二十", "三十"
+ };
+ guint day = m_time.tm_mday;
+ return std::string (day_num[day / 10 + 10]) + day_num[day % 10];
+}
+
+inline const std::string
+DynamicSpecialPhrase::minsec_cn (guint i)
+{
+ static const gchar * const num[] = {
+ "", "一", "二", "三", "四",
+ "五", "六", "七", "八", "九",
+ "零", "十","二十", "三十", "四十"
+ "五十", "六十"
+ };
+ return std::string (num[i / 10 + 10]) + num[i % 10];
+}
+
+inline const std::string
+DynamicSpecialPhrase::variable (const std::string &name)
+{
+ if (name == "year") return dec (m_time.tm_year + 1900);
+ if (name == "year_yy") return dec ((m_time.tm_year + 1900) % 100, "%02d");
+ if (name == "month") return dec (m_time.tm_mon + 1);
+ if (name == "month_mm") return dec (m_time.tm_mon + 1, "%02d");
+ if (name == "day") return dec (m_time.tm_mday);
+ if (name == "day_dd") return dec (m_time.tm_mday, "%02d");
+ if (name == "weekday") return dec (m_time.tm_wday + 1);
+ if (name == "fullhour") return dec (m_time.tm_hour, "%02d");
+ if (name == "falfhour") return dec (m_time.tm_hour % 12, "%02d");
+ if (name == "ampm") return m_time.tm_hour < 12 ? "AM" : "PM";
+ if (name == "minute") return dec (m_time.tm_min, "%02d");
+ if (name == "second") return dec (m_time.tm_sec, "%02d");
+ if (name == "year_cn") return year_cn ();
+ if (name == "year_yy_cn") return year_cn (TRUE);
+ if (name == "month_cn") return month_cn ();
+ if (name == "day_cn") return day_cn ();
+ if (name == "weekday_cn") return weekday_cn ();
+ if (name == "fullhour_cn") return fullhour_cn ();
+ if (name == "halfhour_cn") return halfhour_cn ();
+ if (name == "ampm_cn") return m_time.tm_hour < 12 ? "上午" : "下午";
+ if (name == "minute_cn") return minsec_cn (m_time.tm_min);
+ if (name == "second_cn") return minsec_cn (m_time.tm_sec);
+
+ return "${" + name + "}";
+}
+
+}; // namespace PyZy
+
diff --git a/src/PyZyDynamicSpecialPhrase.h b/src/PyZyDynamicSpecialPhrase.h
new file mode 100644
index 0000000..8da9857
--- /dev/null
+++ b/src/PyZyDynamicSpecialPhrase.h
@@ -0,0 +1,57 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DYNAMIC_SPECIAL_PHRASE_H_
+#define __DYNAMIC_SPECIAL_PHRASE_H_
+
+#include <ctime>
+#include <string>
+#include <glib.h>
+#include "PyZySpecialPhrase.h"
+
+namespace PyZy {
+
+class DynamicSpecialPhrase : public SpecialPhrase {
+public:
+ DynamicSpecialPhrase (const std::string &text, guint pos) :
+ SpecialPhrase (pos), m_text (text) { }
+ ~DynamicSpecialPhrase (void);
+
+ std::string text (void);
+ const std::string dec (gint d, const gchar *fmt = "%d");
+ const std::string year_cn (gboolean yy = FALSE);
+ const std::string month_cn (void);
+ const std::string weekday_cn (void);
+ const std::string hour_cn (guint i);
+ const std::string fullhour_cn (void);
+ const std::string halfhour_cn (void);
+ const std::string day_cn (void);
+ const std::string minsec_cn (guint i);
+ const std::string variable (const std::string &name);
+
+private:
+ std::string m_text;
+ std::tm m_time;
+};
+
+}; // namespace PyZy
+
+#endif // __DYNAMIC_SPECIAL_PHRASE_H_
+
diff --git a/src/PyZyFullPinyinContext.cc b/src/PyZyFullPinyinContext.cc
new file mode 100644
index 0000000..06fc206
--- /dev/null
+++ b/src/PyZyFullPinyinContext.cc
@@ -0,0 +1,239 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyFullPinyinContext.h"
+#include "PyZyConfig.h"
+#include "PyZyPinyinParser.h"
+
+namespace PyZy {
+
+FullPinyinContext::FullPinyinContext (Config & config, PhoneticContext::Observer *observer)
+ : PinyinContext (config, observer)
+{
+}
+
+FullPinyinContext::~FullPinyinContext (void)
+{
+}
+
+void
+FullPinyinContext::reset (void)
+{
+ PinyinContext::reset ();
+}
+
+gboolean
+FullPinyinContext::insert (gint ch)
+{
+ /* is full */
+ if (G_UNLIKELY (m_text.length () >= MAX_PINYIN_LEN))
+ return TRUE;
+
+ m_text.insert (m_cursor++, ch);
+
+ if (G_UNLIKELY (!(m_config.option () & PINYIN_INCOMPLETE_PINYIN))) {
+ updateSpecialPhrases ();
+ updatePinyin ();
+ }
+ else if (G_LIKELY (m_cursor <= m_pinyin_len + 2)) {
+ updateSpecialPhrases ();
+ updatePinyin ();
+ }
+ else {
+ if (updateSpecialPhrases ()) {
+ update ();
+ }
+ else {
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ }
+ }
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::removeCharBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+ m_text.erase (m_cursor, 1);
+
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::removeCharAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor, 1);
+ updatePreeditText ();
+ updateAuxiliaryText ();
+
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::removeWordBefore (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ guint cursor;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ cursor = m_pinyin_len;
+ }
+ else {
+ const Pinyin & p = *m_pinyin.back ();
+ cursor = m_cursor - p.len;
+ m_pinyin_len -= p.len;
+ m_pinyin.pop_back ();
+ }
+
+ m_text.erase (cursor, m_cursor - cursor);
+ m_cursor = cursor;
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::removeWordAfter (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_text.erase (m_cursor, -1);
+ updatePreeditText ();
+ updateAuxiliaryText ();
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::moveCursorLeft (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor --;
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::moveCursorRight (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor ++;
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::moveCursorLeftByWord (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
+ m_cursor = m_pinyin_len;
+ return TRUE;
+ }
+
+ const Pinyin & p = *m_pinyin.back ();
+ m_cursor -= p.len;
+ m_pinyin_len -= p.len;
+ m_pinyin.pop_back ();
+
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::moveCursorRightByWord (void)
+{
+ return moveCursorToEnd ();
+}
+
+gboolean
+FullPinyinContext::moveCursorToBegin (void)
+{
+ if (G_UNLIKELY (m_cursor == 0))
+ return FALSE;
+
+ m_cursor = 0;
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+
+ updateSpecialPhrases ();
+ updatePhraseEditor ();
+ update ();
+ return TRUE;
+}
+
+gboolean
+FullPinyinContext::moveCursorToEnd (void)
+{
+ if (G_UNLIKELY (m_cursor == m_text.length ()))
+ return FALSE;
+
+ m_cursor = m_text.length ();
+ updateSpecialPhrases ();
+ updatePinyin ();
+
+ return TRUE;
+}
+
+void
+FullPinyinContext::updatePinyin (void)
+{
+ if (G_UNLIKELY (m_text.empty ())) {
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+ }
+ else {
+ m_pinyin_len = PinyinParser::parse (m_text, // text
+ m_cursor, // text length
+ m_config.option (), // option
+ m_pinyin, // result
+ MAX_PHRASE_LEN); // max result length
+ }
+
+ updatePhraseEditor ();
+ update ();
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyFullPinyinContext.h b/src/PyZyFullPinyinContext.h
new file mode 100644
index 0000000..78f62ab
--- /dev/null
+++ b/src/PyZyFullPinyinContext.h
@@ -0,0 +1,63 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __FULL_PINYIN_CONTEXT_H_
+#define __FULL_PINYIN_CONTEXT_H_
+
+#include "PyZyPinyinContext.h"
+
+namespace PyZy {
+
+class Config;
+
+class FullPinyinContext : public PinyinContext {
+
+public:
+ FullPinyinContext (Config & config, PhoneticContext::Observer *observer);
+ ~FullPinyinContext (void);
+
+public:
+#if 0
+ virtual bool processKeyEvent (unsigned short key_event);
+#endif
+ virtual void reset (void);
+
+protected:
+ gboolean insert (gint ch);
+
+ gboolean removeCharBefore (void);
+ gboolean removeCharAfter (void);
+ gboolean removeWordBefore (void);
+ gboolean removeWordAfter (void);
+
+ gboolean moveCursorLeft (void);
+ gboolean moveCursorRight (void);
+ gboolean moveCursorLeftByWord (void);
+ gboolean moveCursorRightByWord (void);
+ gboolean moveCursorToBegin (void);
+ gboolean moveCursorToEnd (void);
+
+ void updatePinyin (void);
+
+};
+
+}; // namespace PyZy
+
+#endif //
diff --git a/src/PyZyInputContext.cc b/src/PyZyInputContext.cc
new file mode 100644
index 0000000..03ded0e
--- /dev/null
+++ b/src/PyZyInputContext.cc
@@ -0,0 +1,46 @@
+#include "PyZyPhoneticContext.h"
+
+#include "PyZyFullPinyinContext.h"
+#include "PyZyDoublePinyinContext.h"
+#include "PyZyBopomofoContext.h"
+#include "PyZyDatabase.h"
+
+namespace PyZy {
+
+void
+InputContext::init ()
+{
+ init ("libpyzy");
+}
+
+void
+InputContext::init (const std::string & user_data_dir)
+{
+ Database::init (user_data_dir);
+}
+
+void
+InputContext::finalize ()
+{
+ Database::finalize ();
+}
+
+
+InputContext *
+InputContext::create (InputContext::InputType type,
+ Config & config,
+ InputContext::Observer * observer) {
+ switch (type) {
+ case FULL_PINYIN:
+ return new FullPinyinContext (config, observer);
+ case DOUBLE_PINYIN:
+ return new DoublePinyinContext (config, observer);
+ case BOPOMOFO:
+ return new BopomofoContext (config, observer);
+ default:
+ g_warning ("unknown context type.\n");
+ return NULL;
+ }
+}
+
+} // namespace PyZy
diff --git a/src/PyZyInputContext.h b/src/PyZyInputContext.h
new file mode 100644
index 0000000..41eb521
--- /dev/null
+++ b/src/PyZyInputContext.h
@@ -0,0 +1,118 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __INPUT_CONTEXT_H_
+#define __INPUT_CONTEXT_H_
+
+#include <string>
+#include <vector>
+
+namespace PyZy {
+
+class Config;
+
+enum CandidateType {
+ NORMAL_PHRASE,
+ USER_PHRASE,
+ SPECIAL_PHRASE,
+};
+
+struct Candidate {
+ std::string text;
+ CandidateType type;
+};
+
+// lower 8bits of vkey_code should be zero.
+enum vkey_code {
+ VKEY_FIRST = 1 << 8,
+
+ VKEY_COMMIT = (10 << 8),
+ VKEY_RESET = (11 << 8),
+
+ VKEY_CURSOR_RIGHT = (20 << 8),
+ VKEY_CURSOR_LEFT = (21 << 8),
+ VKEY_CURSOR_RIGHT_BY_WORD = (22 << 8),
+ VKEY_CURSOR_LEFT_BY_WORD = (23 << 8),
+ VKEY_CURSOR_TO_BEGIN = (24 << 8),
+ VKEY_CURSOR_TO_END = (25 << 8),
+
+ VKEY_CANDIDATE_SELECT = (30 << 8),
+ VKEY_CANDIDATE_FOCUS = (31 << 8),
+ VKEY_CANDIDATE_RESET = (32 << 8),
+
+ VKEY_PAGE_PREVIOUS = (40 << 8),
+ VKEY_PAGE_NEXT = (41 << 8),
+ VKEY_PAGE_BEGIN = (42 << 8),
+ VKEY_PAGE_END = (43 << 8),
+
+ VKEY_DELETE_CHARACTER_BEFORE = (50 << 8),
+ VKEY_DELETE_CHARACTER_AFTER = (51 << 8),
+ VKEY_DELETE_WORD_BEFORE = (52 << 8),
+ VKEY_DELETE_WORD_AFTER = (53 << 8),
+
+ VKEY_BOPOMOFO_SELECT_MODE = (60 << 8),
+};
+
+class InputContext {
+public:
+ virtual ~InputContext (void) { }
+
+ class Observer {
+ public:
+ virtual ~Observer () { }
+ virtual void commitText (const std::string &commit_text) = 0;
+ virtual void preeditTextChanged () = 0;
+ virtual void auxiliaryTextChanged () = 0;
+ virtual void lookupTableChanged () = 0;
+ };
+
+ enum InputType {
+ FULL_PINYIN,
+ DOUBLE_PINYIN,
+ BOPOMOFO,
+ };
+
+ /* static functions */
+ static void init ();
+ static void init (const std::string & user_data_dir);
+ static void finalize ();
+ static InputContext * create (InputContext::InputType type,
+ Config & config,
+ InputContext::Observer * observer);
+
+ virtual bool processKeyEvent (unsigned short key_event) = 0;
+ virtual void update (void) = 0;
+ virtual void commit (void) = 0;
+ virtual void reset (void) = 0;
+
+ virtual std::string selectedText (void) const = 0;
+ virtual std::string conversionText (void) const = 0;
+ virtual std::string restText (void) const = 0;
+ virtual std::string auxiliaryText (void) const = 0;
+ virtual std::vector<Candidate> candidates () const = 0;
+ virtual std::string inputText () const = 0;
+ virtual unsigned int cursor () const = 0;
+ virtual unsigned int focusedCandidate () const = 0;
+ virtual unsigned int page () const = 0;
+};
+
+}; // namespace PyZy
+
+#endif // __INPUT_CONTEXT_H_
diff --git a/src/PyZyPhoneticContext.cc b/src/PyZyPhoneticContext.cc
new file mode 100644
index 0000000..fa03677
--- /dev/null
+++ b/src/PyZyPhoneticContext.cc
@@ -0,0 +1,329 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyPhoneticContext.h"
+#include "PyZySimpTradConverter.h"
+#include "PyZyDatabase.h"
+#include "PyZyPhraseEditor.h"
+
+namespace PyZy {
+
+PhoneticContext::PhoneticContext (Config & config, PhoneticContext::Observer *observer)
+ : m_config (config),
+ m_phrase_editor (config),
+ m_observer (observer)
+{
+ reset ();
+}
+
+PhoneticContext::~PhoneticContext ()
+{
+}
+
+bool
+PhoneticContext::processKeyEvent (unsigned short key)
+{
+ const guint key_code = key & 0x00ff;
+ const guint vkey_code = key & 0xff00;
+
+ if (vkey_code == 0) {
+ if ('a' <= key_code && key_code <= 'z') {
+ return insert (key_code);
+ }
+ } else {
+ const guint key_num = key_code - '1';
+
+ switch (vkey_code) {
+ case VKEY_COMMIT:
+ commit ();
+ return TRUE;
+ case VKEY_RESET:
+ reset ();
+ update ();
+ return TRUE;
+
+ case VKEY_CURSOR_RIGHT:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorRight();
+ }
+ case VKEY_CURSOR_LEFT:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorLeft();
+ }
+ case VKEY_CURSOR_RIGHT_BY_WORD:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorRightByWord ();
+ }
+ case VKEY_CURSOR_LEFT_BY_WORD:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorLeftByWord ();
+ }
+ case VKEY_CURSOR_TO_BEGIN:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorToBegin();
+ }
+ case VKEY_CURSOR_TO_END:
+ if (m_phrase_editor.unselectCandidates ()) {
+ update ();
+ return TRUE;
+ } else {
+ return moveCursorToEnd();
+ }
+
+ case VKEY_CANDIDATE_SELECT:
+ return selectCandidateInPage (key_num);
+ case VKEY_CANDIDATE_FOCUS:
+ return focusCandidateInPage (key_num);
+ case VKEY_CANDIDATE_RESET:
+ return resetCandidateInPage (key_num);
+
+ case VKEY_PAGE_PREVIOUS:
+ selectPage (MAX(1, page ()) - 1);
+ return TRUE;
+ case VKEY_PAGE_NEXT:
+ selectPage (page () + 1);
+ return TRUE;
+ case VKEY_PAGE_BEGIN:
+ selectPage (0);
+ return TRUE;
+ case VKEY_PAGE_END:
+ {
+ const guint guint_max = (guint)-1;
+ selectPage (guint_max);
+ }
+ return TRUE;
+
+ case VKEY_DELETE_CHARACTER_BEFORE:
+ return removeCharBefore();
+ case VKEY_DELETE_CHARACTER_AFTER:
+ return removeCharAfter();
+ case VKEY_DELETE_WORD_BEFORE:
+ return removeWordBefore();
+ case VKEY_DELETE_WORD_AFTER:
+ return removeWordAfter();
+ }
+ }
+
+ g_warning ("Can't handle KeyEvent (keycode=%d, vkeycode=%d)\n",
+ key_code, vkey_code);
+ return FALSE;
+}
+
+gboolean
+PhoneticContext::updateSpecialPhrases (void)
+{
+ guint size = m_special_phrases.size ();
+ m_special_phrases.clear ();
+
+ if (!m_config.specialPhrases ())
+ return FALSE;
+
+ if (!m_selected_special_phrase.empty ())
+ return FALSE;
+
+ guint begin = m_phrase_editor.cursorInChar ();
+ guint end = m_cursor;
+
+ if (begin < end) {
+ SpecialPhraseTable::instance ().lookup (
+ m_text.substr (begin, m_cursor - begin),
+ m_special_phrases);
+ }
+
+ return size != m_special_phrases.size () || size != 0;
+}
+
+void
+PhoneticContext::updateLookupTable (void)
+{
+ m_candidates.clear ();
+
+ for (gint i = 0; i < m_special_phrases.size (); ++i) {
+ Candidate candidate;
+ candidate.text = m_special_phrases[i];
+ candidate.type = SPECIAL_PHRASE;
+ m_candidates.push_back (candidate);
+ }
+
+ const PhraseArray & phrase_array = m_phrase_editor.candidates ();
+ for (gint i = 0; i < phrase_array.size (); ++i) {
+ CandidateType candidate_type;
+
+ if (i < m_special_phrases.size ()) {
+ candidate_type = SPECIAL_PHRASE;
+ } else if (m_phrase_editor.candidateIsUserPhrase (i - m_special_phrases.size ())) {
+ candidate_type = USER_PHRASE;
+ } else {
+ candidate_type = NORMAL_PHRASE;
+ }
+
+ Candidate candidate;
+ candidate.text = phrase_array[i].phrase;
+ candidate.type = candidate_type;
+ m_candidates.push_back (candidate);
+ }
+
+ m_observer->lookupTableChanged ();
+}
+
+void
+PhoneticContext::reset (void)
+{
+ m_pinyin.clear ();
+ m_pinyin_len = 0;
+ m_phrase_editor.reset ();
+ m_special_phrases.clear ();
+ m_selected_special_phrase.clear ();
+
+ m_cursor = 0;
+ m_focused_candidate = 0;
+ m_text.clear ();
+ m_preedit_text.clear ();
+}
+
+gboolean
+PhoneticContext::focusCandidateInPage (guint i)
+{
+ return focusCandidate (page () * m_config.pageSize () + i);
+}
+
+gboolean
+PhoneticContext::focusCandidate (guint i)
+{
+ if (G_UNLIKELY (i >= m_candidates.size ())) {
+ g_warning ("Too big index. Can't focus to selected candidate.");
+ return FALSE;
+ }
+ m_focused_candidate = i;
+
+ update ();
+
+ return TRUE;
+}
+
+void
+PhoneticContext::selectPage (guint i)
+{
+ if (G_UNLIKELY (m_candidates.size () == 0)) {
+ m_focused_candidate = 0;
+ return;
+ }
+
+ const guint size = m_config.pageSize ();
+ const guint max_page = (m_candidates.size () - 1) / size;
+ if (i > max_page) {
+ i = max_page;
+ }
+
+ m_focused_candidate = MIN (m_candidates.size (), i * size + m_focused_candidate % size);
+
+ update ();
+}
+
+void
+PhoneticContext::update ()
+{
+ updateLookupTable ();
+ updatePreeditText ();
+ updateAuxiliaryText ();
+}
+
+gboolean
+PhoneticContext::selectCandidate (guint i)
+{
+ if (i >= m_config.pageSize ()) {
+ g_warning ("selectCandidate(%ud): Too big index!\n", i);
+ }
+
+ if (i < m_special_phrases.size ()) {
+ // select a special phrase
+ m_selected_special_phrase = m_special_phrases[i];
+ m_focused_candidate = 0;
+ if (m_cursor == m_text.size ()) {
+ commit ();
+ }
+ else {
+ updateSpecialPhrases ();
+ update ();
+ }
+
+ return TRUE;
+ }
+
+ i -= m_special_phrases.size ();
+ if (m_phrase_editor.selectCandidate (i)) {
+ m_focused_candidate = 0;
+ if (m_phrase_editor.pinyinExistsAfterCursor () ||
+ *textAfterPinyin () != '\0') {
+ updateSpecialPhrases ();
+ update ();
+ }
+ else {
+ commit ();
+ }
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+gboolean
+PhoneticContext::selectCandidateInPage (guint i)
+{
+ return selectCandidate (page () * m_config.pageSize () + i);
+}
+
+gboolean
+PhoneticContext::resetCandidate (guint i)
+{
+ if (i < m_special_phrases.size ()) {
+ return FALSE;
+ }
+ i -= m_special_phrases.size ();
+
+ if (m_phrase_editor.resetCandidate (i)) {
+ update ();
+ }
+
+ return TRUE;
+}
+
+gboolean
+PhoneticContext::resetCandidateInPage (guint i)
+{
+ return resetCandidate (page () * m_config.pageSize () + i);
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyPhoneticContext.h b/src/PyZyPhoneticContext.h
new file mode 100644
index 0000000..e60f665
--- /dev/null
+++ b/src/PyZyPhoneticContext.h
@@ -0,0 +1,141 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PHONETIC_CONTEXT_H_
+#define __PHONETIC_CONTEXT_H_
+
+#include <string>
+#include <vector>
+#include "PyZyInputContext.h"
+#include "PyZyConfig.h"
+#include "PyZyPinyinArray.h"
+#include "PyZyPhraseEditor.h"
+#include "PyZySpecialPhraseTable.h"
+
+namespace PyZy {
+
+struct Preedit {
+ std::string selected_text;
+ std::string candidate_text;
+ std::string rest_text;
+
+ void clear () {
+ selected_text.clear ();
+ candidate_text.clear ();
+ rest_text.clear ();
+ }
+};
+
+
+class PhoneticContext : public InputContext {
+public:
+ PhoneticContext (Config & config, PhoneticContext::Observer *observer);
+ virtual ~PhoneticContext (void);
+
+ virtual bool processKeyEvent (unsigned short key_event);
+
+ virtual void update (void);
+ virtual void commit (void) = 0;
+ virtual void reset (void);
+
+ /* inline functions */
+ virtual std::string selectedText (void) const { return m_preedit_text.selected_text; }
+ virtual std::string conversionText (void) const { return m_preedit_text.candidate_text; }
+ virtual std::string restText (void) const { return m_preedit_text.rest_text; }
+ virtual std::string auxiliaryText (void) const { return m_auxiliary_text; }
+ virtual std::vector<Candidate> candidates () const { return m_candidates; }
+ virtual std::string inputText () const { return m_text; }
+ unsigned int cursor () const { return m_cursor; }
+ unsigned int focusedCandidate () const { return m_focused_candidate; }
+ unsigned int page () const { return m_focused_candidate / m_config.pageSize (); }
+
+protected:
+
+ virtual void updateLookupTable (void);
+ virtual gboolean updateSpecialPhrases (void);
+ gboolean selectCandidate (guint i);
+ gboolean selectCandidateInPage (guint i);
+ gboolean resetCandidate (guint i);
+ gboolean resetCandidateInPage (guint i);
+ gboolean focusCandidate (guint i);
+ gboolean focusCandidateInPage (guint i);
+
+ virtual void selectPage (guint i);
+
+ /* inline functions */
+ void updatePhraseEditor (void)
+ {
+ m_phrase_editor.update (m_pinyin);
+ }
+
+ const gchar * textAfterPinyin () const
+ {
+ return (const gchar *)m_text + m_pinyin_len;
+ }
+
+ const gchar * textAfterPinyin (guint i) const
+ {
+ g_assert (i <= m_pinyin.size ());
+ if ( G_UNLIKELY (i == 0))
+ return m_text;
+ i--;
+ return (const gchar *)m_text + m_pinyin[i].begin + m_pinyin[i].len;
+ }
+
+ const gchar * textAfterCursor () const
+ {
+ return (const gchar *)m_text + m_cursor;
+ }
+
+ /* pure virtual functions */
+ virtual gboolean insert (gint ch) = 0;
+ virtual gboolean removeCharBefore (void) = 0;
+ virtual gboolean removeCharAfter (void) = 0;
+ virtual gboolean removeWordBefore (void) = 0;
+ virtual gboolean removeWordAfter (void) = 0;
+ virtual gboolean moveCursorLeft (void) = 0;
+ virtual gboolean moveCursorRight (void) = 0;
+ virtual gboolean moveCursorLeftByWord (void) = 0;
+ virtual gboolean moveCursorRightByWord (void) = 0;
+ virtual gboolean moveCursorToBegin (void) = 0;
+ virtual gboolean moveCursorToEnd (void) = 0;
+ virtual void updateAuxiliaryText (void) = 0;
+ virtual void updatePreeditText (void) = 0;
+
+ /* variables */
+ Config &m_config;
+ guint m_cursor;
+ guint m_focused_candidate;
+ PinyinArray m_pinyin;
+ guint m_pinyin_len;
+ String m_buffer;
+ PhraseEditor m_phrase_editor;
+ std::vector<std::string> m_special_phrases;
+ std::string m_selected_special_phrase;
+ String m_text;
+ Preedit m_preedit_text;
+ PhoneticContext::Observer *m_observer;
+ std::vector<Candidate> m_candidates;
+ std::string m_auxiliary_text;
+};
+
+}; // namespace PyZy
+
+#endif // __PHONETIC_CONTEXT_H_
diff --git a/src/PyZyPhrase.h b/src/PyZyPhrase.h
new file mode 100644
index 0000000..a307c49
--- /dev/null
+++ b/src/PyZyPhrase.h
@@ -0,0 +1,72 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PHRASE_H_
+#define __PHRASE_H_
+
+#include <cstring>
+#include "PyZyTypes.h"
+
+namespace PyZy {
+
+#define PHRASE_LEN_IN_BYTE (MAX_UTF8_LEN * (MAX_PHRASE_LEN + 1))
+
+struct Phrase {
+ gchar phrase[PHRASE_LEN_IN_BYTE];
+ guint freq;
+ guint user_freq;
+ struct {
+ guint8 sheng;
+ guint8 yun;
+ } pinyin_id[MAX_PHRASE_LEN];
+ guint len;
+
+ void reset (void)
+ {
+ phrase[0] = 0;
+ freq = 0;
+ user_freq = 0;
+ len = 0;
+ }
+
+ gboolean empty (void) const
+ {
+ return len == 0;
+ }
+
+ Phrase & operator += (const Phrase & a)
+ {
+ g_assert (len + a.len <= MAX_PHRASE_LEN);
+ g_strlcat (phrase, a.phrase, sizeof (phrase));
+ std::memcpy (pinyin_id + len, a.pinyin_id, a.len << 1);
+ len += a.len;
+ return *this;
+ }
+
+ operator const gchar * (void) const
+ {
+ return phrase;
+ }
+
+};
+
+}; // namespace PyZy
+
+#endif // __PHRASE_H_
diff --git a/src/PyZyPhraseArray.h b/src/PyZyPhraseArray.h
new file mode 100644
index 0000000..1c4bea5
--- /dev/null
+++ b/src/PyZyPhraseArray.h
@@ -0,0 +1,33 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PHRASE_ARRAY_H_
+#define __PHRASE_ARRAY_H_
+
+#include <vector>
+#include "PyZyPhrase.h"
+
+namespace PyZy {
+
+typedef std::vector<Phrase> PhraseArray;
+
+}; // namespace PyZy
+
+#endif // __PHRASE_ARRAY_H_
diff --git a/src/PyZyPhraseEditor.cc b/src/PyZyPhraseEditor.cc
new file mode 100644
index 0000000..5c7bccd
--- /dev/null
+++ b/src/PyZyPhraseEditor.cc
@@ -0,0 +1,173 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyPhraseEditor.h"
+#include "PyZyConfig.h"
+#include "PyZyDatabase.h"
+#include "PyZySimpTradConverter.h"
+
+namespace PyZy {
+
+PhraseEditor::PhraseEditor (Config & config)
+ : m_candidates (32),
+ m_selected_phrases (8),
+ m_selected_string (32),
+ m_candidate_0_phrases (8),
+ m_pinyin (16),
+ m_cursor (0),
+ m_config (config)
+{
+}
+
+PhraseEditor::~PhraseEditor (void)
+{
+}
+
+gboolean
+PhraseEditor::update (const PinyinArray &pinyin)
+{
+ /* the size of pinyin must not bigger than MAX_PHRASE_LEN */
+ g_assert (pinyin.size () <= MAX_PHRASE_LEN);
+
+ m_pinyin = pinyin;
+ m_cursor = 0;
+
+ /* FIXME, should not remove all phrases1 */
+ m_selected_phrases.clear ();
+ m_selected_string.truncate (0);
+ updateCandidates ();
+ return TRUE;
+}
+
+gboolean
+PhraseEditor::resetCandidate (guint i)
+{
+ Database::instance ().remove (m_candidates[i]);
+
+ updateCandidates ();
+ return TRUE;
+}
+
+void
+PhraseEditor::commit (void)
+{
+ Database::instance ().commit (m_selected_phrases);
+ // TODO(hsumita): Should we use reset () ?
+ // reset ();
+}
+
+gboolean
+PhraseEditor::selectCandidate (guint i)
+{
+ if (G_UNLIKELY (i >= m_candidates.size ()))
+ return FALSE;
+
+ if (G_LIKELY (i == 0)) {
+ m_selected_phrases.insert (m_selected_phrases.end (),
+ m_candidate_0_phrases.begin (),
+ m_candidate_0_phrases.end ());
+ if (G_LIKELY (m_config.modeSimp ()))
+ m_selected_string << m_candidates[0].phrase;
+ else
+ SimpTradConverter::simpToTrad (m_candidates[0].phrase, m_selected_string);
+ m_cursor = m_pinyin.size ();
+ }
+ else {
+ m_selected_phrases.push_back (m_candidates[i]);
+ if (G_LIKELY (m_config.modeSimp ()))
+ m_selected_string << m_candidates[i].phrase;
+ else
+ SimpTradConverter::simpToTrad (m_candidates[i].phrase, m_selected_string);
+ m_cursor += m_candidates[i].len;
+ }
+
+ updateCandidates ();
+ return TRUE;
+}
+
+void
+PhraseEditor::updateCandidates (void)
+{
+ m_candidates.clear ();
+ m_query.reset ();
+ updateTheFirstCandidate ();
+
+ if (G_UNLIKELY (m_pinyin.size () == 0))
+ return;
+
+ if (G_LIKELY (m_candidate_0_phrases.size () > 1)) {
+ Phrase phrase;
+ phrase.reset ();
+ for (guint i = 0; i < m_candidate_0_phrases.size (); i++)
+ phrase += m_candidate_0_phrases[i];
+ m_candidates.push_back (phrase);
+ }
+
+ m_query.reset (new Query (m_pinyin,
+ m_cursor,
+ m_pinyin.size () - m_cursor,
+ m_config.option ()));
+ fillCandidates ();
+}
+
+void
+PhraseEditor::updateTheFirstCandidate (void)
+{
+ guint begin;
+ guint end;
+
+ m_candidate_0_phrases.clear ();
+
+ if (G_UNLIKELY (m_pinyin.size () == 0))
+ return;
+
+ begin = m_cursor;
+ end = m_pinyin.size ();
+
+ while (begin != end) {
+ gint ret;
+ Query query (m_pinyin,
+ begin,
+ end - begin,
+ m_config.option ());
+ ret = query.fill (m_candidate_0_phrases, 1);
+ g_assert (ret == 1);
+ begin += m_candidate_0_phrases.back ().len;
+ }
+}
+
+gboolean
+PhraseEditor::fillCandidates (void)
+{
+ if (G_UNLIKELY (m_query.get () == NULL)) {
+ return FALSE;
+ }
+
+ gint ret = m_query->fill (m_candidates, FILL_GRAN);
+
+ if (G_UNLIKELY (ret < FILL_GRAN)) {
+ /* got all candidates from query */
+ m_query.reset ();
+ }
+
+ return ret > 0 ? TRUE : FALSE;
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyPhraseEditor.h b/src/PyZyPhraseEditor.h
new file mode 100644
index 0000000..c41fce2
--- /dev/null
+++ b/src/PyZyPhraseEditor.h
@@ -0,0 +1,132 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PHRASE_EDITOR_H_
+#define __PHRASE_EDITOR_H_
+
+#include "PyZyUtil.h"
+#include "PyZyString.h"
+#include "PyZyPhraseArray.h"
+#include "PyZyPinyinArray.h"
+
+#define FILL_GRAN (12)
+
+namespace PyZy {
+
+class Query;
+class Database;
+class Config;
+
+class PhraseEditor {
+public:
+ PhraseEditor (Config & config);
+ ~PhraseEditor (void);
+
+ const String & selectedString (void) const { return m_selected_string; }
+ const PinyinArray & pinyin (void) const { return m_pinyin; }
+ const PhraseArray & candidates (void) const { return m_candidates; }
+ guint cursor (void) const { return m_cursor; }
+
+ guint cursorInChar (void) const
+ {
+ return m_cursor == 0 ? 0 : m_pinyin[m_cursor - 1].begin + m_pinyin[m_cursor - 1].len;
+ }
+
+ gboolean pinyinExistsAfterCursor (void) const
+ {
+ return m_pinyin.size () > m_cursor;
+ }
+
+ const Phrase & candidate (guint i) const
+ {
+ return m_candidates[i];
+ }
+
+ gboolean fillCandidates (void);
+
+ const PhraseArray & candidate0 (void) const
+ {
+ return m_candidate_0_phrases;
+ }
+
+ gboolean candidateIsUserPhrase (guint i) const
+ {
+ const Phrase & phrase = m_candidates[i];
+ return phrase.len > 1 && phrase.user_freq > 0 && phrase.freq == 0;
+ }
+
+ gboolean unselectCandidates (void)
+ {
+ if (m_cursor == 0) {
+ return FALSE;
+ }
+ else {
+ m_selected_phrases.clear ();
+ m_selected_string.truncate (0);
+ m_cursor = 0;
+ updateCandidates ();
+ return TRUE;
+ }
+ }
+
+ void reset (void)
+ {
+ m_candidates.clear ();
+ m_selected_phrases.clear ();
+ m_selected_string.truncate (0);
+ m_candidate_0_phrases.clear ();
+ m_pinyin.clear ();
+ m_cursor = 0;
+ m_query.reset ();
+ }
+
+ gboolean update (const PinyinArray &pinyin);
+ gboolean selectCandidate (guint i);
+ gboolean resetCandidate (guint i);
+ void commit (void);
+
+ gboolean empty (void) const
+ {
+ return m_selected_string.empty () && m_candidate_0_phrases.empty ();
+ }
+
+ operator gboolean (void) const
+ {
+ return !empty ();
+ }
+
+private:
+ void updateCandidates (void);
+ void updateTheFirstCandidate (void);
+
+private:
+ PhraseArray m_candidates; // candidates phrase array
+ PhraseArray m_selected_phrases; // selected phrases, before cursor
+ String m_selected_string; // selected phrases, in string format
+ PhraseArray m_candidate_0_phrases; // the first candidate in phrase array format
+ PinyinArray m_pinyin;
+ guint m_cursor;
+ std::shared_ptr<Query> m_query;
+ Config & m_config;
+};
+
+}; // namespace PyZy
+
+#endif // __PHRASE_EDITOR_H_
diff --git a/src/PyZyPinyinArray.h b/src/PyZyPinyinArray.h
new file mode 100644
index 0000000..0df09d1
--- /dev/null
+++ b/src/PyZyPinyinArray.h
@@ -0,0 +1,73 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PINYIN_ARRAY_H_
+#define __PINYIN_ARRAY_H_
+
+#include <vector>
+#include "PyZyTypes.h"
+
+namespace PyZy {
+
+struct PinyinSegment {
+ const Pinyin *pinyin;
+ guint begin;
+ guint len;
+
+ PinyinSegment (const Pinyin *pinyin = NULL, guint begin = 0, guint len = 0)
+ : pinyin (pinyin), begin (begin), len (len) { }
+
+ operator const Pinyin * (void) const
+ {
+ return pinyin;
+ }
+
+ const Pinyin * operator-> (void) const
+ {
+ return pinyin;
+ }
+
+ gboolean operator == (const PinyinSegment & p) const
+ {
+ return (pinyin == p.pinyin) && (begin == p.begin) && (len == p.len);
+ }
+
+ gboolean operator == (const Pinyin *p) const
+ {
+ return pinyin == p;
+ }
+};
+
+class PinyinArray: public std::vector<PinyinSegment> {
+public:
+ PinyinArray (guint init_size = 0)
+ {
+ std::vector<PinyinSegment>::reserve (init_size);
+ }
+
+ void append (const Pinyin *pinyin, guint begin, guint len)
+ {
+ push_back (PinyinSegment (pinyin, begin, len));
+ }
+};
+
+}; // namespace PyZy
+
+#endif // __PINYIN_ARRAY_H_
diff --git a/src/PyZyPinyinContext.cc b/src/PyZyPinyinContext.cc
new file mode 100644
index 0000000..f115bb5
--- /dev/null
+++ b/src/PyZyPinyinContext.cc
@@ -0,0 +1,206 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZyPinyinContext.h"
+#include "PyZySimpTradConverter.h"
+
+namespace PyZy {
+
+PinyinContext::PinyinContext (Config & config, PhoneticContext::Observer *observer)
+ : PhoneticContext (config, observer)
+{
+}
+
+PinyinContext::~PinyinContext ()
+{
+}
+
+void
+PinyinContext::reset (void)
+{
+ PhoneticContext::reset ();
+}
+
+void
+PinyinContext::commit ()
+{
+ if (G_UNLIKELY (m_buffer.empty ()))
+ return;
+
+ m_buffer.clear ();
+ m_buffer << m_phrase_editor.selectedString ();
+
+ const gchar *p;
+
+ if (m_selected_special_phrase.empty ()) {
+ p = textAfterPinyin (m_buffer.utf8Length ());
+ }
+ else {
+ m_buffer << m_selected_special_phrase;
+ p = textAfterCursor ();
+ }
+ m_buffer << p;
+
+ m_phrase_editor.commit ();
+ reset ();
+ update ();
+ m_observer->commitText (m_buffer);
+}
+
+void
+PinyinContext::updatePreeditText ()
+{
+ /* preedit text = selected phrases + highlight candidate + rest text */
+ if (G_UNLIKELY (m_phrase_editor.empty () && m_text.empty ())) {
+ m_preedit_text.clear ();
+ m_observer->preeditTextChanged ();
+ return;
+ }
+
+ guint edit_begin_word = 0;
+ guint edit_end_word = 0;
+ guint edit_begin_byte = 0;
+ guint edit_end_byte = 0;
+
+ m_buffer.clear ();
+ m_preedit_text.clear ();
+
+ /* add selected phrases */
+ m_buffer << m_phrase_editor.selectedString ();
+
+ if (G_UNLIKELY (! m_selected_special_phrase.empty ())) {
+ /* add selected special phrase */
+ m_buffer << m_selected_special_phrase;
+ edit_begin_word = edit_end_word = m_buffer.utf8Length ();
+ edit_begin_byte = edit_end_byte = m_buffer.size ();
+
+ /* append text after cursor */
+ m_buffer += textAfterCursor ();
+ }
+ else {
+ edit_begin_word = m_buffer.utf8Length ();
+ edit_begin_byte = m_buffer.size ();
+
+ if (m_candidates.size () > 0) {
+ guint index = m_focused_candidate;
+
+ if (index < m_special_phrases.size ()) {
+ m_buffer << m_special_phrases[index];
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+
+ /* append text after cursor */
+ m_buffer << textAfterCursor ();
+ }
+ else {
+ const Phrase & candidate = m_phrase_editor.candidate (index - m_special_phrases.size ());
+ if (m_text.size () == m_cursor) {
+ /* cursor at end */
+ if (m_config.modeSimp ())
+ m_buffer << candidate;
+ else
+ SimpTradConverter::simpToTrad (candidate, m_buffer);
+ edit_end_word = m_buffer.utf8Length ();
+ edit_end_byte = m_buffer.size ();
+
+ /* append rest text */
+ m_buffer << textAfterPinyin (edit_end_word);
+ }
+ else {
+ guint candidate_end = edit_begin_word + candidate.len;
+
+ m_buffer << m_pinyin[edit_begin_word]->sheng << m_pinyin[edit_begin_word]->yun;
+
+ for (guint i = edit_begin_word + 1; i < candidate_end; i++) {
+ m_buffer << ' ' << m_pinyin[i]->sheng << m_pinyin[i]->yun;
+ }
+ m_buffer << '|' << textAfterPinyin (candidate_end);
+ m_preedit_text.rest_text = m_buffer;
+ }
+ }
+ }
+ else {
+ m_preedit_text.rest_text = textAfterPinyin ();
+ }
+ }
+
+ if (edit_end_byte != 0) {
+ m_preedit_text.selected_text = m_buffer.substr (0, edit_begin_byte);
+ m_preedit_text.candidate_text = m_buffer.substr (edit_begin_byte, edit_end_byte - edit_begin_byte);
+ m_preedit_text.rest_text = m_buffer.substr (edit_end_byte);
+ }
+
+ m_observer->preeditTextChanged ();
+}
+
+void
+PinyinContext::updateAuxiliaryText (void)
+{
+ /* clear pinyin array */
+ if (G_UNLIKELY (m_text.empty () ||
+ m_candidates.size () == 0)) {
+ m_auxiliary_text = "";
+ m_observer->auxiliaryTextChanged ();
+ return;
+ }
+
+ m_buffer.clear ();
+
+ if (m_selected_special_phrase.empty ()) {
+ if (m_focused_candidate < m_special_phrases.size ()) {
+ guint begin = m_phrase_editor.cursorInChar ();
+ m_buffer << m_text.substr (begin, m_cursor - begin)
+ << '|' << textAfterCursor ();
+ }
+ else {
+ for (guint i = m_phrase_editor.cursor (); i < m_pinyin.size (); ++i) {
+ if (G_LIKELY (i != m_phrase_editor.cursor ()))
+ m_buffer << ' ';
+ const Pinyin *p = m_pinyin[i];
+ m_buffer << p->sheng
+ << p->yun;
+ }
+
+ if (G_UNLIKELY (m_pinyin_len == m_cursor)) {
+ /* aux = pinyin + non-pinyin */
+ // cursor_pos = m_buffer.utf8Length ();
+ m_buffer << '|' << textAfterPinyin ();
+ }
+ else {
+ /* aux = pinyin + ' ' + non-pinyin before cursor + non-pinyin after cursor */
+ m_buffer << ' ';
+ m_buffer.append (textAfterPinyin (),
+ m_cursor - m_pinyin_len);
+ // cursor_pos = m_buffer.utf8Length ();
+ m_buffer << '|' << textAfterCursor ();
+ }
+ }
+ }
+ else {
+ if (m_cursor < m_text.size ()) {
+ m_buffer << '|' << textAfterCursor ();
+ }
+ }
+
+ m_auxiliary_text = m_buffer;
+ m_observer->auxiliaryTextChanged ();
+}
+
+}; // namespace PyZy
diff --git a/src/PyZyPinyinContext.h b/src/PyZyPinyinContext.h
new file mode 100644
index 0000000..37446a6
--- /dev/null
+++ b/src/PyZyPinyinContext.h
@@ -0,0 +1,42 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PINYIN_CONTEXT_H_
+#define __PINYIN_CONTEXT_H_
+
+#include "PyZyPhoneticContext.h"
+
+namespace PyZy {
+
+class PinyinContext : public PhoneticContext {
+public:
+ PinyinContext (Config & config, PhoneticContext::Observer *observer);
+ virtual ~PinyinContext (void);
+ virtual void reset (void);
+ virtual void commit (void);
+
+protected:
+ void updateAuxiliaryText (void);
+ void updatePreeditText (void);
+};
+
+}; // namespace PyZy
+
+#endif // __PINYIN_CONTEXT_H_
diff --git a/src/PyZyPinyinParser.cc b/src/PyZyPinyinParser.cc
new file mode 100644
index 0000000..684fca9
--- /dev/null
+++ b/src/PyZyPinyinParser.cc
@@ -0,0 +1,352 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <cstring>
+#include <cstdlib>
+#include "PyZyPinyinParser.h"
+
+namespace PyZy {
+
+#include "PyZyBopomofo.h"
+#include "PyZyPinyinParserTable.h"
+
+static gboolean
+check_flags (const Pinyin *pinyin, guint option)
+{
+ if (pinyin == NULL)
+ return FALSE;
+
+ if (pinyin->flags != 0) {
+ guint flags;
+ flags = pinyin->flags & option;
+ if (flags == 0)
+ return FALSE;
+ if ((flags != pinyin->flags) && ((pinyin->flags & PINYIN_CORRECT_ALL) != 0))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static int
+py_cmp (const void *p1, const void *p2)
+{
+ const gchar *str = (const gchar *) p1;
+ const Pinyin *py = (const Pinyin *) p2;
+
+ return std::strcmp (str, py->text);
+}
+
+static const Pinyin *
+is_pinyin (const gchar *p,
+ const gchar *end,
+ gint len,
+ guint option)
+{
+ gchar buf[8];
+ const Pinyin *result;
+
+ if (G_UNLIKELY (len > 6))
+ return NULL;
+
+ if (G_UNLIKELY (len > end - p))
+ return NULL;
+
+ if (G_LIKELY (len > 0)) {
+ std::strncpy (buf, p, len);
+ buf[len] = 0;
+ result = (const Pinyin *) std::bsearch (buf, pinyin_table, G_N_ELEMENTS (pinyin_table),
+ sizeof (Pinyin), py_cmp);
+ if (check_flags (result, option))
+ return result;
+ return NULL;
+ }
+
+ /* len < 0 */
+ len = MIN (6, end - p);
+ std::strncpy (buf, p, len);
+
+ for (; len > 0; len --) {
+ buf[len] = 0;
+ result = (const Pinyin *) std::bsearch (buf, pinyin_table, G_N_ELEMENTS (pinyin_table),
+ sizeof (Pinyin), py_cmp);
+ if (G_UNLIKELY (check_flags (result, option))) {
+ return result;
+ }
+ }
+
+ return NULL;
+}
+
+static int
+sp_cmp (const void *p1,
+ const void *p2)
+{
+ const Pinyin **pys = (const Pinyin **) p1;
+ const Pinyin **e = (const Pinyin **) p2;
+
+ int retval = pys[0] - e[0];
+
+ if (retval != 0)
+ return retval;
+ return pys[1] - e[1];
+}
+
+static const Pinyin **
+need_resplit(const Pinyin *p1,
+ const Pinyin *p2)
+{
+ const Pinyin * pys[] = {p1, p2};
+
+ return (const Pinyin **) std::bsearch (pys, special_table, G_N_ELEMENTS (special_table),
+ sizeof (special_table[0]), sp_cmp);
+}
+
+guint
+PinyinParser::parse (const String &pinyin,
+ gint len,
+ guint option,
+ PinyinArray &result,
+ guint max)
+{
+
+ const gchar *p;
+ const gchar *end;
+ const Pinyin *py;
+ const Pinyin *prev_py;
+ gchar prev_c;
+
+ result.clear ();
+
+ if (G_UNLIKELY (len < 0))
+ len = pinyin.size ();
+
+ p = pinyin;
+ end = p + len;
+
+ prev_py = NULL;
+
+ prev_c = 0;
+ for (; p < end && result.size () < max; ) {
+ if (G_UNLIKELY (*p == '\'')) {
+ prev_c = '\'';
+ p++;
+ continue;
+ }
+ switch (prev_c) {
+ case 'r':
+ case 'n':
+ case 'g':
+ case 'e':
+ switch (*p) {
+ case 'i':
+ case 'u':
+ case 'v':
+ case 'a':
+ case 'e':
+ case 'o':
+ case 'r':
+ {
+ const Pinyin **pp;
+ const Pinyin *new_py1;
+ const Pinyin *new_py2;
+
+ py = is_pinyin (p, end, -1, option);
+
+ if ((new_py1 = is_pinyin (prev_py->text,
+ prev_py->text + prev_py->len,
+ prev_py->len - 1,
+ option)) != NULL) {
+ new_py2 = is_pinyin (p -1, end, -1, option);
+
+ if (((new_py2 != NULL) && (new_py2->len > 1 )) &&
+ (py == NULL || new_py2->len > py->len + 1)) {
+ PinyinSegment & segment = result[result.size () - 1];
+ segment.pinyin = new_py1;
+ segment.len = new_py1->len;
+ py = new_py2;
+ p --;
+ break;
+ }
+ }
+
+ if ( py == NULL)
+ break;
+
+ pp = need_resplit (prev_py, py);
+ if (pp != NULL) {
+ PinyinSegment & segment = result[result.size () - 1];
+ segment.pinyin = pp[2];
+ segment.len = pp[2]->len;
+ py = pp[3];
+ p --;
+ break;
+ }
+ }
+ default:
+ py = is_pinyin (p, end, -1, option);
+ break;
+ }
+ break;
+ default:
+ py = is_pinyin (p, end, -1, option);
+ break;
+ }
+
+ if (G_UNLIKELY (py == NULL))
+ break;
+
+ result.append (py, p - (const gchar *) pinyin, py->len);
+ p += py->len;
+ prev_c = py->text[py->len - 1];
+ prev_py = py;
+ }
+
+ if (G_UNLIKELY (p == (const gchar *)pinyin))
+ return 0;
+#if 0
+ if (G_UNLIKELY (*(p - 1) == '\''))
+ p --;
+#endif
+ return p - (const gchar *)pinyin;
+}
+
+static const gchar * const
+id_map[] = {
+ "", "b", "c", "ch",
+ "d", "f", "g", "h",
+ "j", "k", "l", "m",
+ "n", "p", "q", "r",
+ "s", "sh", "t", "w",
+ "x", "y", "z", "zh",
+ "a", "ai", "an", "ang", "ao",
+ "e", "ei", "en", "eng", "er",
+ "i", "ia", "ian", "iang", "iao",
+ "ie", "in", "ing", "iong", "iu",
+ "o", "ong", "ou",
+ "u", "ua", "uai", "uan", "uang",
+ 0, /* it should be ue or ve */
+ "ui", "un", "uo", "v"
+};
+
+const Pinyin *
+PinyinParser::isPinyin (gint sheng, gint yun, guint option)
+{
+ const Pinyin *result;
+ gchar buf[16];
+
+ std::strcpy (buf, id_map[sheng]);
+
+ if (yun == PINYIN_ID_UE) {
+ /* append ue or ve base on sheng */
+ switch (sheng) {
+ case PINYIN_ID_J:
+ case PINYIN_ID_Q:
+ case PINYIN_ID_X:
+ case PINYIN_ID_Y:
+ std::strcat (buf, "ue");
+ break;
+ default:
+ std::strcat (buf, "ve");
+ break;
+ }
+ }
+ else {
+ std::strcat (buf, id_map[yun]);
+ }
+
+ result = (const Pinyin *) bsearch (buf, pinyin_table, G_N_ELEMENTS (pinyin_table),
+ sizeof (Pinyin), py_cmp);
+ if (check_flags (result, option))
+ return result;
+ return NULL;
+}
+
+static int
+bopomofo_cmp (const void *p1, const void *p2)
+{
+ const wchar_t *s1 = (wchar_t *) p1;
+ const Pinyin *s2 = *(const Pinyin **) p2;
+
+ return std::wcscmp (s1, s2->bopomofo);
+}
+
+gboolean
+PinyinParser::isBopomofoToneChar (const wchar_t ch)
+{
+ return ch == bopomofo_char[BOPOMOFO_TONE_2]
+ || ch == bopomofo_char[BOPOMOFO_TONE_3]
+ || ch == bopomofo_char[BOPOMOFO_TONE_4]
+ || ch == bopomofo_char[BOPOMOFO_TONE_5];
+}
+
+guint
+PinyinParser::parseBopomofo (const std::wstring &bopomofo,
+ gint len,
+ guint option,
+ PinyinArray &result,
+ guint max)
+{
+ std::wstring::const_iterator bpmf = bopomofo.begin();
+ const std::wstring::const_iterator end = bpmf + len;
+ const Pinyin **bs_res;
+ wchar_t buf[MAX_BOPOMOFO_LEN + 1];
+ guint i, j;
+
+ result.clear ();
+
+ if (G_UNLIKELY (len < 0))
+ len = bopomofo.length ();
+
+ for (; bpmf < end && result.size () < max;) {
+ for (i = MAX_BOPOMOFO_LEN; i > 0; i--){
+ if (bpmf + i > end)
+ continue;
+
+ for (j = 0; j < i; j++){
+ wchar_t key = *(bpmf + j);
+
+ if (j == i - 1 && isBopomofoToneChar (key)) {
+ break; /* ignore tone */
+ }
+
+ buf[j] = key;
+ }
+
+ buf[j] = '\0';
+ bs_res = (const Pinyin **) std::bsearch (buf,
+ bopomofo_table,
+ G_N_ELEMENTS (bopomofo_table),
+ sizeof (bopomofo_table[0]),
+ bopomofo_cmp);
+ if (bs_res != NULL && check_flags (*bs_res, option))
+ break;
+ }
+ if (!(bs_res != NULL && check_flags (*bs_res, option)))
+ break;
+
+ result.append(*bs_res, bpmf - bopomofo.begin (), i);
+ bpmf += i;
+ }
+
+ return bpmf - bopomofo.begin ();
+};
+
+}; // namespace PyZy
diff --git a/src/PyZyPinyinParser.h b/src/PyZyPinyinParser.h
new file mode 100644
index 0000000..c86447c
--- /dev/null
+++ b/src/PyZyPinyinParser.h
@@ -0,0 +1,49 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __PINYIN_PARSER_H_
+#define __PINYIN_PARSER_H_
+
+#include <glib.h>
+#include "PyZyString.h"
+#include "PyZyPinyinArray.h"
+
+namespace PyZy {
+
+class PinyinParser {
+public:
+ static guint parse (const String &pinyin, // pinyin string
+ gint len, // length of pinyin string
+ guint option, // option
+ PinyinArray &result, // store pinyin in result
+ guint max); // max length of the result
+ static const Pinyin * isPinyin (gint sheng, gint yun, guint option);
+ static guint parseBopomofo (const std::wstring &bopomofo,
+ gint len,
+ guint option,
+ PinyinArray &result,
+ guint max);
+ static gboolean isBopomofoToneChar (const wchar_t ch);
+
+};
+
+}; // namespace PyZy
+
+#endif // __PINYIN_PARSER_H_
diff --git a/src/PyZyPinyinParserTable.h b/src/PyZyPinyinParserTable.h
new file mode 100644
index 0000000..4f80ee8
--- /dev/null
+++ b/src/PyZyPinyinParserTable.h
@@ -0,0 +1,8069 @@
+static const Pinyin pinyin_table[] = {
+ { /* 0 */
+ text : "a",
+ bopomofo : L"ㄚ",
+ sheng : "",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : 0
+ },
+ { /* 1 */
+ text : "agn",
+ bopomofo : L"",
+ sheng : "",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 2 */
+ text : "ai",
+ bopomofo : L"ㄞ",
+ sheng : "",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 3 */
+ text : "amg",
+ bopomofo : L"",
+ sheng : "",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 4 */
+ text : "an",
+ bopomofo : L"ㄢ",
+ sheng : "",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 5 */
+ text : "ang",
+ bopomofo : L"ㄤ",
+ sheng : "",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 6 */
+ text : "ao",
+ bopomofo : L"ㄠ",
+ sheng : "",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 7 */
+ text : "b",
+ bopomofo : L"ㄅ",
+ sheng : "b",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 8 */
+ text : "ba",
+ bopomofo : L"ㄅㄚ",
+ sheng : "b",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 9 */
+ text : "bagn",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 10 */
+ text : "bai",
+ bopomofo : L"ㄅㄞ",
+ sheng : "b",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 11 */
+ text : "bamg",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 12 */
+ text : "ban",
+ bopomofo : L"ㄅㄢ",
+ sheng : "b",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 13 */
+ text : "bang",
+ bopomofo : L"ㄅㄤ",
+ sheng : "b",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 14 */
+ text : "bao",
+ bopomofo : L"ㄅㄠ",
+ sheng : "b",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 15 */
+ text : "begn",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 16 */
+ text : "bei",
+ bopomofo : L"ㄅㄟ",
+ sheng : "b",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 17 */
+ text : "bemg",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 18 */
+ text : "ben",
+ bopomofo : L"ㄅㄣ",
+ sheng : "b",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 19 */
+ text : "beng",
+ bopomofo : L"ㄅㄥ",
+ sheng : "b",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 20 */
+ text : "bi",
+ bopomofo : L"ㄅㄧ",
+ sheng : "b",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 21 */
+ text : "bian",
+ bopomofo : L"ㄅㄧㄢ",
+ sheng : "b",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 22 */
+ text : "biang",
+ bopomofo : L"ㄅㄧㄤ",
+ sheng : "b",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_IANG_IAN
+ },
+ { /* 23 */
+ text : "biao",
+ bopomofo : L"ㄅㄧㄠ",
+ sheng : "b",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 24 */
+ text : "bie",
+ bopomofo : L"ㄅㄧㄝ",
+ sheng : "b",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 25 */
+ text : "bign",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 26 */
+ text : "bimg",
+ bopomofo : L"",
+ sheng : "b",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 27 */
+ text : "bin",
+ bopomofo : L"ㄅㄧㄣ",
+ sheng : "b",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 28 */
+ text : "bing",
+ bopomofo : L"ㄅㄧㄥ",
+ sheng : "b",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 29 */
+ text : "bo",
+ bopomofo : L"ㄅㄛ",
+ sheng : "b",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 30 */
+ text : "bu",
+ bopomofo : L"ㄅㄨ",
+ sheng : "b",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_B, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 31 */
+ text : "c",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 32 */
+ text : "ca",
+ bopomofo : L"ㄘㄚ",
+ sheng : "c",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_A }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 33 */
+ text : "cagn",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 34 */
+ text : "cai",
+ bopomofo : L"ㄘㄞ",
+ sheng : "c",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_AI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 35 */
+ text : "camg",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 36 */
+ text : "can",
+ bopomofo : L"ㄘㄢ",
+ sheng : "c",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 37 */
+ text : "cang",
+ bopomofo : L"ㄘㄤ",
+ sheng : "c",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 38 */
+ text : "cao",
+ bopomofo : L"ㄘㄠ",
+ sheng : "c",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_AO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 39 */
+ text : "ce",
+ bopomofo : L"ㄘㄜ",
+ sheng : "c",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_E }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 40 */
+ text : "cegn",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 41 */
+ text : "cemg",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 42 */
+ text : "cen",
+ bopomofo : L"ㄘㄣ",
+ sheng : "c",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 43 */
+ text : "ceng",
+ bopomofo : L"ㄘㄥ",
+ sheng : "c",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 44 */
+ text : "ch",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 45 */
+ text : "cha",
+ bopomofo : L"ㄔㄚ",
+ sheng : "ch",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_A }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 46 */
+ text : "chagn",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 47 */
+ text : "chai",
+ bopomofo : L"ㄔㄞ",
+ sheng : "ch",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_AI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 48 */
+ text : "chamg",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 49 */
+ text : "chan",
+ bopomofo : L"ㄔㄢ",
+ sheng : "ch",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 50 */
+ text : "chang",
+ bopomofo : L"ㄔㄤ",
+ sheng : "ch",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 51 */
+ text : "chao",
+ bopomofo : L"ㄔㄠ",
+ sheng : "ch",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_AO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 52 */
+ text : "che",
+ bopomofo : L"ㄔㄜ",
+ sheng : "ch",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_E }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 53 */
+ text : "chegn",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 54 */
+ text : "chemg",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 55 */
+ text : "chen",
+ bopomofo : L"ㄔㄣ",
+ sheng : "ch",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 56 */
+ text : "cheng",
+ bopomofo : L"ㄔㄥ",
+ sheng : "ch",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 57 */
+ text : "chi",
+ bopomofo : L"ㄔ",
+ sheng : "ch",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_I }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 58 */
+ text : "chogn",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 59 */
+ text : "chomg",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 60 */
+ text : "chon",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 61 */
+ text : "chong",
+ bopomofo : L"ㄔㄨㄥ",
+ sheng : "ch",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 62 */
+ text : "chou",
+ bopomofo : L"ㄔㄡ",
+ sheng : "ch",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_OU }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 63 */
+ text : "chu",
+ bopomofo : L"ㄔㄨ",
+ sheng : "ch",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_U }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 64 */
+ text : "chuagn",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 65 */
+ text : "chuai",
+ bopomofo : L"ㄔㄨㄞ",
+ sheng : "ch",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UAI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 66 */
+ text : "chuamg",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 67 */
+ text : "chuan",
+ bopomofo : L"ㄔㄨㄢ",
+ sheng : "ch",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UAN }, { PINYIN_ID_C, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 68 */
+ text : "chuang",
+ bopomofo : L"ㄔㄨㄤ",
+ sheng : "ch",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : 0
+ },
+ { /* 69 */
+ text : "chuei",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 70 */
+ text : "chuen",
+ bopomofo : L"",
+ sheng : "ch",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UN }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 71 */
+ text : "chui",
+ bopomofo : L"ㄔㄨㄟ",
+ sheng : "ch",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 72 */
+ text : "chun",
+ bopomofo : L"ㄔㄨㄣ",
+ sheng : "ch",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UN }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 73 */
+ text : "chuo",
+ bopomofo : L"ㄔㄨㄛ",
+ sheng : "ch",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_CH, PINYIN_ID_UO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 74 */
+ text : "ci",
+ bopomofo : L"ㄘ",
+ sheng : "c",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_I }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 75 */
+ text : "cogn",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 76 */
+ text : "comg",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 77 */
+ text : "con",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 78 */
+ text : "cong",
+ bopomofo : L"ㄘㄨㄥ",
+ sheng : "c",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 79 */
+ text : "cou",
+ bopomofo : L"ㄘㄡ",
+ sheng : "c",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_OU }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 80 */
+ text : "cu",
+ bopomofo : L"ㄘㄨ",
+ sheng : "c",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_U }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 81 */
+ text : "cuai",
+ bopomofo : L"ㄘㄨㄞ",
+ sheng : "c",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UAI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_C_CH
+ },
+ { /* 82 */
+ text : "cuan",
+ bopomofo : L"ㄘㄨㄢ",
+ sheng : "c",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 83 */
+ text : "cuang",
+ bopomofo : L"ㄘㄨㄤ",
+ sheng : "c",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UANG }, { PINYIN_ID_CH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_C_CH | PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 84 */
+ text : "cuei",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 85 */
+ text : "cuen",
+ bopomofo : L"",
+ sheng : "c",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UN }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 86 */
+ text : "cui",
+ bopomofo : L"ㄘㄨㄟ",
+ sheng : "c",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 87 */
+ text : "cun",
+ bopomofo : L"ㄘㄨㄣ",
+ sheng : "c",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UN }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 88 */
+ text : "cuo",
+ bopomofo : L"ㄘㄨㄛ",
+ sheng : "c",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_C, PINYIN_ID_UO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 89 */
+ text : "d",
+ bopomofo : L"ㄉ",
+ sheng : "d",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 90 */
+ text : "da",
+ bopomofo : L"ㄉㄚ",
+ sheng : "d",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 91 */
+ text : "dagn",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 92 */
+ text : "dai",
+ bopomofo : L"ㄉㄞ",
+ sheng : "d",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 93 */
+ text : "damg",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 94 */
+ text : "dan",
+ bopomofo : L"ㄉㄢ",
+ sheng : "d",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 95 */
+ text : "dang",
+ bopomofo : L"ㄉㄤ",
+ sheng : "d",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 96 */
+ text : "dao",
+ bopomofo : L"ㄉㄠ",
+ sheng : "d",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 97 */
+ text : "de",
+ bopomofo : L"ㄉㄜ",
+ sheng : "d",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 98 */
+ text : "degn",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 99 */
+ text : "dei",
+ bopomofo : L"ㄉㄟ",
+ sheng : "d",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 100 */
+ text : "demg",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 101 */
+ text : "den",
+ bopomofo : L"ㄉㄣ",
+ sheng : "d",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_EN_ENG
+ },
+ { /* 102 */
+ text : "deng",
+ bopomofo : L"ㄉㄥ",
+ sheng : "d",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 103 */
+ text : "di",
+ bopomofo : L"ㄉㄧ",
+ sheng : "d",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 104 */
+ text : "dia",
+ bopomofo : L"ㄉㄧㄚ",
+ sheng : "d",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 105 */
+ text : "dian",
+ bopomofo : L"ㄉㄧㄢ",
+ sheng : "d",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 106 */
+ text : "diang",
+ bopomofo : L"ㄉㄧㄤ",
+ sheng : "d",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_IANG_IAN
+ },
+ { /* 107 */
+ text : "diao",
+ bopomofo : L"ㄉㄧㄠ",
+ sheng : "d",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 108 */
+ text : "die",
+ bopomofo : L"ㄉㄧㄝ",
+ sheng : "d",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 109 */
+ text : "dign",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 110 */
+ text : "dimg",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 111 */
+ text : "din",
+ bopomofo : L"ㄉㄧㄣ",
+ sheng : "d",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_IN_ING
+ },
+ { /* 112 */
+ text : "ding",
+ bopomofo : L"ㄉㄧㄥ",
+ sheng : "d",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 113 */
+ text : "diou",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 114 */
+ text : "diu",
+ bopomofo : L"ㄉㄧㄡ",
+ sheng : "d",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 115 */
+ text : "dogn",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 116 */
+ text : "domg",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 117 */
+ text : "don",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 118 */
+ text : "dong",
+ bopomofo : L"ㄉㄨㄥ",
+ sheng : "d",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 119 */
+ text : "dou",
+ bopomofo : L"ㄉㄡ",
+ sheng : "d",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 120 */
+ text : "du",
+ bopomofo : L"ㄉㄨ",
+ sheng : "d",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 121 */
+ text : "duan",
+ bopomofo : L"ㄉㄨㄢ",
+ sheng : "d",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 122 */
+ text : "duang",
+ bopomofo : L"ㄉㄨㄤ",
+ sheng : "d",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 123 */
+ text : "duei",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 124 */
+ text : "duen",
+ bopomofo : L"",
+ sheng : "d",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 125 */
+ text : "dui",
+ bopomofo : L"ㄉㄨㄟ",
+ sheng : "d",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 126 */
+ text : "dun",
+ bopomofo : L"ㄉㄨㄣ",
+ sheng : "d",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 127 */
+ text : "duo",
+ bopomofo : L"ㄉㄨㄛ",
+ sheng : "d",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_D, PINYIN_ID_UO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 128 */
+ text : "e",
+ bopomofo : L"ㄜ",
+ sheng : "",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : 0
+ },
+ { /* 129 */
+ text : "ei",
+ bopomofo : L"ㄟ",
+ sheng : "",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 130 */
+ text : "en",
+ bopomofo : L"ㄣ",
+ sheng : "",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 131 */
+ text : "er",
+ bopomofo : L"ㄦ",
+ sheng : "",
+ yun : "er",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_ER }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 132 */
+ text : "f",
+ bopomofo : L"ㄈ",
+ sheng : "f",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 133 */
+ text : "fa",
+ bopomofo : L"ㄈㄚ",
+ sheng : "f",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_A }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 134 */
+ text : "fagn",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 135 */
+ text : "fai",
+ bopomofo : L"ㄈㄞ",
+ sheng : "f",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_AI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 136 */
+ text : "famg",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 137 */
+ text : "fan",
+ bopomofo : L"ㄈㄢ",
+ sheng : "f",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 138 */
+ text : "fang",
+ bopomofo : L"ㄈㄤ",
+ sheng : "f",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 139 */
+ text : "fao",
+ bopomofo : L"ㄈㄠ",
+ sheng : "f",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_AO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 140 */
+ text : "fe",
+ bopomofo : L"ㄈㄜ",
+ sheng : "f",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_E }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 141 */
+ text : "fegn",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 142 */
+ text : "fei",
+ bopomofo : L"ㄈㄟ",
+ sheng : "f",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_EI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 143 */
+ text : "femg",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 144 */
+ text : "fen",
+ bopomofo : L"ㄈㄣ",
+ sheng : "f",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 145 */
+ text : "feng",
+ bopomofo : L"ㄈㄥ",
+ sheng : "f",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 146 */
+ text : "fo",
+ bopomofo : L"ㄈㄛ",
+ sheng : "f",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_O }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 147 */
+ text : "fon",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ONG }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H | PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 148 */
+ text : "fong",
+ bopomofo : L"ㄈㄨㄥ",
+ sheng : "f",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_ONG }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 149 */
+ text : "fou",
+ bopomofo : L"ㄈㄡ",
+ sheng : "f",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_OU }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 150 */
+ text : "fu",
+ bopomofo : L"ㄈㄨ",
+ sheng : "f",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_U }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 151 */
+ text : "fua",
+ bopomofo : L"ㄈㄨㄚ",
+ sheng : "f",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UA }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 152 */
+ text : "fuai",
+ bopomofo : L"ㄈㄨㄞ",
+ sheng : "f",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UAI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 153 */
+ text : "fuan",
+ bopomofo : L"ㄈㄨㄢ",
+ sheng : "f",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 154 */
+ text : "fuang",
+ bopomofo : L"ㄈㄨㄤ",
+ sheng : "f",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UANG }, { PINYIN_ID_H, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 155 */
+ text : "fuei",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_F_H | PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 156 */
+ text : "fuen",
+ bopomofo : L"",
+ sheng : "f",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UN }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_F_H | PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 157 */
+ text : "fui",
+ bopomofo : L"ㄈㄨㄟ",
+ sheng : "f",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 158 */
+ text : "fun",
+ bopomofo : L"ㄈㄨㄣ",
+ sheng : "f",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UN }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 159 */
+ text : "fuo",
+ bopomofo : L"ㄈㄨㄛ",
+ sheng : "f",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_F, PINYIN_ID_UO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_F_H
+ },
+ { /* 160 */
+ text : "g",
+ bopomofo : L"ㄍ",
+ sheng : "g",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 161 */
+ text : "ga",
+ bopomofo : L"ㄍㄚ",
+ sheng : "g",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_A }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 162 */
+ text : "gagn",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 163 */
+ text : "gai",
+ bopomofo : L"ㄍㄞ",
+ sheng : "g",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_AI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 164 */
+ text : "gamg",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 165 */
+ text : "gan",
+ bopomofo : L"ㄍㄢ",
+ sheng : "g",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 166 */
+ text : "gang",
+ bopomofo : L"ㄍㄤ",
+ sheng : "g",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 167 */
+ text : "gao",
+ bopomofo : L"ㄍㄠ",
+ sheng : "g",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_AO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 168 */
+ text : "ge",
+ bopomofo : L"ㄍㄜ",
+ sheng : "g",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_E }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 169 */
+ text : "gegn",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 170 */
+ text : "gei",
+ bopomofo : L"ㄍㄟ",
+ sheng : "g",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_EI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 171 */
+ text : "gemg",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 172 */
+ text : "gen",
+ bopomofo : L"ㄍㄣ",
+ sheng : "g",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 173 */
+ text : "geng",
+ bopomofo : L"ㄍㄥ",
+ sheng : "g",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 174 */
+ text : "gogn",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 175 */
+ text : "gomg",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 176 */
+ text : "gon",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 177 */
+ text : "gong",
+ bopomofo : L"ㄍㄨㄥ",
+ sheng : "g",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 178 */
+ text : "gou",
+ bopomofo : L"ㄍㄡ",
+ sheng : "g",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_OU }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 179 */
+ text : "gu",
+ bopomofo : L"ㄍㄨ",
+ sheng : "g",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_U }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 180 */
+ text : "gua",
+ bopomofo : L"ㄍㄨㄚ",
+ sheng : "g",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UA }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 181 */
+ text : "guagn",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 182 */
+ text : "guai",
+ bopomofo : L"ㄍㄨㄞ",
+ sheng : "g",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UAI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 183 */
+ text : "guamg",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 184 */
+ text : "guan",
+ bopomofo : L"ㄍㄨㄢ",
+ sheng : "g",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 185 */
+ text : "guang",
+ bopomofo : L"ㄍㄨㄤ",
+ sheng : "g",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 186 */
+ text : "guei",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 187 */
+ text : "guen",
+ bopomofo : L"",
+ sheng : "g",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UN }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 188 */
+ text : "gui",
+ bopomofo : L"ㄍㄨㄟ",
+ sheng : "g",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 189 */
+ text : "gun",
+ bopomofo : L"ㄍㄨㄣ",
+ sheng : "g",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UN }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 190 */
+ text : "guo",
+ bopomofo : L"ㄍㄨㄛ",
+ sheng : "g",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_G, PINYIN_ID_UO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 191 */
+ text : "h",
+ bopomofo : L"ㄏ",
+ sheng : "h",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 192 */
+ text : "ha",
+ bopomofo : L"ㄏㄚ",
+ sheng : "h",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_A }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 193 */
+ text : "hagn",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 194 */
+ text : "hai",
+ bopomofo : L"ㄏㄞ",
+ sheng : "h",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_AI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 195 */
+ text : "hamg",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 196 */
+ text : "han",
+ bopomofo : L"ㄏㄢ",
+ sheng : "h",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 197 */
+ text : "hang",
+ bopomofo : L"ㄏㄤ",
+ sheng : "h",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 198 */
+ text : "hao",
+ bopomofo : L"ㄏㄠ",
+ sheng : "h",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_AO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 199 */
+ text : "he",
+ bopomofo : L"ㄏㄜ",
+ sheng : "h",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_E }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 200 */
+ text : "hegn",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 201 */
+ text : "hei",
+ bopomofo : L"ㄏㄟ",
+ sheng : "h",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_EI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 202 */
+ text : "hemg",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 203 */
+ text : "hen",
+ bopomofo : L"ㄏㄣ",
+ sheng : "h",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 204 */
+ text : "heng",
+ bopomofo : L"ㄏㄥ",
+ sheng : "h",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 205 */
+ text : "ho",
+ bopomofo : L"ㄏㄛ",
+ sheng : "h",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_O }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_H_F
+ },
+ { /* 206 */
+ text : "hogn",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 207 */
+ text : "homg",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 208 */
+ text : "hon",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 209 */
+ text : "hong",
+ bopomofo : L"ㄏㄨㄥ",
+ sheng : "h",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 210 */
+ text : "hou",
+ bopomofo : L"ㄏㄡ",
+ sheng : "h",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_OU }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 211 */
+ text : "hu",
+ bopomofo : L"ㄏㄨ",
+ sheng : "h",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_U }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 212 */
+ text : "hua",
+ bopomofo : L"ㄏㄨㄚ",
+ sheng : "h",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UA }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 213 */
+ text : "huagn",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 214 */
+ text : "huai",
+ bopomofo : L"ㄏㄨㄞ",
+ sheng : "h",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UAI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 215 */
+ text : "huamg",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 216 */
+ text : "huan",
+ bopomofo : L"ㄏㄨㄢ",
+ sheng : "h",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UAN }, { PINYIN_ID_F, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 217 */
+ text : "huang",
+ bopomofo : L"ㄏㄨㄤ",
+ sheng : "h",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 218 */
+ text : "huei",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 219 */
+ text : "huen",
+ bopomofo : L"",
+ sheng : "h",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UN }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 220 */
+ text : "hui",
+ bopomofo : L"ㄏㄨㄟ",
+ sheng : "h",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 221 */
+ text : "hun",
+ bopomofo : L"ㄏㄨㄣ",
+ sheng : "h",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UN }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 222 */
+ text : "huo",
+ bopomofo : L"ㄏㄨㄛ",
+ sheng : "h",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_H, PINYIN_ID_UO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 223 */
+ text : "j",
+ bopomofo : L"ㄐ",
+ sheng : "j",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 224 */
+ text : "ji",
+ bopomofo : L"ㄐㄧ",
+ sheng : "j",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 225 */
+ text : "jia",
+ bopomofo : L"ㄐㄧㄚ",
+ sheng : "j",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 226 */
+ text : "jiagn",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 227 */
+ text : "jiamg",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 228 */
+ text : "jian",
+ bopomofo : L"ㄐㄧㄢ",
+ sheng : "j",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 229 */
+ text : "jiang",
+ bopomofo : L"ㄐㄧㄤ",
+ sheng : "j",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 230 */
+ text : "jiao",
+ bopomofo : L"ㄐㄧㄠ",
+ sheng : "j",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 231 */
+ text : "jie",
+ bopomofo : L"ㄐㄧㄝ",
+ sheng : "j",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 232 */
+ text : "jign",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 233 */
+ text : "jimg",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 234 */
+ text : "jin",
+ bopomofo : L"ㄐㄧㄣ",
+ sheng : "j",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 235 */
+ text : "jing",
+ bopomofo : L"ㄐㄧㄥ",
+ sheng : "j",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 236 */
+ text : "jiogn",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 237 */
+ text : "jiomg",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 238 */
+ text : "jion",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 239 */
+ text : "jiong",
+ bopomofo : L"ㄐㄩㄥ",
+ sheng : "j",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 240 */
+ text : "jiou",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 241 */
+ text : "jiu",
+ bopomofo : L"ㄐㄧㄡ",
+ sheng : "j",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 242 */
+ text : "ju",
+ bopomofo : L"ㄐㄩ",
+ sheng : "j",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 243 */
+ text : "juan",
+ bopomofo : L"ㄐㄩㄢ",
+ sheng : "j",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 244 */
+ text : "juang",
+ bopomofo : L"ㄐㄩㄤ",
+ sheng : "j",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 245 */
+ text : "jue",
+ bopomofo : L"ㄐㄩㄝ",
+ sheng : "j",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 246 */
+ text : "juen",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 247 */
+ text : "jun",
+ bopomofo : L"ㄐㄩㄣ",
+ sheng : "j",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 248 */
+ text : "jv",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 249 */
+ text : "jvan",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 250 */
+ text : "jvang",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 251 */
+ text : "jve",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 252 */
+ text : "jven",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 253 */
+ text : "jvn",
+ bopomofo : L"",
+ sheng : "j",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 254 */
+ text : "k",
+ bopomofo : L"ㄎ",
+ sheng : "k",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 255 */
+ text : "ka",
+ bopomofo : L"ㄎㄚ",
+ sheng : "k",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_A }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 256 */
+ text : "kagn",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 257 */
+ text : "kai",
+ bopomofo : L"ㄎㄞ",
+ sheng : "k",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_AI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 258 */
+ text : "kamg",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 259 */
+ text : "kan",
+ bopomofo : L"ㄎㄢ",
+ sheng : "k",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 260 */
+ text : "kang",
+ bopomofo : L"ㄎㄤ",
+ sheng : "k",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 261 */
+ text : "kao",
+ bopomofo : L"ㄎㄠ",
+ sheng : "k",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_AO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 262 */
+ text : "ke",
+ bopomofo : L"ㄎㄜ",
+ sheng : "k",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_E }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 263 */
+ text : "kegn",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 264 */
+ text : "kei",
+ bopomofo : L"ㄎㄟ",
+ sheng : "k",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_EI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_K_G
+ },
+ { /* 265 */
+ text : "kemg",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 266 */
+ text : "ken",
+ bopomofo : L"ㄎㄣ",
+ sheng : "k",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 267 */
+ text : "keng",
+ bopomofo : L"ㄎㄥ",
+ sheng : "k",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 268 */
+ text : "kogn",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 269 */
+ text : "komg",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 270 */
+ text : "kon",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 271 */
+ text : "kong",
+ bopomofo : L"ㄎㄨㄥ",
+ sheng : "k",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 272 */
+ text : "kou",
+ bopomofo : L"ㄎㄡ",
+ sheng : "k",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_OU }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 273 */
+ text : "ku",
+ bopomofo : L"ㄎㄨ",
+ sheng : "k",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_U }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 274 */
+ text : "kua",
+ bopomofo : L"ㄎㄨㄚ",
+ sheng : "k",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UA }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 275 */
+ text : "kuagn",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 276 */
+ text : "kuai",
+ bopomofo : L"ㄎㄨㄞ",
+ sheng : "k",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UAI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 277 */
+ text : "kuamg",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 278 */
+ text : "kuan",
+ bopomofo : L"ㄎㄨㄢ",
+ sheng : "k",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 279 */
+ text : "kuang",
+ bopomofo : L"ㄎㄨㄤ",
+ sheng : "k",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 280 */
+ text : "kuei",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 281 */
+ text : "kuen",
+ bopomofo : L"",
+ sheng : "k",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UN }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 282 */
+ text : "kui",
+ bopomofo : L"ㄎㄨㄟ",
+ sheng : "k",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 283 */
+ text : "kun",
+ bopomofo : L"ㄎㄨㄣ",
+ sheng : "k",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UN }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 284 */
+ text : "kuo",
+ bopomofo : L"ㄎㄨㄛ",
+ sheng : "k",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_K, PINYIN_ID_UO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 285 */
+ text : "l",
+ bopomofo : L"ㄌ",
+ sheng : "l",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 286 */
+ text : "la",
+ bopomofo : L"ㄌㄚ",
+ sheng : "l",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_A }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 287 */
+ text : "lagn",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 288 */
+ text : "lai",
+ bopomofo : L"ㄌㄞ",
+ sheng : "l",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_AI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 289 */
+ text : "lamg",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 290 */
+ text : "lan",
+ bopomofo : L"ㄌㄢ",
+ sheng : "l",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 291 */
+ text : "lang",
+ bopomofo : L"ㄌㄤ",
+ sheng : "l",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 292 */
+ text : "lao",
+ bopomofo : L"ㄌㄠ",
+ sheng : "l",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_AO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 293 */
+ text : "le",
+ bopomofo : L"ㄌㄜ",
+ sheng : "l",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_E }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 294 */
+ text : "legn",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 295 */
+ text : "lei",
+ bopomofo : L"ㄌㄟ",
+ sheng : "l",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_EI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 296 */
+ text : "lemg",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 297 */
+ text : "len",
+ bopomofo : L"ㄌㄣ",
+ sheng : "l",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_L_N | PINYIN_FUZZY_L_R | PINYIN_FUZZY_EN_ENG
+ },
+ { /* 298 */
+ text : "leng",
+ bopomofo : L"ㄌㄥ",
+ sheng : "l",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 299 */
+ text : "li",
+ bopomofo : L"ㄌㄧ",
+ sheng : "l",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_I }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 300 */
+ text : "lia",
+ bopomofo : L"ㄌㄧㄚ",
+ sheng : "l",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IA }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 301 */
+ text : "liagn",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 302 */
+ text : "liamg",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 303 */
+ text : "lian",
+ bopomofo : L"ㄌㄧㄢ",
+ sheng : "l",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 304 */
+ text : "liang",
+ bopomofo : L"ㄌㄧㄤ",
+ sheng : "l",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 305 */
+ text : "liao",
+ bopomofo : L"ㄌㄧㄠ",
+ sheng : "l",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IAO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 306 */
+ text : "lie",
+ bopomofo : L"ㄌㄧㄝ",
+ sheng : "l",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 307 */
+ text : "lign",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 308 */
+ text : "limg",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 309 */
+ text : "lin",
+ bopomofo : L"ㄌㄧㄣ",
+ sheng : "l",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 310 */
+ text : "ling",
+ bopomofo : L"ㄌㄧㄥ",
+ sheng : "l",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 311 */
+ text : "liou",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 312 */
+ text : "liu",
+ bopomofo : L"ㄌㄧㄡ",
+ sheng : "l",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_IU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 313 */
+ text : "lo",
+ bopomofo : L"ㄌㄛ",
+ sheng : "l",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_O }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 314 */
+ text : "logn",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 315 */
+ text : "lomg",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 316 */
+ text : "lon",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 317 */
+ text : "long",
+ bopomofo : L"ㄌㄨㄥ",
+ sheng : "l",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 318 */
+ text : "lou",
+ bopomofo : L"ㄌㄡ",
+ sheng : "l",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_OU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 319 */
+ text : "lu",
+ bopomofo : L"ㄌㄨ",
+ sheng : "l",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_U }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 320 */
+ text : "luan",
+ bopomofo : L"ㄌㄨㄢ",
+ sheng : "l",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 321 */
+ text : "luang",
+ bopomofo : L"ㄌㄨㄤ",
+ sheng : "l",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_N, PINYIN_ID_UAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 322 */
+ text : "lue",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_VE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_UE_TO_VE
+ },
+ { /* 323 */
+ text : "luei",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_L_R | PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 324 */
+ text : "luen",
+ bopomofo : L"",
+ sheng : "l",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 325 */
+ text : "lui",
+ bopomofo : L"ㄌㄨㄟ",
+ sheng : "l",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_L_R
+ },
+ { /* 326 */
+ text : "lun",
+ bopomofo : L"ㄌㄨㄣ",
+ sheng : "l",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 327 */
+ text : "luo",
+ bopomofo : L"ㄌㄨㄛ",
+ sheng : "l",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_UO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 328 */
+ text : "lv",
+ bopomofo : L"ㄌㄩ",
+ sheng : "l",
+ yun : "ü",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_V }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 329 */
+ text : "lve",
+ bopomofo : L"ㄌㄩㄝ",
+ sheng : "l",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_L, PINYIN_ID_VE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 330 */
+ text : "m",
+ bopomofo : L"ㄇ",
+ sheng : "m",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 331 */
+ text : "ma",
+ bopomofo : L"ㄇㄚ",
+ sheng : "m",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 332 */
+ text : "magn",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 333 */
+ text : "mai",
+ bopomofo : L"ㄇㄞ",
+ sheng : "m",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 334 */
+ text : "mamg",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 335 */
+ text : "man",
+ bopomofo : L"ㄇㄢ",
+ sheng : "m",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 336 */
+ text : "mang",
+ bopomofo : L"ㄇㄤ",
+ sheng : "m",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 337 */
+ text : "mao",
+ bopomofo : L"ㄇㄠ",
+ sheng : "m",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 338 */
+ text : "me",
+ bopomofo : L"ㄇㄜ",
+ sheng : "m",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 339 */
+ text : "megn",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 340 */
+ text : "mei",
+ bopomofo : L"ㄇㄟ",
+ sheng : "m",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 341 */
+ text : "memg",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 342 */
+ text : "men",
+ bopomofo : L"ㄇㄣ",
+ sheng : "m",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 343 */
+ text : "meng",
+ bopomofo : L"ㄇㄥ",
+ sheng : "m",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 344 */
+ text : "mi",
+ bopomofo : L"ㄇㄧ",
+ sheng : "m",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 345 */
+ text : "mian",
+ bopomofo : L"ㄇㄧㄢ",
+ sheng : "m",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 346 */
+ text : "miang",
+ bopomofo : L"ㄇㄧㄤ",
+ sheng : "m",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_IANG_IAN
+ },
+ { /* 347 */
+ text : "miao",
+ bopomofo : L"ㄇㄧㄠ",
+ sheng : "m",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 348 */
+ text : "mie",
+ bopomofo : L"ㄇㄧㄝ",
+ sheng : "m",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 349 */
+ text : "mign",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 350 */
+ text : "mimg",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 351 */
+ text : "min",
+ bopomofo : L"ㄇㄧㄣ",
+ sheng : "m",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 352 */
+ text : "ming",
+ bopomofo : L"ㄇㄧㄥ",
+ sheng : "m",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 353 */
+ text : "miou",
+ bopomofo : L"",
+ sheng : "m",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 354 */
+ text : "miu",
+ bopomofo : L"ㄇㄧㄡ",
+ sheng : "m",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 355 */
+ text : "mo",
+ bopomofo : L"ㄇㄛ",
+ sheng : "m",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 356 */
+ text : "mou",
+ bopomofo : L"ㄇㄡ",
+ sheng : "m",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 357 */
+ text : "mu",
+ bopomofo : L"ㄇㄨ",
+ sheng : "m",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_M, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 358 */
+ text : "n",
+ bopomofo : L"ㄋ",
+ sheng : "n",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 359 */
+ text : "na",
+ bopomofo : L"ㄋㄚ",
+ sheng : "n",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_A }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 360 */
+ text : "nagn",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 361 */
+ text : "nai",
+ bopomofo : L"ㄋㄞ",
+ sheng : "n",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_AI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 362 */
+ text : "namg",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 363 */
+ text : "nan",
+ bopomofo : L"ㄋㄢ",
+ sheng : "n",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 364 */
+ text : "nang",
+ bopomofo : L"ㄋㄤ",
+ sheng : "n",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 365 */
+ text : "nao",
+ bopomofo : L"ㄋㄠ",
+ sheng : "n",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_AO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 366 */
+ text : "ne",
+ bopomofo : L"ㄋㄜ",
+ sheng : "n",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_E }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 367 */
+ text : "negn",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 368 */
+ text : "nei",
+ bopomofo : L"ㄋㄟ",
+ sheng : "n",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_EI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 369 */
+ text : "nemg",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 370 */
+ text : "nen",
+ bopomofo : L"ㄋㄣ",
+ sheng : "n",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 371 */
+ text : "neng",
+ bopomofo : L"ㄋㄥ",
+ sheng : "n",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 372 */
+ text : "ni",
+ bopomofo : L"ㄋㄧ",
+ sheng : "n",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_I }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 373 */
+ text : "nia",
+ bopomofo : L"ㄋㄧㄚ",
+ sheng : "n",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IA }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_N_L
+ },
+ { /* 374 */
+ text : "niagn",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 375 */
+ text : "niamg",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 376 */
+ text : "nian",
+ bopomofo : L"ㄋㄧㄢ",
+ sheng : "n",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 377 */
+ text : "niang",
+ bopomofo : L"ㄋㄧㄤ",
+ sheng : "n",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 378 */
+ text : "niao",
+ bopomofo : L"ㄋㄧㄠ",
+ sheng : "n",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IAO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 379 */
+ text : "nie",
+ bopomofo : L"ㄋㄧㄝ",
+ sheng : "n",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 380 */
+ text : "nign",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 381 */
+ text : "nimg",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 382 */
+ text : "nin",
+ bopomofo : L"ㄋㄧㄣ",
+ sheng : "n",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 383 */
+ text : "ning",
+ bopomofo : L"ㄋㄧㄥ",
+ sheng : "n",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 384 */
+ text : "niou",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 385 */
+ text : "niu",
+ bopomofo : L"ㄋㄧㄡ",
+ sheng : "n",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 386 */
+ text : "no",
+ bopomofo : L"ㄋㄛ",
+ sheng : "n",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_O }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_N_L
+ },
+ { /* 387 */
+ text : "nogn",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 388 */
+ text : "nomg",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 389 */
+ text : "non",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 390 */
+ text : "nong",
+ bopomofo : L"ㄋㄨㄥ",
+ sheng : "n",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 391 */
+ text : "nou",
+ bopomofo : L"ㄋㄡ",
+ sheng : "n",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_OU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 392 */
+ text : "nu",
+ bopomofo : L"ㄋㄨ",
+ sheng : "n",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_U }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 393 */
+ text : "nuan",
+ bopomofo : L"ㄋㄨㄢ",
+ sheng : "n",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_UAN }, { PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 394 */
+ text : "nuang",
+ bopomofo : L"ㄋㄨㄤ",
+ sheng : "n",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_UANG }, { PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 395 */
+ text : "nue",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_UE_TO_VE
+ },
+ { /* 396 */
+ text : "nuen",
+ bopomofo : L"",
+ sheng : "n",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_N_L | PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 397 */
+ text : "nun",
+ bopomofo : L"ㄋㄨㄣ",
+ sheng : "n",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_N_L
+ },
+ { /* 398 */
+ text : "nuo",
+ bopomofo : L"ㄋㄨㄛ",
+ sheng : "n",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_UO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 399 */
+ text : "nv",
+ bopomofo : L"ㄋㄩ",
+ sheng : "n",
+ yun : "ü",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_V }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 400 */
+ text : "nve",
+ bopomofo : L"ㄋㄩㄝ",
+ sheng : "n",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_N, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 401 */
+ text : "o",
+ bopomofo : L"ㄛ",
+ sheng : "",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : 0
+ },
+ { /* 402 */
+ text : "ou",
+ bopomofo : L"ㄡ",
+ sheng : "",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_ZERO, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 403 */
+ text : "p",
+ bopomofo : L"ㄆ",
+ sheng : "p",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 404 */
+ text : "pa",
+ bopomofo : L"ㄆㄚ",
+ sheng : "p",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 405 */
+ text : "pagn",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 406 */
+ text : "pai",
+ bopomofo : L"ㄆㄞ",
+ sheng : "p",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 407 */
+ text : "pamg",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 408 */
+ text : "pan",
+ bopomofo : L"ㄆㄢ",
+ sheng : "p",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 409 */
+ text : "pang",
+ bopomofo : L"ㄆㄤ",
+ sheng : "p",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 410 */
+ text : "pao",
+ bopomofo : L"ㄆㄠ",
+ sheng : "p",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 411 */
+ text : "pegn",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 412 */
+ text : "pei",
+ bopomofo : L"ㄆㄟ",
+ sheng : "p",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 413 */
+ text : "pemg",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 414 */
+ text : "pen",
+ bopomofo : L"ㄆㄣ",
+ sheng : "p",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 415 */
+ text : "peng",
+ bopomofo : L"ㄆㄥ",
+ sheng : "p",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 416 */
+ text : "pi",
+ bopomofo : L"ㄆㄧ",
+ sheng : "p",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 417 */
+ text : "pian",
+ bopomofo : L"ㄆㄧㄢ",
+ sheng : "p",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 418 */
+ text : "piang",
+ bopomofo : L"ㄆㄧㄤ",
+ sheng : "p",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_IANG_IAN
+ },
+ { /* 419 */
+ text : "piao",
+ bopomofo : L"ㄆㄧㄠ",
+ sheng : "p",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 420 */
+ text : "pie",
+ bopomofo : L"ㄆㄧㄝ",
+ sheng : "p",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 421 */
+ text : "pign",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 422 */
+ text : "pimg",
+ bopomofo : L"",
+ sheng : "p",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 423 */
+ text : "pin",
+ bopomofo : L"ㄆㄧㄣ",
+ sheng : "p",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 424 */
+ text : "ping",
+ bopomofo : L"ㄆㄧㄥ",
+ sheng : "p",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 425 */
+ text : "po",
+ bopomofo : L"ㄆㄛ",
+ sheng : "p",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 426 */
+ text : "pou",
+ bopomofo : L"ㄆㄡ",
+ sheng : "p",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 427 */
+ text : "pu",
+ bopomofo : L"ㄆㄨ",
+ sheng : "p",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_P, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 428 */
+ text : "q",
+ bopomofo : L"ㄑ",
+ sheng : "q",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 429 */
+ text : "qi",
+ bopomofo : L"ㄑㄧ",
+ sheng : "q",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 430 */
+ text : "qia",
+ bopomofo : L"ㄑㄧㄚ",
+ sheng : "q",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 431 */
+ text : "qiagn",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 432 */
+ text : "qiamg",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 433 */
+ text : "qian",
+ bopomofo : L"ㄑㄧㄢ",
+ sheng : "q",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 434 */
+ text : "qiang",
+ bopomofo : L"ㄑㄧㄤ",
+ sheng : "q",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 435 */
+ text : "qiao",
+ bopomofo : L"ㄑㄧㄠ",
+ sheng : "q",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 436 */
+ text : "qie",
+ bopomofo : L"ㄑㄧㄝ",
+ sheng : "q",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 437 */
+ text : "qign",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 438 */
+ text : "qimg",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 439 */
+ text : "qin",
+ bopomofo : L"ㄑㄧㄣ",
+ sheng : "q",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 440 */
+ text : "qing",
+ bopomofo : L"ㄑㄧㄥ",
+ sheng : "q",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 441 */
+ text : "qiogn",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 442 */
+ text : "qiomg",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 443 */
+ text : "qion",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 444 */
+ text : "qiong",
+ bopomofo : L"ㄑㄩㄥ",
+ sheng : "q",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 445 */
+ text : "qiou",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 446 */
+ text : "qiu",
+ bopomofo : L"ㄑㄧㄡ",
+ sheng : "q",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 447 */
+ text : "qu",
+ bopomofo : L"ㄑㄩ",
+ sheng : "q",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 448 */
+ text : "quan",
+ bopomofo : L"ㄑㄩㄢ",
+ sheng : "q",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 449 */
+ text : "quang",
+ bopomofo : L"ㄑㄩㄤ",
+ sheng : "q",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 450 */
+ text : "que",
+ bopomofo : L"ㄑㄩㄝ",
+ sheng : "q",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 451 */
+ text : "quen",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 452 */
+ text : "qun",
+ bopomofo : L"ㄑㄩㄣ",
+ sheng : "q",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 453 */
+ text : "qv",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 454 */
+ text : "qvan",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 455 */
+ text : "qvang",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 456 */
+ text : "qve",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 457 */
+ text : "qven",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 458 */
+ text : "qvn",
+ bopomofo : L"",
+ sheng : "q",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 459 */
+ text : "r",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ZERO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 460 */
+ text : "ra",
+ bopomofo : L"ㄖㄚ",
+ sheng : "r",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_A }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 461 */
+ text : "ragn",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 462 */
+ text : "rai",
+ bopomofo : L"ㄖㄞ",
+ sheng : "r",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_AI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 463 */
+ text : "ramg",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 464 */
+ text : "ran",
+ bopomofo : L"ㄖㄢ",
+ sheng : "r",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_AN }, { PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 465 */
+ text : "rang",
+ bopomofo : L"ㄖㄤ",
+ sheng : "r",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 466 */
+ text : "rao",
+ bopomofo : L"ㄖㄠ",
+ sheng : "r",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_AO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 467 */
+ text : "re",
+ bopomofo : L"ㄖㄜ",
+ sheng : "r",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_E }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 468 */
+ text : "regn",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 469 */
+ text : "rei",
+ bopomofo : L"ㄖㄟ",
+ sheng : "r",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_EI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 470 */
+ text : "remg",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 471 */
+ text : "ren",
+ bopomofo : L"ㄖㄣ",
+ sheng : "r",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_EN }, { PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 472 */
+ text : "reng",
+ bopomofo : L"ㄖㄥ",
+ sheng : "r",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 473 */
+ text : "ri",
+ bopomofo : L"ㄖ",
+ sheng : "r",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_I }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 474 */
+ text : "ria",
+ bopomofo : L"ㄖㄧㄚ",
+ sheng : "r",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IA }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 475 */
+ text : "rian",
+ bopomofo : L"ㄖㄧㄢ",
+ sheng : "r",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IAN }, { PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 476 */
+ text : "riang",
+ bopomofo : L"ㄖㄧㄤ",
+ sheng : "r",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 477 */
+ text : "riao",
+ bopomofo : L"ㄖㄧㄠ",
+ sheng : "r",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IAO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 478 */
+ text : "rie",
+ bopomofo : L"ㄖㄧㄝ",
+ sheng : "r",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 479 */
+ text : "rin",
+ bopomofo : L"ㄖㄧㄣ",
+ sheng : "r",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IN }, { PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 480 */
+ text : "ring",
+ bopomofo : L"ㄖㄧㄥ",
+ sheng : "r",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 481 */
+ text : "riou",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_R_L | PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 482 */
+ text : "riu",
+ bopomofo : L"ㄖㄧㄡ",
+ sheng : "r",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 483 */
+ text : "ro",
+ bopomofo : L"ㄖㄛ",
+ sheng : "r",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_O }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 484 */
+ text : "rogn",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 485 */
+ text : "romg",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 486 */
+ text : "ron",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 487 */
+ text : "rong",
+ bopomofo : L"ㄖㄨㄥ",
+ sheng : "r",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 488 */
+ text : "rou",
+ bopomofo : L"ㄖㄡ",
+ sheng : "r",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_OU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 489 */
+ text : "ru",
+ bopomofo : L"ㄖㄨ",
+ sheng : "r",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_U }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 490 */
+ text : "ruan",
+ bopomofo : L"ㄖㄨㄢ",
+ sheng : "r",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UAN }, { PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 491 */
+ text : "ruang",
+ bopomofo : L"ㄖㄨㄤ",
+ sheng : "r",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UANG }, { PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 492 */
+ text : "rue",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L | PINYIN_CORRECT_UE_TO_VE
+ },
+ { /* 493 */
+ text : "ruei",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 494 */
+ text : "ruen",
+ bopomofo : L"",
+ sheng : "r",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 495 */
+ text : "rui",
+ bopomofo : L"ㄖㄨㄟ",
+ sheng : "r",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 496 */
+ text : "run",
+ bopomofo : L"ㄖㄨㄣ",
+ sheng : "r",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 497 */
+ text : "ruo",
+ bopomofo : L"ㄖㄨㄛ",
+ sheng : "r",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_UO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 498 */
+ text : "rv",
+ bopomofo : L"ㄖㄩ",
+ sheng : "r",
+ yun : "ü",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_V }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 499 */
+ text : "rve",
+ bopomofo : L"ㄖㄩㄝ",
+ sheng : "r",
+ yun : "üe",
+ pinyin_id : {{ PINYIN_ID_R, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_R_L
+ },
+ { /* 500 */
+ text : "s",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 501 */
+ text : "sa",
+ bopomofo : L"ㄙㄚ",
+ sheng : "s",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_A }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 502 */
+ text : "sagn",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 503 */
+ text : "sai",
+ bopomofo : L"ㄙㄞ",
+ sheng : "s",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_AI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 504 */
+ text : "samg",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 505 */
+ text : "san",
+ bopomofo : L"ㄙㄢ",
+ sheng : "s",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 506 */
+ text : "sang",
+ bopomofo : L"ㄙㄤ",
+ sheng : "s",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 507 */
+ text : "sao",
+ bopomofo : L"ㄙㄠ",
+ sheng : "s",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_AO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 508 */
+ text : "se",
+ bopomofo : L"ㄙㄜ",
+ sheng : "s",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_E }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 509 */
+ text : "segn",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 510 */
+ text : "sei",
+ bopomofo : L"ㄙㄟ",
+ sheng : "s",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_EI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_S_SH
+ },
+ { /* 511 */
+ text : "semg",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 512 */
+ text : "sen",
+ bopomofo : L"ㄙㄣ",
+ sheng : "s",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 513 */
+ text : "seng",
+ bopomofo : L"ㄙㄥ",
+ sheng : "s",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 514 */
+ text : "sh",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 515 */
+ text : "sha",
+ bopomofo : L"ㄕㄚ",
+ sheng : "sh",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_A }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 516 */
+ text : "shagn",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 517 */
+ text : "shai",
+ bopomofo : L"ㄕㄞ",
+ sheng : "sh",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_AI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 518 */
+ text : "shamg",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 519 */
+ text : "shan",
+ bopomofo : L"ㄕㄢ",
+ sheng : "sh",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 520 */
+ text : "shang",
+ bopomofo : L"ㄕㄤ",
+ sheng : "sh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 521 */
+ text : "shao",
+ bopomofo : L"ㄕㄠ",
+ sheng : "sh",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_AO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 522 */
+ text : "she",
+ bopomofo : L"ㄕㄜ",
+ sheng : "sh",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_E }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 523 */
+ text : "shegn",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 524 */
+ text : "shei",
+ bopomofo : L"ㄕㄟ",
+ sheng : "sh",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_EI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 525 */
+ text : "shemg",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 526 */
+ text : "shen",
+ bopomofo : L"ㄕㄣ",
+ sheng : "sh",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 527 */
+ text : "sheng",
+ bopomofo : L"ㄕㄥ",
+ sheng : "sh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 528 */
+ text : "shi",
+ bopomofo : L"ㄕ",
+ sheng : "sh",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_I }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 529 */
+ text : "shon",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ONG }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_SH_S | PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 530 */
+ text : "shong",
+ bopomofo : L"ㄕㄨㄥ",
+ sheng : "sh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_ONG }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_SH_S
+ },
+ { /* 531 */
+ text : "shou",
+ bopomofo : L"ㄕㄡ",
+ sheng : "sh",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_OU }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 532 */
+ text : "shu",
+ bopomofo : L"ㄕㄨ",
+ sheng : "sh",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_U }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 533 */
+ text : "shua",
+ bopomofo : L"ㄕㄨㄚ",
+ sheng : "sh",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UA }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 534 */
+ text : "shuagn",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 535 */
+ text : "shuai",
+ bopomofo : L"ㄕㄨㄞ",
+ sheng : "sh",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UAI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 536 */
+ text : "shuamg",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 537 */
+ text : "shuan",
+ bopomofo : L"ㄕㄨㄢ",
+ sheng : "sh",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UAN }, { PINYIN_ID_S, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 538 */
+ text : "shuang",
+ bopomofo : L"ㄕㄨㄤ",
+ sheng : "sh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : 0
+ },
+ { /* 539 */
+ text : "shuei",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 540 */
+ text : "shuen",
+ bopomofo : L"",
+ sheng : "sh",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UN }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 541 */
+ text : "shui",
+ bopomofo : L"ㄕㄨㄟ",
+ sheng : "sh",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 542 */
+ text : "shun",
+ bopomofo : L"ㄕㄨㄣ",
+ sheng : "sh",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UN }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 543 */
+ text : "shuo",
+ bopomofo : L"ㄕㄨㄛ",
+ sheng : "sh",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_SH, PINYIN_ID_UO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 544 */
+ text : "si",
+ bopomofo : L"ㄙ",
+ sheng : "s",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_I }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 545 */
+ text : "sogn",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 546 */
+ text : "somg",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 547 */
+ text : "son",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 548 */
+ text : "song",
+ bopomofo : L"ㄙㄨㄥ",
+ sheng : "s",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 549 */
+ text : "sou",
+ bopomofo : L"ㄙㄡ",
+ sheng : "s",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_OU }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 550 */
+ text : "su",
+ bopomofo : L"ㄙㄨ",
+ sheng : "s",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_U }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 551 */
+ text : "sua",
+ bopomofo : L"ㄙㄨㄚ",
+ sheng : "s",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UA }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_S_SH
+ },
+ { /* 552 */
+ text : "suai",
+ bopomofo : L"ㄙㄨㄞ",
+ sheng : "s",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UAI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_S_SH
+ },
+ { /* 553 */
+ text : "suan",
+ bopomofo : L"ㄙㄨㄢ",
+ sheng : "s",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 554 */
+ text : "suang",
+ bopomofo : L"ㄙㄨㄤ",
+ sheng : "s",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UANG }, { PINYIN_ID_SH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_S_SH | PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 555 */
+ text : "suei",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 556 */
+ text : "suen",
+ bopomofo : L"",
+ sheng : "s",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UN }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 557 */
+ text : "sui",
+ bopomofo : L"ㄙㄨㄟ",
+ sheng : "s",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 558 */
+ text : "sun",
+ bopomofo : L"ㄙㄨㄣ",
+ sheng : "s",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UN }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 559 */
+ text : "suo",
+ bopomofo : L"ㄙㄨㄛ",
+ sheng : "s",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_S, PINYIN_ID_UO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 560 */
+ text : "t",
+ bopomofo : L"ㄊ",
+ sheng : "t",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 561 */
+ text : "ta",
+ bopomofo : L"ㄊㄚ",
+ sheng : "t",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 562 */
+ text : "tagn",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 563 */
+ text : "tai",
+ bopomofo : L"ㄊㄞ",
+ sheng : "t",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 564 */
+ text : "tamg",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 565 */
+ text : "tan",
+ bopomofo : L"ㄊㄢ",
+ sheng : "t",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 566 */
+ text : "tang",
+ bopomofo : L"ㄊㄤ",
+ sheng : "t",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 567 */
+ text : "tao",
+ bopomofo : L"ㄊㄠ",
+ sheng : "t",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 568 */
+ text : "te",
+ bopomofo : L"ㄊㄜ",
+ sheng : "t",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 569 */
+ text : "tegn",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 570 */
+ text : "temg",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 571 */
+ text : "ten",
+ bopomofo : L"ㄊㄣ",
+ sheng : "t",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_EN_ENG
+ },
+ { /* 572 */
+ text : "teng",
+ bopomofo : L"ㄊㄥ",
+ sheng : "t",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 573 */
+ text : "ti",
+ bopomofo : L"ㄊㄧ",
+ sheng : "t",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 574 */
+ text : "tian",
+ bopomofo : L"ㄊㄧㄢ",
+ sheng : "t",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 575 */
+ text : "tiang",
+ bopomofo : L"ㄊㄧㄤ",
+ sheng : "t",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_IANG_IAN
+ },
+ { /* 576 */
+ text : "tiao",
+ bopomofo : L"ㄊㄧㄠ",
+ sheng : "t",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 577 */
+ text : "tie",
+ bopomofo : L"ㄊㄧㄝ",
+ sheng : "t",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 578 */
+ text : "tign",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 579 */
+ text : "timg",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 580 */
+ text : "tin",
+ bopomofo : L"ㄊㄧㄣ",
+ sheng : "t",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_IN_ING
+ },
+ { /* 581 */
+ text : "ting",
+ bopomofo : L"ㄊㄧㄥ",
+ sheng : "t",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 582 */
+ text : "togn",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 583 */
+ text : "tomg",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 584 */
+ text : "ton",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 585 */
+ text : "tong",
+ bopomofo : L"ㄊㄨㄥ",
+ sheng : "t",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 586 */
+ text : "tou",
+ bopomofo : L"ㄊㄡ",
+ sheng : "t",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 587 */
+ text : "tu",
+ bopomofo : L"ㄊㄨ",
+ sheng : "t",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 588 */
+ text : "tuan",
+ bopomofo : L"ㄊㄨㄢ",
+ sheng : "t",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 589 */
+ text : "tuang",
+ bopomofo : L"ㄊㄨㄤ",
+ sheng : "t",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 590 */
+ text : "tuei",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 591 */
+ text : "tuen",
+ bopomofo : L"",
+ sheng : "t",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 592 */
+ text : "tui",
+ bopomofo : L"ㄊㄨㄟ",
+ sheng : "t",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 593 */
+ text : "tun",
+ bopomofo : L"ㄊㄨㄣ",
+ sheng : "t",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 594 */
+ text : "tuo",
+ bopomofo : L"ㄊㄨㄛ",
+ sheng : "t",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_T, PINYIN_ID_UO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 595 */
+ text : "w",
+ bopomofo : L"",
+ sheng : "w",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 596 */
+ text : "wa",
+ bopomofo : L"ㄨㄚ",
+ sheng : "w",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 597 */
+ text : "wagn",
+ bopomofo : L"",
+ sheng : "w",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 598 */
+ text : "wai",
+ bopomofo : L"ㄨㄞ",
+ sheng : "w",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 599 */
+ text : "wamg",
+ bopomofo : L"",
+ sheng : "w",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 600 */
+ text : "wan",
+ bopomofo : L"ㄨㄢ",
+ sheng : "w",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 601 */
+ text : "wang",
+ bopomofo : L"ㄨㄤ",
+ sheng : "w",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 602 */
+ text : "wegn",
+ bopomofo : L"",
+ sheng : "w",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 603 */
+ text : "wei",
+ bopomofo : L"ㄨㄟ",
+ sheng : "w",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 604 */
+ text : "wemg",
+ bopomofo : L"",
+ sheng : "w",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 605 */
+ text : "wen",
+ bopomofo : L"ㄨㄣ",
+ sheng : "w",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 606 */
+ text : "weng",
+ bopomofo : L"ㄨㄥ",
+ sheng : "w",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 607 */
+ text : "wo",
+ bopomofo : L"ㄨㄛ",
+ sheng : "w",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 608 */
+ text : "wu",
+ bopomofo : L"ㄨ",
+ sheng : "w",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_W, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 609 */
+ text : "x",
+ bopomofo : L"ㄒ",
+ sheng : "x",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 610 */
+ text : "xi",
+ bopomofo : L"ㄒㄧ",
+ sheng : "x",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 611 */
+ text : "xia",
+ bopomofo : L"ㄒㄧㄚ",
+ sheng : "x",
+ yun : "ia",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 612 */
+ text : "xiagn",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 613 */
+ text : "xiamg",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 614 */
+ text : "xian",
+ bopomofo : L"ㄒㄧㄢ",
+ sheng : "x",
+ yun : "ian",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 615 */
+ text : "xiang",
+ bopomofo : L"ㄒㄧㄤ",
+ sheng : "x",
+ yun : "iang",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 616 */
+ text : "xiao",
+ bopomofo : L"ㄒㄧㄠ",
+ sheng : "x",
+ yun : "iao",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 617 */
+ text : "xie",
+ bopomofo : L"ㄒㄧㄝ",
+ sheng : "x",
+ yun : "ie",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 618 */
+ text : "xign",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 619 */
+ text : "ximg",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 620 */
+ text : "xin",
+ bopomofo : L"ㄒㄧㄣ",
+ sheng : "x",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 621 */
+ text : "xing",
+ bopomofo : L"ㄒㄧㄥ",
+ sheng : "x",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 622 */
+ text : "xiogn",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 623 */
+ text : "xiomg",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 624 */
+ text : "xion",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 625 */
+ text : "xiong",
+ bopomofo : L"ㄒㄩㄥ",
+ sheng : "x",
+ yun : "iong",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 626 */
+ text : "xiou",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_IOU_TO_IU
+ },
+ { /* 627 */
+ text : "xiu",
+ bopomofo : L"ㄒㄧㄡ",
+ sheng : "x",
+ yun : "iu",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 628 */
+ text : "xu",
+ bopomofo : L"ㄒㄩ",
+ sheng : "x",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 629 */
+ text : "xuan",
+ bopomofo : L"ㄒㄩㄢ",
+ sheng : "x",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 630 */
+ text : "xuang",
+ bopomofo : L"ㄒㄩㄤ",
+ sheng : "x",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 631 */
+ text : "xue",
+ bopomofo : L"ㄒㄩㄝ",
+ sheng : "x",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 632 */
+ text : "xuen",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 633 */
+ text : "xun",
+ bopomofo : L"ㄒㄩㄣ",
+ sheng : "x",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 634 */
+ text : "xv",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 635 */
+ text : "xvan",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 636 */
+ text : "xvang",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 637 */
+ text : "xve",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 638 */
+ text : "xven",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 639 */
+ text : "xvn",
+ bopomofo : L"",
+ sheng : "x",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 640 */
+ text : "y",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 641 */
+ text : "ya",
+ bopomofo : L"ㄧㄚ",
+ sheng : "y",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 642 */
+ text : "yagn",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 643 */
+ text : "yamg",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 644 */
+ text : "yan",
+ bopomofo : L"ㄧㄢ",
+ sheng : "y",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 645 */
+ text : "yang",
+ bopomofo : L"ㄧㄤ",
+ sheng : "y",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 646 */
+ text : "yao",
+ bopomofo : L"ㄧㄠ",
+ sheng : "y",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 647 */
+ text : "ye",
+ bopomofo : L"ㄧㄝ",
+ sheng : "y",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 648 */
+ text : "yi",
+ bopomofo : L"ㄧ",
+ sheng : "y",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 649 */
+ text : "yign",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 650 */
+ text : "yimg",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 651 */
+ text : "yin",
+ bopomofo : L"ㄧㄣ",
+ sheng : "y",
+ yun : "in",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 652 */
+ text : "ying",
+ bopomofo : L"ㄧㄥ",
+ sheng : "y",
+ yun : "ing",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 653 */
+ text : "yo",
+ bopomofo : L"ㄧㄛ",
+ sheng : "y",
+ yun : "o",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 654 */
+ text : "yogn",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 655 */
+ text : "yomg",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 656 */
+ text : "yon",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 657 */
+ text : "yong",
+ bopomofo : L"ㄩㄥ",
+ sheng : "y",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 658 */
+ text : "you",
+ bopomofo : L"ㄧㄡ",
+ sheng : "y",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 659 */
+ text : "yu",
+ bopomofo : L"ㄩ",
+ sheng : "y",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 660 */
+ text : "yuan",
+ bopomofo : L"ㄩㄢ",
+ sheng : "y",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 661 */
+ text : "yuang",
+ bopomofo : L"ㄧㄩㄤ",
+ sheng : "y",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 662 */
+ text : "yue",
+ bopomofo : L"ㄩㄝ",
+ sheng : "y",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 663 */
+ text : "yuen",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 664 */
+ text : "yun",
+ bopomofo : L"ㄩㄣ",
+ sheng : "y",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 665 */
+ text : "yv",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 666 */
+ text : "yvan",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 667 */
+ text : "yvang",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 668 */
+ text : "yve",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "ue",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 669 */
+ text : "yven",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
+ },
+ { /* 670 */
+ text : "yvn",
+ bopomofo : L"",
+ sheng : "y",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_V_TO_U
+ },
+ { /* 671 */
+ text : "z",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 1,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 672 */
+ text : "za",
+ bopomofo : L"ㄗㄚ",
+ sheng : "z",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_A }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 673 */
+ text : "zagn",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 674 */
+ text : "zai",
+ bopomofo : L"ㄗㄞ",
+ sheng : "z",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_AI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 675 */
+ text : "zamg",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 676 */
+ text : "zan",
+ bopomofo : L"ㄗㄢ",
+ sheng : "z",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 677 */
+ text : "zang",
+ bopomofo : L"ㄗㄤ",
+ sheng : "z",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 678 */
+ text : "zao",
+ bopomofo : L"ㄗㄠ",
+ sheng : "z",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_AO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 679 */
+ text : "ze",
+ bopomofo : L"ㄗㄜ",
+ sheng : "z",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_E }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 680 */
+ text : "zegn",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 681 */
+ text : "zei",
+ bopomofo : L"ㄗㄟ",
+ sheng : "z",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_EI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 682 */
+ text : "zemg",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 683 */
+ text : "zen",
+ bopomofo : L"ㄗㄣ",
+ sheng : "z",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 684 */
+ text : "zeng",
+ bopomofo : L"ㄗㄥ",
+ sheng : "z",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 685 */
+ text : "zh",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : PINYIN_INCOMPLETE_PINYIN
+ },
+ { /* 686 */
+ text : "zha",
+ bopomofo : L"ㄓㄚ",
+ sheng : "zh",
+ yun : "a",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_A }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 687 */
+ text : "zhagn",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 688 */
+ text : "zhai",
+ bopomofo : L"ㄓㄞ",
+ sheng : "zh",
+ yun : "ai",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_AI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 689 */
+ text : "zhamg",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 690 */
+ text : "zhan",
+ bopomofo : L"ㄓㄢ",
+ sheng : "zh",
+ yun : "an",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 691 */
+ text : "zhang",
+ bopomofo : L"ㄓㄤ",
+ sheng : "zh",
+ yun : "ang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 692 */
+ text : "zhao",
+ bopomofo : L"ㄓㄠ",
+ sheng : "zh",
+ yun : "ao",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_AO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 693 */
+ text : "zhe",
+ bopomofo : L"ㄓㄜ",
+ sheng : "zh",
+ yun : "e",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_E }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 694 */
+ text : "zhegn",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 695 */
+ text : "zhei",
+ bopomofo : L"ㄓㄟ",
+ sheng : "zh",
+ yun : "ei",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_EI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_ZH_Z
+ },
+ { /* 696 */
+ text : "zhemg",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 697 */
+ text : "zhen",
+ bopomofo : L"ㄓㄣ",
+ sheng : "zh",
+ yun : "en",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 698 */
+ text : "zheng",
+ bopomofo : L"ㄓㄥ",
+ sheng : "zh",
+ yun : "eng",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 699 */
+ text : "zhi",
+ bopomofo : L"ㄓ",
+ sheng : "zh",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_I }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 700 */
+ text : "zhogn",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 701 */
+ text : "zhomg",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 702 */
+ text : "zhon",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 703 */
+ text : "zhong",
+ bopomofo : L"ㄓㄨㄥ",
+ sheng : "zh",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 704 */
+ text : "zhou",
+ bopomofo : L"ㄓㄡ",
+ sheng : "zh",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_OU }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 705 */
+ text : "zhu",
+ bopomofo : L"ㄓㄨ",
+ sheng : "zh",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_U }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 706 */
+ text : "zhua",
+ bopomofo : L"ㄓㄨㄚ",
+ sheng : "zh",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UA }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 707 */
+ text : "zhuagn",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 708 */
+ text : "zhuai",
+ bopomofo : L"ㄓㄨㄞ",
+ sheng : "zh",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UAI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 709 */
+ text : "zhuamg",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 710 */
+ text : "zhuan",
+ bopomofo : L"ㄓㄨㄢ",
+ sheng : "zh",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UAN }, { PINYIN_ID_Z, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : 0
+ },
+ { /* 711 */
+ text : "zhuang",
+ bopomofo : L"ㄓㄨㄤ",
+ sheng : "zh",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 6,
+ flags : 0
+ },
+ { /* 712 */
+ text : "zhuei",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 713 */
+ text : "zhuen",
+ bopomofo : L"",
+ sheng : "zh",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UN }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 714 */
+ text : "zhui",
+ bopomofo : L"ㄓㄨㄟ",
+ sheng : "zh",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 715 */
+ text : "zhun",
+ bopomofo : L"ㄓㄨㄣ",
+ sheng : "zh",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UN }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 716 */
+ text : "zhuo",
+ bopomofo : L"ㄓㄨㄛ",
+ sheng : "zh",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_ZH, PINYIN_ID_UO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 717 */
+ text : "zi",
+ bopomofo : L"ㄗ",
+ sheng : "z",
+ yun : "i",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_I }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 718 */
+ text : "zogn",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_GN_TO_NG
+ },
+ { /* 719 */
+ text : "zomg",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_MG_TO_NG
+ },
+ { /* 720 */
+ text : "zon",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_CORRECT_ON_TO_ONG
+ },
+ { /* 721 */
+ text : "zong",
+ bopomofo : L"ㄗㄨㄥ",
+ sheng : "z",
+ yun : "ong",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 722 */
+ text : "zou",
+ bopomofo : L"ㄗㄡ",
+ sheng : "z",
+ yun : "ou",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_OU }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 723 */
+ text : "zu",
+ bopomofo : L"ㄗㄨ",
+ sheng : "z",
+ yun : "u",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_U }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 2,
+ flags : 0
+ },
+ { /* 724 */
+ text : "zua",
+ bopomofo : L"ㄗㄨㄚ",
+ sheng : "z",
+ yun : "ua",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UA }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : PINYIN_FUZZY_Z_ZH
+ },
+ { /* 725 */
+ text : "zuai",
+ bopomofo : L"ㄗㄨㄞ",
+ sheng : "z",
+ yun : "uai",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UAI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_FUZZY_Z_ZH
+ },
+ { /* 726 */
+ text : "zuan",
+ bopomofo : L"ㄗㄨㄢ",
+ sheng : "z",
+ yun : "uan",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : 0
+ },
+ { /* 727 */
+ text : "zuang",
+ bopomofo : L"ㄗㄨㄤ",
+ sheng : "z",
+ yun : "uang",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UANG }, { PINYIN_ID_ZH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 5,
+ flags : PINYIN_FUZZY_Z_ZH | PINYIN_FUZZY_UANG_UAN
+ },
+ { /* 728 */
+ text : "zuei",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEI_TO_UI
+ },
+ { /* 729 */
+ text : "zuen",
+ bopomofo : L"",
+ sheng : "z",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UN }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 4,
+ flags : PINYIN_CORRECT_UEN_TO_UN
+ },
+ { /* 730 */
+ text : "zui",
+ bopomofo : L"ㄗㄨㄟ",
+ sheng : "z",
+ yun : "ui",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 731 */
+ text : "zun",
+ bopomofo : L"ㄗㄨㄣ",
+ sheng : "z",
+ yun : "un",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UN }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+ { /* 732 */
+ text : "zuo",
+ bopomofo : L"ㄗㄨㄛ",
+ sheng : "z",
+ yun : "uo",
+ pinyin_id : {{ PINYIN_ID_Z, PINYIN_ID_UO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
+ len : 3,
+ flags : 0
+ },
+};
+
+static const Pinyin *bopomofo_table[] = {
+ &pinyin_table[7], // "ㄅ" => "b"
+ &pinyin_table[8], // "ㄅㄚ" => "ba"
+ &pinyin_table[29], // "ㄅㄛ" => "bo"
+ &pinyin_table[10], // "ㄅㄞ" => "bai"
+ &pinyin_table[16], // "ㄅㄟ" => "bei"
+ &pinyin_table[14], // "ㄅㄠ" => "bao"
+ &pinyin_table[12], // "ㄅㄢ" => "ban"
+ &pinyin_table[18], // "ㄅㄣ" => "ben"
+ &pinyin_table[13], // "ㄅㄤ" => "bang"
+ &pinyin_table[19], // "ㄅㄥ" => "beng"
+ &pinyin_table[20], // "ㄅㄧ" => "bi"
+ &pinyin_table[24], // "ㄅㄧㄝ" => "bie"
+ &pinyin_table[23], // "ㄅㄧㄠ" => "biao"
+ &pinyin_table[21], // "ㄅㄧㄢ" => "bian"
+ &pinyin_table[27], // "ㄅㄧㄣ" => "bin"
+ &pinyin_table[22], // "ㄅㄧㄤ" => "biang"
+ &pinyin_table[28], // "ㄅㄧㄥ" => "bing"
+ &pinyin_table[30], // "ㄅㄨ" => "bu"
+ &pinyin_table[403], // "ㄆ" => "p"
+ &pinyin_table[404], // "ㄆㄚ" => "pa"
+ &pinyin_table[425], // "ㄆㄛ" => "po"
+ &pinyin_table[406], // "ㄆㄞ" => "pai"
+ &pinyin_table[412], // "ㄆㄟ" => "pei"
+ &pinyin_table[410], // "ㄆㄠ" => "pao"
+ &pinyin_table[426], // "ㄆㄡ" => "pou"
+ &pinyin_table[408], // "ㄆㄢ" => "pan"
+ &pinyin_table[414], // "ㄆㄣ" => "pen"
+ &pinyin_table[409], // "ㄆㄤ" => "pang"
+ &pinyin_table[415], // "ㄆㄥ" => "peng"
+ &pinyin_table[416], // "ㄆㄧ" => "pi"
+ &pinyin_table[420], // "ㄆㄧㄝ" => "pie"
+ &pinyin_table[419], // "ㄆㄧㄠ" => "piao"
+ &pinyin_table[417], // "ㄆㄧㄢ" => "pian"
+ &pinyin_table[423], // "ㄆㄧㄣ" => "pin"
+ &pinyin_table[418], // "ㄆㄧㄤ" => "piang"
+ &pinyin_table[424], // "ㄆㄧㄥ" => "ping"
+ &pinyin_table[427], // "ㄆㄨ" => "pu"
+ &pinyin_table[330], // "ㄇ" => "m"
+ &pinyin_table[331], // "ㄇㄚ" => "ma"
+ &pinyin_table[355], // "ㄇㄛ" => "mo"
+ &pinyin_table[338], // "ㄇㄜ" => "me"
+ &pinyin_table[333], // "ㄇㄞ" => "mai"
+ &pinyin_table[340], // "ㄇㄟ" => "mei"
+ &pinyin_table[337], // "ㄇㄠ" => "mao"
+ &pinyin_table[356], // "ㄇㄡ" => "mou"
+ &pinyin_table[335], // "ㄇㄢ" => "man"
+ &pinyin_table[342], // "ㄇㄣ" => "men"
+ &pinyin_table[336], // "ㄇㄤ" => "mang"
+ &pinyin_table[343], // "ㄇㄥ" => "meng"
+ &pinyin_table[344], // "ㄇㄧ" => "mi"
+ &pinyin_table[348], // "ㄇㄧㄝ" => "mie"
+ &pinyin_table[347], // "ㄇㄧㄠ" => "miao"
+ &pinyin_table[354], // "ㄇㄧㄡ" => "miu"
+ &pinyin_table[345], // "ㄇㄧㄢ" => "mian"
+ &pinyin_table[351], // "ㄇㄧㄣ" => "min"
+ &pinyin_table[346], // "ㄇㄧㄤ" => "miang"
+ &pinyin_table[352], // "ㄇㄧㄥ" => "ming"
+ &pinyin_table[357], // "ㄇㄨ" => "mu"
+ &pinyin_table[132], // "ㄈ" => "f"
+ &pinyin_table[133], // "ㄈㄚ" => "fa"
+ &pinyin_table[146], // "ㄈㄛ" => "fo"
+ &pinyin_table[140], // "ㄈㄜ" => "fe"
+ &pinyin_table[135], // "ㄈㄞ" => "fai"
+ &pinyin_table[142], // "ㄈㄟ" => "fei"
+ &pinyin_table[139], // "ㄈㄠ" => "fao"
+ &pinyin_table[149], // "ㄈㄡ" => "fou"
+ &pinyin_table[137], // "ㄈㄢ" => "fan"
+ &pinyin_table[144], // "ㄈㄣ" => "fen"
+ &pinyin_table[138], // "ㄈㄤ" => "fang"
+ &pinyin_table[145], // "ㄈㄥ" => "feng"
+ &pinyin_table[150], // "ㄈㄨ" => "fu"
+ &pinyin_table[151], // "ㄈㄨㄚ" => "fua"
+ &pinyin_table[159], // "ㄈㄨㄛ" => "fuo"
+ &pinyin_table[152], // "ㄈㄨㄞ" => "fuai"
+ &pinyin_table[157], // "ㄈㄨㄟ" => "fui"
+ &pinyin_table[153], // "ㄈㄨㄢ" => "fuan"
+ &pinyin_table[158], // "ㄈㄨㄣ" => "fun"
+ &pinyin_table[154], // "ㄈㄨㄤ" => "fuang"
+ &pinyin_table[148], // "ㄈㄨㄥ" => "fong"
+ &pinyin_table[89], // "ㄉ" => "d"
+ &pinyin_table[90], // "ㄉㄚ" => "da"
+ &pinyin_table[97], // "ㄉㄜ" => "de"
+ &pinyin_table[92], // "ㄉㄞ" => "dai"
+ &pinyin_table[99], // "ㄉㄟ" => "dei"
+ &pinyin_table[96], // "ㄉㄠ" => "dao"
+ &pinyin_table[119], // "ㄉㄡ" => "dou"
+ &pinyin_table[94], // "ㄉㄢ" => "dan"
+ &pinyin_table[101], // "ㄉㄣ" => "den"
+ &pinyin_table[95], // "ㄉㄤ" => "dang"
+ &pinyin_table[102], // "ㄉㄥ" => "deng"
+ &pinyin_table[103], // "ㄉㄧ" => "di"
+ &pinyin_table[104], // "ㄉㄧㄚ" => "dia"
+ &pinyin_table[108], // "ㄉㄧㄝ" => "die"
+ &pinyin_table[107], // "ㄉㄧㄠ" => "diao"
+ &pinyin_table[114], // "ㄉㄧㄡ" => "diu"
+ &pinyin_table[105], // "ㄉㄧㄢ" => "dian"
+ &pinyin_table[111], // "ㄉㄧㄣ" => "din"
+ &pinyin_table[106], // "ㄉㄧㄤ" => "diang"
+ &pinyin_table[112], // "ㄉㄧㄥ" => "ding"
+ &pinyin_table[120], // "ㄉㄨ" => "du"
+ &pinyin_table[127], // "ㄉㄨㄛ" => "duo"
+ &pinyin_table[125], // "ㄉㄨㄟ" => "dui"
+ &pinyin_table[121], // "ㄉㄨㄢ" => "duan"
+ &pinyin_table[126], // "ㄉㄨㄣ" => "dun"
+ &pinyin_table[122], // "ㄉㄨㄤ" => "duang"
+ &pinyin_table[118], // "ㄉㄨㄥ" => "dong"
+ &pinyin_table[560], // "ㄊ" => "t"
+ &pinyin_table[561], // "ㄊㄚ" => "ta"
+ &pinyin_table[568], // "ㄊㄜ" => "te"
+ &pinyin_table[563], // "ㄊㄞ" => "tai"
+ &pinyin_table[567], // "ㄊㄠ" => "tao"
+ &pinyin_table[586], // "ㄊㄡ" => "tou"
+ &pinyin_table[565], // "ㄊㄢ" => "tan"
+ &pinyin_table[571], // "ㄊㄣ" => "ten"
+ &pinyin_table[566], // "ㄊㄤ" => "tang"
+ &pinyin_table[572], // "ㄊㄥ" => "teng"
+ &pinyin_table[573], // "ㄊㄧ" => "ti"
+ &pinyin_table[577], // "ㄊㄧㄝ" => "tie"
+ &pinyin_table[576], // "ㄊㄧㄠ" => "tiao"
+ &pinyin_table[574], // "ㄊㄧㄢ" => "tian"
+ &pinyin_table[580], // "ㄊㄧㄣ" => "tin"
+ &pinyin_table[575], // "ㄊㄧㄤ" => "tiang"
+ &pinyin_table[581], // "ㄊㄧㄥ" => "ting"
+ &pinyin_table[587], // "ㄊㄨ" => "tu"
+ &pinyin_table[594], // "ㄊㄨㄛ" => "tuo"
+ &pinyin_table[592], // "ㄊㄨㄟ" => "tui"
+ &pinyin_table[588], // "ㄊㄨㄢ" => "tuan"
+ &pinyin_table[593], // "ㄊㄨㄣ" => "tun"
+ &pinyin_table[589], // "ㄊㄨㄤ" => "tuang"
+ &pinyin_table[585], // "ㄊㄨㄥ" => "tong"
+ &pinyin_table[358], // "ㄋ" => "n"
+ &pinyin_table[359], // "ㄋㄚ" => "na"
+ &pinyin_table[386], // "ㄋㄛ" => "no"
+ &pinyin_table[366], // "ㄋㄜ" => "ne"
+ &pinyin_table[361], // "ㄋㄞ" => "nai"
+ &pinyin_table[368], // "ㄋㄟ" => "nei"
+ &pinyin_table[365], // "ㄋㄠ" => "nao"
+ &pinyin_table[391], // "ㄋㄡ" => "nou"
+ &pinyin_table[363], // "ㄋㄢ" => "nan"
+ &pinyin_table[370], // "ㄋㄣ" => "nen"
+ &pinyin_table[364], // "ㄋㄤ" => "nang"
+ &pinyin_table[371], // "ㄋㄥ" => "neng"
+ &pinyin_table[372], // "ㄋㄧ" => "ni"
+ &pinyin_table[373], // "ㄋㄧㄚ" => "nia"
+ &pinyin_table[379], // "ㄋㄧㄝ" => "nie"
+ &pinyin_table[378], // "ㄋㄧㄠ" => "niao"
+ &pinyin_table[385], // "ㄋㄧㄡ" => "niu"
+ &pinyin_table[376], // "ㄋㄧㄢ" => "nian"
+ &pinyin_table[382], // "ㄋㄧㄣ" => "nin"
+ &pinyin_table[377], // "ㄋㄧㄤ" => "niang"
+ &pinyin_table[383], // "ㄋㄧㄥ" => "ning"
+ &pinyin_table[392], // "ㄋㄨ" => "nu"
+ &pinyin_table[398], // "ㄋㄨㄛ" => "nuo"
+ &pinyin_table[393], // "ㄋㄨㄢ" => "nuan"
+ &pinyin_table[397], // "ㄋㄨㄣ" => "nun"
+ &pinyin_table[394], // "ㄋㄨㄤ" => "nuang"
+ &pinyin_table[390], // "ㄋㄨㄥ" => "nong"
+ &pinyin_table[399], // "ㄋㄩ" => "nv"
+ &pinyin_table[400], // "ㄋㄩㄝ" => "nve"
+ &pinyin_table[285], // "ㄌ" => "l"
+ &pinyin_table[286], // "ㄌㄚ" => "la"
+ &pinyin_table[313], // "ㄌㄛ" => "lo"
+ &pinyin_table[293], // "ㄌㄜ" => "le"
+ &pinyin_table[288], // "ㄌㄞ" => "lai"
+ &pinyin_table[295], // "ㄌㄟ" => "lei"
+ &pinyin_table[292], // "ㄌㄠ" => "lao"
+ &pinyin_table[318], // "ㄌㄡ" => "lou"
+ &pinyin_table[290], // "ㄌㄢ" => "lan"
+ &pinyin_table[297], // "ㄌㄣ" => "len"
+ &pinyin_table[291], // "ㄌㄤ" => "lang"
+ &pinyin_table[298], // "ㄌㄥ" => "leng"
+ &pinyin_table[299], // "ㄌㄧ" => "li"
+ &pinyin_table[300], // "ㄌㄧㄚ" => "lia"
+ &pinyin_table[306], // "ㄌㄧㄝ" => "lie"
+ &pinyin_table[305], // "ㄌㄧㄠ" => "liao"
+ &pinyin_table[312], // "ㄌㄧㄡ" => "liu"
+ &pinyin_table[303], // "ㄌㄧㄢ" => "lian"
+ &pinyin_table[309], // "ㄌㄧㄣ" => "lin"
+ &pinyin_table[304], // "ㄌㄧㄤ" => "liang"
+ &pinyin_table[310], // "ㄌㄧㄥ" => "ling"
+ &pinyin_table[319], // "ㄌㄨ" => "lu"
+ &pinyin_table[327], // "ㄌㄨㄛ" => "luo"
+ &pinyin_table[325], // "ㄌㄨㄟ" => "lui"
+ &pinyin_table[320], // "ㄌㄨㄢ" => "luan"
+ &pinyin_table[326], // "ㄌㄨㄣ" => "lun"
+ &pinyin_table[321], // "ㄌㄨㄤ" => "luang"
+ &pinyin_table[317], // "ㄌㄨㄥ" => "long"
+ &pinyin_table[328], // "ㄌㄩ" => "lv"
+ &pinyin_table[329], // "ㄌㄩㄝ" => "lve"
+ &pinyin_table[160], // "ㄍ" => "g"
+ &pinyin_table[161], // "ㄍㄚ" => "ga"
+ &pinyin_table[168], // "ㄍㄜ" => "ge"
+ &pinyin_table[163], // "ㄍㄞ" => "gai"
+ &pinyin_table[170], // "ㄍㄟ" => "gei"
+ &pinyin_table[167], // "ㄍㄠ" => "gao"
+ &pinyin_table[178], // "ㄍㄡ" => "gou"
+ &pinyin_table[165], // "ㄍㄢ" => "gan"
+ &pinyin_table[172], // "ㄍㄣ" => "gen"
+ &pinyin_table[166], // "ㄍㄤ" => "gang"
+ &pinyin_table[173], // "ㄍㄥ" => "geng"
+ &pinyin_table[179], // "ㄍㄨ" => "gu"
+ &pinyin_table[180], // "ㄍㄨㄚ" => "gua"
+ &pinyin_table[190], // "ㄍㄨㄛ" => "guo"
+ &pinyin_table[182], // "ㄍㄨㄞ" => "guai"
+ &pinyin_table[188], // "ㄍㄨㄟ" => "gui"
+ &pinyin_table[184], // "ㄍㄨㄢ" => "guan"
+ &pinyin_table[189], // "ㄍㄨㄣ" => "gun"
+ &pinyin_table[185], // "ㄍㄨㄤ" => "guang"
+ &pinyin_table[177], // "ㄍㄨㄥ" => "gong"
+ &pinyin_table[254], // "ㄎ" => "k"
+ &pinyin_table[255], // "ㄎㄚ" => "ka"
+ &pinyin_table[262], // "ㄎㄜ" => "ke"
+ &pinyin_table[257], // "ㄎㄞ" => "kai"
+ &pinyin_table[264], // "ㄎㄟ" => "kei"
+ &pinyin_table[261], // "ㄎㄠ" => "kao"
+ &pinyin_table[272], // "ㄎㄡ" => "kou"
+ &pinyin_table[259], // "ㄎㄢ" => "kan"
+ &pinyin_table[266], // "ㄎㄣ" => "ken"
+ &pinyin_table[260], // "ㄎㄤ" => "kang"
+ &pinyin_table[267], // "ㄎㄥ" => "keng"
+ &pinyin_table[273], // "ㄎㄨ" => "ku"
+ &pinyin_table[274], // "ㄎㄨㄚ" => "kua"
+ &pinyin_table[284], // "ㄎㄨㄛ" => "kuo"
+ &pinyin_table[276], // "ㄎㄨㄞ" => "kuai"
+ &pinyin_table[282], // "ㄎㄨㄟ" => "kui"
+ &pinyin_table[278], // "ㄎㄨㄢ" => "kuan"
+ &pinyin_table[283], // "ㄎㄨㄣ" => "kun"
+ &pinyin_table[279], // "ㄎㄨㄤ" => "kuang"
+ &pinyin_table[271], // "ㄎㄨㄥ" => "kong"
+ &pinyin_table[191], // "ㄏ" => "h"
+ &pinyin_table[192], // "ㄏㄚ" => "ha"
+ &pinyin_table[205], // "ㄏㄛ" => "ho"
+ &pinyin_table[199], // "ㄏㄜ" => "he"
+ &pinyin_table[194], // "ㄏㄞ" => "hai"
+ &pinyin_table[201], // "ㄏㄟ" => "hei"
+ &pinyin_table[198], // "ㄏㄠ" => "hao"
+ &pinyin_table[210], // "ㄏㄡ" => "hou"
+ &pinyin_table[196], // "ㄏㄢ" => "han"
+ &pinyin_table[203], // "ㄏㄣ" => "hen"
+ &pinyin_table[197], // "ㄏㄤ" => "hang"
+ &pinyin_table[204], // "ㄏㄥ" => "heng"
+ &pinyin_table[211], // "ㄏㄨ" => "hu"
+ &pinyin_table[212], // "ㄏㄨㄚ" => "hua"
+ &pinyin_table[222], // "ㄏㄨㄛ" => "huo"
+ &pinyin_table[214], // "ㄏㄨㄞ" => "huai"
+ &pinyin_table[220], // "ㄏㄨㄟ" => "hui"
+ &pinyin_table[216], // "ㄏㄨㄢ" => "huan"
+ &pinyin_table[221], // "ㄏㄨㄣ" => "hun"
+ &pinyin_table[217], // "ㄏㄨㄤ" => "huang"
+ &pinyin_table[209], // "ㄏㄨㄥ" => "hong"
+ &pinyin_table[223], // "ㄐ" => "j"
+ &pinyin_table[224], // "ㄐㄧ" => "ji"
+ &pinyin_table[225], // "ㄐㄧㄚ" => "jia"
+ &pinyin_table[231], // "ㄐㄧㄝ" => "jie"
+ &pinyin_table[230], // "ㄐㄧㄠ" => "jiao"
+ &pinyin_table[241], // "ㄐㄧㄡ" => "jiu"
+ &pinyin_table[228], // "ㄐㄧㄢ" => "jian"
+ &pinyin_table[234], // "ㄐㄧㄣ" => "jin"
+ &pinyin_table[229], // "ㄐㄧㄤ" => "jiang"
+ &pinyin_table[235], // "ㄐㄧㄥ" => "jing"
+ &pinyin_table[242], // "ㄐㄩ" => "ju"
+ &pinyin_table[245], // "ㄐㄩㄝ" => "jue"
+ &pinyin_table[243], // "ㄐㄩㄢ" => "juan"
+ &pinyin_table[247], // "ㄐㄩㄣ" => "jun"
+ &pinyin_table[244], // "ㄐㄩㄤ" => "juang"
+ &pinyin_table[239], // "ㄐㄩㄥ" => "jiong"
+ &pinyin_table[428], // "ㄑ" => "q"
+ &pinyin_table[429], // "ㄑㄧ" => "qi"
+ &pinyin_table[430], // "ㄑㄧㄚ" => "qia"
+ &pinyin_table[436], // "ㄑㄧㄝ" => "qie"
+ &pinyin_table[435], // "ㄑㄧㄠ" => "qiao"
+ &pinyin_table[446], // "ㄑㄧㄡ" => "qiu"
+ &pinyin_table[433], // "ㄑㄧㄢ" => "qian"
+ &pinyin_table[439], // "ㄑㄧㄣ" => "qin"
+ &pinyin_table[434], // "ㄑㄧㄤ" => "qiang"
+ &pinyin_table[440], // "ㄑㄧㄥ" => "qing"
+ &pinyin_table[447], // "ㄑㄩ" => "qu"
+ &pinyin_table[450], // "ㄑㄩㄝ" => "que"
+ &pinyin_table[448], // "ㄑㄩㄢ" => "quan"
+ &pinyin_table[452], // "ㄑㄩㄣ" => "qun"
+ &pinyin_table[449], // "ㄑㄩㄤ" => "quang"
+ &pinyin_table[444], // "ㄑㄩㄥ" => "qiong"
+ &pinyin_table[609], // "ㄒ" => "x"
+ &pinyin_table[610], // "ㄒㄧ" => "xi"
+ &pinyin_table[611], // "ㄒㄧㄚ" => "xia"
+ &pinyin_table[617], // "ㄒㄧㄝ" => "xie"
+ &pinyin_table[616], // "ㄒㄧㄠ" => "xiao"
+ &pinyin_table[627], // "ㄒㄧㄡ" => "xiu"
+ &pinyin_table[614], // "ㄒㄧㄢ" => "xian"
+ &pinyin_table[620], // "ㄒㄧㄣ" => "xin"
+ &pinyin_table[615], // "ㄒㄧㄤ" => "xiang"
+ &pinyin_table[621], // "ㄒㄧㄥ" => "xing"
+ &pinyin_table[628], // "ㄒㄩ" => "xu"
+ &pinyin_table[631], // "ㄒㄩㄝ" => "xue"
+ &pinyin_table[629], // "ㄒㄩㄢ" => "xuan"
+ &pinyin_table[633], // "ㄒㄩㄣ" => "xun"
+ &pinyin_table[630], // "ㄒㄩㄤ" => "xuang"
+ &pinyin_table[625], // "ㄒㄩㄥ" => "xiong"
+ &pinyin_table[699], // "ㄓ" => "zhi"
+ &pinyin_table[686], // "ㄓㄚ" => "zha"
+ &pinyin_table[693], // "ㄓㄜ" => "zhe"
+ &pinyin_table[688], // "ㄓㄞ" => "zhai"
+ &pinyin_table[695], // "ㄓㄟ" => "zhei"
+ &pinyin_table[692], // "ㄓㄠ" => "zhao"
+ &pinyin_table[704], // "ㄓㄡ" => "zhou"
+ &pinyin_table[690], // "ㄓㄢ" => "zhan"
+ &pinyin_table[697], // "ㄓㄣ" => "zhen"
+ &pinyin_table[691], // "ㄓㄤ" => "zhang"
+ &pinyin_table[698], // "ㄓㄥ" => "zheng"
+ &pinyin_table[705], // "ㄓㄨ" => "zhu"
+ &pinyin_table[706], // "ㄓㄨㄚ" => "zhua"
+ &pinyin_table[716], // "ㄓㄨㄛ" => "zhuo"
+ &pinyin_table[708], // "ㄓㄨㄞ" => "zhuai"
+ &pinyin_table[714], // "ㄓㄨㄟ" => "zhui"
+ &pinyin_table[710], // "ㄓㄨㄢ" => "zhuan"
+ &pinyin_table[715], // "ㄓㄨㄣ" => "zhun"
+ &pinyin_table[711], // "ㄓㄨㄤ" => "zhuang"
+ &pinyin_table[703], // "ㄓㄨㄥ" => "zhong"
+ &pinyin_table[57], // "ㄔ" => "chi"
+ &pinyin_table[45], // "ㄔㄚ" => "cha"
+ &pinyin_table[52], // "ㄔㄜ" => "che"
+ &pinyin_table[47], // "ㄔㄞ" => "chai"
+ &pinyin_table[51], // "ㄔㄠ" => "chao"
+ &pinyin_table[62], // "ㄔㄡ" => "chou"
+ &pinyin_table[49], // "ㄔㄢ" => "chan"
+ &pinyin_table[55], // "ㄔㄣ" => "chen"
+ &pinyin_table[50], // "ㄔㄤ" => "chang"
+ &pinyin_table[56], // "ㄔㄥ" => "cheng"
+ &pinyin_table[63], // "ㄔㄨ" => "chu"
+ &pinyin_table[73], // "ㄔㄨㄛ" => "chuo"
+ &pinyin_table[65], // "ㄔㄨㄞ" => "chuai"
+ &pinyin_table[71], // "ㄔㄨㄟ" => "chui"
+ &pinyin_table[67], // "ㄔㄨㄢ" => "chuan"
+ &pinyin_table[72], // "ㄔㄨㄣ" => "chun"
+ &pinyin_table[68], // "ㄔㄨㄤ" => "chuang"
+ &pinyin_table[61], // "ㄔㄨㄥ" => "chong"
+ &pinyin_table[528], // "ㄕ" => "shi"
+ &pinyin_table[515], // "ㄕㄚ" => "sha"
+ &pinyin_table[522], // "ㄕㄜ" => "she"
+ &pinyin_table[517], // "ㄕㄞ" => "shai"
+ &pinyin_table[524], // "ㄕㄟ" => "shei"
+ &pinyin_table[521], // "ㄕㄠ" => "shao"
+ &pinyin_table[531], // "ㄕㄡ" => "shou"
+ &pinyin_table[519], // "ㄕㄢ" => "shan"
+ &pinyin_table[526], // "ㄕㄣ" => "shen"
+ &pinyin_table[520], // "ㄕㄤ" => "shang"
+ &pinyin_table[527], // "ㄕㄥ" => "sheng"
+ &pinyin_table[532], // "ㄕㄨ" => "shu"
+ &pinyin_table[533], // "ㄕㄨㄚ" => "shua"
+ &pinyin_table[543], // "ㄕㄨㄛ" => "shuo"
+ &pinyin_table[535], // "ㄕㄨㄞ" => "shuai"
+ &pinyin_table[541], // "ㄕㄨㄟ" => "shui"
+ &pinyin_table[537], // "ㄕㄨㄢ" => "shuan"
+ &pinyin_table[542], // "ㄕㄨㄣ" => "shun"
+ &pinyin_table[538], // "ㄕㄨㄤ" => "shuang"
+ &pinyin_table[530], // "ㄕㄨㄥ" => "shong"
+ &pinyin_table[473], // "ㄖ" => "ri"
+ &pinyin_table[460], // "ㄖㄚ" => "ra"
+ &pinyin_table[483], // "ㄖㄛ" => "ro"
+ &pinyin_table[467], // "ㄖㄜ" => "re"
+ &pinyin_table[462], // "ㄖㄞ" => "rai"
+ &pinyin_table[469], // "ㄖㄟ" => "rei"
+ &pinyin_table[466], // "ㄖㄠ" => "rao"
+ &pinyin_table[488], // "ㄖㄡ" => "rou"
+ &pinyin_table[464], // "ㄖㄢ" => "ran"
+ &pinyin_table[471], // "ㄖㄣ" => "ren"
+ &pinyin_table[465], // "ㄖㄤ" => "rang"
+ &pinyin_table[472], // "ㄖㄥ" => "reng"
+ &pinyin_table[474], // "ㄖㄧㄚ" => "ria"
+ &pinyin_table[478], // "ㄖㄧㄝ" => "rie"
+ &pinyin_table[477], // "ㄖㄧㄠ" => "riao"
+ &pinyin_table[482], // "ㄖㄧㄡ" => "riu"
+ &pinyin_table[475], // "ㄖㄧㄢ" => "rian"
+ &pinyin_table[479], // "ㄖㄧㄣ" => "rin"
+ &pinyin_table[476], // "ㄖㄧㄤ" => "riang"
+ &pinyin_table[480], // "ㄖㄧㄥ" => "ring"
+ &pinyin_table[489], // "ㄖㄨ" => "ru"
+ &pinyin_table[497], // "ㄖㄨㄛ" => "ruo"
+ &pinyin_table[495], // "ㄖㄨㄟ" => "rui"
+ &pinyin_table[490], // "ㄖㄨㄢ" => "ruan"
+ &pinyin_table[496], // "ㄖㄨㄣ" => "run"
+ &pinyin_table[491], // "ㄖㄨㄤ" => "ruang"
+ &pinyin_table[487], // "ㄖㄨㄥ" => "rong"
+ &pinyin_table[498], // "ㄖㄩ" => "rv"
+ &pinyin_table[499], // "ㄖㄩㄝ" => "rve"
+ &pinyin_table[717], // "ㄗ" => "zi"
+ &pinyin_table[672], // "ㄗㄚ" => "za"
+ &pinyin_table[679], // "ㄗㄜ" => "ze"
+ &pinyin_table[674], // "ㄗㄞ" => "zai"
+ &pinyin_table[681], // "ㄗㄟ" => "zei"
+ &pinyin_table[678], // "ㄗㄠ" => "zao"
+ &pinyin_table[722], // "ㄗㄡ" => "zou"
+ &pinyin_table[676], // "ㄗㄢ" => "zan"
+ &pinyin_table[683], // "ㄗㄣ" => "zen"
+ &pinyin_table[677], // "ㄗㄤ" => "zang"
+ &pinyin_table[684], // "ㄗㄥ" => "zeng"
+ &pinyin_table[723], // "ㄗㄨ" => "zu"
+ &pinyin_table[724], // "ㄗㄨㄚ" => "zua"
+ &pinyin_table[732], // "ㄗㄨㄛ" => "zuo"
+ &pinyin_table[725], // "ㄗㄨㄞ" => "zuai"
+ &pinyin_table[730], // "ㄗㄨㄟ" => "zui"
+ &pinyin_table[726], // "ㄗㄨㄢ" => "zuan"
+ &pinyin_table[731], // "ㄗㄨㄣ" => "zun"
+ &pinyin_table[727], // "ㄗㄨㄤ" => "zuang"
+ &pinyin_table[721], // "ㄗㄨㄥ" => "zong"
+ &pinyin_table[74], // "ㄘ" => "ci"
+ &pinyin_table[32], // "ㄘㄚ" => "ca"
+ &pinyin_table[39], // "ㄘㄜ" => "ce"
+ &pinyin_table[34], // "ㄘㄞ" => "cai"
+ &pinyin_table[38], // "ㄘㄠ" => "cao"
+ &pinyin_table[79], // "ㄘㄡ" => "cou"
+ &pinyin_table[36], // "ㄘㄢ" => "can"
+ &pinyin_table[42], // "ㄘㄣ" => "cen"
+ &pinyin_table[37], // "ㄘㄤ" => "cang"
+ &pinyin_table[43], // "ㄘㄥ" => "ceng"
+ &pinyin_table[80], // "ㄘㄨ" => "cu"
+ &pinyin_table[88], // "ㄘㄨㄛ" => "cuo"
+ &pinyin_table[81], // "ㄘㄨㄞ" => "cuai"
+ &pinyin_table[86], // "ㄘㄨㄟ" => "cui"
+ &pinyin_table[82], // "ㄘㄨㄢ" => "cuan"
+ &pinyin_table[87], // "ㄘㄨㄣ" => "cun"
+ &pinyin_table[83], // "ㄘㄨㄤ" => "cuang"
+ &pinyin_table[78], // "ㄘㄨㄥ" => "cong"
+ &pinyin_table[544], // "ㄙ" => "si"
+ &pinyin_table[501], // "ㄙㄚ" => "sa"
+ &pinyin_table[508], // "ㄙㄜ" => "se"
+ &pinyin_table[503], // "ㄙㄞ" => "sai"
+ &pinyin_table[510], // "ㄙㄟ" => "sei"
+ &pinyin_table[507], // "ㄙㄠ" => "sao"
+ &pinyin_table[549], // "ㄙㄡ" => "sou"
+ &pinyin_table[505], // "ㄙㄢ" => "san"
+ &pinyin_table[512], // "ㄙㄣ" => "sen"
+ &pinyin_table[506], // "ㄙㄤ" => "sang"
+ &pinyin_table[513], // "ㄙㄥ" => "seng"
+ &pinyin_table[550], // "ㄙㄨ" => "su"
+ &pinyin_table[551], // "ㄙㄨㄚ" => "sua"
+ &pinyin_table[559], // "ㄙㄨㄛ" => "suo"
+ &pinyin_table[552], // "ㄙㄨㄞ" => "suai"
+ &pinyin_table[557], // "ㄙㄨㄟ" => "sui"
+ &pinyin_table[553], // "ㄙㄨㄢ" => "suan"
+ &pinyin_table[558], // "ㄙㄨㄣ" => "sun"
+ &pinyin_table[554], // "ㄙㄨㄤ" => "suang"
+ &pinyin_table[548], // "ㄙㄨㄥ" => "song"
+ &pinyin_table[0], // "ㄚ" => "a"
+ &pinyin_table[401], // "ㄛ" => "o"
+ &pinyin_table[128], // "ㄜ" => "e"
+ &pinyin_table[2], // "ㄞ" => "ai"
+ &pinyin_table[129], // "ㄟ" => "ei"
+ &pinyin_table[6], // "ㄠ" => "ao"
+ &pinyin_table[402], // "ㄡ" => "ou"
+ &pinyin_table[4], // "ㄢ" => "an"
+ &pinyin_table[130], // "ㄣ" => "en"
+ &pinyin_table[5], // "ㄤ" => "ang"
+ &pinyin_table[131], // "ㄦ" => "er"
+ &pinyin_table[648], // "ㄧ" => "yi"
+ &pinyin_table[641], // "ㄧㄚ" => "ya"
+ &pinyin_table[653], // "ㄧㄛ" => "yo"
+ &pinyin_table[647], // "ㄧㄝ" => "ye"
+ &pinyin_table[646], // "ㄧㄠ" => "yao"
+ &pinyin_table[658], // "ㄧㄡ" => "you"
+ &pinyin_table[644], // "ㄧㄢ" => "yan"
+ &pinyin_table[651], // "ㄧㄣ" => "yin"
+ &pinyin_table[645], // "ㄧㄤ" => "yang"
+ &pinyin_table[652], // "ㄧㄥ" => "ying"
+ &pinyin_table[661], // "ㄧㄩㄤ" => "yuang"
+ &pinyin_table[608], // "ㄨ" => "wu"
+ &pinyin_table[596], // "ㄨㄚ" => "wa"
+ &pinyin_table[607], // "ㄨㄛ" => "wo"
+ &pinyin_table[598], // "ㄨㄞ" => "wai"
+ &pinyin_table[603], // "ㄨㄟ" => "wei"
+ &pinyin_table[600], // "ㄨㄢ" => "wan"
+ &pinyin_table[605], // "ㄨㄣ" => "wen"
+ &pinyin_table[601], // "ㄨㄤ" => "wang"
+ &pinyin_table[606], // "ㄨㄥ" => "weng"
+ &pinyin_table[659], // "ㄩ" => "yu"
+ &pinyin_table[662], // "ㄩㄝ" => "yue"
+ &pinyin_table[660], // "ㄩㄢ" => "yuan"
+ &pinyin_table[664], // "ㄩㄣ" => "yun"
+ &pinyin_table[657], // "ㄩㄥ" => "yong"
+};
+
+static const Pinyin *special_table[][4] = {
+ { &pinyin_table[4], &pinyin_table[0], &pinyin_table[0], &pinyin_table[359], }, /* an a => a na */
+ { &pinyin_table[4], &pinyin_table[2], &pinyin_table[0], &pinyin_table[361], }, /* an ai => a nai */
+ { &pinyin_table[4], &pinyin_table[6], &pinyin_table[0], &pinyin_table[365], }, /* an ao => a nao */
+ { &pinyin_table[4], &pinyin_table[128], &pinyin_table[0], &pinyin_table[366], }, /* an e => a ne */
+ { &pinyin_table[4], &pinyin_table[129], &pinyin_table[0], &pinyin_table[368], }, /* an ei => a nei */
+ { &pinyin_table[5], &pinyin_table[0], &pinyin_table[4], &pinyin_table[161], }, /* ang a => an ga */
+ { &pinyin_table[5], &pinyin_table[2], &pinyin_table[4], &pinyin_table[163], }, /* ang ai => an gai */
+ { &pinyin_table[5], &pinyin_table[4], &pinyin_table[4], &pinyin_table[165], }, /* ang an => an gan */
+ { &pinyin_table[5], &pinyin_table[5], &pinyin_table[4], &pinyin_table[166], }, /* ang ang => an gang */
+ { &pinyin_table[5], &pinyin_table[6], &pinyin_table[4], &pinyin_table[167], }, /* ang ao => an gao */
+ { &pinyin_table[5], &pinyin_table[128], &pinyin_table[4], &pinyin_table[168], }, /* ang e => an ge */
+ { &pinyin_table[5], &pinyin_table[129], &pinyin_table[4], &pinyin_table[170], }, /* ang ei => an gei */
+ { &pinyin_table[5], &pinyin_table[130], &pinyin_table[4], &pinyin_table[172], }, /* ang en => an gen */
+ { &pinyin_table[5], &pinyin_table[402], &pinyin_table[4], &pinyin_table[178], }, /* ang ou => an gou */
+ { &pinyin_table[12], &pinyin_table[0], &pinyin_table[8], &pinyin_table[359], }, /* ban a => ba na */
+ { &pinyin_table[12], &pinyin_table[5], &pinyin_table[8], &pinyin_table[364], }, /* ban ang => ba nang */
+ { &pinyin_table[12], &pinyin_table[6], &pinyin_table[8], &pinyin_table[365], }, /* ban ao => ba nao */
+ { &pinyin_table[12], &pinyin_table[128], &pinyin_table[8], &pinyin_table[366], }, /* ban e => ba ne */
+ { &pinyin_table[12], &pinyin_table[129], &pinyin_table[8], &pinyin_table[368], }, /* ban ei => ba nei */
+ { &pinyin_table[13], &pinyin_table[2], &pinyin_table[12], &pinyin_table[163], }, /* bang ai => ban gai */
+ { &pinyin_table[13], &pinyin_table[5], &pinyin_table[12], &pinyin_table[166], }, /* bang ang => ban gang */
+ { &pinyin_table[13], &pinyin_table[6], &pinyin_table[12], &pinyin_table[167], }, /* bang ao => ban gao */
+ { &pinyin_table[13], &pinyin_table[128], &pinyin_table[12], &pinyin_table[168], }, /* bang e => ban ge */
+ { &pinyin_table[13], &pinyin_table[129], &pinyin_table[12], &pinyin_table[170], }, /* bang ei => ban gei */
+ { &pinyin_table[13], &pinyin_table[130], &pinyin_table[12], &pinyin_table[172], }, /* bang en => ban gen */
+ { &pinyin_table[19], &pinyin_table[0], &pinyin_table[18], &pinyin_table[161], }, /* beng a => ben ga */
+ { &pinyin_table[19], &pinyin_table[2], &pinyin_table[18], &pinyin_table[163], }, /* beng ai => ben gai */
+ { &pinyin_table[19], &pinyin_table[4], &pinyin_table[18], &pinyin_table[165], }, /* beng an => ben gan */
+ { &pinyin_table[19], &pinyin_table[5], &pinyin_table[18], &pinyin_table[166], }, /* beng ang => ben gang */
+ { &pinyin_table[19], &pinyin_table[6], &pinyin_table[18], &pinyin_table[167], }, /* beng ao => ben gao */
+ { &pinyin_table[19], &pinyin_table[128], &pinyin_table[18], &pinyin_table[168], }, /* beng e => ben ge */
+ { &pinyin_table[19], &pinyin_table[129], &pinyin_table[18], &pinyin_table[170], }, /* beng ei => ben gei */
+ { &pinyin_table[19], &pinyin_table[130], &pinyin_table[18], &pinyin_table[172], }, /* beng en => ben gen */
+ { &pinyin_table[19], &pinyin_table[402], &pinyin_table[18], &pinyin_table[178], }, /* beng ou => ben gou */
+ { &pinyin_table[22], &pinyin_table[0], &pinyin_table[21], &pinyin_table[161], }, /* biang a => bian ga */
+ { &pinyin_table[22], &pinyin_table[2], &pinyin_table[21], &pinyin_table[163], }, /* biang ai => bian gai */
+ { &pinyin_table[22], &pinyin_table[4], &pinyin_table[21], &pinyin_table[165], }, /* biang an => bian gan */
+ { &pinyin_table[22], &pinyin_table[5], &pinyin_table[21], &pinyin_table[166], }, /* biang ang => bian gang */
+ { &pinyin_table[22], &pinyin_table[6], &pinyin_table[21], &pinyin_table[167], }, /* biang ao => bian gao */
+ { &pinyin_table[22], &pinyin_table[128], &pinyin_table[21], &pinyin_table[168], }, /* biang e => bian ge */
+ { &pinyin_table[22], &pinyin_table[129], &pinyin_table[21], &pinyin_table[170], }, /* biang ei => bian gei */
+ { &pinyin_table[22], &pinyin_table[130], &pinyin_table[21], &pinyin_table[172], }, /* biang en => bian gen */
+ { &pinyin_table[22], &pinyin_table[402], &pinyin_table[21], &pinyin_table[178], }, /* biang ou => bian gou */
+ { &pinyin_table[24], &pinyin_table[459], &pinyin_table[20], &pinyin_table[131], }, /* bie r => bi er */
+ { &pinyin_table[27], &pinyin_table[0], &pinyin_table[20], &pinyin_table[359], }, /* bin a => bi na */
+ { &pinyin_table[27], &pinyin_table[2], &pinyin_table[20], &pinyin_table[361], }, /* bin ai => bi nai */
+ { &pinyin_table[27], &pinyin_table[4], &pinyin_table[20], &pinyin_table[363], }, /* bin an => bi nan */
+ { &pinyin_table[27], &pinyin_table[5], &pinyin_table[20], &pinyin_table[364], }, /* bin ang => bi nang */
+ { &pinyin_table[27], &pinyin_table[6], &pinyin_table[20], &pinyin_table[365], }, /* bin ao => bi nao */
+ { &pinyin_table[27], &pinyin_table[128], &pinyin_table[20], &pinyin_table[366], }, /* bin e => bi ne */
+ { &pinyin_table[27], &pinyin_table[129], &pinyin_table[20], &pinyin_table[368], }, /* bin ei => bi nei */
+ { &pinyin_table[27], &pinyin_table[130], &pinyin_table[20], &pinyin_table[370], }, /* bin en => bi nen */
+ { &pinyin_table[28], &pinyin_table[128], &pinyin_table[27], &pinyin_table[168], }, /* bing e => bin ge */
+ { &pinyin_table[28], &pinyin_table[129], &pinyin_table[27], &pinyin_table[170], }, /* bing ei => bin gei */
+ { &pinyin_table[36], &pinyin_table[129], &pinyin_table[32], &pinyin_table[368], }, /* can ei => ca nei */
+ { &pinyin_table[37], &pinyin_table[4], &pinyin_table[36], &pinyin_table[165], }, /* cang an => can gan */
+ { &pinyin_table[37], &pinyin_table[5], &pinyin_table[36], &pinyin_table[166], }, /* cang ang => can gang */
+ { &pinyin_table[37], &pinyin_table[128], &pinyin_table[36], &pinyin_table[168], }, /* cang e => can ge */
+ { &pinyin_table[37], &pinyin_table[129], &pinyin_table[36], &pinyin_table[170], }, /* cang ei => can gei */
+ { &pinyin_table[37], &pinyin_table[130], &pinyin_table[36], &pinyin_table[172], }, /* cang en => can gen */
+ { &pinyin_table[37], &pinyin_table[402], &pinyin_table[36], &pinyin_table[178], }, /* cang ou => can gou */
+ { &pinyin_table[42], &pinyin_table[0], &pinyin_table[39], &pinyin_table[359], }, /* cen a => ce na */
+ { &pinyin_table[42], &pinyin_table[2], &pinyin_table[39], &pinyin_table[361], }, /* cen ai => ce nai */
+ { &pinyin_table[42], &pinyin_table[4], &pinyin_table[39], &pinyin_table[363], }, /* cen an => ce nan */
+ { &pinyin_table[42], &pinyin_table[5], &pinyin_table[39], &pinyin_table[364], }, /* cen ang => ce nang */
+ { &pinyin_table[42], &pinyin_table[6], &pinyin_table[39], &pinyin_table[365], }, /* cen ao => ce nao */
+ { &pinyin_table[42], &pinyin_table[128], &pinyin_table[39], &pinyin_table[366], }, /* cen e => ce ne */
+ { &pinyin_table[42], &pinyin_table[129], &pinyin_table[39], &pinyin_table[368], }, /* cen ei => ce nei */
+ { &pinyin_table[42], &pinyin_table[130], &pinyin_table[39], &pinyin_table[370], }, /* cen en => ce nen */
+ { &pinyin_table[43], &pinyin_table[129], &pinyin_table[42], &pinyin_table[170], }, /* ceng ei => cen gei */
+ { &pinyin_table[49], &pinyin_table[0], &pinyin_table[45], &pinyin_table[359], }, /* chan a => cha na */
+ { &pinyin_table[49], &pinyin_table[6], &pinyin_table[45], &pinyin_table[365], }, /* chan ao => cha nao */
+ { &pinyin_table[49], &pinyin_table[128], &pinyin_table[45], &pinyin_table[366], }, /* chan e => cha ne */
+ { &pinyin_table[49], &pinyin_table[129], &pinyin_table[45], &pinyin_table[368], }, /* chan ei => cha nei */
+ { &pinyin_table[50], &pinyin_table[5], &pinyin_table[49], &pinyin_table[166], }, /* chang ang => chan gang */
+ { &pinyin_table[50], &pinyin_table[6], &pinyin_table[49], &pinyin_table[167], }, /* chang ao => chan gao */
+ { &pinyin_table[50], &pinyin_table[129], &pinyin_table[49], &pinyin_table[170], }, /* chang ei => chan gei */
+ { &pinyin_table[50], &pinyin_table[130], &pinyin_table[49], &pinyin_table[172], }, /* chang en => chan gen */
+ { &pinyin_table[50], &pinyin_table[402], &pinyin_table[49], &pinyin_table[178], }, /* chang ou => chan gou */
+ { &pinyin_table[55], &pinyin_table[0], &pinyin_table[52], &pinyin_table[359], }, /* chen a => che na */
+ { &pinyin_table[55], &pinyin_table[4], &pinyin_table[52], &pinyin_table[363], }, /* chen an => che nan */
+ { &pinyin_table[55], &pinyin_table[5], &pinyin_table[52], &pinyin_table[364], }, /* chen ang => che nang */
+ { &pinyin_table[55], &pinyin_table[6], &pinyin_table[52], &pinyin_table[365], }, /* chen ao => che nao */
+ { &pinyin_table[55], &pinyin_table[128], &pinyin_table[52], &pinyin_table[366], }, /* chen e => che ne */
+ { &pinyin_table[55], &pinyin_table[129], &pinyin_table[52], &pinyin_table[368], }, /* chen ei => che nei */
+ { &pinyin_table[56], &pinyin_table[5], &pinyin_table[55], &pinyin_table[166], }, /* cheng ang => chen gang */
+ { &pinyin_table[56], &pinyin_table[6], &pinyin_table[55], &pinyin_table[167], }, /* cheng ao => chen gao */
+ { &pinyin_table[56], &pinyin_table[129], &pinyin_table[55], &pinyin_table[170], }, /* cheng ei => chen gei */
+ { &pinyin_table[56], &pinyin_table[402], &pinyin_table[55], &pinyin_table[178], }, /* cheng ou => chen gou */
+ { &pinyin_table[68], &pinyin_table[4], &pinyin_table[67], &pinyin_table[165], }, /* chuang an => chuan gan */
+ { &pinyin_table[68], &pinyin_table[5], &pinyin_table[67], &pinyin_table[166], }, /* chuang ang => chuan gang */
+ { &pinyin_table[68], &pinyin_table[6], &pinyin_table[67], &pinyin_table[167], }, /* chuang ao => chuan gao */
+ { &pinyin_table[68], &pinyin_table[128], &pinyin_table[67], &pinyin_table[168], }, /* chuang e => chuan ge */
+ { &pinyin_table[68], &pinyin_table[129], &pinyin_table[67], &pinyin_table[170], }, /* chuang ei => chuan gei */
+ { &pinyin_table[68], &pinyin_table[130], &pinyin_table[67], &pinyin_table[172], }, /* chuang en => chuan gen */
+ { &pinyin_table[68], &pinyin_table[402], &pinyin_table[67], &pinyin_table[178], }, /* chuang ou => chuan gou */
+ { &pinyin_table[72], &pinyin_table[0], &pinyin_table[63], &pinyin_table[359], }, /* chun a => chu na */
+ { &pinyin_table[72], &pinyin_table[4], &pinyin_table[63], &pinyin_table[363], }, /* chun an => chu nan */
+ { &pinyin_table[72], &pinyin_table[5], &pinyin_table[63], &pinyin_table[364], }, /* chun ang => chu nang */
+ { &pinyin_table[72], &pinyin_table[6], &pinyin_table[63], &pinyin_table[365], }, /* chun ao => chu nao */
+ { &pinyin_table[72], &pinyin_table[128], &pinyin_table[63], &pinyin_table[366], }, /* chun e => chu ne */
+ { &pinyin_table[72], &pinyin_table[129], &pinyin_table[63], &pinyin_table[368], }, /* chun ei => chu nei */
+ { &pinyin_table[83], &pinyin_table[0], &pinyin_table[82], &pinyin_table[161], }, /* cuang a => cuan ga */
+ { &pinyin_table[83], &pinyin_table[2], &pinyin_table[82], &pinyin_table[163], }, /* cuang ai => cuan gai */
+ { &pinyin_table[83], &pinyin_table[4], &pinyin_table[82], &pinyin_table[165], }, /* cuang an => cuan gan */
+ { &pinyin_table[83], &pinyin_table[5], &pinyin_table[82], &pinyin_table[166], }, /* cuang ang => cuan gang */
+ { &pinyin_table[83], &pinyin_table[6], &pinyin_table[82], &pinyin_table[167], }, /* cuang ao => cuan gao */
+ { &pinyin_table[83], &pinyin_table[128], &pinyin_table[82], &pinyin_table[168], }, /* cuang e => cuan ge */
+ { &pinyin_table[83], &pinyin_table[129], &pinyin_table[82], &pinyin_table[170], }, /* cuang ei => cuan gei */
+ { &pinyin_table[83], &pinyin_table[130], &pinyin_table[82], &pinyin_table[172], }, /* cuang en => cuan gen */
+ { &pinyin_table[83], &pinyin_table[402], &pinyin_table[82], &pinyin_table[178], }, /* cuang ou => cuan gou */
+ { &pinyin_table[87], &pinyin_table[128], &pinyin_table[80], &pinyin_table[366], }, /* cun e => cu ne */
+ { &pinyin_table[87], &pinyin_table[129], &pinyin_table[80], &pinyin_table[368], }, /* cun ei => cu nei */
+ { &pinyin_table[94], &pinyin_table[0], &pinyin_table[90], &pinyin_table[359], }, /* dan a => da na */
+ { &pinyin_table[94], &pinyin_table[2], &pinyin_table[90], &pinyin_table[361], }, /* dan ai => da nai */
+ { &pinyin_table[94], &pinyin_table[4], &pinyin_table[90], &pinyin_table[363], }, /* dan an => da nan */
+ { &pinyin_table[94], &pinyin_table[5], &pinyin_table[90], &pinyin_table[364], }, /* dan ang => da nang */
+ { &pinyin_table[94], &pinyin_table[6], &pinyin_table[90], &pinyin_table[365], }, /* dan ao => da nao */
+ { &pinyin_table[94], &pinyin_table[128], &pinyin_table[90], &pinyin_table[366], }, /* dan e => da ne */
+ { &pinyin_table[94], &pinyin_table[129], &pinyin_table[90], &pinyin_table[368], }, /* dan ei => da nei */
+ { &pinyin_table[95], &pinyin_table[2], &pinyin_table[94], &pinyin_table[163], }, /* dang ai => dan gai */
+ { &pinyin_table[95], &pinyin_table[5], &pinyin_table[94], &pinyin_table[166], }, /* dang ang => dan gang */
+ { &pinyin_table[95], &pinyin_table[6], &pinyin_table[94], &pinyin_table[167], }, /* dang ao => dan gao */
+ { &pinyin_table[95], &pinyin_table[128], &pinyin_table[94], &pinyin_table[168], }, /* dang e => dan ge */
+ { &pinyin_table[95], &pinyin_table[129], &pinyin_table[94], &pinyin_table[170], }, /* dang ei => dan gei */
+ { &pinyin_table[95], &pinyin_table[130], &pinyin_table[94], &pinyin_table[172], }, /* dang en => dan gen */
+ { &pinyin_table[101], &pinyin_table[0], &pinyin_table[97], &pinyin_table[359], }, /* den a => de na */
+ { &pinyin_table[101], &pinyin_table[2], &pinyin_table[97], &pinyin_table[361], }, /* den ai => de nai */
+ { &pinyin_table[101], &pinyin_table[4], &pinyin_table[97], &pinyin_table[363], }, /* den an => de nan */
+ { &pinyin_table[101], &pinyin_table[5], &pinyin_table[97], &pinyin_table[364], }, /* den ang => de nang */
+ { &pinyin_table[101], &pinyin_table[6], &pinyin_table[97], &pinyin_table[365], }, /* den ao => de nao */
+ { &pinyin_table[101], &pinyin_table[128], &pinyin_table[97], &pinyin_table[366], }, /* den e => de ne */
+ { &pinyin_table[101], &pinyin_table[129], &pinyin_table[97], &pinyin_table[368], }, /* den ei => de nei */
+ { &pinyin_table[101], &pinyin_table[130], &pinyin_table[97], &pinyin_table[370], }, /* den en => de nen */
+ { &pinyin_table[101], &pinyin_table[402], &pinyin_table[97], &pinyin_table[391], }, /* den ou => de nou */
+ { &pinyin_table[106], &pinyin_table[0], &pinyin_table[105], &pinyin_table[161], }, /* diang a => dian ga */
+ { &pinyin_table[106], &pinyin_table[2], &pinyin_table[105], &pinyin_table[163], }, /* diang ai => dian gai */
+ { &pinyin_table[106], &pinyin_table[4], &pinyin_table[105], &pinyin_table[165], }, /* diang an => dian gan */
+ { &pinyin_table[106], &pinyin_table[5], &pinyin_table[105], &pinyin_table[166], }, /* diang ang => dian gang */
+ { &pinyin_table[106], &pinyin_table[6], &pinyin_table[105], &pinyin_table[167], }, /* diang ao => dian gao */
+ { &pinyin_table[106], &pinyin_table[128], &pinyin_table[105], &pinyin_table[168], }, /* diang e => dian ge */
+ { &pinyin_table[106], &pinyin_table[129], &pinyin_table[105], &pinyin_table[170], }, /* diang ei => dian gei */
+ { &pinyin_table[106], &pinyin_table[130], &pinyin_table[105], &pinyin_table[172], }, /* diang en => dian gen */
+ { &pinyin_table[106], &pinyin_table[402], &pinyin_table[105], &pinyin_table[178], }, /* diang ou => dian gou */
+ { &pinyin_table[108], &pinyin_table[459], &pinyin_table[103], &pinyin_table[131], }, /* die r => di er */
+ { &pinyin_table[111], &pinyin_table[0], &pinyin_table[103], &pinyin_table[359], }, /* din a => di na */
+ { &pinyin_table[111], &pinyin_table[2], &pinyin_table[103], &pinyin_table[361], }, /* din ai => di nai */
+ { &pinyin_table[111], &pinyin_table[4], &pinyin_table[103], &pinyin_table[363], }, /* din an => di nan */
+ { &pinyin_table[111], &pinyin_table[5], &pinyin_table[103], &pinyin_table[364], }, /* din ang => di nang */
+ { &pinyin_table[111], &pinyin_table[6], &pinyin_table[103], &pinyin_table[365], }, /* din ao => di nao */
+ { &pinyin_table[111], &pinyin_table[128], &pinyin_table[103], &pinyin_table[366], }, /* din e => di ne */
+ { &pinyin_table[111], &pinyin_table[129], &pinyin_table[103], &pinyin_table[368], }, /* din ei => di nei */
+ { &pinyin_table[111], &pinyin_table[130], &pinyin_table[103], &pinyin_table[370], }, /* din en => di nen */
+ { &pinyin_table[111], &pinyin_table[402], &pinyin_table[103], &pinyin_table[391], }, /* din ou => di nou */
+ { &pinyin_table[122], &pinyin_table[0], &pinyin_table[121], &pinyin_table[161], }, /* duang a => duan ga */
+ { &pinyin_table[122], &pinyin_table[2], &pinyin_table[121], &pinyin_table[163], }, /* duang ai => duan gai */
+ { &pinyin_table[122], &pinyin_table[4], &pinyin_table[121], &pinyin_table[165], }, /* duang an => duan gan */
+ { &pinyin_table[122], &pinyin_table[5], &pinyin_table[121], &pinyin_table[166], }, /* duang ang => duan gang */
+ { &pinyin_table[122], &pinyin_table[6], &pinyin_table[121], &pinyin_table[167], }, /* duang ao => duan gao */
+ { &pinyin_table[122], &pinyin_table[128], &pinyin_table[121], &pinyin_table[168], }, /* duang e => duan ge */
+ { &pinyin_table[122], &pinyin_table[129], &pinyin_table[121], &pinyin_table[170], }, /* duang ei => duan gei */
+ { &pinyin_table[122], &pinyin_table[130], &pinyin_table[121], &pinyin_table[172], }, /* duang en => duan gen */
+ { &pinyin_table[122], &pinyin_table[402], &pinyin_table[121], &pinyin_table[178], }, /* duang ou => duan gou */
+ { &pinyin_table[126], &pinyin_table[0], &pinyin_table[120], &pinyin_table[359], }, /* dun a => du na */
+ { &pinyin_table[126], &pinyin_table[4], &pinyin_table[120], &pinyin_table[363], }, /* dun an => du nan */
+ { &pinyin_table[126], &pinyin_table[5], &pinyin_table[120], &pinyin_table[364], }, /* dun ang => du nang */
+ { &pinyin_table[126], &pinyin_table[6], &pinyin_table[120], &pinyin_table[365], }, /* dun ao => du nao */
+ { &pinyin_table[126], &pinyin_table[128], &pinyin_table[120], &pinyin_table[366], }, /* dun e => du ne */
+ { &pinyin_table[126], &pinyin_table[129], &pinyin_table[120], &pinyin_table[368], }, /* dun ei => du nei */
+ { &pinyin_table[130], &pinyin_table[4], &pinyin_table[128], &pinyin_table[363], }, /* en an => e nan */
+ { &pinyin_table[130], &pinyin_table[5], &pinyin_table[128], &pinyin_table[364], }, /* en ang => e nang */
+ { &pinyin_table[130], &pinyin_table[6], &pinyin_table[128], &pinyin_table[365], }, /* en ao => e nao */
+ { &pinyin_table[130], &pinyin_table[128], &pinyin_table[128], &pinyin_table[366], }, /* en e => e ne */
+ { &pinyin_table[130], &pinyin_table[129], &pinyin_table[128], &pinyin_table[368], }, /* en ei => e nei */
+ { &pinyin_table[131], &pinyin_table[4], &pinyin_table[128], &pinyin_table[464], }, /* er an => e ran */
+ { &pinyin_table[131], &pinyin_table[5], &pinyin_table[128], &pinyin_table[465], }, /* er ang => e rang */
+ { &pinyin_table[131], &pinyin_table[130], &pinyin_table[128], &pinyin_table[471], }, /* er en => e ren */
+ { &pinyin_table[131], &pinyin_table[402], &pinyin_table[128], &pinyin_table[488], }, /* er ou => e rou */
+ { &pinyin_table[137], &pinyin_table[5], &pinyin_table[133], &pinyin_table[364], }, /* fan ang => fa nang */
+ { &pinyin_table[137], &pinyin_table[6], &pinyin_table[133], &pinyin_table[365], }, /* fan ao => fa nao */
+ { &pinyin_table[137], &pinyin_table[129], &pinyin_table[133], &pinyin_table[368], }, /* fan ei => fa nei */
+ { &pinyin_table[138], &pinyin_table[5], &pinyin_table[137], &pinyin_table[166], }, /* fang ang => fan gang */
+ { &pinyin_table[138], &pinyin_table[6], &pinyin_table[137], &pinyin_table[167], }, /* fang ao => fan gao */
+ { &pinyin_table[138], &pinyin_table[128], &pinyin_table[137], &pinyin_table[168], }, /* fang e => fan ge */
+ { &pinyin_table[138], &pinyin_table[129], &pinyin_table[137], &pinyin_table[170], }, /* fang ei => fan gei */
+ { &pinyin_table[138], &pinyin_table[130], &pinyin_table[137], &pinyin_table[172], }, /* fang en => fan gen */
+ { &pinyin_table[145], &pinyin_table[5], &pinyin_table[144], &pinyin_table[166], }, /* feng ang => fen gang */
+ { &pinyin_table[145], &pinyin_table[6], &pinyin_table[144], &pinyin_table[167], }, /* feng ao => fen gao */
+ { &pinyin_table[145], &pinyin_table[128], &pinyin_table[144], &pinyin_table[168], }, /* feng e => fen ge */
+ { &pinyin_table[145], &pinyin_table[129], &pinyin_table[144], &pinyin_table[170], }, /* feng ei => fen gei */
+ { &pinyin_table[145], &pinyin_table[130], &pinyin_table[144], &pinyin_table[172], }, /* feng en => fen gen */
+ { &pinyin_table[145], &pinyin_table[402], &pinyin_table[144], &pinyin_table[178], }, /* feng ou => fen gou */
+ { &pinyin_table[147], &pinyin_table[0], &pinyin_table[146], &pinyin_table[359], }, /* fon a => fo na */
+ { &pinyin_table[147], &pinyin_table[2], &pinyin_table[146], &pinyin_table[361], }, /* fon ai => fo nai */
+ { &pinyin_table[147], &pinyin_table[4], &pinyin_table[146], &pinyin_table[363], }, /* fon an => fo nan */
+ { &pinyin_table[147], &pinyin_table[5], &pinyin_table[146], &pinyin_table[364], }, /* fon ang => fo nang */
+ { &pinyin_table[147], &pinyin_table[6], &pinyin_table[146], &pinyin_table[365], }, /* fon ao => fo nao */
+ { &pinyin_table[147], &pinyin_table[128], &pinyin_table[146], &pinyin_table[366], }, /* fon e => fo ne */
+ { &pinyin_table[147], &pinyin_table[129], &pinyin_table[146], &pinyin_table[368], }, /* fon ei => fo nei */
+ { &pinyin_table[147], &pinyin_table[130], &pinyin_table[146], &pinyin_table[370], }, /* fon en => fo nen */
+ { &pinyin_table[147], &pinyin_table[402], &pinyin_table[146], &pinyin_table[391], }, /* fon ou => fo nou */
+ { &pinyin_table[158], &pinyin_table[0], &pinyin_table[150], &pinyin_table[359], }, /* fun a => fu na */
+ { &pinyin_table[158], &pinyin_table[2], &pinyin_table[150], &pinyin_table[361], }, /* fun ai => fu nai */
+ { &pinyin_table[158], &pinyin_table[4], &pinyin_table[150], &pinyin_table[363], }, /* fun an => fu nan */
+ { &pinyin_table[158], &pinyin_table[5], &pinyin_table[150], &pinyin_table[364], }, /* fun ang => fu nang */
+ { &pinyin_table[158], &pinyin_table[6], &pinyin_table[150], &pinyin_table[365], }, /* fun ao => fu nao */
+ { &pinyin_table[158], &pinyin_table[128], &pinyin_table[150], &pinyin_table[366], }, /* fun e => fu ne */
+ { &pinyin_table[158], &pinyin_table[129], &pinyin_table[150], &pinyin_table[368], }, /* fun ei => fu nei */
+ { &pinyin_table[158], &pinyin_table[130], &pinyin_table[150], &pinyin_table[370], }, /* fun en => fu nen */
+ { &pinyin_table[158], &pinyin_table[402], &pinyin_table[150], &pinyin_table[391], }, /* fun ou => fu nou */
+ { &pinyin_table[165], &pinyin_table[128], &pinyin_table[161], &pinyin_table[366], }, /* gan e => ga ne */
+ { &pinyin_table[165], &pinyin_table[129], &pinyin_table[161], &pinyin_table[368], }, /* gan ei => ga nei */
+ { &pinyin_table[166], &pinyin_table[0], &pinyin_table[165], &pinyin_table[161], }, /* gang a => gan ga */
+ { &pinyin_table[166], &pinyin_table[2], &pinyin_table[165], &pinyin_table[163], }, /* gang ai => gan gai */
+ { &pinyin_table[166], &pinyin_table[4], &pinyin_table[165], &pinyin_table[165], }, /* gang an => gan gan */
+ { &pinyin_table[166], &pinyin_table[5], &pinyin_table[165], &pinyin_table[166], }, /* gang ang => gan gang */
+ { &pinyin_table[166], &pinyin_table[128], &pinyin_table[165], &pinyin_table[168], }, /* gang e => gan ge */
+ { &pinyin_table[166], &pinyin_table[129], &pinyin_table[165], &pinyin_table[170], }, /* gang ei => gan gei */
+ { &pinyin_table[166], &pinyin_table[130], &pinyin_table[165], &pinyin_table[172], }, /* gang en => gan gen */
+ { &pinyin_table[166], &pinyin_table[402], &pinyin_table[165], &pinyin_table[178], }, /* gang ou => gan gou */
+ { &pinyin_table[172], &pinyin_table[0], &pinyin_table[168], &pinyin_table[359], }, /* gen a => ge na */
+ { &pinyin_table[172], &pinyin_table[4], &pinyin_table[168], &pinyin_table[363], }, /* gen an => ge nan */
+ { &pinyin_table[172], &pinyin_table[5], &pinyin_table[168], &pinyin_table[364], }, /* gen ang => ge nang */
+ { &pinyin_table[172], &pinyin_table[6], &pinyin_table[168], &pinyin_table[365], }, /* gen ao => ge nao */
+ { &pinyin_table[172], &pinyin_table[128], &pinyin_table[168], &pinyin_table[366], }, /* gen e => ge ne */
+ { &pinyin_table[172], &pinyin_table[129], &pinyin_table[168], &pinyin_table[368], }, /* gen ei => ge nei */
+ { &pinyin_table[173], &pinyin_table[5], &pinyin_table[172], &pinyin_table[166], }, /* geng ang => gen gang */
+ { &pinyin_table[173], &pinyin_table[6], &pinyin_table[172], &pinyin_table[167], }, /* geng ao => gen gao */
+ { &pinyin_table[173], &pinyin_table[128], &pinyin_table[172], &pinyin_table[168], }, /* geng e => gen ge */
+ { &pinyin_table[173], &pinyin_table[129], &pinyin_table[172], &pinyin_table[170], }, /* geng ei => gen gei */
+ { &pinyin_table[173], &pinyin_table[130], &pinyin_table[172], &pinyin_table[172], }, /* geng en => gen gen */
+ { &pinyin_table[173], &pinyin_table[402], &pinyin_table[172], &pinyin_table[178], }, /* geng ou => gen gou */
+ { &pinyin_table[184], &pinyin_table[129], &pinyin_table[180], &pinyin_table[368], }, /* guan ei => gua nei */
+ { &pinyin_table[185], &pinyin_table[2], &pinyin_table[184], &pinyin_table[163], }, /* guang ai => guan gai */
+ { &pinyin_table[185], &pinyin_table[5], &pinyin_table[184], &pinyin_table[166], }, /* guang ang => guan gang */
+ { &pinyin_table[185], &pinyin_table[6], &pinyin_table[184], &pinyin_table[167], }, /* guang ao => guan gao */
+ { &pinyin_table[185], &pinyin_table[128], &pinyin_table[184], &pinyin_table[168], }, /* guang e => guan ge */
+ { &pinyin_table[185], &pinyin_table[129], &pinyin_table[184], &pinyin_table[170], }, /* guang ei => guan gei */
+ { &pinyin_table[185], &pinyin_table[130], &pinyin_table[184], &pinyin_table[172], }, /* guang en => guan gen */
+ { &pinyin_table[189], &pinyin_table[4], &pinyin_table[179], &pinyin_table[363], }, /* gun an => gu nan */
+ { &pinyin_table[189], &pinyin_table[5], &pinyin_table[179], &pinyin_table[364], }, /* gun ang => gu nang */
+ { &pinyin_table[189], &pinyin_table[6], &pinyin_table[179], &pinyin_table[365], }, /* gun ao => gu nao */
+ { &pinyin_table[189], &pinyin_table[128], &pinyin_table[179], &pinyin_table[366], }, /* gun e => gu ne */
+ { &pinyin_table[189], &pinyin_table[129], &pinyin_table[179], &pinyin_table[368], }, /* gun ei => gu nei */
+ { &pinyin_table[196], &pinyin_table[5], &pinyin_table[192], &pinyin_table[364], }, /* han ang => ha nang */
+ { &pinyin_table[196], &pinyin_table[6], &pinyin_table[192], &pinyin_table[365], }, /* han ao => ha nao */
+ { &pinyin_table[196], &pinyin_table[129], &pinyin_table[192], &pinyin_table[368], }, /* han ei => ha nei */
+ { &pinyin_table[197], &pinyin_table[2], &pinyin_table[196], &pinyin_table[163], }, /* hang ai => han gai */
+ { &pinyin_table[197], &pinyin_table[5], &pinyin_table[196], &pinyin_table[166], }, /* hang ang => han gang */
+ { &pinyin_table[197], &pinyin_table[6], &pinyin_table[196], &pinyin_table[167], }, /* hang ao => han gao */
+ { &pinyin_table[197], &pinyin_table[128], &pinyin_table[196], &pinyin_table[168], }, /* hang e => han ge */
+ { &pinyin_table[197], &pinyin_table[129], &pinyin_table[196], &pinyin_table[170], }, /* hang ei => han gei */
+ { &pinyin_table[197], &pinyin_table[130], &pinyin_table[196], &pinyin_table[172], }, /* hang en => han gen */
+ { &pinyin_table[197], &pinyin_table[402], &pinyin_table[196], &pinyin_table[178], }, /* hang ou => han gou */
+ { &pinyin_table[203], &pinyin_table[0], &pinyin_table[199], &pinyin_table[359], }, /* hen a => he na */
+ { &pinyin_table[203], &pinyin_table[4], &pinyin_table[199], &pinyin_table[363], }, /* hen an => he nan */
+ { &pinyin_table[203], &pinyin_table[5], &pinyin_table[199], &pinyin_table[364], }, /* hen ang => he nang */
+ { &pinyin_table[203], &pinyin_table[6], &pinyin_table[199], &pinyin_table[365], }, /* hen ao => he nao */
+ { &pinyin_table[203], &pinyin_table[129], &pinyin_table[199], &pinyin_table[368], }, /* hen ei => he nei */
+ { &pinyin_table[204], &pinyin_table[2], &pinyin_table[203], &pinyin_table[163], }, /* heng ai => hen gai */
+ { &pinyin_table[204], &pinyin_table[4], &pinyin_table[203], &pinyin_table[165], }, /* heng an => hen gan */
+ { &pinyin_table[204], &pinyin_table[5], &pinyin_table[203], &pinyin_table[166], }, /* heng ang => hen gang */
+ { &pinyin_table[204], &pinyin_table[6], &pinyin_table[203], &pinyin_table[167], }, /* heng ao => hen gao */
+ { &pinyin_table[204], &pinyin_table[129], &pinyin_table[203], &pinyin_table[170], }, /* heng ei => hen gei */
+ { &pinyin_table[204], &pinyin_table[130], &pinyin_table[203], &pinyin_table[172], }, /* heng en => hen gen */
+ { &pinyin_table[204], &pinyin_table[402], &pinyin_table[203], &pinyin_table[178], }, /* heng ou => hen gou */
+ { &pinyin_table[216], &pinyin_table[0], &pinyin_table[212], &pinyin_table[359], }, /* huan a => hua na */
+ { &pinyin_table[216], &pinyin_table[4], &pinyin_table[212], &pinyin_table[363], }, /* huan an => hua nan */
+ { &pinyin_table[216], &pinyin_table[5], &pinyin_table[212], &pinyin_table[364], }, /* huan ang => hua nang */
+ { &pinyin_table[216], &pinyin_table[6], &pinyin_table[212], &pinyin_table[365], }, /* huan ao => hua nao */
+ { &pinyin_table[216], &pinyin_table[128], &pinyin_table[212], &pinyin_table[366], }, /* huan e => hua ne */
+ { &pinyin_table[216], &pinyin_table[129], &pinyin_table[212], &pinyin_table[368], }, /* huan ei => hua nei */
+ { &pinyin_table[216], &pinyin_table[130], &pinyin_table[212], &pinyin_table[370], }, /* huan en => hua nen */
+ { &pinyin_table[217], &pinyin_table[2], &pinyin_table[216], &pinyin_table[163], }, /* huang ai => huan gai */
+ { &pinyin_table[217], &pinyin_table[5], &pinyin_table[216], &pinyin_table[166], }, /* huang ang => huan gang */
+ { &pinyin_table[217], &pinyin_table[6], &pinyin_table[216], &pinyin_table[167], }, /* huang ao => huan gao */
+ { &pinyin_table[217], &pinyin_table[128], &pinyin_table[216], &pinyin_table[168], }, /* huang e => huan ge */
+ { &pinyin_table[217], &pinyin_table[129], &pinyin_table[216], &pinyin_table[170], }, /* huang ei => huan gei */
+ { &pinyin_table[217], &pinyin_table[402], &pinyin_table[216], &pinyin_table[178], }, /* huang ou => huan gou */
+ { &pinyin_table[221], &pinyin_table[4], &pinyin_table[211], &pinyin_table[363], }, /* hun an => hu nan */
+ { &pinyin_table[221], &pinyin_table[5], &pinyin_table[211], &pinyin_table[364], }, /* hun ang => hu nang */
+ { &pinyin_table[221], &pinyin_table[6], &pinyin_table[211], &pinyin_table[365], }, /* hun ao => hu nao */
+ { &pinyin_table[221], &pinyin_table[129], &pinyin_table[211], &pinyin_table[368], }, /* hun ei => hu nei */
+ { &pinyin_table[228], &pinyin_table[0], &pinyin_table[225], &pinyin_table[359], }, /* jian a => jia na */
+ { &pinyin_table[228], &pinyin_table[2], &pinyin_table[225], &pinyin_table[361], }, /* jian ai => jia nai */
+ { &pinyin_table[228], &pinyin_table[5], &pinyin_table[225], &pinyin_table[364], }, /* jian ang => jia nang */
+ { &pinyin_table[228], &pinyin_table[128], &pinyin_table[225], &pinyin_table[366], }, /* jian e => jia ne */
+ { &pinyin_table[228], &pinyin_table[129], &pinyin_table[225], &pinyin_table[368], }, /* jian ei => jia nei */
+ { &pinyin_table[229], &pinyin_table[5], &pinyin_table[228], &pinyin_table[166], }, /* jiang ang => jian gang */
+ { &pinyin_table[229], &pinyin_table[6], &pinyin_table[228], &pinyin_table[167], }, /* jiang ao => jian gao */
+ { &pinyin_table[229], &pinyin_table[128], &pinyin_table[228], &pinyin_table[168], }, /* jiang e => jian ge */
+ { &pinyin_table[229], &pinyin_table[129], &pinyin_table[228], &pinyin_table[170], }, /* jiang ei => jian gei */
+ { &pinyin_table[229], &pinyin_table[402], &pinyin_table[228], &pinyin_table[178], }, /* jiang ou => jian gou */
+ { &pinyin_table[231], &pinyin_table[459], &pinyin_table[224], &pinyin_table[131], }, /* jie r => ji er */
+ { &pinyin_table[234], &pinyin_table[0], &pinyin_table[224], &pinyin_table[359], }, /* jin a => ji na */
+ { &pinyin_table[234], &pinyin_table[4], &pinyin_table[224], &pinyin_table[363], }, /* jin an => ji nan */
+ { &pinyin_table[234], &pinyin_table[5], &pinyin_table[224], &pinyin_table[364], }, /* jin ang => ji nang */
+ { &pinyin_table[234], &pinyin_table[6], &pinyin_table[224], &pinyin_table[365], }, /* jin ao => ji nao */
+ { &pinyin_table[234], &pinyin_table[129], &pinyin_table[224], &pinyin_table[368], }, /* jin ei => ji nei */
+ { &pinyin_table[235], &pinyin_table[5], &pinyin_table[234], &pinyin_table[166], }, /* jing ang => jin gang */
+ { &pinyin_table[235], &pinyin_table[6], &pinyin_table[234], &pinyin_table[167], }, /* jing ao => jin gao */
+ { &pinyin_table[235], &pinyin_table[129], &pinyin_table[234], &pinyin_table[170], }, /* jing ei => jin gei */
+ { &pinyin_table[235], &pinyin_table[130], &pinyin_table[234], &pinyin_table[172], }, /* jing en => jin gen */
+ { &pinyin_table[235], &pinyin_table[402], &pinyin_table[234], &pinyin_table[178], }, /* jing ou => jin gou */
+ { &pinyin_table[244], &pinyin_table[0], &pinyin_table[243], &pinyin_table[161], }, /* juang a => juan ga */
+ { &pinyin_table[244], &pinyin_table[2], &pinyin_table[243], &pinyin_table[163], }, /* juang ai => juan gai */
+ { &pinyin_table[244], &pinyin_table[4], &pinyin_table[243], &pinyin_table[165], }, /* juang an => juan gan */
+ { &pinyin_table[244], &pinyin_table[5], &pinyin_table[243], &pinyin_table[166], }, /* juang ang => juan gang */
+ { &pinyin_table[244], &pinyin_table[6], &pinyin_table[243], &pinyin_table[167], }, /* juang ao => juan gao */
+ { &pinyin_table[244], &pinyin_table[128], &pinyin_table[243], &pinyin_table[168], }, /* juang e => juan ge */
+ { &pinyin_table[244], &pinyin_table[129], &pinyin_table[243], &pinyin_table[170], }, /* juang ei => juan gei */
+ { &pinyin_table[244], &pinyin_table[130], &pinyin_table[243], &pinyin_table[172], }, /* juang en => juan gen */
+ { &pinyin_table[244], &pinyin_table[402], &pinyin_table[243], &pinyin_table[178], }, /* juang ou => juan gou */
+ { &pinyin_table[245], &pinyin_table[459], &pinyin_table[242], &pinyin_table[131], }, /* jue r => ju er */
+ { &pinyin_table[246], &pinyin_table[0], &pinyin_table[245], &pinyin_table[359], }, /* juen a => jue na */
+ { &pinyin_table[246], &pinyin_table[2], &pinyin_table[245], &pinyin_table[361], }, /* juen ai => jue nai */
+ { &pinyin_table[246], &pinyin_table[4], &pinyin_table[245], &pinyin_table[363], }, /* juen an => jue nan */
+ { &pinyin_table[246], &pinyin_table[5], &pinyin_table[245], &pinyin_table[364], }, /* juen ang => jue nang */
+ { &pinyin_table[246], &pinyin_table[6], &pinyin_table[245], &pinyin_table[365], }, /* juen ao => jue nao */
+ { &pinyin_table[246], &pinyin_table[128], &pinyin_table[245], &pinyin_table[366], }, /* juen e => jue ne */
+ { &pinyin_table[246], &pinyin_table[129], &pinyin_table[245], &pinyin_table[368], }, /* juen ei => jue nei */
+ { &pinyin_table[246], &pinyin_table[130], &pinyin_table[245], &pinyin_table[370], }, /* juen en => jue nen */
+ { &pinyin_table[246], &pinyin_table[402], &pinyin_table[245], &pinyin_table[391], }, /* juen ou => jue nou */
+ { &pinyin_table[247], &pinyin_table[0], &pinyin_table[242], &pinyin_table[359], }, /* jun a => ju na */
+ { &pinyin_table[247], &pinyin_table[2], &pinyin_table[242], &pinyin_table[361], }, /* jun ai => ju nai */
+ { &pinyin_table[247], &pinyin_table[128], &pinyin_table[242], &pinyin_table[366], }, /* jun e => ju ne */
+ { &pinyin_table[247], &pinyin_table[129], &pinyin_table[242], &pinyin_table[368], }, /* jun ei => ju nei */
+ { &pinyin_table[259], &pinyin_table[129], &pinyin_table[255], &pinyin_table[368], }, /* kan ei => ka nei */
+ { &pinyin_table[260], &pinyin_table[4], &pinyin_table[259], &pinyin_table[165], }, /* kang an => kan gan */
+ { &pinyin_table[260], &pinyin_table[5], &pinyin_table[259], &pinyin_table[166], }, /* kang ang => kan gang */
+ { &pinyin_table[260], &pinyin_table[6], &pinyin_table[259], &pinyin_table[167], }, /* kang ao => kan gao */
+ { &pinyin_table[260], &pinyin_table[128], &pinyin_table[259], &pinyin_table[168], }, /* kang e => kan ge */
+ { &pinyin_table[260], &pinyin_table[129], &pinyin_table[259], &pinyin_table[170], }, /* kang ei => kan gei */
+ { &pinyin_table[260], &pinyin_table[130], &pinyin_table[259], &pinyin_table[172], }, /* kang en => kan gen */
+ { &pinyin_table[260], &pinyin_table[402], &pinyin_table[259], &pinyin_table[178], }, /* kang ou => kan gou */
+ { &pinyin_table[266], &pinyin_table[0], &pinyin_table[262], &pinyin_table[359], }, /* ken a => ke na */
+ { &pinyin_table[266], &pinyin_table[2], &pinyin_table[262], &pinyin_table[361], }, /* ken ai => ke nai */
+ { &pinyin_table[266], &pinyin_table[4], &pinyin_table[262], &pinyin_table[363], }, /* ken an => ke nan */
+ { &pinyin_table[266], &pinyin_table[5], &pinyin_table[262], &pinyin_table[364], }, /* ken ang => ke nang */
+ { &pinyin_table[266], &pinyin_table[6], &pinyin_table[262], &pinyin_table[365], }, /* ken ao => ke nao */
+ { &pinyin_table[266], &pinyin_table[128], &pinyin_table[262], &pinyin_table[366], }, /* ken e => ke ne */
+ { &pinyin_table[266], &pinyin_table[129], &pinyin_table[262], &pinyin_table[368], }, /* ken ei => ke nei */
+ { &pinyin_table[267], &pinyin_table[2], &pinyin_table[266], &pinyin_table[163], }, /* keng ai => ken gai */
+ { &pinyin_table[267], &pinyin_table[4], &pinyin_table[266], &pinyin_table[165], }, /* keng an => ken gan */
+ { &pinyin_table[267], &pinyin_table[5], &pinyin_table[266], &pinyin_table[166], }, /* keng ang => ken gang */
+ { &pinyin_table[267], &pinyin_table[6], &pinyin_table[266], &pinyin_table[167], }, /* keng ao => ken gao */
+ { &pinyin_table[267], &pinyin_table[128], &pinyin_table[266], &pinyin_table[168], }, /* keng e => ken ge */
+ { &pinyin_table[267], &pinyin_table[129], &pinyin_table[266], &pinyin_table[170], }, /* keng ei => ken gei */
+ { &pinyin_table[267], &pinyin_table[130], &pinyin_table[266], &pinyin_table[172], }, /* keng en => ken gen */
+ { &pinyin_table[267], &pinyin_table[402], &pinyin_table[266], &pinyin_table[178], }, /* keng ou => ken gou */
+ { &pinyin_table[278], &pinyin_table[0], &pinyin_table[274], &pinyin_table[359], }, /* kuan a => kua na */
+ { &pinyin_table[278], &pinyin_table[129], &pinyin_table[274], &pinyin_table[368], }, /* kuan ei => kua nei */
+ { &pinyin_table[279], &pinyin_table[5], &pinyin_table[278], &pinyin_table[166], }, /* kuang ang => kuan gang */
+ { &pinyin_table[279], &pinyin_table[128], &pinyin_table[278], &pinyin_table[168], }, /* kuang e => kuan ge */
+ { &pinyin_table[279], &pinyin_table[129], &pinyin_table[278], &pinyin_table[170], }, /* kuang ei => kuan gei */
+ { &pinyin_table[279], &pinyin_table[130], &pinyin_table[278], &pinyin_table[172], }, /* kuang en => kuan gen */
+ { &pinyin_table[283], &pinyin_table[4], &pinyin_table[273], &pinyin_table[363], }, /* kun an => ku nan */
+ { &pinyin_table[283], &pinyin_table[5], &pinyin_table[273], &pinyin_table[364], }, /* kun ang => ku nang */
+ { &pinyin_table[283], &pinyin_table[6], &pinyin_table[273], &pinyin_table[365], }, /* kun ao => ku nao */
+ { &pinyin_table[283], &pinyin_table[128], &pinyin_table[273], &pinyin_table[366], }, /* kun e => ku ne */
+ { &pinyin_table[283], &pinyin_table[129], &pinyin_table[273], &pinyin_table[368], }, /* kun ei => ku nei */
+ { &pinyin_table[290], &pinyin_table[0], &pinyin_table[286], &pinyin_table[359], }, /* lan a => la na */
+ { &pinyin_table[290], &pinyin_table[4], &pinyin_table[286], &pinyin_table[363], }, /* lan an => la nan */
+ { &pinyin_table[290], &pinyin_table[5], &pinyin_table[286], &pinyin_table[364], }, /* lan ang => la nang */
+ { &pinyin_table[290], &pinyin_table[6], &pinyin_table[286], &pinyin_table[365], }, /* lan ao => la nao */
+ { &pinyin_table[290], &pinyin_table[128], &pinyin_table[286], &pinyin_table[366], }, /* lan e => la ne */
+ { &pinyin_table[290], &pinyin_table[129], &pinyin_table[286], &pinyin_table[368], }, /* lan ei => la nei */
+ { &pinyin_table[291], &pinyin_table[4], &pinyin_table[290], &pinyin_table[165], }, /* lang an => lan gan */
+ { &pinyin_table[291], &pinyin_table[5], &pinyin_table[290], &pinyin_table[166], }, /* lang ang => lan gang */
+ { &pinyin_table[291], &pinyin_table[6], &pinyin_table[290], &pinyin_table[167], }, /* lang ao => lan gao */
+ { &pinyin_table[291], &pinyin_table[128], &pinyin_table[290], &pinyin_table[168], }, /* lang e => lan ge */
+ { &pinyin_table[291], &pinyin_table[129], &pinyin_table[290], &pinyin_table[170], }, /* lang ei => lan gei */
+ { &pinyin_table[291], &pinyin_table[130], &pinyin_table[290], &pinyin_table[172], }, /* lang en => lan gen */
+ { &pinyin_table[291], &pinyin_table[402], &pinyin_table[290], &pinyin_table[178], }, /* lang ou => lan gou */
+ { &pinyin_table[297], &pinyin_table[0], &pinyin_table[293], &pinyin_table[359], }, /* len a => le na */
+ { &pinyin_table[297], &pinyin_table[2], &pinyin_table[293], &pinyin_table[361], }, /* len ai => le nai */
+ { &pinyin_table[297], &pinyin_table[4], &pinyin_table[293], &pinyin_table[363], }, /* len an => le nan */
+ { &pinyin_table[297], &pinyin_table[5], &pinyin_table[293], &pinyin_table[364], }, /* len ang => le nang */
+ { &pinyin_table[297], &pinyin_table[6], &pinyin_table[293], &pinyin_table[365], }, /* len ao => le nao */
+ { &pinyin_table[297], &pinyin_table[128], &pinyin_table[293], &pinyin_table[366], }, /* len e => le ne */
+ { &pinyin_table[297], &pinyin_table[129], &pinyin_table[293], &pinyin_table[368], }, /* len ei => le nei */
+ { &pinyin_table[297], &pinyin_table[130], &pinyin_table[293], &pinyin_table[370], }, /* len en => le nen */
+ { &pinyin_table[297], &pinyin_table[402], &pinyin_table[293], &pinyin_table[391], }, /* len ou => le nou */
+ { &pinyin_table[303], &pinyin_table[129], &pinyin_table[300], &pinyin_table[368], }, /* lian ei => lia nei */
+ { &pinyin_table[304], &pinyin_table[5], &pinyin_table[303], &pinyin_table[166], }, /* liang ang => lian gang */
+ { &pinyin_table[304], &pinyin_table[6], &pinyin_table[303], &pinyin_table[167], }, /* liang ao => lian gao */
+ { &pinyin_table[304], &pinyin_table[128], &pinyin_table[303], &pinyin_table[168], }, /* liang e => lian ge */
+ { &pinyin_table[304], &pinyin_table[129], &pinyin_table[303], &pinyin_table[170], }, /* liang ei => lian gei */
+ { &pinyin_table[304], &pinyin_table[130], &pinyin_table[303], &pinyin_table[172], }, /* liang en => lian gen */
+ { &pinyin_table[304], &pinyin_table[402], &pinyin_table[303], &pinyin_table[178], }, /* liang ou => lian gou */
+ { &pinyin_table[306], &pinyin_table[459], &pinyin_table[299], &pinyin_table[131], }, /* lie r => li er */
+ { &pinyin_table[309], &pinyin_table[0], &pinyin_table[299], &pinyin_table[359], }, /* lin a => li na */
+ { &pinyin_table[309], &pinyin_table[4], &pinyin_table[299], &pinyin_table[363], }, /* lin an => li nan */
+ { &pinyin_table[309], &pinyin_table[5], &pinyin_table[299], &pinyin_table[364], }, /* lin ang => li nang */
+ { &pinyin_table[309], &pinyin_table[6], &pinyin_table[299], &pinyin_table[365], }, /* lin ao => li nao */
+ { &pinyin_table[309], &pinyin_table[128], &pinyin_table[299], &pinyin_table[366], }, /* lin e => li ne */
+ { &pinyin_table[309], &pinyin_table[129], &pinyin_table[299], &pinyin_table[368], }, /* lin ei => li nei */
+ { &pinyin_table[310], &pinyin_table[5], &pinyin_table[309], &pinyin_table[166], }, /* ling ang => lin gang */
+ { &pinyin_table[310], &pinyin_table[6], &pinyin_table[309], &pinyin_table[167], }, /* ling ao => lin gao */
+ { &pinyin_table[310], &pinyin_table[128], &pinyin_table[309], &pinyin_table[168], }, /* ling e => lin ge */
+ { &pinyin_table[310], &pinyin_table[129], &pinyin_table[309], &pinyin_table[170], }, /* ling ei => lin gei */
+ { &pinyin_table[310], &pinyin_table[130], &pinyin_table[309], &pinyin_table[172], }, /* ling en => lin gen */
+ { &pinyin_table[310], &pinyin_table[402], &pinyin_table[309], &pinyin_table[178], }, /* ling ou => lin gou */
+ { &pinyin_table[316], &pinyin_table[0], &pinyin_table[313], &pinyin_table[359], }, /* lon a => lo na */
+ { &pinyin_table[316], &pinyin_table[2], &pinyin_table[313], &pinyin_table[361], }, /* lon ai => lo nai */
+ { &pinyin_table[316], &pinyin_table[4], &pinyin_table[313], &pinyin_table[363], }, /* lon an => lo nan */
+ { &pinyin_table[316], &pinyin_table[5], &pinyin_table[313], &pinyin_table[364], }, /* lon ang => lo nang */
+ { &pinyin_table[316], &pinyin_table[6], &pinyin_table[313], &pinyin_table[365], }, /* lon ao => lo nao */
+ { &pinyin_table[316], &pinyin_table[128], &pinyin_table[313], &pinyin_table[366], }, /* lon e => lo ne */
+ { &pinyin_table[316], &pinyin_table[129], &pinyin_table[313], &pinyin_table[368], }, /* lon ei => lo nei */
+ { &pinyin_table[316], &pinyin_table[130], &pinyin_table[313], &pinyin_table[370], }, /* lon en => lo nen */
+ { &pinyin_table[316], &pinyin_table[402], &pinyin_table[313], &pinyin_table[391], }, /* lon ou => lo nou */
+ { &pinyin_table[321], &pinyin_table[0], &pinyin_table[320], &pinyin_table[161], }, /* luang a => luan ga */
+ { &pinyin_table[321], &pinyin_table[2], &pinyin_table[320], &pinyin_table[163], }, /* luang ai => luan gai */
+ { &pinyin_table[321], &pinyin_table[4], &pinyin_table[320], &pinyin_table[165], }, /* luang an => luan gan */
+ { &pinyin_table[321], &pinyin_table[5], &pinyin_table[320], &pinyin_table[166], }, /* luang ang => luan gang */
+ { &pinyin_table[321], &pinyin_table[6], &pinyin_table[320], &pinyin_table[167], }, /* luang ao => luan gao */
+ { &pinyin_table[321], &pinyin_table[128], &pinyin_table[320], &pinyin_table[168], }, /* luang e => luan ge */
+ { &pinyin_table[321], &pinyin_table[129], &pinyin_table[320], &pinyin_table[170], }, /* luang ei => luan gei */
+ { &pinyin_table[321], &pinyin_table[130], &pinyin_table[320], &pinyin_table[172], }, /* luang en => luan gen */
+ { &pinyin_table[321], &pinyin_table[402], &pinyin_table[320], &pinyin_table[178], }, /* luang ou => luan gou */
+ { &pinyin_table[322], &pinyin_table[459], &pinyin_table[319], &pinyin_table[131], }, /* lue r => lu er */
+ { &pinyin_table[326], &pinyin_table[0], &pinyin_table[319], &pinyin_table[359], }, /* lun a => lu na */
+ { &pinyin_table[326], &pinyin_table[2], &pinyin_table[319], &pinyin_table[361], }, /* lun ai => lu nai */
+ { &pinyin_table[326], &pinyin_table[4], &pinyin_table[319], &pinyin_table[363], }, /* lun an => lu nan */
+ { &pinyin_table[326], &pinyin_table[5], &pinyin_table[319], &pinyin_table[364], }, /* lun ang => lu nang */
+ { &pinyin_table[326], &pinyin_table[6], &pinyin_table[319], &pinyin_table[365], }, /* lun ao => lu nao */
+ { &pinyin_table[326], &pinyin_table[128], &pinyin_table[319], &pinyin_table[366], }, /* lun e => lu ne */
+ { &pinyin_table[326], &pinyin_table[129], &pinyin_table[319], &pinyin_table[368], }, /* lun ei => lu nei */
+ { &pinyin_table[329], &pinyin_table[459], &pinyin_table[328], &pinyin_table[131], }, /* lve r => lv er */
+ { &pinyin_table[335], &pinyin_table[2], &pinyin_table[331], &pinyin_table[361], }, /* man ai => ma nai */
+ { &pinyin_table[335], &pinyin_table[4], &pinyin_table[331], &pinyin_table[363], }, /* man an => ma nan */
+ { &pinyin_table[335], &pinyin_table[5], &pinyin_table[331], &pinyin_table[364], }, /* man ang => ma nang */
+ { &pinyin_table[335], &pinyin_table[6], &pinyin_table[331], &pinyin_table[365], }, /* man ao => ma nao */
+ { &pinyin_table[335], &pinyin_table[128], &pinyin_table[331], &pinyin_table[366], }, /* man e => ma ne */
+ { &pinyin_table[335], &pinyin_table[129], &pinyin_table[331], &pinyin_table[368], }, /* man ei => ma nei */
+ { &pinyin_table[336], &pinyin_table[2], &pinyin_table[335], &pinyin_table[163], }, /* mang ai => man gai */
+ { &pinyin_table[336], &pinyin_table[4], &pinyin_table[335], &pinyin_table[165], }, /* mang an => man gan */
+ { &pinyin_table[336], &pinyin_table[5], &pinyin_table[335], &pinyin_table[166], }, /* mang ang => man gang */
+ { &pinyin_table[336], &pinyin_table[6], &pinyin_table[335], &pinyin_table[167], }, /* mang ao => man gao */
+ { &pinyin_table[336], &pinyin_table[128], &pinyin_table[335], &pinyin_table[168], }, /* mang e => man ge */
+ { &pinyin_table[336], &pinyin_table[129], &pinyin_table[335], &pinyin_table[170], }, /* mang ei => man gei */
+ { &pinyin_table[336], &pinyin_table[130], &pinyin_table[335], &pinyin_table[172], }, /* mang en => man gen */
+ { &pinyin_table[336], &pinyin_table[402], &pinyin_table[335], &pinyin_table[178], }, /* mang ou => man gou */
+ { &pinyin_table[342], &pinyin_table[5], &pinyin_table[338], &pinyin_table[364], }, /* men ang => me nang */
+ { &pinyin_table[342], &pinyin_table[6], &pinyin_table[338], &pinyin_table[365], }, /* men ao => me nao */
+ { &pinyin_table[342], &pinyin_table[128], &pinyin_table[338], &pinyin_table[366], }, /* men e => me ne */
+ { &pinyin_table[342], &pinyin_table[129], &pinyin_table[338], &pinyin_table[368], }, /* men ei => me nei */
+ { &pinyin_table[343], &pinyin_table[2], &pinyin_table[342], &pinyin_table[163], }, /* meng ai => men gai */
+ { &pinyin_table[343], &pinyin_table[5], &pinyin_table[342], &pinyin_table[166], }, /* meng ang => men gang */
+ { &pinyin_table[343], &pinyin_table[6], &pinyin_table[342], &pinyin_table[167], }, /* meng ao => men gao */
+ { &pinyin_table[343], &pinyin_table[128], &pinyin_table[342], &pinyin_table[168], }, /* meng e => men ge */
+ { &pinyin_table[343], &pinyin_table[129], &pinyin_table[342], &pinyin_table[170], }, /* meng ei => men gei */
+ { &pinyin_table[343], &pinyin_table[402], &pinyin_table[342], &pinyin_table[178], }, /* meng ou => men gou */
+ { &pinyin_table[346], &pinyin_table[0], &pinyin_table[345], &pinyin_table[161], }, /* miang a => mian ga */
+ { &pinyin_table[346], &pinyin_table[2], &pinyin_table[345], &pinyin_table[163], }, /* miang ai => mian gai */
+ { &pinyin_table[346], &pinyin_table[4], &pinyin_table[345], &pinyin_table[165], }, /* miang an => mian gan */
+ { &pinyin_table[346], &pinyin_table[5], &pinyin_table[345], &pinyin_table[166], }, /* miang ang => mian gang */
+ { &pinyin_table[346], &pinyin_table[6], &pinyin_table[345], &pinyin_table[167], }, /* miang ao => mian gao */
+ { &pinyin_table[346], &pinyin_table[128], &pinyin_table[345], &pinyin_table[168], }, /* miang e => mian ge */
+ { &pinyin_table[346], &pinyin_table[129], &pinyin_table[345], &pinyin_table[170], }, /* miang ei => mian gei */
+ { &pinyin_table[346], &pinyin_table[130], &pinyin_table[345], &pinyin_table[172], }, /* miang en => mian gen */
+ { &pinyin_table[346], &pinyin_table[402], &pinyin_table[345], &pinyin_table[178], }, /* miang ou => mian gou */
+ { &pinyin_table[348], &pinyin_table[459], &pinyin_table[344], &pinyin_table[131], }, /* mie r => mi er */
+ { &pinyin_table[351], &pinyin_table[0], &pinyin_table[344], &pinyin_table[359], }, /* min a => mi na */
+ { &pinyin_table[351], &pinyin_table[128], &pinyin_table[344], &pinyin_table[366], }, /* min e => mi ne */
+ { &pinyin_table[351], &pinyin_table[129], &pinyin_table[344], &pinyin_table[368], }, /* min ei => mi nei */
+ { &pinyin_table[352], &pinyin_table[4], &pinyin_table[351], &pinyin_table[165], }, /* ming an => min gan */
+ { &pinyin_table[352], &pinyin_table[5], &pinyin_table[351], &pinyin_table[166], }, /* ming ang => min gang */
+ { &pinyin_table[352], &pinyin_table[6], &pinyin_table[351], &pinyin_table[167], }, /* ming ao => min gao */
+ { &pinyin_table[352], &pinyin_table[128], &pinyin_table[351], &pinyin_table[168], }, /* ming e => min ge */
+ { &pinyin_table[352], &pinyin_table[129], &pinyin_table[351], &pinyin_table[170], }, /* ming ei => min gei */
+ { &pinyin_table[352], &pinyin_table[402], &pinyin_table[351], &pinyin_table[178], }, /* ming ou => min gou */
+ { &pinyin_table[363], &pinyin_table[0], &pinyin_table[359], &pinyin_table[359], }, /* nan a => na na */
+ { &pinyin_table[363], &pinyin_table[5], &pinyin_table[359], &pinyin_table[364], }, /* nan ang => na nang */
+ { &pinyin_table[363], &pinyin_table[128], &pinyin_table[359], &pinyin_table[366], }, /* nan e => na ne */
+ { &pinyin_table[363], &pinyin_table[129], &pinyin_table[359], &pinyin_table[368], }, /* nan ei => na nei */
+ { &pinyin_table[364], &pinyin_table[0], &pinyin_table[363], &pinyin_table[161], }, /* nang a => nan ga */
+ { &pinyin_table[364], &pinyin_table[2], &pinyin_table[363], &pinyin_table[163], }, /* nang ai => nan gai */
+ { &pinyin_table[364], &pinyin_table[4], &pinyin_table[363], &pinyin_table[165], }, /* nang an => nan gan */
+ { &pinyin_table[364], &pinyin_table[5], &pinyin_table[363], &pinyin_table[166], }, /* nang ang => nan gang */
+ { &pinyin_table[364], &pinyin_table[6], &pinyin_table[363], &pinyin_table[167], }, /* nang ao => nan gao */
+ { &pinyin_table[364], &pinyin_table[128], &pinyin_table[363], &pinyin_table[168], }, /* nang e => nan ge */
+ { &pinyin_table[364], &pinyin_table[129], &pinyin_table[363], &pinyin_table[170], }, /* nang ei => nan gei */
+ { &pinyin_table[364], &pinyin_table[130], &pinyin_table[363], &pinyin_table[172], }, /* nang en => nan gen */
+ { &pinyin_table[364], &pinyin_table[402], &pinyin_table[363], &pinyin_table[178], }, /* nang ou => nan gou */
+ { &pinyin_table[370], &pinyin_table[0], &pinyin_table[366], &pinyin_table[359], }, /* nen a => ne na */
+ { &pinyin_table[370], &pinyin_table[2], &pinyin_table[366], &pinyin_table[361], }, /* nen ai => ne nai */
+ { &pinyin_table[370], &pinyin_table[4], &pinyin_table[366], &pinyin_table[363], }, /* nen an => ne nan */
+ { &pinyin_table[370], &pinyin_table[5], &pinyin_table[366], &pinyin_table[364], }, /* nen ang => ne nang */
+ { &pinyin_table[370], &pinyin_table[6], &pinyin_table[366], &pinyin_table[365], }, /* nen ao => ne nao */
+ { &pinyin_table[370], &pinyin_table[128], &pinyin_table[366], &pinyin_table[366], }, /* nen e => ne ne */
+ { &pinyin_table[370], &pinyin_table[129], &pinyin_table[366], &pinyin_table[368], }, /* nen ei => ne nei */
+ { &pinyin_table[370], &pinyin_table[130], &pinyin_table[366], &pinyin_table[370], }, /* nen en => ne nen */
+ { &pinyin_table[371], &pinyin_table[128], &pinyin_table[370], &pinyin_table[168], }, /* neng e => nen ge */
+ { &pinyin_table[371], &pinyin_table[129], &pinyin_table[370], &pinyin_table[170], }, /* neng ei => nen gei */
+ { &pinyin_table[377], &pinyin_table[2], &pinyin_table[376], &pinyin_table[163], }, /* niang ai => nian gai */
+ { &pinyin_table[377], &pinyin_table[4], &pinyin_table[376], &pinyin_table[165], }, /* niang an => nian gan */
+ { &pinyin_table[377], &pinyin_table[5], &pinyin_table[376], &pinyin_table[166], }, /* niang ang => nian gang */
+ { &pinyin_table[377], &pinyin_table[6], &pinyin_table[376], &pinyin_table[167], }, /* niang ao => nian gao */
+ { &pinyin_table[377], &pinyin_table[128], &pinyin_table[376], &pinyin_table[168], }, /* niang e => nian ge */
+ { &pinyin_table[377], &pinyin_table[129], &pinyin_table[376], &pinyin_table[170], }, /* niang ei => nian gei */
+ { &pinyin_table[377], &pinyin_table[130], &pinyin_table[376], &pinyin_table[172], }, /* niang en => nian gen */
+ { &pinyin_table[377], &pinyin_table[402], &pinyin_table[376], &pinyin_table[178], }, /* niang ou => nian gou */
+ { &pinyin_table[379], &pinyin_table[459], &pinyin_table[372], &pinyin_table[131], }, /* nie r => ni er */
+ { &pinyin_table[382], &pinyin_table[0], &pinyin_table[372], &pinyin_table[359], }, /* nin a => ni na */
+ { &pinyin_table[382], &pinyin_table[4], &pinyin_table[372], &pinyin_table[363], }, /* nin an => ni nan */
+ { &pinyin_table[382], &pinyin_table[5], &pinyin_table[372], &pinyin_table[364], }, /* nin ang => ni nang */
+ { &pinyin_table[382], &pinyin_table[6], &pinyin_table[372], &pinyin_table[365], }, /* nin ao => ni nao */
+ { &pinyin_table[382], &pinyin_table[128], &pinyin_table[372], &pinyin_table[366], }, /* nin e => ni ne */
+ { &pinyin_table[382], &pinyin_table[129], &pinyin_table[372], &pinyin_table[368], }, /* nin ei => ni nei */
+ { &pinyin_table[383], &pinyin_table[2], &pinyin_table[382], &pinyin_table[163], }, /* ning ai => nin gai */
+ { &pinyin_table[383], &pinyin_table[5], &pinyin_table[382], &pinyin_table[166], }, /* ning ang => nin gang */
+ { &pinyin_table[383], &pinyin_table[6], &pinyin_table[382], &pinyin_table[167], }, /* ning ao => nin gao */
+ { &pinyin_table[383], &pinyin_table[129], &pinyin_table[382], &pinyin_table[170], }, /* ning ei => nin gei */
+ { &pinyin_table[383], &pinyin_table[130], &pinyin_table[382], &pinyin_table[172], }, /* ning en => nin gen */
+ { &pinyin_table[383], &pinyin_table[402], &pinyin_table[382], &pinyin_table[178], }, /* ning ou => nin gou */
+ { &pinyin_table[394], &pinyin_table[0], &pinyin_table[393], &pinyin_table[161], }, /* nuang a => nuan ga */
+ { &pinyin_table[394], &pinyin_table[2], &pinyin_table[393], &pinyin_table[163], }, /* nuang ai => nuan gai */
+ { &pinyin_table[394], &pinyin_table[4], &pinyin_table[393], &pinyin_table[165], }, /* nuang an => nuan gan */
+ { &pinyin_table[394], &pinyin_table[5], &pinyin_table[393], &pinyin_table[166], }, /* nuang ang => nuan gang */
+ { &pinyin_table[394], &pinyin_table[6], &pinyin_table[393], &pinyin_table[167], }, /* nuang ao => nuan gao */
+ { &pinyin_table[394], &pinyin_table[128], &pinyin_table[393], &pinyin_table[168], }, /* nuang e => nuan ge */
+ { &pinyin_table[394], &pinyin_table[129], &pinyin_table[393], &pinyin_table[170], }, /* nuang ei => nuan gei */
+ { &pinyin_table[394], &pinyin_table[130], &pinyin_table[393], &pinyin_table[172], }, /* nuang en => nuan gen */
+ { &pinyin_table[394], &pinyin_table[402], &pinyin_table[393], &pinyin_table[178], }, /* nuang ou => nuan gou */
+ { &pinyin_table[395], &pinyin_table[459], &pinyin_table[392], &pinyin_table[131], }, /* nue r => nu er */
+ { &pinyin_table[397], &pinyin_table[0], &pinyin_table[392], &pinyin_table[359], }, /* nun a => nu na */
+ { &pinyin_table[397], &pinyin_table[2], &pinyin_table[392], &pinyin_table[361], }, /* nun ai => nu nai */
+ { &pinyin_table[397], &pinyin_table[4], &pinyin_table[392], &pinyin_table[363], }, /* nun an => nu nan */
+ { &pinyin_table[397], &pinyin_table[5], &pinyin_table[392], &pinyin_table[364], }, /* nun ang => nu nang */
+ { &pinyin_table[397], &pinyin_table[6], &pinyin_table[392], &pinyin_table[365], }, /* nun ao => nu nao */
+ { &pinyin_table[397], &pinyin_table[128], &pinyin_table[392], &pinyin_table[366], }, /* nun e => nu ne */
+ { &pinyin_table[397], &pinyin_table[129], &pinyin_table[392], &pinyin_table[368], }, /* nun ei => nu nei */
+ { &pinyin_table[397], &pinyin_table[130], &pinyin_table[392], &pinyin_table[370], }, /* nun en => nu nen */
+ { &pinyin_table[397], &pinyin_table[402], &pinyin_table[392], &pinyin_table[391], }, /* nun ou => nu nou */
+ { &pinyin_table[400], &pinyin_table[459], &pinyin_table[399], &pinyin_table[131], }, /* nve r => nv er */
+ { &pinyin_table[408], &pinyin_table[0], &pinyin_table[404], &pinyin_table[359], }, /* pan a => pa na */
+ { &pinyin_table[408], &pinyin_table[5], &pinyin_table[404], &pinyin_table[364], }, /* pan ang => pa nang */
+ { &pinyin_table[408], &pinyin_table[6], &pinyin_table[404], &pinyin_table[365], }, /* pan ao => pa nao */
+ { &pinyin_table[408], &pinyin_table[128], &pinyin_table[404], &pinyin_table[366], }, /* pan e => pa ne */
+ { &pinyin_table[408], &pinyin_table[129], &pinyin_table[404], &pinyin_table[368], }, /* pan ei => pa nei */
+ { &pinyin_table[409], &pinyin_table[5], &pinyin_table[408], &pinyin_table[166], }, /* pang ang => pan gang */
+ { &pinyin_table[409], &pinyin_table[6], &pinyin_table[408], &pinyin_table[167], }, /* pang ao => pan gao */
+ { &pinyin_table[409], &pinyin_table[128], &pinyin_table[408], &pinyin_table[168], }, /* pang e => pan ge */
+ { &pinyin_table[409], &pinyin_table[129], &pinyin_table[408], &pinyin_table[170], }, /* pang ei => pan gei */
+ { &pinyin_table[409], &pinyin_table[130], &pinyin_table[408], &pinyin_table[172], }, /* pang en => pan gen */
+ { &pinyin_table[409], &pinyin_table[402], &pinyin_table[408], &pinyin_table[178], }, /* pang ou => pan gou */
+ { &pinyin_table[415], &pinyin_table[5], &pinyin_table[414], &pinyin_table[166], }, /* peng ang => pen gang */
+ { &pinyin_table[415], &pinyin_table[6], &pinyin_table[414], &pinyin_table[167], }, /* peng ao => pen gao */
+ { &pinyin_table[415], &pinyin_table[128], &pinyin_table[414], &pinyin_table[168], }, /* peng e => pen ge */
+ { &pinyin_table[415], &pinyin_table[129], &pinyin_table[414], &pinyin_table[170], }, /* peng ei => pen gei */
+ { &pinyin_table[418], &pinyin_table[0], &pinyin_table[417], &pinyin_table[161], }, /* piang a => pian ga */
+ { &pinyin_table[418], &pinyin_table[2], &pinyin_table[417], &pinyin_table[163], }, /* piang ai => pian gai */
+ { &pinyin_table[418], &pinyin_table[4], &pinyin_table[417], &pinyin_table[165], }, /* piang an => pian gan */
+ { &pinyin_table[418], &pinyin_table[5], &pinyin_table[417], &pinyin_table[166], }, /* piang ang => pian gang */
+ { &pinyin_table[418], &pinyin_table[6], &pinyin_table[417], &pinyin_table[167], }, /* piang ao => pian gao */
+ { &pinyin_table[418], &pinyin_table[128], &pinyin_table[417], &pinyin_table[168], }, /* piang e => pian ge */
+ { &pinyin_table[418], &pinyin_table[129], &pinyin_table[417], &pinyin_table[170], }, /* piang ei => pian gei */
+ { &pinyin_table[418], &pinyin_table[130], &pinyin_table[417], &pinyin_table[172], }, /* piang en => pian gen */
+ { &pinyin_table[418], &pinyin_table[402], &pinyin_table[417], &pinyin_table[178], }, /* piang ou => pian gou */
+ { &pinyin_table[420], &pinyin_table[459], &pinyin_table[416], &pinyin_table[131], }, /* pie r => pi er */
+ { &pinyin_table[423], &pinyin_table[0], &pinyin_table[416], &pinyin_table[359], }, /* pin a => pi na */
+ { &pinyin_table[423], &pinyin_table[5], &pinyin_table[416], &pinyin_table[364], }, /* pin ang => pi nang */
+ { &pinyin_table[423], &pinyin_table[6], &pinyin_table[416], &pinyin_table[365], }, /* pin ao => pi nao */
+ { &pinyin_table[423], &pinyin_table[128], &pinyin_table[416], &pinyin_table[366], }, /* pin e => pi ne */
+ { &pinyin_table[423], &pinyin_table[129], &pinyin_table[416], &pinyin_table[368], }, /* pin ei => pi nei */
+ { &pinyin_table[424], &pinyin_table[5], &pinyin_table[423], &pinyin_table[166], }, /* ping ang => pin gang */
+ { &pinyin_table[424], &pinyin_table[6], &pinyin_table[423], &pinyin_table[167], }, /* ping ao => pin gao */
+ { &pinyin_table[424], &pinyin_table[128], &pinyin_table[423], &pinyin_table[168], }, /* ping e => pin ge */
+ { &pinyin_table[424], &pinyin_table[129], &pinyin_table[423], &pinyin_table[170], }, /* ping ei => pin gei */
+ { &pinyin_table[424], &pinyin_table[130], &pinyin_table[423], &pinyin_table[172], }, /* ping en => pin gen */
+ { &pinyin_table[424], &pinyin_table[402], &pinyin_table[423], &pinyin_table[178], }, /* ping ou => pin gou */
+ { &pinyin_table[433], &pinyin_table[129], &pinyin_table[430], &pinyin_table[368], }, /* qian ei => qia nei */
+ { &pinyin_table[434], &pinyin_table[2], &pinyin_table[433], &pinyin_table[163], }, /* qiang ai => qian gai */
+ { &pinyin_table[434], &pinyin_table[4], &pinyin_table[433], &pinyin_table[165], }, /* qiang an => qian gan */
+ { &pinyin_table[434], &pinyin_table[5], &pinyin_table[433], &pinyin_table[166], }, /* qiang ang => qian gang */
+ { &pinyin_table[434], &pinyin_table[6], &pinyin_table[433], &pinyin_table[167], }, /* qiang ao => qian gao */
+ { &pinyin_table[434], &pinyin_table[128], &pinyin_table[433], &pinyin_table[168], }, /* qiang e => qian ge */
+ { &pinyin_table[434], &pinyin_table[129], &pinyin_table[433], &pinyin_table[170], }, /* qiang ei => qian gei */
+ { &pinyin_table[434], &pinyin_table[130], &pinyin_table[433], &pinyin_table[172], }, /* qiang en => qian gen */
+ { &pinyin_table[434], &pinyin_table[402], &pinyin_table[433], &pinyin_table[178], }, /* qiang ou => qian gou */
+ { &pinyin_table[436], &pinyin_table[459], &pinyin_table[429], &pinyin_table[131], }, /* qie r => qi er */
+ { &pinyin_table[439], &pinyin_table[0], &pinyin_table[429], &pinyin_table[359], }, /* qin a => qi na */
+ { &pinyin_table[439], &pinyin_table[5], &pinyin_table[429], &pinyin_table[364], }, /* qin ang => qi nang */
+ { &pinyin_table[439], &pinyin_table[6], &pinyin_table[429], &pinyin_table[365], }, /* qin ao => qi nao */
+ { &pinyin_table[439], &pinyin_table[128], &pinyin_table[429], &pinyin_table[366], }, /* qin e => qi ne */
+ { &pinyin_table[439], &pinyin_table[129], &pinyin_table[429], &pinyin_table[368], }, /* qin ei => qi nei */
+ { &pinyin_table[440], &pinyin_table[5], &pinyin_table[439], &pinyin_table[166], }, /* qing ang => qin gang */
+ { &pinyin_table[440], &pinyin_table[6], &pinyin_table[439], &pinyin_table[167], }, /* qing ao => qin gao */
+ { &pinyin_table[440], &pinyin_table[128], &pinyin_table[439], &pinyin_table[168], }, /* qing e => qin ge */
+ { &pinyin_table[440], &pinyin_table[129], &pinyin_table[439], &pinyin_table[170], }, /* qing ei => qin gei */
+ { &pinyin_table[440], &pinyin_table[130], &pinyin_table[439], &pinyin_table[172], }, /* qing en => qin gen */
+ { &pinyin_table[440], &pinyin_table[402], &pinyin_table[439], &pinyin_table[178], }, /* qing ou => qin gou */
+ { &pinyin_table[449], &pinyin_table[0], &pinyin_table[448], &pinyin_table[161], }, /* quang a => quan ga */
+ { &pinyin_table[449], &pinyin_table[2], &pinyin_table[448], &pinyin_table[163], }, /* quang ai => quan gai */
+ { &pinyin_table[449], &pinyin_table[4], &pinyin_table[448], &pinyin_table[165], }, /* quang an => quan gan */
+ { &pinyin_table[449], &pinyin_table[5], &pinyin_table[448], &pinyin_table[166], }, /* quang ang => quan gang */
+ { &pinyin_table[449], &pinyin_table[6], &pinyin_table[448], &pinyin_table[167], }, /* quang ao => quan gao */
+ { &pinyin_table[449], &pinyin_table[128], &pinyin_table[448], &pinyin_table[168], }, /* quang e => quan ge */
+ { &pinyin_table[449], &pinyin_table[129], &pinyin_table[448], &pinyin_table[170], }, /* quang ei => quan gei */
+ { &pinyin_table[449], &pinyin_table[130], &pinyin_table[448], &pinyin_table[172], }, /* quang en => quan gen */
+ { &pinyin_table[449], &pinyin_table[402], &pinyin_table[448], &pinyin_table[178], }, /* quang ou => quan gou */
+ { &pinyin_table[450], &pinyin_table[459], &pinyin_table[447], &pinyin_table[131], }, /* que r => qu er */
+ { &pinyin_table[451], &pinyin_table[0], &pinyin_table[450], &pinyin_table[359], }, /* quen a => que na */
+ { &pinyin_table[451], &pinyin_table[2], &pinyin_table[450], &pinyin_table[361], }, /* quen ai => que nai */
+ { &pinyin_table[451], &pinyin_table[4], &pinyin_table[450], &pinyin_table[363], }, /* quen an => que nan */
+ { &pinyin_table[451], &pinyin_table[5], &pinyin_table[450], &pinyin_table[364], }, /* quen ang => que nang */
+ { &pinyin_table[451], &pinyin_table[6], &pinyin_table[450], &pinyin_table[365], }, /* quen ao => que nao */
+ { &pinyin_table[451], &pinyin_table[128], &pinyin_table[450], &pinyin_table[366], }, /* quen e => que ne */
+ { &pinyin_table[451], &pinyin_table[129], &pinyin_table[450], &pinyin_table[368], }, /* quen ei => que nei */
+ { &pinyin_table[451], &pinyin_table[130], &pinyin_table[450], &pinyin_table[370], }, /* quen en => que nen */
+ { &pinyin_table[451], &pinyin_table[402], &pinyin_table[450], &pinyin_table[391], }, /* quen ou => que nou */
+ { &pinyin_table[452], &pinyin_table[0], &pinyin_table[447], &pinyin_table[359], }, /* qun a => qu na */
+ { &pinyin_table[452], &pinyin_table[4], &pinyin_table[447], &pinyin_table[363], }, /* qun an => qu nan */
+ { &pinyin_table[452], &pinyin_table[5], &pinyin_table[447], &pinyin_table[364], }, /* qun ang => qu nang */
+ { &pinyin_table[452], &pinyin_table[6], &pinyin_table[447], &pinyin_table[365], }, /* qun ao => qu nao */
+ { &pinyin_table[452], &pinyin_table[128], &pinyin_table[447], &pinyin_table[366], }, /* qun e => qu ne */
+ { &pinyin_table[452], &pinyin_table[129], &pinyin_table[447], &pinyin_table[368], }, /* qun ei => qu nei */
+ { &pinyin_table[465], &pinyin_table[5], &pinyin_table[464], &pinyin_table[166], }, /* rang ang => ran gang */
+ { &pinyin_table[465], &pinyin_table[6], &pinyin_table[464], &pinyin_table[167], }, /* rang ao => ran gao */
+ { &pinyin_table[465], &pinyin_table[129], &pinyin_table[464], &pinyin_table[170], }, /* rang ei => ran gei */
+ { &pinyin_table[465], &pinyin_table[130], &pinyin_table[464], &pinyin_table[172], }, /* rang en => ran gen */
+ { &pinyin_table[471], &pinyin_table[6], &pinyin_table[467], &pinyin_table[365], }, /* ren ao => re nao */
+ { &pinyin_table[471], &pinyin_table[128], &pinyin_table[467], &pinyin_table[366], }, /* ren e => re ne */
+ { &pinyin_table[471], &pinyin_table[129], &pinyin_table[467], &pinyin_table[368], }, /* ren ei => re nei */
+ { &pinyin_table[472], &pinyin_table[0], &pinyin_table[471], &pinyin_table[161], }, /* reng a => ren ga */
+ { &pinyin_table[472], &pinyin_table[2], &pinyin_table[471], &pinyin_table[163], }, /* reng ai => ren gai */
+ { &pinyin_table[472], &pinyin_table[4], &pinyin_table[471], &pinyin_table[165], }, /* reng an => ren gan */
+ { &pinyin_table[472], &pinyin_table[5], &pinyin_table[471], &pinyin_table[166], }, /* reng ang => ren gang */
+ { &pinyin_table[472], &pinyin_table[6], &pinyin_table[471], &pinyin_table[167], }, /* reng ao => ren gao */
+ { &pinyin_table[472], &pinyin_table[128], &pinyin_table[471], &pinyin_table[168], }, /* reng e => ren ge */
+ { &pinyin_table[472], &pinyin_table[129], &pinyin_table[471], &pinyin_table[170], }, /* reng ei => ren gei */
+ { &pinyin_table[472], &pinyin_table[130], &pinyin_table[471], &pinyin_table[172], }, /* reng en => ren gen */
+ { &pinyin_table[472], &pinyin_table[402], &pinyin_table[471], &pinyin_table[178], }, /* reng ou => ren gou */
+ { &pinyin_table[478], &pinyin_table[459], &pinyin_table[473], &pinyin_table[131], }, /* rie r => ri er */
+ { &pinyin_table[479], &pinyin_table[0], &pinyin_table[473], &pinyin_table[359], }, /* rin a => ri na */
+ { &pinyin_table[479], &pinyin_table[2], &pinyin_table[473], &pinyin_table[361], }, /* rin ai => ri nai */
+ { &pinyin_table[479], &pinyin_table[4], &pinyin_table[473], &pinyin_table[363], }, /* rin an => ri nan */
+ { &pinyin_table[479], &pinyin_table[5], &pinyin_table[473], &pinyin_table[364], }, /* rin ang => ri nang */
+ { &pinyin_table[479], &pinyin_table[6], &pinyin_table[473], &pinyin_table[365], }, /* rin ao => ri nao */
+ { &pinyin_table[479], &pinyin_table[128], &pinyin_table[473], &pinyin_table[366], }, /* rin e => ri ne */
+ { &pinyin_table[479], &pinyin_table[129], &pinyin_table[473], &pinyin_table[368], }, /* rin ei => ri nei */
+ { &pinyin_table[479], &pinyin_table[130], &pinyin_table[473], &pinyin_table[370], }, /* rin en => ri nen */
+ { &pinyin_table[479], &pinyin_table[402], &pinyin_table[473], &pinyin_table[391], }, /* rin ou => ri nou */
+ { &pinyin_table[491], &pinyin_table[0], &pinyin_table[490], &pinyin_table[161], }, /* ruang a => ruan ga */
+ { &pinyin_table[491], &pinyin_table[2], &pinyin_table[490], &pinyin_table[163], }, /* ruang ai => ruan gai */
+ { &pinyin_table[491], &pinyin_table[4], &pinyin_table[490], &pinyin_table[165], }, /* ruang an => ruan gan */
+ { &pinyin_table[491], &pinyin_table[5], &pinyin_table[490], &pinyin_table[166], }, /* ruang ang => ruan gang */
+ { &pinyin_table[491], &pinyin_table[6], &pinyin_table[490], &pinyin_table[167], }, /* ruang ao => ruan gao */
+ { &pinyin_table[491], &pinyin_table[128], &pinyin_table[490], &pinyin_table[168], }, /* ruang e => ruan ge */
+ { &pinyin_table[491], &pinyin_table[129], &pinyin_table[490], &pinyin_table[170], }, /* ruang ei => ruan gei */
+ { &pinyin_table[491], &pinyin_table[130], &pinyin_table[490], &pinyin_table[172], }, /* ruang en => ruan gen */
+ { &pinyin_table[491], &pinyin_table[402], &pinyin_table[490], &pinyin_table[178], }, /* ruang ou => ruan gou */
+ { &pinyin_table[492], &pinyin_table[459], &pinyin_table[489], &pinyin_table[131], }, /* rue r => ru er */
+ { &pinyin_table[496], &pinyin_table[0], &pinyin_table[489], &pinyin_table[359], }, /* run a => ru na */
+ { &pinyin_table[496], &pinyin_table[2], &pinyin_table[489], &pinyin_table[361], }, /* run ai => ru nai */
+ { &pinyin_table[496], &pinyin_table[4], &pinyin_table[489], &pinyin_table[363], }, /* run an => ru nan */
+ { &pinyin_table[496], &pinyin_table[5], &pinyin_table[489], &pinyin_table[364], }, /* run ang => ru nang */
+ { &pinyin_table[496], &pinyin_table[6], &pinyin_table[489], &pinyin_table[365], }, /* run ao => ru nao */
+ { &pinyin_table[496], &pinyin_table[128], &pinyin_table[489], &pinyin_table[366], }, /* run e => ru ne */
+ { &pinyin_table[496], &pinyin_table[129], &pinyin_table[489], &pinyin_table[368], }, /* run ei => ru nei */
+ { &pinyin_table[496], &pinyin_table[130], &pinyin_table[489], &pinyin_table[370], }, /* run en => ru nen */
+ { &pinyin_table[505], &pinyin_table[0], &pinyin_table[501], &pinyin_table[359], }, /* san a => sa na */
+ { &pinyin_table[505], &pinyin_table[129], &pinyin_table[501], &pinyin_table[368], }, /* san ei => sa nei */
+ { &pinyin_table[506], &pinyin_table[2], &pinyin_table[505], &pinyin_table[163], }, /* sang ai => san gai */
+ { &pinyin_table[506], &pinyin_table[4], &pinyin_table[505], &pinyin_table[165], }, /* sang an => san gan */
+ { &pinyin_table[506], &pinyin_table[5], &pinyin_table[505], &pinyin_table[166], }, /* sang ang => san gang */
+ { &pinyin_table[506], &pinyin_table[6], &pinyin_table[505], &pinyin_table[167], }, /* sang ao => san gao */
+ { &pinyin_table[506], &pinyin_table[128], &pinyin_table[505], &pinyin_table[168], }, /* sang e => san ge */
+ { &pinyin_table[506], &pinyin_table[129], &pinyin_table[505], &pinyin_table[170], }, /* sang ei => san gei */
+ { &pinyin_table[506], &pinyin_table[130], &pinyin_table[505], &pinyin_table[172], }, /* sang en => san gen */
+ { &pinyin_table[512], &pinyin_table[0], &pinyin_table[508], &pinyin_table[359], }, /* sen a => se na */
+ { &pinyin_table[512], &pinyin_table[2], &pinyin_table[508], &pinyin_table[361], }, /* sen ai => se nai */
+ { &pinyin_table[512], &pinyin_table[4], &pinyin_table[508], &pinyin_table[363], }, /* sen an => se nan */
+ { &pinyin_table[512], &pinyin_table[5], &pinyin_table[508], &pinyin_table[364], }, /* sen ang => se nang */
+ { &pinyin_table[512], &pinyin_table[6], &pinyin_table[508], &pinyin_table[365], }, /* sen ao => se nao */
+ { &pinyin_table[512], &pinyin_table[128], &pinyin_table[508], &pinyin_table[366], }, /* sen e => se ne */
+ { &pinyin_table[512], &pinyin_table[129], &pinyin_table[508], &pinyin_table[368], }, /* sen ei => se nei */
+ { &pinyin_table[513], &pinyin_table[2], &pinyin_table[512], &pinyin_table[163], }, /* seng ai => sen gai */
+ { &pinyin_table[513], &pinyin_table[4], &pinyin_table[512], &pinyin_table[165], }, /* seng an => sen gan */
+ { &pinyin_table[513], &pinyin_table[5], &pinyin_table[512], &pinyin_table[166], }, /* seng ang => sen gang */
+ { &pinyin_table[513], &pinyin_table[6], &pinyin_table[512], &pinyin_table[167], }, /* seng ao => sen gao */
+ { &pinyin_table[513], &pinyin_table[128], &pinyin_table[512], &pinyin_table[168], }, /* seng e => sen ge */
+ { &pinyin_table[513], &pinyin_table[129], &pinyin_table[512], &pinyin_table[170], }, /* seng ei => sen gei */
+ { &pinyin_table[513], &pinyin_table[130], &pinyin_table[512], &pinyin_table[172], }, /* seng en => sen gen */
+ { &pinyin_table[513], &pinyin_table[402], &pinyin_table[512], &pinyin_table[178], }, /* seng ou => sen gou */
+ { &pinyin_table[519], &pinyin_table[0], &pinyin_table[515], &pinyin_table[359], }, /* shan a => sha na */
+ { &pinyin_table[519], &pinyin_table[4], &pinyin_table[515], &pinyin_table[363], }, /* shan an => sha nan */
+ { &pinyin_table[519], &pinyin_table[129], &pinyin_table[515], &pinyin_table[368], }, /* shan ei => sha nei */
+ { &pinyin_table[520], &pinyin_table[2], &pinyin_table[519], &pinyin_table[163], }, /* shang ai => shan gai */
+ { &pinyin_table[520], &pinyin_table[5], &pinyin_table[519], &pinyin_table[166], }, /* shang ang => shan gang */
+ { &pinyin_table[520], &pinyin_table[6], &pinyin_table[519], &pinyin_table[167], }, /* shang ao => shan gao */
+ { &pinyin_table[520], &pinyin_table[128], &pinyin_table[519], &pinyin_table[168], }, /* shang e => shan ge */
+ { &pinyin_table[520], &pinyin_table[129], &pinyin_table[519], &pinyin_table[170], }, /* shang ei => shan gei */
+ { &pinyin_table[520], &pinyin_table[130], &pinyin_table[519], &pinyin_table[172], }, /* shang en => shan gen */
+ { &pinyin_table[520], &pinyin_table[402], &pinyin_table[519], &pinyin_table[178], }, /* shang ou => shan gou */
+ { &pinyin_table[526], &pinyin_table[129], &pinyin_table[522], &pinyin_table[368], }, /* shen ei => she nei */
+ { &pinyin_table[527], &pinyin_table[4], &pinyin_table[526], &pinyin_table[165], }, /* sheng an => shen gan */
+ { &pinyin_table[527], &pinyin_table[5], &pinyin_table[526], &pinyin_table[166], }, /* sheng ang => shen gang */
+ { &pinyin_table[527], &pinyin_table[6], &pinyin_table[526], &pinyin_table[167], }, /* sheng ao => shen gao */
+ { &pinyin_table[527], &pinyin_table[128], &pinyin_table[526], &pinyin_table[168], }, /* sheng e => shen ge */
+ { &pinyin_table[527], &pinyin_table[129], &pinyin_table[526], &pinyin_table[170], }, /* sheng ei => shen gei */
+ { &pinyin_table[527], &pinyin_table[402], &pinyin_table[526], &pinyin_table[178], }, /* sheng ou => shen gou */
+ { &pinyin_table[537], &pinyin_table[0], &pinyin_table[533], &pinyin_table[359], }, /* shuan a => shua na */
+ { &pinyin_table[537], &pinyin_table[2], &pinyin_table[533], &pinyin_table[361], }, /* shuan ai => shua nai */
+ { &pinyin_table[537], &pinyin_table[4], &pinyin_table[533], &pinyin_table[363], }, /* shuan an => shua nan */
+ { &pinyin_table[537], &pinyin_table[5], &pinyin_table[533], &pinyin_table[364], }, /* shuan ang => shua nang */
+ { &pinyin_table[537], &pinyin_table[6], &pinyin_table[533], &pinyin_table[365], }, /* shuan ao => shua nao */
+ { &pinyin_table[537], &pinyin_table[128], &pinyin_table[533], &pinyin_table[366], }, /* shuan e => shua ne */
+ { &pinyin_table[537], &pinyin_table[129], &pinyin_table[533], &pinyin_table[368], }, /* shuan ei => shua nei */
+ { &pinyin_table[538], &pinyin_table[129], &pinyin_table[537], &pinyin_table[170], }, /* shuang ei => shuan gei */
+ { &pinyin_table[542], &pinyin_table[4], &pinyin_table[532], &pinyin_table[363], }, /* shun an => shu nan */
+ { &pinyin_table[542], &pinyin_table[5], &pinyin_table[532], &pinyin_table[364], }, /* shun ang => shu nang */
+ { &pinyin_table[542], &pinyin_table[6], &pinyin_table[532], &pinyin_table[365], }, /* shun ao => shu nao */
+ { &pinyin_table[542], &pinyin_table[128], &pinyin_table[532], &pinyin_table[366], }, /* shun e => shu ne */
+ { &pinyin_table[542], &pinyin_table[129], &pinyin_table[532], &pinyin_table[368], }, /* shun ei => shu nei */
+ { &pinyin_table[554], &pinyin_table[0], &pinyin_table[553], &pinyin_table[161], }, /* suang a => suan ga */
+ { &pinyin_table[554], &pinyin_table[2], &pinyin_table[553], &pinyin_table[163], }, /* suang ai => suan gai */
+ { &pinyin_table[554], &pinyin_table[4], &pinyin_table[553], &pinyin_table[165], }, /* suang an => suan gan */
+ { &pinyin_table[554], &pinyin_table[5], &pinyin_table[553], &pinyin_table[166], }, /* suang ang => suan gang */
+ { &pinyin_table[554], &pinyin_table[6], &pinyin_table[553], &pinyin_table[167], }, /* suang ao => suan gao */
+ { &pinyin_table[554], &pinyin_table[128], &pinyin_table[553], &pinyin_table[168], }, /* suang e => suan ge */
+ { &pinyin_table[554], &pinyin_table[129], &pinyin_table[553], &pinyin_table[170], }, /* suang ei => suan gei */
+ { &pinyin_table[554], &pinyin_table[130], &pinyin_table[553], &pinyin_table[172], }, /* suang en => suan gen */
+ { &pinyin_table[554], &pinyin_table[402], &pinyin_table[553], &pinyin_table[178], }, /* suang ou => suan gou */
+ { &pinyin_table[558], &pinyin_table[0], &pinyin_table[550], &pinyin_table[359], }, /* sun a => su na */
+ { &pinyin_table[558], &pinyin_table[4], &pinyin_table[550], &pinyin_table[363], }, /* sun an => su nan */
+ { &pinyin_table[558], &pinyin_table[5], &pinyin_table[550], &pinyin_table[364], }, /* sun ang => su nang */
+ { &pinyin_table[558], &pinyin_table[6], &pinyin_table[550], &pinyin_table[365], }, /* sun ao => su nao */
+ { &pinyin_table[558], &pinyin_table[128], &pinyin_table[550], &pinyin_table[366], }, /* sun e => su ne */
+ { &pinyin_table[558], &pinyin_table[129], &pinyin_table[550], &pinyin_table[368], }, /* sun ei => su nei */
+ { &pinyin_table[565], &pinyin_table[0], &pinyin_table[561], &pinyin_table[359], }, /* tan a => ta na */
+ { &pinyin_table[565], &pinyin_table[5], &pinyin_table[561], &pinyin_table[364], }, /* tan ang => ta nang */
+ { &pinyin_table[565], &pinyin_table[6], &pinyin_table[561], &pinyin_table[365], }, /* tan ao => ta nao */
+ { &pinyin_table[565], &pinyin_table[128], &pinyin_table[561], &pinyin_table[366], }, /* tan e => ta ne */
+ { &pinyin_table[565], &pinyin_table[129], &pinyin_table[561], &pinyin_table[368], }, /* tan ei => ta nei */
+ { &pinyin_table[566], &pinyin_table[2], &pinyin_table[565], &pinyin_table[163], }, /* tang ai => tan gai */
+ { &pinyin_table[566], &pinyin_table[4], &pinyin_table[565], &pinyin_table[165], }, /* tang an => tan gan */
+ { &pinyin_table[566], &pinyin_table[5], &pinyin_table[565], &pinyin_table[166], }, /* tang ang => tan gang */
+ { &pinyin_table[566], &pinyin_table[128], &pinyin_table[565], &pinyin_table[168], }, /* tang e => tan ge */
+ { &pinyin_table[566], &pinyin_table[129], &pinyin_table[565], &pinyin_table[170], }, /* tang ei => tan gei */
+ { &pinyin_table[566], &pinyin_table[402], &pinyin_table[565], &pinyin_table[178], }, /* tang ou => tan gou */
+ { &pinyin_table[571], &pinyin_table[0], &pinyin_table[568], &pinyin_table[359], }, /* ten a => te na */
+ { &pinyin_table[571], &pinyin_table[2], &pinyin_table[568], &pinyin_table[361], }, /* ten ai => te nai */
+ { &pinyin_table[571], &pinyin_table[4], &pinyin_table[568], &pinyin_table[363], }, /* ten an => te nan */
+ { &pinyin_table[571], &pinyin_table[5], &pinyin_table[568], &pinyin_table[364], }, /* ten ang => te nang */
+ { &pinyin_table[571], &pinyin_table[6], &pinyin_table[568], &pinyin_table[365], }, /* ten ao => te nao */
+ { &pinyin_table[571], &pinyin_table[128], &pinyin_table[568], &pinyin_table[366], }, /* ten e => te ne */
+ { &pinyin_table[571], &pinyin_table[129], &pinyin_table[568], &pinyin_table[368], }, /* ten ei => te nei */
+ { &pinyin_table[571], &pinyin_table[130], &pinyin_table[568], &pinyin_table[370], }, /* ten en => te nen */
+ { &pinyin_table[571], &pinyin_table[402], &pinyin_table[568], &pinyin_table[391], }, /* ten ou => te nou */
+ { &pinyin_table[575], &pinyin_table[0], &pinyin_table[574], &pinyin_table[161], }, /* tiang a => tian ga */
+ { &pinyin_table[575], &pinyin_table[2], &pinyin_table[574], &pinyin_table[163], }, /* tiang ai => tian gai */
+ { &pinyin_table[575], &pinyin_table[4], &pinyin_table[574], &pinyin_table[165], }, /* tiang an => tian gan */
+ { &pinyin_table[575], &pinyin_table[5], &pinyin_table[574], &pinyin_table[166], }, /* tiang ang => tian gang */
+ { &pinyin_table[575], &pinyin_table[6], &pinyin_table[574], &pinyin_table[167], }, /* tiang ao => tian gao */
+ { &pinyin_table[575], &pinyin_table[128], &pinyin_table[574], &pinyin_table[168], }, /* tiang e => tian ge */
+ { &pinyin_table[575], &pinyin_table[129], &pinyin_table[574], &pinyin_table[170], }, /* tiang ei => tian gei */
+ { &pinyin_table[575], &pinyin_table[130], &pinyin_table[574], &pinyin_table[172], }, /* tiang en => tian gen */
+ { &pinyin_table[575], &pinyin_table[402], &pinyin_table[574], &pinyin_table[178], }, /* tiang ou => tian gou */
+ { &pinyin_table[577], &pinyin_table[459], &pinyin_table[573], &pinyin_table[131], }, /* tie r => ti er */
+ { &pinyin_table[580], &pinyin_table[0], &pinyin_table[573], &pinyin_table[359], }, /* tin a => ti na */
+ { &pinyin_table[580], &pinyin_table[2], &pinyin_table[573], &pinyin_table[361], }, /* tin ai => ti nai */
+ { &pinyin_table[580], &pinyin_table[4], &pinyin_table[573], &pinyin_table[363], }, /* tin an => ti nan */
+ { &pinyin_table[580], &pinyin_table[5], &pinyin_table[573], &pinyin_table[364], }, /* tin ang => ti nang */
+ { &pinyin_table[580], &pinyin_table[6], &pinyin_table[573], &pinyin_table[365], }, /* tin ao => ti nao */
+ { &pinyin_table[580], &pinyin_table[128], &pinyin_table[573], &pinyin_table[366], }, /* tin e => ti ne */
+ { &pinyin_table[580], &pinyin_table[129], &pinyin_table[573], &pinyin_table[368], }, /* tin ei => ti nei */
+ { &pinyin_table[580], &pinyin_table[130], &pinyin_table[573], &pinyin_table[370], }, /* tin en => ti nen */
+ { &pinyin_table[580], &pinyin_table[402], &pinyin_table[573], &pinyin_table[391], }, /* tin ou => ti nou */
+ { &pinyin_table[589], &pinyin_table[0], &pinyin_table[588], &pinyin_table[161], }, /* tuang a => tuan ga */
+ { &pinyin_table[589], &pinyin_table[2], &pinyin_table[588], &pinyin_table[163], }, /* tuang ai => tuan gai */
+ { &pinyin_table[589], &pinyin_table[4], &pinyin_table[588], &pinyin_table[165], }, /* tuang an => tuan gan */
+ { &pinyin_table[589], &pinyin_table[5], &pinyin_table[588], &pinyin_table[166], }, /* tuang ang => tuan gang */
+ { &pinyin_table[589], &pinyin_table[6], &pinyin_table[588], &pinyin_table[167], }, /* tuang ao => tuan gao */
+ { &pinyin_table[589], &pinyin_table[128], &pinyin_table[588], &pinyin_table[168], }, /* tuang e => tuan ge */
+ { &pinyin_table[589], &pinyin_table[129], &pinyin_table[588], &pinyin_table[170], }, /* tuang ei => tuan gei */
+ { &pinyin_table[589], &pinyin_table[130], &pinyin_table[588], &pinyin_table[172], }, /* tuang en => tuan gen */
+ { &pinyin_table[589], &pinyin_table[402], &pinyin_table[588], &pinyin_table[178], }, /* tuang ou => tuan gou */
+ { &pinyin_table[593], &pinyin_table[0], &pinyin_table[587], &pinyin_table[359], }, /* tun a => tu na */
+ { &pinyin_table[593], &pinyin_table[2], &pinyin_table[587], &pinyin_table[361], }, /* tun ai => tu nai */
+ { &pinyin_table[593], &pinyin_table[4], &pinyin_table[587], &pinyin_table[363], }, /* tun an => tu nan */
+ { &pinyin_table[593], &pinyin_table[5], &pinyin_table[587], &pinyin_table[364], }, /* tun ang => tu nang */
+ { &pinyin_table[593], &pinyin_table[6], &pinyin_table[587], &pinyin_table[365], }, /* tun ao => tu nao */
+ { &pinyin_table[593], &pinyin_table[128], &pinyin_table[587], &pinyin_table[366], }, /* tun e => tu ne */
+ { &pinyin_table[593], &pinyin_table[129], &pinyin_table[587], &pinyin_table[368], }, /* tun ei => tu nei */
+ { &pinyin_table[593], &pinyin_table[130], &pinyin_table[587], &pinyin_table[370], }, /* tun en => tu nen */
+ { &pinyin_table[600], &pinyin_table[129], &pinyin_table[596], &pinyin_table[368], }, /* wan ei => wa nei */
+ { &pinyin_table[601], &pinyin_table[5], &pinyin_table[600], &pinyin_table[166], }, /* wang ang => wan gang */
+ { &pinyin_table[601], &pinyin_table[6], &pinyin_table[600], &pinyin_table[167], }, /* wang ao => wan gao */
+ { &pinyin_table[601], &pinyin_table[128], &pinyin_table[600], &pinyin_table[168], }, /* wang e => wan ge */
+ { &pinyin_table[601], &pinyin_table[129], &pinyin_table[600], &pinyin_table[170], }, /* wang ei => wan gei */
+ { &pinyin_table[601], &pinyin_table[402], &pinyin_table[600], &pinyin_table[178], }, /* wang ou => wan gou */
+ { &pinyin_table[606], &pinyin_table[0], &pinyin_table[605], &pinyin_table[161], }, /* weng a => wen ga */
+ { &pinyin_table[606], &pinyin_table[2], &pinyin_table[605], &pinyin_table[163], }, /* weng ai => wen gai */
+ { &pinyin_table[606], &pinyin_table[4], &pinyin_table[605], &pinyin_table[165], }, /* weng an => wen gan */
+ { &pinyin_table[606], &pinyin_table[5], &pinyin_table[605], &pinyin_table[166], }, /* weng ang => wen gang */
+ { &pinyin_table[606], &pinyin_table[6], &pinyin_table[605], &pinyin_table[167], }, /* weng ao => wen gao */
+ { &pinyin_table[606], &pinyin_table[128], &pinyin_table[605], &pinyin_table[168], }, /* weng e => wen ge */
+ { &pinyin_table[606], &pinyin_table[129], &pinyin_table[605], &pinyin_table[170], }, /* weng ei => wen gei */
+ { &pinyin_table[606], &pinyin_table[130], &pinyin_table[605], &pinyin_table[172], }, /* weng en => wen gen */
+ { &pinyin_table[606], &pinyin_table[402], &pinyin_table[605], &pinyin_table[178], }, /* weng ou => wen gou */
+ { &pinyin_table[614], &pinyin_table[0], &pinyin_table[611], &pinyin_table[359], }, /* xian a => xia na */
+ { &pinyin_table[614], &pinyin_table[5], &pinyin_table[611], &pinyin_table[364], }, /* xian ang => xia nang */
+ { &pinyin_table[614], &pinyin_table[6], &pinyin_table[611], &pinyin_table[365], }, /* xian ao => xia nao */
+ { &pinyin_table[614], &pinyin_table[129], &pinyin_table[611], &pinyin_table[368], }, /* xian ei => xia nei */
+ { &pinyin_table[615], &pinyin_table[5], &pinyin_table[614], &pinyin_table[166], }, /* xiang ang => xian gang */
+ { &pinyin_table[615], &pinyin_table[6], &pinyin_table[614], &pinyin_table[167], }, /* xiang ao => xian gao */
+ { &pinyin_table[615], &pinyin_table[129], &pinyin_table[614], &pinyin_table[170], }, /* xiang ei => xian gei */
+ { &pinyin_table[615], &pinyin_table[130], &pinyin_table[614], &pinyin_table[172], }, /* xiang en => xian gen */
+ { &pinyin_table[615], &pinyin_table[402], &pinyin_table[614], &pinyin_table[178], }, /* xiang ou => xian gou */
+ { &pinyin_table[617], &pinyin_table[459], &pinyin_table[610], &pinyin_table[131], }, /* xie r => xi er */
+ { &pinyin_table[620], &pinyin_table[0], &pinyin_table[610], &pinyin_table[359], }, /* xin a => xi na */
+ { &pinyin_table[620], &pinyin_table[4], &pinyin_table[610], &pinyin_table[363], }, /* xin an => xi nan */
+ { &pinyin_table[620], &pinyin_table[128], &pinyin_table[610], &pinyin_table[366], }, /* xin e => xi ne */
+ { &pinyin_table[620], &pinyin_table[129], &pinyin_table[610], &pinyin_table[368], }, /* xin ei => xi nei */
+ { &pinyin_table[620], &pinyin_table[130], &pinyin_table[610], &pinyin_table[370], }, /* xin en => xi nen */
+ { &pinyin_table[621], &pinyin_table[4], &pinyin_table[620], &pinyin_table[165], }, /* xing an => xin gan */
+ { &pinyin_table[621], &pinyin_table[5], &pinyin_table[620], &pinyin_table[166], }, /* xing ang => xin gang */
+ { &pinyin_table[621], &pinyin_table[6], &pinyin_table[620], &pinyin_table[167], }, /* xing ao => xin gao */
+ { &pinyin_table[621], &pinyin_table[128], &pinyin_table[620], &pinyin_table[168], }, /* xing e => xin ge */
+ { &pinyin_table[621], &pinyin_table[129], &pinyin_table[620], &pinyin_table[170], }, /* xing ei => xin gei */
+ { &pinyin_table[621], &pinyin_table[130], &pinyin_table[620], &pinyin_table[172], }, /* xing en => xin gen */
+ { &pinyin_table[621], &pinyin_table[402], &pinyin_table[620], &pinyin_table[178], }, /* xing ou => xin gou */
+ { &pinyin_table[630], &pinyin_table[0], &pinyin_table[629], &pinyin_table[161], }, /* xuang a => xuan ga */
+ { &pinyin_table[630], &pinyin_table[2], &pinyin_table[629], &pinyin_table[163], }, /* xuang ai => xuan gai */
+ { &pinyin_table[630], &pinyin_table[4], &pinyin_table[629], &pinyin_table[165], }, /* xuang an => xuan gan */
+ { &pinyin_table[630], &pinyin_table[5], &pinyin_table[629], &pinyin_table[166], }, /* xuang ang => xuan gang */
+ { &pinyin_table[630], &pinyin_table[6], &pinyin_table[629], &pinyin_table[167], }, /* xuang ao => xuan gao */
+ { &pinyin_table[630], &pinyin_table[128], &pinyin_table[629], &pinyin_table[168], }, /* xuang e => xuan ge */
+ { &pinyin_table[630], &pinyin_table[129], &pinyin_table[629], &pinyin_table[170], }, /* xuang ei => xuan gei */
+ { &pinyin_table[630], &pinyin_table[130], &pinyin_table[629], &pinyin_table[172], }, /* xuang en => xuan gen */
+ { &pinyin_table[630], &pinyin_table[402], &pinyin_table[629], &pinyin_table[178], }, /* xuang ou => xuan gou */
+ { &pinyin_table[631], &pinyin_table[459], &pinyin_table[628], &pinyin_table[131], }, /* xue r => xu er */
+ { &pinyin_table[632], &pinyin_table[0], &pinyin_table[631], &pinyin_table[359], }, /* xuen a => xue na */
+ { &pinyin_table[632], &pinyin_table[2], &pinyin_table[631], &pinyin_table[361], }, /* xuen ai => xue nai */
+ { &pinyin_table[632], &pinyin_table[4], &pinyin_table[631], &pinyin_table[363], }, /* xuen an => xue nan */
+ { &pinyin_table[632], &pinyin_table[5], &pinyin_table[631], &pinyin_table[364], }, /* xuen ang => xue nang */
+ { &pinyin_table[632], &pinyin_table[6], &pinyin_table[631], &pinyin_table[365], }, /* xuen ao => xue nao */
+ { &pinyin_table[632], &pinyin_table[128], &pinyin_table[631], &pinyin_table[366], }, /* xuen e => xue ne */
+ { &pinyin_table[632], &pinyin_table[129], &pinyin_table[631], &pinyin_table[368], }, /* xuen ei => xue nei */
+ { &pinyin_table[632], &pinyin_table[130], &pinyin_table[631], &pinyin_table[370], }, /* xuen en => xue nen */
+ { &pinyin_table[632], &pinyin_table[402], &pinyin_table[631], &pinyin_table[391], }, /* xuen ou => xue nou */
+ { &pinyin_table[633], &pinyin_table[5], &pinyin_table[628], &pinyin_table[364], }, /* xun ang => xu nang */
+ { &pinyin_table[633], &pinyin_table[6], &pinyin_table[628], &pinyin_table[365], }, /* xun ao => xu nao */
+ { &pinyin_table[633], &pinyin_table[128], &pinyin_table[628], &pinyin_table[366], }, /* xun e => xu ne */
+ { &pinyin_table[633], &pinyin_table[129], &pinyin_table[628], &pinyin_table[368], }, /* xun ei => xu nei */
+ { &pinyin_table[644], &pinyin_table[0], &pinyin_table[641], &pinyin_table[359], }, /* yan a => ya na */
+ { &pinyin_table[644], &pinyin_table[128], &pinyin_table[641], &pinyin_table[366], }, /* yan e => ya ne */
+ { &pinyin_table[644], &pinyin_table[129], &pinyin_table[641], &pinyin_table[368], }, /* yan ei => ya nei */
+ { &pinyin_table[645], &pinyin_table[2], &pinyin_table[644], &pinyin_table[163], }, /* yang ai => yan gai */
+ { &pinyin_table[645], &pinyin_table[4], &pinyin_table[644], &pinyin_table[165], }, /* yang an => yan gan */
+ { &pinyin_table[645], &pinyin_table[5], &pinyin_table[644], &pinyin_table[166], }, /* yang ang => yan gang */
+ { &pinyin_table[645], &pinyin_table[6], &pinyin_table[644], &pinyin_table[167], }, /* yang ao => yan gao */
+ { &pinyin_table[645], &pinyin_table[128], &pinyin_table[644], &pinyin_table[168], }, /* yang e => yan ge */
+ { &pinyin_table[645], &pinyin_table[129], &pinyin_table[644], &pinyin_table[170], }, /* yang ei => yan gei */
+ { &pinyin_table[645], &pinyin_table[402], &pinyin_table[644], &pinyin_table[178], }, /* yang ou => yan gou */
+ { &pinyin_table[651], &pinyin_table[0], &pinyin_table[648], &pinyin_table[359], }, /* yin a => yi na */
+ { &pinyin_table[651], &pinyin_table[2], &pinyin_table[648], &pinyin_table[361], }, /* yin ai => yi nai */
+ { &pinyin_table[651], &pinyin_table[4], &pinyin_table[648], &pinyin_table[363], }, /* yin an => yi nan */
+ { &pinyin_table[651], &pinyin_table[5], &pinyin_table[648], &pinyin_table[364], }, /* yin ang => yi nang */
+ { &pinyin_table[651], &pinyin_table[6], &pinyin_table[648], &pinyin_table[365], }, /* yin ao => yi nao */
+ { &pinyin_table[651], &pinyin_table[129], &pinyin_table[648], &pinyin_table[368], }, /* yin ei => yi nei */
+ { &pinyin_table[652], &pinyin_table[2], &pinyin_table[651], &pinyin_table[163], }, /* ying ai => yin gai */
+ { &pinyin_table[652], &pinyin_table[5], &pinyin_table[651], &pinyin_table[166], }, /* ying ang => yin gang */
+ { &pinyin_table[652], &pinyin_table[6], &pinyin_table[651], &pinyin_table[167], }, /* ying ao => yin gao */
+ { &pinyin_table[652], &pinyin_table[129], &pinyin_table[651], &pinyin_table[170], }, /* ying ei => yin gei */
+ { &pinyin_table[652], &pinyin_table[130], &pinyin_table[651], &pinyin_table[172], }, /* ying en => yin gen */
+ { &pinyin_table[652], &pinyin_table[402], &pinyin_table[651], &pinyin_table[178], }, /* ying ou => yin gou */
+ { &pinyin_table[656], &pinyin_table[0], &pinyin_table[653], &pinyin_table[359], }, /* yon a => yo na */
+ { &pinyin_table[656], &pinyin_table[2], &pinyin_table[653], &pinyin_table[361], }, /* yon ai => yo nai */
+ { &pinyin_table[656], &pinyin_table[4], &pinyin_table[653], &pinyin_table[363], }, /* yon an => yo nan */
+ { &pinyin_table[656], &pinyin_table[5], &pinyin_table[653], &pinyin_table[364], }, /* yon ang => yo nang */
+ { &pinyin_table[656], &pinyin_table[6], &pinyin_table[653], &pinyin_table[365], }, /* yon ao => yo nao */
+ { &pinyin_table[656], &pinyin_table[128], &pinyin_table[653], &pinyin_table[366], }, /* yon e => yo ne */
+ { &pinyin_table[656], &pinyin_table[129], &pinyin_table[653], &pinyin_table[368], }, /* yon ei => yo nei */
+ { &pinyin_table[656], &pinyin_table[130], &pinyin_table[653], &pinyin_table[370], }, /* yon en => yo nen */
+ { &pinyin_table[656], &pinyin_table[402], &pinyin_table[653], &pinyin_table[391], }, /* yon ou => yo nou */
+ { &pinyin_table[661], &pinyin_table[0], &pinyin_table[660], &pinyin_table[161], }, /* yuang a => yuan ga */
+ { &pinyin_table[661], &pinyin_table[2], &pinyin_table[660], &pinyin_table[163], }, /* yuang ai => yuan gai */
+ { &pinyin_table[661], &pinyin_table[4], &pinyin_table[660], &pinyin_table[165], }, /* yuang an => yuan gan */
+ { &pinyin_table[661], &pinyin_table[5], &pinyin_table[660], &pinyin_table[166], }, /* yuang ang => yuan gang */
+ { &pinyin_table[661], &pinyin_table[6], &pinyin_table[660], &pinyin_table[167], }, /* yuang ao => yuan gao */
+ { &pinyin_table[661], &pinyin_table[128], &pinyin_table[660], &pinyin_table[168], }, /* yuang e => yuan ge */
+ { &pinyin_table[661], &pinyin_table[129], &pinyin_table[660], &pinyin_table[170], }, /* yuang ei => yuan gei */
+ { &pinyin_table[661], &pinyin_table[130], &pinyin_table[660], &pinyin_table[172], }, /* yuang en => yuan gen */
+ { &pinyin_table[661], &pinyin_table[402], &pinyin_table[660], &pinyin_table[178], }, /* yuang ou => yuan gou */
+ { &pinyin_table[662], &pinyin_table[459], &pinyin_table[659], &pinyin_table[131], }, /* yue r => yu er */
+ { &pinyin_table[663], &pinyin_table[0], &pinyin_table[662], &pinyin_table[359], }, /* yuen a => yue na */
+ { &pinyin_table[663], &pinyin_table[2], &pinyin_table[662], &pinyin_table[361], }, /* yuen ai => yue nai */
+ { &pinyin_table[663], &pinyin_table[4], &pinyin_table[662], &pinyin_table[363], }, /* yuen an => yue nan */
+ { &pinyin_table[663], &pinyin_table[5], &pinyin_table[662], &pinyin_table[364], }, /* yuen ang => yue nang */
+ { &pinyin_table[663], &pinyin_table[6], &pinyin_table[662], &pinyin_table[365], }, /* yuen ao => yue nao */
+ { &pinyin_table[663], &pinyin_table[128], &pinyin_table[662], &pinyin_table[366], }, /* yuen e => yue ne */
+ { &pinyin_table[663], &pinyin_table[129], &pinyin_table[662], &pinyin_table[368], }, /* yuen ei => yue nei */
+ { &pinyin_table[663], &pinyin_table[130], &pinyin_table[662], &pinyin_table[370], }, /* yuen en => yue nen */
+ { &pinyin_table[663], &pinyin_table[402], &pinyin_table[662], &pinyin_table[391], }, /* yuen ou => yue nou */
+ { &pinyin_table[664], &pinyin_table[0], &pinyin_table[659], &pinyin_table[359], }, /* yun a => yu na */
+ { &pinyin_table[664], &pinyin_table[2], &pinyin_table[659], &pinyin_table[361], }, /* yun ai => yu nai */
+ { &pinyin_table[664], &pinyin_table[4], &pinyin_table[659], &pinyin_table[363], }, /* yun an => yu nan */
+ { &pinyin_table[664], &pinyin_table[5], &pinyin_table[659], &pinyin_table[364], }, /* yun ang => yu nang */
+ { &pinyin_table[664], &pinyin_table[6], &pinyin_table[659], &pinyin_table[365], }, /* yun ao => yu nao */
+ { &pinyin_table[664], &pinyin_table[128], &pinyin_table[659], &pinyin_table[366], }, /* yun e => yu ne */
+ { &pinyin_table[664], &pinyin_table[129], &pinyin_table[659], &pinyin_table[368], }, /* yun ei => yu nei */
+ { &pinyin_table[676], &pinyin_table[0], &pinyin_table[672], &pinyin_table[359], }, /* zan a => za na */
+ { &pinyin_table[676], &pinyin_table[4], &pinyin_table[672], &pinyin_table[363], }, /* zan an => za nan */
+ { &pinyin_table[676], &pinyin_table[5], &pinyin_table[672], &pinyin_table[364], }, /* zan ang => za nang */
+ { &pinyin_table[676], &pinyin_table[6], &pinyin_table[672], &pinyin_table[365], }, /* zan ao => za nao */
+ { &pinyin_table[676], &pinyin_table[128], &pinyin_table[672], &pinyin_table[366], }, /* zan e => za ne */
+ { &pinyin_table[676], &pinyin_table[129], &pinyin_table[672], &pinyin_table[368], }, /* zan ei => za nei */
+ { &pinyin_table[677], &pinyin_table[4], &pinyin_table[676], &pinyin_table[165], }, /* zang an => zan gan */
+ { &pinyin_table[677], &pinyin_table[5], &pinyin_table[676], &pinyin_table[166], }, /* zang ang => zan gang */
+ { &pinyin_table[677], &pinyin_table[6], &pinyin_table[676], &pinyin_table[167], }, /* zang ao => zan gao */
+ { &pinyin_table[677], &pinyin_table[128], &pinyin_table[676], &pinyin_table[168], }, /* zang e => zan ge */
+ { &pinyin_table[677], &pinyin_table[129], &pinyin_table[676], &pinyin_table[170], }, /* zang ei => zan gei */
+ { &pinyin_table[677], &pinyin_table[130], &pinyin_table[676], &pinyin_table[172], }, /* zang en => zan gen */
+ { &pinyin_table[677], &pinyin_table[402], &pinyin_table[676], &pinyin_table[178], }, /* zang ou => zan gou */
+ { &pinyin_table[683], &pinyin_table[0], &pinyin_table[679], &pinyin_table[359], }, /* zen a => ze na */
+ { &pinyin_table[683], &pinyin_table[4], &pinyin_table[679], &pinyin_table[363], }, /* zen an => ze nan */
+ { &pinyin_table[683], &pinyin_table[6], &pinyin_table[679], &pinyin_table[365], }, /* zen ao => ze nao */
+ { &pinyin_table[683], &pinyin_table[128], &pinyin_table[679], &pinyin_table[366], }, /* zen e => ze ne */
+ { &pinyin_table[683], &pinyin_table[129], &pinyin_table[679], &pinyin_table[368], }, /* zen ei => ze nei */
+ { &pinyin_table[684], &pinyin_table[2], &pinyin_table[683], &pinyin_table[163], }, /* zeng ai => zen gai */
+ { &pinyin_table[684], &pinyin_table[4], &pinyin_table[683], &pinyin_table[165], }, /* zeng an => zen gan */
+ { &pinyin_table[684], &pinyin_table[5], &pinyin_table[683], &pinyin_table[166], }, /* zeng ang => zen gang */
+ { &pinyin_table[684], &pinyin_table[6], &pinyin_table[683], &pinyin_table[167], }, /* zeng ao => zen gao */
+ { &pinyin_table[684], &pinyin_table[129], &pinyin_table[683], &pinyin_table[170], }, /* zeng ei => zen gei */
+ { &pinyin_table[684], &pinyin_table[130], &pinyin_table[683], &pinyin_table[172], }, /* zeng en => zen gen */
+ { &pinyin_table[684], &pinyin_table[402], &pinyin_table[683], &pinyin_table[178], }, /* zeng ou => zen gou */
+ { &pinyin_table[690], &pinyin_table[129], &pinyin_table[686], &pinyin_table[368], }, /* zhan ei => zha nei */
+ { &pinyin_table[691], &pinyin_table[4], &pinyin_table[690], &pinyin_table[165], }, /* zhang an => zhan gan */
+ { &pinyin_table[691], &pinyin_table[5], &pinyin_table[690], &pinyin_table[166], }, /* zhang ang => zhan gang */
+ { &pinyin_table[691], &pinyin_table[6], &pinyin_table[690], &pinyin_table[167], }, /* zhang ao => zhan gao */
+ { &pinyin_table[691], &pinyin_table[128], &pinyin_table[690], &pinyin_table[168], }, /* zhang e => zhan ge */
+ { &pinyin_table[691], &pinyin_table[129], &pinyin_table[690], &pinyin_table[170], }, /* zhang ei => zhan gei */
+ { &pinyin_table[691], &pinyin_table[130], &pinyin_table[690], &pinyin_table[172], }, /* zhang en => zhan gen */
+ { &pinyin_table[691], &pinyin_table[402], &pinyin_table[690], &pinyin_table[178], }, /* zhang ou => zhan gou */
+ { &pinyin_table[697], &pinyin_table[0], &pinyin_table[693], &pinyin_table[359], }, /* zhen a => zhe na */
+ { &pinyin_table[697], &pinyin_table[4], &pinyin_table[693], &pinyin_table[363], }, /* zhen an => zhe nan */
+ { &pinyin_table[697], &pinyin_table[5], &pinyin_table[693], &pinyin_table[364], }, /* zhen ang => zhe nang */
+ { &pinyin_table[697], &pinyin_table[6], &pinyin_table[693], &pinyin_table[365], }, /* zhen ao => zhe nao */
+ { &pinyin_table[697], &pinyin_table[128], &pinyin_table[693], &pinyin_table[366], }, /* zhen e => zhe ne */
+ { &pinyin_table[697], &pinyin_table[129], &pinyin_table[693], &pinyin_table[368], }, /* zhen ei => zhe nei */
+ { &pinyin_table[698], &pinyin_table[2], &pinyin_table[697], &pinyin_table[163], }, /* zheng ai => zhen gai */
+ { &pinyin_table[698], &pinyin_table[4], &pinyin_table[697], &pinyin_table[165], }, /* zheng an => zhen gan */
+ { &pinyin_table[698], &pinyin_table[5], &pinyin_table[697], &pinyin_table[166], }, /* zheng ang => zhen gang */
+ { &pinyin_table[698], &pinyin_table[6], &pinyin_table[697], &pinyin_table[167], }, /* zheng ao => zhen gao */
+ { &pinyin_table[698], &pinyin_table[128], &pinyin_table[697], &pinyin_table[168], }, /* zheng e => zhen ge */
+ { &pinyin_table[698], &pinyin_table[129], &pinyin_table[697], &pinyin_table[170], }, /* zheng ei => zhen gei */
+ { &pinyin_table[698], &pinyin_table[130], &pinyin_table[697], &pinyin_table[172], }, /* zheng en => zhen gen */
+ { &pinyin_table[698], &pinyin_table[402], &pinyin_table[697], &pinyin_table[178], }, /* zheng ou => zhen gou */
+ { &pinyin_table[710], &pinyin_table[6], &pinyin_table[706], &pinyin_table[365], }, /* zhuan ao => zhua nao */
+ { &pinyin_table[710], &pinyin_table[128], &pinyin_table[706], &pinyin_table[366], }, /* zhuan e => zhua ne */
+ { &pinyin_table[710], &pinyin_table[129], &pinyin_table[706], &pinyin_table[368], }, /* zhuan ei => zhua nei */
+ { &pinyin_table[711], &pinyin_table[2], &pinyin_table[710], &pinyin_table[163], }, /* zhuang ai => zhuan gai */
+ { &pinyin_table[711], &pinyin_table[4], &pinyin_table[710], &pinyin_table[165], }, /* zhuang an => zhuan gan */
+ { &pinyin_table[711], &pinyin_table[5], &pinyin_table[710], &pinyin_table[166], }, /* zhuang ang => zhuan gang */
+ { &pinyin_table[711], &pinyin_table[6], &pinyin_table[710], &pinyin_table[167], }, /* zhuang ao => zhuan gao */
+ { &pinyin_table[711], &pinyin_table[128], &pinyin_table[710], &pinyin_table[168], }, /* zhuang e => zhuan ge */
+ { &pinyin_table[711], &pinyin_table[129], &pinyin_table[710], &pinyin_table[170], }, /* zhuang ei => zhuan gei */
+ { &pinyin_table[711], &pinyin_table[130], &pinyin_table[710], &pinyin_table[172], }, /* zhuang en => zhuan gen */
+ { &pinyin_table[711], &pinyin_table[402], &pinyin_table[710], &pinyin_table[178], }, /* zhuang ou => zhuan gou */
+ { &pinyin_table[715], &pinyin_table[0], &pinyin_table[705], &pinyin_table[359], }, /* zhun a => zhu na */
+ { &pinyin_table[715], &pinyin_table[4], &pinyin_table[705], &pinyin_table[363], }, /* zhun an => zhu nan */
+ { &pinyin_table[715], &pinyin_table[5], &pinyin_table[705], &pinyin_table[364], }, /* zhun ang => zhu nang */
+ { &pinyin_table[715], &pinyin_table[6], &pinyin_table[705], &pinyin_table[365], }, /* zhun ao => zhu nao */
+ { &pinyin_table[715], &pinyin_table[128], &pinyin_table[705], &pinyin_table[366], }, /* zhun e => zhu ne */
+ { &pinyin_table[715], &pinyin_table[129], &pinyin_table[705], &pinyin_table[368], }, /* zhun ei => zhu nei */
+ { &pinyin_table[727], &pinyin_table[0], &pinyin_table[726], &pinyin_table[161], }, /* zuang a => zuan ga */
+ { &pinyin_table[727], &pinyin_table[2], &pinyin_table[726], &pinyin_table[163], }, /* zuang ai => zuan gai */
+ { &pinyin_table[727], &pinyin_table[4], &pinyin_table[726], &pinyin_table[165], }, /* zuang an => zuan gan */
+ { &pinyin_table[727], &pinyin_table[5], &pinyin_table[726], &pinyin_table[166], }, /* zuang ang => zuan gang */
+ { &pinyin_table[727], &pinyin_table[6], &pinyin_table[726], &pinyin_table[167], }, /* zuang ao => zuan gao */
+ { &pinyin_table[727], &pinyin_table[128], &pinyin_table[726], &pinyin_table[168], }, /* zuang e => zuan ge */
+ { &pinyin_table[727], &pinyin_table[129], &pinyin_table[726], &pinyin_table[170], }, /* zuang ei => zuan gei */
+ { &pinyin_table[727], &pinyin_table[130], &pinyin_table[726], &pinyin_table[172], }, /* zuang en => zuan gen */
+ { &pinyin_table[727], &pinyin_table[402], &pinyin_table[726], &pinyin_table[178], }, /* zuang ou => zuan gou */
+ { &pinyin_table[731], &pinyin_table[0], &pinyin_table[723], &pinyin_table[359], }, /* zun a => zu na */
+ { &pinyin_table[731], &pinyin_table[4], &pinyin_table[723], &pinyin_table[363], }, /* zun an => zu nan */
+ { &pinyin_table[731], &pinyin_table[5], &pinyin_table[723], &pinyin_table[364], }, /* zun ang => zu nang */
+ { &pinyin_table[731], &pinyin_table[6], &pinyin_table[723], &pinyin_table[365], }, /* zun ao => zu nao */
+ { &pinyin_table[731], &pinyin_table[128], &pinyin_table[723], &pinyin_table[366], }, /* zun e => zu ne */
+ { &pinyin_table[731], &pinyin_table[129], &pinyin_table[723], &pinyin_table[368], }, /* zun ei => zu nei */
+};
+
diff --git a/src/PyZySimpTradConverter.cc b/src/PyZySimpTradConverter.cc
new file mode 100644
index 0000000..475e506
--- /dev/null
+++ b/src/PyZySimpTradConverter.cc
@@ -0,0 +1,179 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (c) 2010 BYVoid <byvoid1@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "PyZySimpTradConverter.h"
+
+#ifdef HAVE_OPENCC
+# include <opencc.h>
+#else
+# include <cstring>
+# include <cstdlib>
+#endif
+
+#include "PyZyTypes.h"
+#include "PyZyString.h"
+
+namespace PyZy {
+
+#ifdef HAVE_OPENCC
+
+class opencc {
+ static const int BUFFER_SIZE = 64;
+public:
+ opencc (void)
+ {
+ m_od = opencc_open (OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD);
+ g_assert (m_od != NULL);
+ }
+
+ ~opencc (void)
+ {
+ opencc_close(m_od);
+ }
+
+ void convert (const gchar *in, String &out)
+ {
+ glong n_char;
+ gunichar *in_ucs4 = g_utf8_to_ucs4_fast (in, -1, &n_char);
+
+ ucs4_t *pinbuf = (ucs4_t *)in_ucs4;
+ size_t inbuf_left = n_char;
+ while (inbuf_left != 0) {
+ ucs4_t *poutbuf = (ucs4_t *)m_buffer;
+ size_t outbuf_left = BUFFER_SIZE;
+ size_t retval = opencc_convert(m_od, &pinbuf, &inbuf_left, &poutbuf, &outbuf_left);
+ if (retval == (size_t) -1) {
+ /* append left chars in pinbuf */
+ g_warning ("opencc_convert return failed");
+ out << (gunichar *) pinbuf;
+ break;
+ }
+ *poutbuf = L'\0';
+ out << m_buffer;
+ }
+ g_free (in_ucs4);
+ }
+private:
+ opencc_t m_od;
+ gunichar m_buffer[BUFFER_SIZE + 1];
+};
+
+void
+SimpTradConverter::simpToTrad (const gchar *in, String &out)
+{
+ static opencc opencc;
+ opencc.convert (in, out);
+}
+
+#else
+
+static gint _xcmp (const gchar *p1, const gchar *p2, const gchar *str)
+{
+ for (;;) {
+ // both reach end
+ if (p1 == p2 && *str == '\0')
+ return 0;
+ // p1 reaches end
+ if (p1 == p2)
+ return -1;
+ // str reaches end
+ if (*str == '\0')
+ return 1;
+
+ if (*p1 < *str)
+ return -1;
+ if (*p1 > *str)
+ return 1;
+
+ p1 ++; str ++;
+ };
+}
+
+static gint _cmp (gconstpointer p1, gconstpointer p2)
+{
+ const gchar **pp = (const gchar **) p1;
+ const gchar **s2 = (const gchar **) p2;
+
+ return _xcmp (pp[0], pp[1], s2[0]);
+}
+
+#include "PyZySimpTradConverterTable.h"
+
+void
+SimpTradConverter::simpToTrad (const gchar *in, String &out)
+{
+ const gchar *pend;
+ const gchar *pp[2];
+ glong len;
+ glong begin;
+
+ if (!g_utf8_validate (in, -1 , NULL)) {
+ g_warning ("\%s\" is not an utf8 string!", in);
+ g_assert_not_reached ();
+ }
+
+ begin = 0;
+ pend = in + std::strlen (in);
+ len = g_utf8_strlen (in, -1); // length in charactoers
+ pp[0] = in;
+
+ while (pp[0] != pend) {
+ glong slen = std::min (len - begin, (glong) SIMP_TO_TRAD_MAX_LEN); // the length of sub string in character
+ pp[1] = g_utf8_offset_to_pointer (pp[0], slen); // the end of sub string
+
+ for (;;) {
+ const gchar **result;
+ result = (const gchar **) std::bsearch (pp, simp_to_trad,
+ G_N_ELEMENTS (simp_to_trad), sizeof (simp_to_trad[0]),
+ _cmp);
+
+ if (result != NULL) {
+ // found item in table,
+ // append the trad to out and adjust pointers
+ out << result[1];
+ pp[0] = pp[1];
+ begin += slen;
+ break;
+ }
+
+ if (slen == 1) {
+ // if only one character left,
+ // append origin character to out and adjust pointers
+ out.append (pp[0], pp[1] - pp[0]);
+ pp[0] = pp[1];
+ begin += 1;
+ break;
+ }
+
+ // if more than on characters left,
+ // adjust pp[1] to previous character
+ pp[1] = g_utf8_prev_char (pp[1]);
+ slen--;
+ }
+ }
+}
+#endif // HAVE_OPENCC
+
+}; // namespace PyZy
diff --git a/src/PyZySimpTradConverter.h b/src/PyZySimpTradConverter.h
new file mode 100644
index 0000000..4573cad
--- /dev/null
+++ b/src/PyZySimpTradConverter.h
@@ -0,0 +1,37 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __SIMP_TRAD_CONVERTER_H_
+#define __SIMP_TRAD_CONVERTER_H_
+
+#include <glib.h>
+
+namespace PyZy {
+
+class String;
+
+class SimpTradConverter {
+public:
+ static void simpToTrad (const gchar *in, String &out);
+};
+
+}; // namespace PyZy
+
+#endif // __SIMP_TRAD_CONVERTER_H_
diff --git a/src/PyZySimpTradConverterTable.h b/src/PyZySimpTradConverterTable.h
new file mode 100644
index 0000000..00ba824
--- /dev/null
+++ b/src/PyZySimpTradConverterTable.h
@@ -0,0 +1,7406 @@
+static const gchar *simp_to_trad[][2] = {
+ { "〇余", "〇餘" },
+ { "〇只", "〇隻" },
+ { "一个准", "一個準" },
+ { "一争两丑", "一爭兩醜" },
+ { "一伙", "一夥" },
+ { "一余", "一餘" },
+ { "一冲", "一衝" },
+ { "一准", "一準" },
+ { "一出子", "一齣子" },
+ { "一划", "一划" },
+ { "一别头", "一彆頭" },
+ { "一发千钧", "一髮千鈞" },
+ { "一只", "一隻" },
+ { "一吊", "一弔" },
+ { "一哄而散", "一鬨而散" },
+ { "一地里", "一地裡" },
+ { "一天钟", "一天鐘" },
+ { "一头长发", "一頭長髮" },
+ { "一干二净", "一乾二淨" },
+ { "一并", "一併" },
+ { "一扎", "一紮" },
+ { "一树百获", "一樹百穫" },
+ { "一物克一物", "一物剋一物" },
+ { "一锅面", "一鍋麵" },
+ { "七余", "七餘" },
+ { "七只", "七隻" },
+ { "七情六欲", "七情六慾" },
+ { "七扎", "七紮" },
+ { "万", "萬" },
+ { "万余", "萬餘" },
+ { "万俟", "万俟" },
+ { "万历", "萬曆" },
+ { "万只", "萬隻" },
+ { "万年历表", "萬年曆錶" },
+ { "万扎", "萬紮" },
+ { "万旗", "万旗" },
+ { "万签插架", "萬籤插架" },
+ { "三余", "三餘" },
+ { "三准", "三準" },
+ { "三只", "三隻" },
+ { "三复", "三複" },
+ { "三征七辟", "三徵七辟" },
+ { "三扎", "三紮" },
+ { "三统历", "三統曆" },
+ { "上梁", "上樑" },
+ { "上签", "上籤" },
+ { "上药", "上藥" },
+ { "上课钟", "上課鐘" },
+ { "下仑路", "下崙路" },
+ { "下梁", "下樑" },
+ { "下签", "下籤" },
+ { "下药", "下藥" },
+ { "下课钟", "下課鐘" },
+ { "不丑", "不醜" },
+ { "不克制", "不剋制" },
+ { "不准", "不準" },
+ { "不占", "不佔" },
+ { "不吊", "不弔" },
+ { "不寒而栗", "不寒而慄" },
+ { "不干", "不幹" },
+ { "不干不净", "不乾不淨" },
+ { "不托", "不託" },
+ { "不斗", "不鬥" },
+ { "不药而愈", "不藥而癒" },
+ { "不谷", "不穀" },
+ { "不通吊庆", "不通弔慶" },
+ { "不采", "不採" },
+ { "不锈钢", "不鏽鋼" },
+ { "不食干腊", "不食乾腊" },
+ { "与", "與" },
+ { "与克制", "與剋制" },
+ { "丑丑", "醜醜" },
+ { "丑丫头", "醜丫頭" },
+ { "丑事", "醜事" },
+ { "丑于", "醜於" },
+ { "丑人", "醜人" },
+ { "丑侪", "醜儕" },
+ { "丑八怪", "醜八怪" },
+ { "丑剌剌", "醜剌剌" },
+ { "丑剧", "醜劇" },
+ { "丑化", "醜化" },
+ { "丑史", "醜史" },
+ { "丑名", "醜名" },
+ { "丑咤", "醜吒" },
+ { "丑地", "醜地" },
+ { "丑声", "醜聲" },
+ { "丑头怪脸", "醜頭怪臉" },
+ { "丑夷", "醜夷" },
+ { "丑女", "醜女" },
+ { "丑奴儿", "醜奴兒" },
+ { "丑妇", "醜婦" },
+ { "丑媳", "醜媳" },
+ { "丑小鸭", "醜小鴨" },
+ { "丑巴怪", "醜巴怪" },
+ { "丑徒", "醜徒" },
+ { "丑态", "醜態" },
+ { "丑恶", "醜惡" },
+ { "丑末", "醜末" },
+ { "丑杂", "醜雜" },
+ { "丑样", "醜樣" },
+ { "丑死", "醜死" },
+ { "丑比", "醜比" },
+ { "丑毙了", "醜斃了" },
+ { "丑沮", "醜沮" },
+ { "丑男", "醜男" },
+ { "丑类", "醜類" },
+ { "丑脸", "醜臉" },
+ { "丑虏", "醜虜" },
+ { "丑行", "醜行" },
+ { "丑言", "醜言" },
+ { "丑诋", "醜詆" },
+ { "丑话", "醜話" },
+ { "丑语", "醜語" },
+ { "丑贼生", "醜賊生" },
+ { "丑辞", "醜辭" },
+ { "丑辱", "醜辱" },
+ { "丑逆", "醜逆" },
+ { "丑闻", "醜聞" },
+ { "丑陋", "醜陋" },
+ { "专", "專" },
+ { "专注", "專註" },
+ { "专辑里", "專輯裡" },
+ { "世界杯", "世界盃" },
+ { "世界里", "世界裡" },
+ { "世纪钟", "世紀鐘" },
+ { "业", "業" },
+ { "业余", "業餘" },
+ { "丛", "叢" },
+ { "东", "東" },
+ { "东冲西突", "東衝西突" },
+ { "东周钟", "東周鐘" },
+ { "东岳", "東嶽" },
+ { "东游", "東遊" },
+ { "丝", "絲" },
+ { "丝制", "絲製" },
+ { "丝发", "絲髮" },
+ { "丝恩发怨", "絲恩髮怨" },
+ { "丢", "丟" },
+ { "丢丑", "丟醜" },
+ { "两", "兩" },
+ { "两余", "兩餘" },
+ { "两只", "兩隻" },
+ { "两天晒网", "兩天晒網" },
+ { "两扎", "兩紮" },
+ { "两虎共斗", "兩虎共鬥" },
+ { "两鼠斗穴", "兩鼠鬥穴" },
+ { "严", "嚴" },
+ { "严云农", "嚴云農" },
+ { "丧", "喪" },
+ { "丧钟", "喪鐘" },
+ { "个", "個" },
+ { "个中原因", "箇中原因" },
+ { "个中奥妙", "箇中奧妙" },
+ { "个中奥秘", "箇中奧秘" },
+ { "个中好手", "箇中好手" },
+ { "个中强手", "箇中強手" },
+ { "个中消息", "箇中消息" },
+ { "个中滋味", "箇中滋味" },
+ { "个中玄机", "箇中玄機" },
+ { "个中理由", "箇中理由" },
+ { "个中讯息", "箇中訊息" },
+ { "个中资讯", "箇中資訊" },
+ { "个中高手", "箇中高手" },
+ { "个旧", "箇舊" },
+ { "个里", "個裡" },
+ { "个钟", "個鐘" },
+ { "个钟表", "個鐘錶" },
+ { "中仑", "中崙" },
+ { "中型钟", "中型鐘" },
+ { "中岳", "中嶽" },
+ { "中文里", "中文裡" },
+ { "中签", "中籤" },
+ { "中药", "中藥" },
+ { "丰", "豐" },
+ { "丰仪", "丰儀" },
+ { "丰儀", "丰儀" },
+ { "丰南", "丰南" },
+ { "丰台", "丰台" },
+ { "丰姿", "丰姿" },
+ { "丰容", "丰容" },
+ { "丰度", "丰度" },
+ { "丰情", "丰情" },
+ { "丰标", "丰標" },
+ { "丰標不凡", "丰標不凡" },
+ { "丰神", "丰神" },
+ { "丰茸", "丰茸" },
+ { "丰采", "丰采" },
+ { "丰韵", "丰韻" },
+ { "丰韻", "丰韻" },
+ { "临", "臨" },
+ { "临潼斗宝", "臨潼鬥寶" },
+ { "丸药", "丸藥" },
+ { "丹药", "丹藥" },
+ { "为", "為" },
+ { "为准", "為準" },
+ { "为着", "為著" },
+ { "主仆", "主僕" },
+ { "主干", "主幹" },
+ { "主钟曲线", "主鐘曲線" },
+ { "丽", "麗" },
+ { "举", "舉" },
+ { "么么小丑", "么麼小丑" },
+ { "义", "義" },
+ { "义仆", "義僕" },
+ { "义占", "義佔" },
+ { "义庄", "義莊" },
+ { "之余", "之餘" },
+ { "之征", "之徵" },
+ { "之托", "之託" },
+ { "之钟", "之鐘" },
+ { "乌", "烏" },
+ { "乌发", "烏髮" },
+ { "乌龙面", "烏龍麵" },
+ { "乐", "樂" },
+ { "乐器钟", "樂器鐘" },
+ { "乔", "喬" },
+ { "乔岳", "喬嶽" },
+ { "九世之仇", "九世之讎" },
+ { "九余", "九餘" },
+ { "九只", "九隻" },
+ { "九扎", "九紮" },
+ { "九谷", "九穀" },
+ { "也克制", "也剋制" },
+ { "习", "習" },
+ { "乡", "鄉" },
+ { "乡愿", "鄉愿" },
+ { "书", "書" },
+ { "书签", "書籤" },
+ { "买", "買" },
+ { "买凶", "買兇" },
+ { "乱", "亂" },
+ { "乱发", "亂髮" },
+ { "乱哄", "亂鬨" },
+ { "乾象历", "乾象曆" },
+ { "了克制", "了剋制" },
+ { "了望", "瞭望" },
+ { "了然", "瞭然" },
+ { "了若指掌", "瞭若指掌" },
+ { "争", "爭" },
+ { "争奇斗妍", "爭奇鬥妍" },
+ { "争奇斗异", "爭奇鬥異" },
+ { "争妍斗奇", "爭妍鬥奇" },
+ { "争斗", "爭鬥" },
+ { "争红斗紫", "爭紅鬥紫" },
+ { "事迹", "事迹" },
+ { "二仑", "二崙" },
+ { "二余", "二餘" },
+ { "二只", "二隻" },
+ { "二缶钟惑", "二缶鐘惑" },
+ { "于", "於" },
+ { "于丑", "於醜" },
+ { "于丹", "于丹" },
+ { "于于", "于于" },
+ { "于云鹤", "于雲鶴" },
+ { "于仁泰", "于仁泰" },
+ { "于从濂", "于從濂" },
+ { "于仲文", "于仲文" },
+ { "于会泳", "于會泳" },
+ { "于伟国", "于偉國" },
+ { "于余曲折", "于餘曲折" },
+ { "于佳卉", "于佳卉" },
+ { "于偉國", "于偉國" },
+ { "于光新", "于光新" },
+ { "于光远", "于光遠" },
+ { "于光遠", "于光遠" },
+ { "于克制", "於剋制" },
+ { "于克勒", "于克勒" },
+ { "于再清", "于再清" },
+ { "于冕", "于冕" },
+ { "于军", "于軍" },
+ { "于冠华", "于冠華" },
+ { "于凌奎", "于凌奎" },
+ { "于凌辰", "于凌辰" },
+ { "于凤桐", "于鳳桐" },
+ { "于凤至", "于鳳至" },
+ { "于勒", "于勒" },
+ { "于化虎", "于化虎" },
+ { "于占元", "于占元" },
+ { "于友泽", "于友澤" },
+ { "于双戈", "于雙戈" },
+ { "于台烟", "于台煙" },
+ { "于台煙", "于台煙" },
+ { "于右任", "于右任" },
+ { "于吉", "于吉" },
+ { "于和伟", "于和偉" },
+ { "于品海", "于品海" },
+ { "于国桢", "于國楨" },
+ { "于国治", "于國治" },
+ { "于國楨", "于國楨" },
+ { "于國治", "于國治" },
+ { "于坏", "於坏" },
+ { "于坚", "于堅" },
+ { "于堅", "于堅" },
+ { "于大宝", "于大寶" },
+ { "于大寶", "于大寶" },
+ { "于天仁", "于天仁" },
+ { "于天龙", "于天龍" },
+ { "于奇库杜克", "于奇庫杜克" },
+ { "于奇庫杜克", "于奇庫杜克" },
+ { "于姓", "于姓" },
+ { "于娜", "于娜" },
+ { "于娟", "于娟" },
+ { "于子千", "于子千" },
+ { "于孔兼", "于孔兼" },
+ { "于学忠", "于學忠" },
+ { "于學忠", "于學忠" },
+ { "于家堡", "于家堡" },
+ { "于寘", "于寘" },
+ { "于小伟", "于小偉" },
+ { "于小偉", "于小偉" },
+ { "于小彤", "于小彤" },
+ { "于小惠", "于小惠" },
+ { "于少保", "于少保" },
+ { "于尔岑", "于爾岑" },
+ { "于尔根", "于爾根" },
+ { "于尔里克", "于爾里克" },
+ { "于山", "于山" },
+ { "于帅", "于帥" },
+ { "于帥", "于帥" },
+ { "于幼军", "于幼軍" },
+ { "于幼軍", "于幼軍" },
+ { "于广洲", "于廣洲" },
+ { "于康震", "于康震" },
+ { "于廣洲", "于廣洲" },
+ { "于式枚", "于式枚" },
+ { "于归", "于歸" },
+ { "于征", "於徵" },
+ { "于從濂", "于從濂" },
+ { "于德海", "于德海" },
+ { "于志宁", "于志寧" },
+ { "于志寧", "于志寧" },
+ { "于忠肃集", "于忠肅集" },
+ { "于思", "于思" },
+ { "于慎行", "于慎行" },
+ { "于慧", "于慧" },
+ { "于成龍", "于成龍" },
+ { "于成龙", "于成龍" },
+ { "于振", "于振" },
+ { "于敏", "于敏" },
+ { "于斌", "于斌" },
+ { "于斯塔德", "于斯塔德" },
+ { "于斯达尔", "于斯達爾" },
+ { "于斯達爾", "于斯達爾" },
+ { "于明涛", "于明濤" },
+ { "于明濤", "于明濤" },
+ { "于是之", "于是之" },
+ { "于晨楠", "于晨楠" },
+ { "于晴", "于晴" },
+ { "于會泳", "于會泳" },
+ { "于来山", "于來山" },
+ { "于枫", "于楓" },
+ { "于树洁", "于樹潔" },
+ { "于根伟", "于根偉" },
+ { "于根偉", "于根偉" },
+ { "于格", "于格" },
+ { "于楓", "于楓" },
+ { "于樂", "于樂" },
+ { "于樹潔", "于樹潔" },
+ { "于欣", "于欣" },
+ { "于正升", "于正昇" },
+ { "于正昇", "于正昇" },
+ { "于正昌", "于正昌" },
+ { "于永波", "于永波" },
+ { "于汉超", "于漢超" },
+ { "于江震", "于江震" },
+ { "于波", "于波" },
+ { "于泽尔", "于澤爾" },
+ { "于洋", "于洋" },
+ { "于洪区", "于洪區" },
+ { "于洪區", "于洪區" },
+ { "于浩威", "于浩威" },
+ { "于海", "于海" },
+ { "于涛", "于濤" },
+ { "于湘兰", "于湘蘭" },
+ { "于湘蘭", "于湘蘭" },
+ { "于漢超", "于漢超" },
+ { "于澄", "于澄" },
+ { "于澤爾", "于澤爾" },
+ { "于濤", "于濤" },
+ { "于熙珍", "于熙珍" },
+ { "于爾岑", "于爾岑" },
+ { "于爾根", "于爾根" },
+ { "于爾里克", "于爾里克" },
+ { "于特森", "于特森" },
+ { "于玉立", "于玉立" },
+ { "于田", "于田" },
+ { "于禁", "于禁" },
+ { "于秀敏", "于秀敏" },
+ { "于立成", "于立成" },
+ { "于素秋", "于素秋" },
+ { "于美人", "于美人" },
+ { "于耘婕", "于耘婕" },
+ { "于若木", "于若木" },
+ { "于荣光", "于榮光" },
+ { "于荫霖", "于蔭霖" },
+ { "于蔭霖", "于蔭霖" },
+ { "于衡", "于衡" },
+ { "于西翰", "于西翰" },
+ { "于謙", "于謙" },
+ { "于谦", "于謙" },
+ { "于谨", "于謹" },
+ { "于貝爾", "于貝爾" },
+ { "于贈", "于贈" },
+ { "于贝尔", "于貝爾" },
+ { "于赠", "于贈" },
+ { "于越", "于越" },
+ { "于軍", "于軍" },
+ { "于远伟", "于遠偉" },
+ { "于道泉", "于道泉" },
+ { "于遠偉", "于遠偉" },
+ { "于都县", "于都縣" },
+ { "于都縣", "于都縣" },
+ { "于里察", "于里察" },
+ { "于阗", "于闐" },
+ { "于雙戈", "于雙戈" },
+ { "于震", "于震" },
+ { "于震后", "於震后" },
+ { "于靖", "于靖" },
+ { "于非闇", "于非闇" },
+ { "于韋斯屈萊", "于韋斯屈萊" },
+ { "于韦斯屈莱", "于韋斯屈萊" },
+ { "于風政", "于風政" },
+ { "于风政", "于風政" },
+ { "于飛島", "于飛島" },
+ { "于飞", "于飛" },
+ { "于鬯", "于鬯" },
+ { "于魁智", "于魁智" },
+ { "于鳳桐", "于鳳桐" },
+ { "于鳳至", "于鳳至" },
+ { "于默奥", "于默奧" },
+ { "于默奧", "于默奧" },
+ { "亏", "虧" },
+ { "云", "雲" },
+ { "云为", "云為" },
+ { "云乎", "云乎" },
+ { "云云", "云云" },
+ { "云何", "云何" },
+ { "云南白药", "雲南白藥" },
+ { "云尔", "云爾" },
+ { "云游", "雲遊" },
+ { "云為", "云為" },
+ { "云然", "云然" },
+ { "云笈七签", "雲笈七籤" },
+ { "云须", "雲鬚" },
+ { "五余", "五餘" },
+ { "五出", "五齣" },
+ { "五只", "五隻" },
+ { "五岳", "五嶽" },
+ { "五扎", "五紮" },
+ { "五行生克", "五行生剋" },
+ { "五谷", "五穀" },
+ { "井干摧败", "井榦摧敗" },
+ { "井里", "井裡" },
+ { "亚", "亞" },
+ { "亚美尼亚历", "亞美尼亞曆" },
+ { "交哄", "交鬨" },
+ { "交托", "交託" },
+ { "交游", "交遊" },
+ { "亦云", "亦云" },
+ { "亦庄亦谐", "亦莊亦諧" },
+ { "产", "產" },
+ { "亩", "畝" },
+ { "亮丑", "亮醜" },
+ { "亮钟", "亮鐘" },
+ { "亲", "親" },
+ { "亵", "褻" },
+ { "人云", "人云" },
+ { "人参", "人蔘" },
+ { "人欲", "人慾" },
+ { "人物志", "人物誌" },
+ { "亿", "億" },
+ { "亿余", "億餘" },
+ { "亿只", "億隻" },
+ { "什么", "什麼" },
+ { "什锦面", "什錦麵" },
+ { "仅", "僅" },
+ { "仆人", "僕人" },
+ { "仆仆", "僕僕" },
+ { "仆从", "僕從" },
+ { "仆使", "僕使" },
+ { "仆僮", "僕僮" },
+ { "仆吏", "僕吏" },
+ { "仆固怀恩", "僕固懷恩" },
+ { "仆夫", "僕夫" },
+ { "仆妇", "僕婦" },
+ { "仆姑", "僕姑" },
+ { "仆婢", "僕婢" },
+ { "仆射", "僕射" },
+ { "仆少", "僕少" },
+ { "仆役", "僕役" },
+ { "仆憎", "僕憎" },
+ { "仆欧", "僕歐" },
+ { "仆程", "僕程" },
+ { "仆虽罢驽", "僕雖罷駑" },
+ { "仇仇", "仇讎" },
+ { "仇問", "讎問" },
+ { "仇夷", "讎夷" },
+ { "仇校", "讎校" },
+ { "仇正", "讎正" },
+ { "仇隙", "讎隙" },
+ { "从", "從" },
+ { "从里到外", "從裡到外" },
+ { "从里向外", "從裡向外" },
+ { "仑", "侖" },
+ { "仑背", "崙背" },
+ { "仓", "倉" },
+ { "他克制", "他剋制" },
+ { "他钟", "他鐘" },
+ { "付托", "付託" },
+ { "仙后", "仙后" },
+ { "仙药", "仙藥" },
+ { "仪", "儀" },
+ { "仪范", "儀範" },
+ { "仪表", "儀錶" },
+ { "们", "們" },
+ { "们克制", "們剋制" },
+ { "仰药", "仰藥" },
+ { "件钟", "件鐘" },
+ { "价", "價" },
+ { "任何表", "任何錶" },
+ { "任何钟", "任何鐘" },
+ { "仿佛", "彷彿" },
+ { "仿制", "仿製" },
+ { "伊东怜", "伊東怜" },
+ { "伊于湖底", "伊于湖底" },
+ { "伊尔汗历表", "伊爾汗曆表" },
+ { "伊府面", "伊府麵" },
+ { "伊斯兰历", "伊斯蘭曆" },
+ { "伊斯兰教历", "伊斯蘭教曆" },
+ { "伊适杰", "伊適杰" },
+ { "伊郁", "伊鬱" },
+ { "伏几", "伏几" },
+ { "休征", "休徵" },
+ { "众", "眾" },
+ { "优", "優" },
+ { "优游", "優遊" },
+ { "伙众", "夥眾" },
+ { "伙伴", "夥伴" },
+ { "伙友", "夥友" },
+ { "伙同", "夥同" },
+ { "伙计", "夥計" },
+ { "会", "會" },
+ { "会占", "會佔" },
+ { "会吊", "會弔" },
+ { "会干", "會幹" },
+ { "会里", "會裡" },
+ { "伛", "傴" },
+ { "伞", "傘" },
+ { "伟", "偉" },
+ { "传", "傳" },
+ { "传位于四太子", "傳位于四太子" },
+ { "伤", "傷" },
+ { "伤痕累累", "傷痕纍纍" },
+ { "伥", "倀" },
+ { "伦", "倫" },
+ { "伧", "傖" },
+ { "伪", "偽" },
+ { "伪药", "偽藥" },
+ { "伫", "佇" },
+ { "伴游", "伴遊" },
+ { "但云", "但云" },
+ { "位准", "位準" },
+ { "低洼", "低洼" },
+ { "住扎", "住紮" },
+ { "体", "體" },
+ { "体范", "體範" },
+ { "何杰", "何杰" },
+ { "余〇", "餘〇" },
+ { "余一", "餘一" },
+ { "余七", "餘七" },
+ { "余三", "餘三" },
+ { "余下", "餘下" },
+ { "余业", "餘業" },
+ { "余九", "餘九" },
+ { "余事", "餘事" },
+ { "余二", "餘二" },
+ { "余五", "餘五" },
+ { "余人", "餘人" },
+ { "余众", "餘眾" },
+ { "余俗", "餘俗" },
+ { "余倍", "餘倍" },
+ { "余僇", "餘僇" },
+ { "余光", "餘光" },
+ { "余党", "餘黨" },
+ { "余八", "餘八" },
+ { "余六", "餘六" },
+ { "余兴", "餘興" },
+ { "余刃", "餘刃" },
+ { "余切", "餘切" },
+ { "余利", "餘利" },
+ { "余割", "餘割" },
+ { "余力", "餘力" },
+ { "余勇", "餘勇" },
+ { "余十", "餘十" },
+ { "余味", "餘味" },
+ { "余响", "餘響" },
+ { "余喘", "餘喘" },
+ { "余四", "餘四" },
+ { "余地", "餘地" },
+ { "余墨", "餘墨" },
+ { "余声", "餘聲" },
+ { "余外", "餘外" },
+ { "余妙", "餘妙" },
+ { "余姚", "餘姚" },
+ { "余威", "餘威" },
+ { "余子", "餘子" },
+ { "余存", "餘存" },
+ { "余孽", "餘孽" },
+ { "余庆", "餘慶" },
+ { "余弦", "餘弦" },
+ { "余思", "餘思" },
+ { "余悸", "餘悸" },
+ { "余数", "餘數" },
+ { "余明", "餘明" },
+ { "余映", "餘映" },
+ { "余晖", "餘暉" },
+ { "余暇", "餘暇" },
+ { "余杭", "餘杭" },
+ { "余杯", "餘杯" },
+ { "余桃", "餘桃" },
+ { "余桶", "餘桶" },
+ { "余款", "餘款" },
+ { "余步", "餘步" },
+ { "余殃", "餘殃" },
+ { "余毒", "餘毒" },
+ { "余气", "餘氣" },
+ { "余沥", "餘瀝" },
+ { "余波", "餘波" },
+ { "余波荡漾", "餘波盪漾" },
+ { "余泽", "餘澤" },
+ { "余温", "餘溫" },
+ { "余烈", "餘烈" },
+ { "余烬", "餘燼" },
+ { "余热", "餘熱" },
+ { "余珍", "餘珍" },
+ { "余生", "餘生" },
+ { "余窍", "餘竅" },
+ { "余粮", "餘糧" },
+ { "余绪", "餘緒" },
+ { "余缺", "餘缺" },
+ { "余罪", "餘罪" },
+ { "余羡", "餘羨" },
+ { "余膏", "餘膏" },
+ { "余荫", "餘蔭" },
+ { "余蓄", "餘蓄" },
+ { "余裕", "餘裕" },
+ { "余角", "餘角" },
+ { "余论", "餘論" },
+ { "余貾", "餘貾" },
+ { "余责", "餘責" },
+ { "余辉", "餘輝" },
+ { "余辜", "餘辜" },
+ { "余酲", "餘酲" },
+ { "余量", "餘量" },
+ { "余闰", "餘閏" },
+ { "余闲", "餘閒" },
+ { "余零", "餘零" },
+ { "余震", "餘震" },
+ { "余霞", "餘霞" },
+ { "余音", "餘音" },
+ { "余音绕梁", "餘音繞梁" },
+ { "余韵", "餘韻" },
+ { "余额", "餘額" },
+ { "余风", "餘風" },
+ { "余食", "餘食" },
+ { "佛罗棱萨", "佛羅稜薩" },
+ { "佛钟", "佛鐘" },
+ { "作准", "作準" },
+ { "作品里", "作品裡" },
+ { "作奸犯科", "作姦犯科" },
+ { "作庄", "作莊" },
+ { "你克制", "你剋制" },
+ { "你才子发昏", "你纔子發昏" },
+ { "佣中佼佼", "傭中佼佼" },
+ { "佣书", "傭書" },
+ { "佣人", "傭人" },
+ { "佣仆", "傭僕" },
+ { "佣兵", "傭兵" },
+ { "佣工", "傭工" },
+ { "佣懒", "傭懶" },
+ { "佣金", "傭金" },
+ { "佥", "僉" },
+ { "佳肴", "佳肴" },
+ { "使其斗", "使其鬥" },
+ { "侍仆", "侍僕" },
+ { "供制", "供製" },
+ { "依依不舍", "依依不捨" },
+ { "依托", "依託" },
+ { "侠", "俠" },
+ { "侣", "侶" },
+ { "侥", "僥" },
+ { "侥幸", "僥倖" },
+ { "侦", "偵" },
+ { "侧", "側" },
+ { "侨", "僑" },
+ { "侩", "儈" },
+ { "侪", "儕" },
+ { "侬", "儂" },
+ { "侵占", "侵佔" },
+ { "侵并", "侵併" },
+ { "便药", "便藥" },
+ { "俄占", "俄佔" },
+ { "保险柜", "保險柜" },
+ { "信托", "信託" },
+ { "俣", "俁" },
+ { "俦", "儔" },
+ { "俨", "儼" },
+ { "俩", "倆" },
+ { "俪", "儷" },
+ { "俭", "儉" },
+ { "俭仆", "儉僕" },
+ { "俭朴", "儉樸" },
+ { "俭确之教", "儉确之教" },
+ { "修杰楷", "修杰楷" },
+ { "修杰麟", "修杰麟" },
+ { "修炼", "修鍊" },
+ { "修胡刀", "修鬍刀" },
+ { "俯冲", "俯衝" },
+ { "倒绷孩儿", "倒繃孩兒" },
+ { "倛丑", "倛醜" },
+ { "借以", "藉以" },
+ { "借助", "藉助" },
+ { "借寇兵", "藉寇兵" },
+ { "借手", "藉手" },
+ { "借机", "藉機" },
+ { "借此", "藉此" },
+ { "借由", "藉由" },
+ { "借着", "藉著" },
+ { "借箸代筹", "藉箸代籌" },
+ { "借资", "藉資" },
+ { "倦游", "倦遊" },
+ { "债", "債" },
+ { "倾", "傾" },
+ { "倾复", "傾複" },
+ { "假发", "假髮" },
+ { "假托", "假託" },
+ { "假药", "假藥" },
+ { "偎干", "偎乾" },
+ { "做庄", "做莊" },
+ { "停制", "停製" },
+ { "停征", "停徵" },
+ { "偬", "傯" },
+ { "偷鸡不着", "偷雞不著" },
+ { "偻", "僂" },
+ { "偾", "僨" },
+ { "偿", "償" },
+ { "傥", "儻" },
+ { "傧", "儐" },
+ { "储", "儲" },
+ { "傩", "儺" },
+ { "催并", "催併" },
+ { "傲游", "傲遊" },
+ { "傲霜斗雪", "傲霜鬥雪" },
+ { "傳位于四太子", "傳位于四太子" },
+ { "傻里傻气", "傻裡傻氣" },
+ { "僮仆", "僮僕" },
+ { "僵尸", "殭屍" },
+ { "儒略历", "儒略曆" },
+ { "儒略改革历", "儒略改革曆" },
+ { "儿", "兒" },
+ { "兀术", "兀朮" },
+ { "元凶", "元兇" },
+ { "充饥", "充饑" },
+ { "兆余", "兆餘" },
+ { "先占", "先佔" },
+ { "先采", "先採" },
+ { "光致致", "光緻緻" },
+ { "克制不了", "剋制不了" },
+ { "克制不住", "剋制不住" },
+ { "克复", "克複" },
+ { "克扣", "剋扣" },
+ { "克星", "剋星" },
+ { "克期", "剋期" },
+ { "克死", "剋死" },
+ { "克药", "克藥" },
+ { "克薄", "剋薄" },
+ { "免征", "免徵" },
+ { "兑", "兌" },
+ { "兖", "兗" },
+ { "党", "黨" },
+ { "党参", "党參" },
+ { "党太尉", "党太尉" },
+ { "党怀英", "党懷英" },
+ { "党进", "党進" },
+ { "党項", "党項" },
+ { "党项", "党項" },
+ { "全干", "全乾" },
+ { "八余", "八餘" },
+ { "八只", "八隻" },
+ { "八字胡", "八字鬍" },
+ { "八扎", "八紮" },
+ { "八蜡", "八蜡" },
+ { "公仆", "公僕" },
+ { "公仔面", "公仔麵" },
+ { "公余", "公餘" },
+ { "公历", "公曆" },
+ { "公厘", "公釐" },
+ { "公干", "公幹" },
+ { "六余", "六餘" },
+ { "六冲", "六衝" },
+ { "六出", "六齣" },
+ { "六只", "六隻" },
+ { "六扎", "六紮" },
+ { "六谷", "六穀" },
+ { "兰", "蘭" },
+ { "共和历", "共和曆" },
+ { "关", "關" },
+ { "关弓与我确", "關弓與我确" },
+ { "关系", "關係" },
+ { "关系着", "關係著" },
+ { "兴", "興" },
+ { "兴致", "興緻" },
+ { "其余", "其餘" },
+ { "典范", "典範" },
+ { "兹", "茲" },
+ { "养", "養" },
+ { "兼并", "兼并" },
+ { "兽", "獸" },
+ { "兽欲", "獸慾" },
+ { "冁", "囅" },
+ { "内", "內" },
+ { "内制", "內製" },
+ { "内哄", "內鬨" },
+ { "内斗", "內鬥" },
+ { "冈", "岡" },
+ { "册", "冊" },
+ { "冗余", "冗餘" },
+ { "写", "寫" },
+ { "写字台", "寫字檯" },
+ { "军", "軍" },
+ { "军队克制", "軍隊剋制" },
+ { "农", "農" },
+ { "农历", "農曆" },
+ { "农庄", "農莊" },
+ { "农民历", "農民曆" },
+ { "农药", "農藥" },
+ { "冤仇", "冤讎" },
+ { "冥蒙", "冥濛" },
+ { "冬冬鼓", "鼕鼕鼓" },
+ { "冬天里", "冬天裡" },
+ { "冬日里", "冬日裡" },
+ { "冬游", "冬遊" },
+ { "冯", "馮" },
+ { "冲", "沖" },
+ { "冲上", "衝上" },
+ { "冲下", "衝下" },
+ { "冲倒", "衝倒" },
+ { "冲克", "衝剋" },
+ { "冲冠", "衝冠" },
+ { "冲冠发怒", "沖冠髮怒" },
+ { "冲决", "衝決" },
+ { "冲出", "衝出" },
+ { "冲击", "衝擊" },
+ { "冲到", "衝到" },
+ { "冲刺", "衝刺" },
+ { "冲力", "衝力" },
+ { "冲动", "衝動" },
+ { "冲劲", "衝勁" },
+ { "冲压", "衝壓" },
+ { "冲去", "衝去" },
+ { "冲口", "衝口" },
+ { "冲坚陷阵", "衝堅陷陣" },
+ { "冲垮", "衝垮" },
+ { "冲堂", "衝堂" },
+ { "冲天", "衝天" },
+ { "冲头阵", "衝頭陣" },
+ { "冲州撞府", "衝州撞府" },
+ { "冲心", "衝心" },
+ { "冲掉", "衝掉" },
+ { "冲撞", "衝撞" },
+ { "冲散", "衝散" },
+ { "冲杀", "衝殺" },
+ { "冲来", "衝來" },
+ { "冲波", "衝波" },
+ { "冲浪", "衝浪" },
+ { "冲激", "衝激" },
+ { "冲然", "衝然" },
+ { "冲盹", "衝盹" },
+ { "冲着", "衝著" },
+ { "冲破", "衝破" },
+ { "冲程", "衝程" },
+ { "冲突", "衝突" },
+ { "冲线", "衝線" },
+ { "冲要", "衝要" },
+ { "冲起", "衝起" },
+ { "冲车", "衝車" },
+ { "冲过", "衝過" },
+ { "冲进", "衝進" },
+ { "冲量", "衝量" },
+ { "冲锋", "衝鋒" },
+ { "冲陷", "衝陷" },
+ { "冲风", "衝風" },
+ { "决", "決" },
+ { "决斗", "決鬥" },
+ { "况", "況" },
+ { "冶游", "冶遊" },
+ { "冷面", "冷麵" },
+ { "冻", "凍" },
+ { "净", "凈" },
+ { "净余", "淨餘" },
+ { "净发", "淨髮" },
+ { "准三后", "准三后" },
+ { "准不准", "準不準" },
+ { "准会", "準會" },
+ { "准例", "準例" },
+ { "准保", "準保" },
+ { "准儿", "準兒" },
+ { "准决赛", "準決賽" },
+ { "准分子", "準分子" },
+ { "准则", "準則" },
+ { "准噶尔", "準噶爾" },
+ { "准备", "準備" },
+ { "准头", "準頭" },
+ { "准定", "準定" },
+ { "准平原", "準平原" },
+ { "准度", "準度" },
+ { "准式", "準式" },
+ { "准拟", "準擬" },
+ { "准拿督", "準拿督" },
+ { "准据", "準據" },
+ { "准新娘", "準新娘" },
+ { "准新郎", "準新郎" },
+ { "准时", "準時" },
+ { "准星", "準星" },
+ { "准是", "準是" },
+ { "准点", "準點" },
+ { "准的", "準的" },
+ { "准直", "準直" },
+ { "准确", "準確" },
+ { "准线", "準線" },
+ { "准绳", "準繩" },
+ { "准话", "準話" },
+ { "准谱", "準譜" },
+ { "准货币", "準貨幣" },
+ { "凉", "涼" },
+ { "凉面", "涼麵" },
+ { "凌蒙初", "凌濛初" },
+ { "减", "減" },
+ { "减肥药", "減肥藥" },
+ { "凑", "湊" },
+ { "凛", "凜" },
+ { "凝炼", "凝鍊" },
+ { "几", "幾" },
+ { "几上", "几上" },
+ { "几丝", "几絲" },
+ { "几净窗明", "几淨窗明" },
+ { "几几", "几几" },
+ { "几凳", "几凳" },
+ { "几出", "幾齣" },
+ { "几只", "幾隻" },
+ { "几子", "几子" },
+ { "几旁", "几旁" },
+ { "几杖", "几杖" },
+ { "几案", "几案" },
+ { "几椅", "几椅" },
+ { "几榻", "几榻" },
+ { "几筵", "几筵" },
+ { "几面上", "几面上" },
+ { "凤", "鳳" },
+ { "凫", "鳧" },
+ { "凭", "憑" },
+ { "凭借", "憑藉" },
+ { "凭借着", "憑藉著" },
+ { "凭准", "憑準" },
+ { "凭几", "憑几" },
+ { "凭吊", "憑弔" },
+ { "凭折", "憑摺" },
+ { "凯", "凱" },
+ { "凶刀", "兇刀" },
+ { "凶器", "兇器" },
+ { "凶嫌", "兇嫌" },
+ { "凶巴巴", "兇巴巴" },
+ { "凶徒", "兇徒" },
+ { "凶恶", "兇惡" },
+ { "凶悍", "兇悍" },
+ { "凶手", "兇手" },
+ { "凶杀", "兇殺" },
+ { "凶枪", "兇槍" },
+ { "凶案", "兇案" },
+ { "凶横", "兇橫" },
+ { "凶残", "兇殘" },
+ { "凶殘", "兇殘" },
+ { "凶殺", "兇殺" },
+ { "凶犯", "兇犯" },
+ { "凶狠", "兇狠" },
+ { "凶猛", "兇猛" },
+ { "凶疑", "兇疑" },
+ { "凶相", "兇相" },
+ { "凶险", "兇險" },
+ { "凹洞里", "凹洞裡" },
+ { "出丑", "出醜" },
+ { "出儿", "齣兒" },
+ { "出剧", "齣劇" },
+ { "出动画", "齣動畫" },
+ { "出卡通", "齣卡通" },
+ { "出戏", "齣戲" },
+ { "出游", "出遊" },
+ { "出电影", "齣電影" },
+ { "出电视", "齣電視" },
+ { "出节目", "齣節目" },
+ { "出锤", "出鎚" },
+ { "击", "擊" },
+ { "击扑", "擊扑" },
+ { "击钟", "擊鐘" },
+ { "凿", "鑿" },
+ { "分别致", "分别致" },
+ { "分半钟", "分半鐘" },
+ { "分占", "分佔" },
+ { "分多钟", "分多鐘" },
+ { "分子钟", "分子鐘" },
+ { "分钟", "分鐘" },
+ { "刍", "芻" },
+ { "刑余", "刑餘" },
+ { "划", "劃" },
+ { "划一桨", "划一槳" },
+ { "划上", "划上" },
+ { "划下", "划下" },
+ { "划不来", "划不來" },
+ { "划了", "划了" },
+ { "划具", "划具" },
+ { "划出", "划出" },
+ { "划到", "划到" },
+ { "划动", "划動" },
+ { "划去", "划去" },
+ { "划子", "划子" },
+ { "划得来", "划得來" },
+ { "划拳", "划拳" },
+ { "划来划去", "划來划去" },
+ { "划桨", "划槳" },
+ { "划水", "划水" },
+ { "划着", "划著" },
+ { "划算", "划算" },
+ { "划船", "划船" },
+ { "划艇", "划艇" },
+ { "划行", "划行" },
+ { "划走", "划走" },
+ { "划起", "划起" },
+ { "划过", "划過" },
+ { "划进", "划進" },
+ { "划龙舟", "划龍舟" },
+ { "刘", "劉" },
+ { "刘佳怜", "劉佳怜" },
+ { "刘克庄", "劉克莊" },
+ { "刘芸后", "劉芸后" },
+ { "则", "則" },
+ { "刚", "剛" },
+ { "刚干", "剛乾" },
+ { "刚才一载", "剛纔一載" },
+ { "刚雇", "剛僱" },
+ { "创", "創" },
+ { "创制", "創製" },
+ { "创获", "創穫" },
+ { "删", "刪" },
+ { "利欲", "利慾" },
+ { "别", "別" },
+ { "别口气", "彆口氣" },
+ { "别庄", "別莊" },
+ { "别强", "彆強" },
+ { "别扭", "彆扭" },
+ { "别拗", "彆拗" },
+ { "别气", "彆氣" },
+ { "别着", "別著" },
+ { "别致", "別緻" },
+ { "别辟", "別闢" },
+ { "刭", "剄" },
+ { "刮了", "颳了" },
+ { "刮倒", "颳倒" },
+ { "刮去", "颳去" },
+ { "刮得", "颳得" },
+ { "刮着", "刮著" },
+ { "刮胡", "刮鬍" },
+ { "刮走", "颳走" },
+ { "刮起", "颳起" },
+ { "刮雪", "颳雪" },
+ { "刮风", "颳風" },
+ { "制为", "製為" },
+ { "制件", "製件" },
+ { "制作", "製作" },
+ { "制做", "製做" },
+ { "制冰", "製冰" },
+ { "制冷", "製冷" },
+ { "制剂", "製劑" },
+ { "制取", "製取" },
+ { "制品", "製品" },
+ { "制图", "製圖" },
+ { "制备", "製備" },
+ { "制得", "製得" },
+ { "制成", "製成" },
+ { "制法", "製法" },
+ { "制浆", "製漿" },
+ { "制片", "製片" },
+ { "制版", "製版" },
+ { "制盐", "製鹽" },
+ { "制程", "製程" },
+ { "制签", "制籤" },
+ { "制糖", "製糖" },
+ { "制纸", "製紙" },
+ { "制药", "製藥" },
+ { "制表", "製表" },
+ { "制造", "製造" },
+ { "制钟", "制鐘" },
+ { "制革", "製革" },
+ { "制鞋", "製鞋" },
+ { "刹", "剎" },
+ { "刺绣", "刺繡" },
+ { "刻半钟", "刻半鐘" },
+ { "刻多钟", "刻多鐘" },
+ { "刻钟", "刻鐘" },
+ { "刽", "劊" },
+ { "刿", "劌" },
+ { "剀", "剴" },
+ { "剂", "劑" },
+ { "剃发", "剃髮" },
+ { "剃胡", "剃鬍" },
+ { "剃须", "剃鬚" },
+ { "削发", "削髮" },
+ { "削面", "削麵" },
+ { "剐", "剮" },
+ { "剑", "劍" },
+ { "剔庄货", "剔莊貨" },
+ { "剥", "剝" },
+ { "剥制", "剝製" },
+ { "剧", "劇" },
+ { "剧药", "劇藥" },
+ { "剩余", "剩餘" },
+ { "剪其发", "剪其髮" },
+ { "剪发", "剪髮" },
+ { "剪彩", "剪綵" },
+ { "割舍", "割捨" },
+ { "劉佳怜", "劉佳怜" },
+ { "力争上游", "力爭上遊" },
+ { "力克制", "力剋制" },
+ { "力拼", "力拚" },
+ { "力求克制", "力求剋制" },
+ { "劝", "勸" },
+ { "办", "辦" },
+ { "办公台", "辦公檯" },
+ { "功致", "功緻" },
+ { "加注", "加註" },
+ { "加药", "加藥" },
+ { "务", "務" },
+ { "劢", "勱" },
+ { "动", "動" },
+ { "动荡", "動蕩" },
+ { "劫余", "劫餘" },
+ { "励", "勵" },
+ { "劲", "勁" },
+ { "劳", "勞" },
+ { "劳力士表", "勞力士錶" },
+ { "势", "勢" },
+ { "勃郁", "勃鬱" },
+ { "勋", "勛" },
+ { "勋章", "勳章" },
+ { "勤仆", "勤僕" },
+ { "勤朴", "勤樸" },
+ { "勺药", "勺藥" },
+ { "勾干", "勾幹" },
+ { "勾心斗角", "勾心鬥角" },
+ { "勾魂荡魄", "勾魂蕩魄" },
+ { "匀", "勻" },
+ { "包准", "包準" },
+ { "包庄", "包莊" },
+ { "包扎", "包紮" },
+ { "包谷", "包穀" },
+ { "匏系", "匏繫" },
+ { "北回线", "北迴線" },
+ { "北回铁路", "北迴鐵路" },
+ { "北岳", "北嶽" },
+ { "匡复", "匡複" },
+ { "匦", "匭" },
+ { "匪干", "匪幹" },
+ { "匮", "匱" },
+ { "区", "區" },
+ { "医", "醫" },
+ { "医药", "醫藥" },
+ { "医院里", "醫院裡" },
+ { "十余", "十餘" },
+ { "十出", "十齣" },
+ { "十只", "十隻" },
+ { "十扎", "十紮" },
+ { "千余", "千餘" },
+ { "千只", "千隻" },
+ { "千回百折", "千迴百折" },
+ { "千回百转", "千迴百轉" },
+ { "千扎", "千紮" },
+ { "千钧一发", "千鈞一髮" },
+ { "升官", "陞官" },
+ { "升平", "昇平" },
+ { "升阳", "昇陽" },
+ { "半只", "半隻" },
+ { "华", "華" },
+ { "华严钟", "華嚴鐘" },
+ { "华发", "華髮" },
+ { "协", "協" },
+ { "单", "單" },
+ { "单于", "單于" },
+ { "单干", "單幹" },
+ { "单打独斗", "單打獨鬥" },
+ { "卖", "賣" },
+ { "卖呆", "賣獃" },
+ { "南京钟", "南京鐘" },
+ { "南回线", "南迴線" },
+ { "南回铁路", "南迴鐵路" },
+ { "南宫适", "南宮适" },
+ { "南岳", "南嶽" },
+ { "南游", "南遊" },
+ { "南筑", "南筑" },
+ { "博汇", "博彙" },
+ { "博采", "博採" },
+ { "卜云吉", "卜云吉" },
+ { "卞庄", "卞莊" },
+ { "占〇", "佔〇" },
+ { "占一", "佔一" },
+ { "占七", "佔七" },
+ { "占万", "佔万" },
+ { "占三", "佔三" },
+ { "占上风", "佔上風" },
+ { "占下", "佔下" },
+ { "占不占", "佔不佔" },
+ { "占不足", "佔不足" },
+ { "占世界", "佔世界" },
+ { "占东", "佔東" },
+ { "占两", "佔兩" },
+ { "占个", "佔個" },
+ { "占中", "佔中" },
+ { "占为", "佔為" },
+ { "占主", "佔主" },
+ { "占九", "佔九" },
+ { "占了", "佔了" },
+ { "占二", "佔二" },
+ { "占五", "佔五" },
+ { "占人便宜", "佔人便宜" },
+ { "占亿", "佔億" },
+ { "占优", "佔優" },
+ { "占位", "佔位" },
+ { "占住", "佔住" },
+ { "占便宜", "佔便宜" },
+ { "占便宜的是呆", "占便宜的是獃" },
+ { "占俄", "佔俄" },
+ { "占停车", "佔停車" },
+ { "占先", "佔先" },
+ { "占光", "佔光" },
+ { "占全", "佔全" },
+ { "占八", "佔八" },
+ { "占六", "佔六" },
+ { "占分", "佔分" },
+ { "占到", "佔到" },
+ { "占加", "佔加" },
+ { "占劣", "佔劣" },
+ { "占北", "佔北" },
+ { "占十", "佔十" },
+ { "占千", "佔千" },
+ { "占半", "佔半" },
+ { "占南", "佔南" },
+ { "占占", "佔佔" },
+ { "占印", "佔印" },
+ { "占压", "佔壓" },
+ { "占去", "佔去" },
+ { "占取", "佔取" },
+ { "占台", "佔台" },
+ { "占后", "佔後" },
+ { "占哺乳", "佔哺乳" },
+ { "占嗫", "佔囁" },
+ { "占四", "佔四" },
+ { "占国内", "佔國內" },
+ { "占在", "佔在" },
+ { "占地", "佔地" },
+ { "占场", "佔場" },
+ { "占多", "佔多" },
+ { "占大", "佔大" },
+ { "占头", "佔頭" },
+ { "占好", "佔好" },
+ { "占小", "佔小" },
+ { "占少", "佔少" },
+ { "占尽", "佔盡" },
+ { "占局部", "佔局部" },
+ { "占屋", "佔屋" },
+ { "占山", "佔山" },
+ { "占市场", "佔市場" },
+ { "占平均", "佔平均" },
+ { "占床", "佔床" },
+ { "占座", "佔座" },
+ { "占得", "佔得" },
+ { "占德", "佔德" },
+ { "占总", "佔總" },
+ { "占据", "佔據" },
+ { "占掉", "佔掉" },
+ { "占整体", "佔整體" },
+ { "占新", "佔新" },
+ { "占有", "佔有" },
+ { "占有欲", "佔有慾" },
+ { "占查", "佔查" },
+ { "占次", "佔次" },
+ { "占比", "佔比" },
+ { "占毕", "佔畢" },
+ { "占法", "佔法" },
+ { "占满", "佔滿" },
+ { "占澳", "佔澳" },
+ { "占率", "佔率" },
+ { "占用", "佔用" },
+ { "占百", "佔百" },
+ { "占着", "佔著" },
+ { "占稳", "佔穩" },
+ { "占线", "佔線" },
+ { "占缺", "佔缺" },
+ { "占网", "佔網" },
+ { "占美", "佔美" },
+ { "占耕", "佔耕" },
+ { "占至多", "佔至多" },
+ { "占至少", "佔至少" },
+ { "占苏", "佔蘇" },
+ { "占英", "佔英" },
+ { "占葡", "佔葡" },
+ { "占西", "佔西" },
+ { "占资源", "佔資源" },
+ { "占起", "佔起" },
+ { "占超过", "佔超過" },
+ { "占过", "佔過" },
+ { "占道", "佔道" },
+ { "占零", "佔零" },
+ { "占領", "佔領" },
+ { "占领", "佔領" },
+ { "占饭", "佔飯" },
+ { "占香", "佔香" },
+ { "占马", "佔馬" },
+ { "占高枝儿", "佔高枝兒" },
+ { "卢", "盧" },
+ { "卢棱伽", "盧稜伽" },
+ { "卤", "鹵" },
+ { "卤制", "滷製" },
+ { "卤味", "滷味" },
+ { "卤水", "滷水" },
+ { "卤汁", "滷汁" },
+ { "卤湖", "滷湖" },
+ { "卤肉", "滷肉" },
+ { "卤菜", "滷菜" },
+ { "卤蛋", "滷蛋" },
+ { "卤面", "滷麵" },
+ { "卤鸡", "滷雞" },
+ { "卧游", "臥遊" },
+ { "卫", "衛" },
+ { "卫后庄公", "衛後莊公" },
+ { "卫星钟", "衛星鐘" },
+ { "印制", "印製" },
+ { "印累绶若", "印纍綬若" },
+ { "却", "卻" },
+ { "卵与石斗", "卵與石鬥" },
+ { "卷云", "捲雲" },
+ { "卷住", "捲住" },
+ { "卷儿", "捲兒" },
+ { "卷入", "捲入" },
+ { "卷动", "捲動" },
+ { "卷去", "捲去" },
+ { "卷发", "捲髮" },
+ { "卷图", "捲圖" },
+ { "卷土重来", "捲土重來" },
+ { "卷尺", "捲尺" },
+ { "卷帘", "捲簾" },
+ { "卷心菜", "捲心菜" },
+ { "卷成", "捲成" },
+ { "卷曲", "捲曲" },
+ { "卷来", "捲來" },
+ { "卷款", "捲款" },
+ { "卷毛", "捲毛" },
+ { "卷烟", "捲煙" },
+ { "卷筒", "捲筒" },
+ { "卷纸", "捲紙" },
+ { "卷缩", "捲縮" },
+ { "卷舌", "捲舌" },
+ { "卷舖盖", "捲舖蓋" },
+ { "卷菸", "捲菸" },
+ { "卷袖", "捲袖" },
+ { "卷走", "捲走" },
+ { "卷起", "捲起" },
+ { "卷轴", "捲軸" },
+ { "卷逃", "捲逃" },
+ { "卷铺盖", "捲鋪蓋" },
+ { "卷须", "卷鬚" },
+ { "卷风", "捲風" },
+ { "卺", "巹" },
+ { "厂", "廠" },
+ { "厂部", "厂部" },
+ { "厅", "廳" },
+ { "历", "歷" },
+ { "历书", "曆書" },
+ { "历元", "曆元" },
+ { "历史里", "歷史裡" },
+ { "历命", "曆命" },
+ { "历始", "曆始" },
+ { "历室", "曆室" },
+ { "历尾", "曆尾" },
+ { "历数", "曆數" },
+ { "历日", "曆日" },
+ { "历本", "曆本" },
+ { "历法", "曆法" },
+ { "历物之意", "厤物之意" },
+ { "历狱", "曆獄" },
+ { "历纪", "曆紀" },
+ { "历象", "曆象" },
+ { "厉", "厲" },
+ { "压", "壓" },
+ { "厌", "厭" },
+ { "厍", "厙" },
+ { "厕", "廁" },
+ { "厘出", "釐出" },
+ { "厘升", "釐升" },
+ { "厘定", "釐定" },
+ { "厘正", "釐正" },
+ { "厘清", "釐清" },
+ { "厘订", "釐訂" },
+ { "原子钟", "原子鐘" },
+ { "原钟", "原鐘" },
+ { "厢", "廂" },
+ { "厣", "厴" },
+ { "厦", "廈" },
+ { "厨", "廚" },
+ { "厨余", "廚餘" },
+ { "厩", "廄" },
+ { "厮", "廝" },
+ { "厮斗", "廝鬥" },
+ { "县", "縣" },
+ { "县志", "縣誌" },
+ { "县里", "縣裡" },
+ { "参", "參" },
+ { "参绥", "蔘綏" },
+ { "双", "雙" },
+ { "双折", "雙摺" },
+ { "双胜类", "雙胜類" },
+ { "双雕", "雙鵰" },
+ { "反冲", "反衝" },
+ { "反复", "反覆" },
+ { "反复制", "反複製" },
+ { "反朴", "反樸" },
+ { "发", "發" },
+ { "发上冲冠", "髮上沖冠" },
+ { "发上指冠", "髮上指冠" },
+ { "发丝", "髮絲" },
+ { "发为血之本", "髮為血之本" },
+ { "发乳", "髮乳" },
+ { "发光可鉴", "髮光可鑑" },
+ { "发匪", "髮匪" },
+ { "发卷", "髮捲" },
+ { "发呆", "發獃" },
+ { "发型", "髮型" },
+ { "发夹", "髮夾" },
+ { "发妻", "髮妻" },
+ { "发姐", "髮姐" },
+ { "发屋", "髮屋" },
+ { "发已霜白", "髮已霜白" },
+ { "发带", "髮帶" },
+ { "发干", "發乾" },
+ { "发庄", "發莊" },
+ { "发廊", "髮廊" },
+ { "发式", "髮式" },
+ { "发引千钧", "髮引千鈞" },
+ { "发指", "髮指" },
+ { "发松", "發鬆" },
+ { "发根", "髮根" },
+ { "发汗药", "發汗藥" },
+ { "发油", "髮油" },
+ { "发漂", "髮漂" },
+ { "发状", "髮狀" },
+ { "发癣", "髮癬" },
+ { "发着", "發著" },
+ { "发短心长", "髮短心長" },
+ { "发禁", "髮禁" },
+ { "发笺", "髮箋" },
+ { "发签", "發籤" },
+ { "发纱", "髮紗" },
+ { "发结", "髮結" },
+ { "发网", "髮網" },
+ { "发肤", "髮膚" },
+ { "发胶", "髮膠" },
+ { "发脚", "髮腳" },
+ { "发菜", "髮菜" },
+ { "发蒙", "發矇" },
+ { "发蜡", "髮蠟" },
+ { "发踊冲冠", "髮踊沖冠" },
+ { "发辫", "髮辮" },
+ { "发针", "髮針" },
+ { "发钗", "髮釵" },
+ { "发长", "髮長" },
+ { "发际", "髮際" },
+ { "发雕", "髮雕" },
+ { "发霜", "髮霜" },
+ { "发面", "發麵" },
+ { "发饰", "髮飾" },
+ { "发髻", "髮髻" },
+ { "发鬓", "髮鬢" },
+ { "取舍", "取捨" },
+ { "受托", "受託" },
+ { "变", "變" },
+ { "变丑", "變醜" },
+ { "变征", "變徵" },
+ { "变脏", "變髒" },
+ { "叙", "敘" },
+ { "叠", "疊" },
+ { "口干", "口乾" },
+ { "口腹之欲", "口腹之慾" },
+ { "口里", "口裡" },
+ { "口钟", "口鐘" },
+ { "古书云", "古書云" },
+ { "古書云", "古書云" },
+ { "古朴", "古樸" },
+ { "古柯咸", "古柯鹹" },
+ { "古語云", "古語云" },
+ { "古迹", "古迹" },
+ { "古钟", "古鐘" },
+ { "古钟表", "古鐘錶" },
+ { "另辟", "另闢" },
+ { "叩钟", "叩鐘" },
+ { "只冲", "只衝" },
+ { "只占", "只佔" },
+ { "只字", "隻字" },
+ { "只影", "隻影" },
+ { "只手遮天", "隻手遮天" },
+ { "只眼", "隻眼" },
+ { "只言片语", "隻言片語" },
+ { "只身", "隻身" },
+ { "只采", "只採" },
+ { "叮叮当当", "叮叮噹噹" },
+ { "叮当", "叮噹" },
+ { "可以克制", "可以剋制" },
+ { "可紧可松", "可緊可鬆" },
+ { "台子", "檯子" },
+ { "台布", "檯布" },
+ { "台灯", "檯燈" },
+ { "台球", "檯球" },
+ { "台钟", "台鐘" },
+ { "台面", "檯面" },
+ { "台风", "颱風" },
+ { "叱咤乐坛", "叱咤樂壇" },
+ { "叱咤叱叱咤", "叱咤叱叱咤" },
+ { "叱咤咤", "叱咤咤" },
+ { "叱咤樂壇", "叱咤樂壇" },
+ { "叶", "葉" },
+ { "叶不二子", "叶不二子" },
+ { "叶叶琴", "葉叶琴" },
+ { "叶志穗", "叶志穗" },
+ { "叶恭弘", "叶恭弘" },
+ { "叶音", "叶音" },
+ { "叶韵", "叶韻" },
+ { "号", "號" },
+ { "号志", "號誌" },
+ { "叹", "嘆" },
+ { "叽", "嘰" },
+ { "吁天", "籲天" },
+ { "吁求", "籲求" },
+ { "吁请", "籲請" },
+ { "吃姜", "吃薑" },
+ { "吃板刀面", "吃板刀麵" },
+ { "吃着不尽", "吃著不盡" },
+ { "吃药", "吃藥" },
+ { "吃辣面", "吃辣麵" },
+ { "吃里扒外", "吃裡扒外" },
+ { "吃里爬外", "吃裡爬外" },
+ { "吃错药", "吃錯藥" },
+ { "各类钟", "各類鐘" },
+ { "各辟", "各闢" },
+ { "合伙", "合夥" },
+ { "合准", "合準" },
+ { "合历", "合曆" },
+ { "合并", "合併" },
+ { "合府", "閤府" },
+ { "合着", "合著" },
+ { "合采", "合採" },
+ { "吊丧", "弔喪" },
+ { "吊书", "弔書" },
+ { "吊儿郎当", "弔兒郎當" },
+ { "吊卷", "弔卷" },
+ { "吊取", "弔取" },
+ { "吊古", "弔古" },
+ { "吊唁", "弔唁" },
+ { "吊喉", "弔喉" },
+ { "吊喭", "弔喭" },
+ { "吊场", "弔場" },
+ { "吊头", "弔頭" },
+ { "吊奠", "弔奠" },
+ { "吊孝", "弔孝" },
+ { "吊客", "弔客" },
+ { "吊宴", "弔宴" },
+ { "吊带", "弔帶" },
+ { "吊影", "弔影" },
+ { "吊慰", "弔慰" },
+ { "吊扣", "弔扣" },
+ { "吊拷", "弔拷" },
+ { "吊拷绷扒", "弔拷繃扒" },
+ { "吊挂", "弔掛" },
+ { "吊挂着", "吊掛著" },
+ { "吊撒", "弔撒" },
+ { "吊文", "弔文" },
+ { "吊旗", "弔旗" },
+ { "吊杆", "吊杆" },
+ { "吊桥", "弔橋" },
+ { "吊死", "弔死" },
+ { "吊民", "弔民" },
+ { "吊着", "吊著" },
+ { "吊祭", "弔祭" },
+ { "吊纸", "弔紙" },
+ { "吊者大悦", "弔者大悅" },
+ { "吊脚儿事", "弔腳兒事" },
+ { "吊腰撒跨", "弔腰撒跨" },
+ { "吊膀子", "弔膀子" },
+ { "吊词", "弔詞" },
+ { "吊诡", "弔詭" },
+ { "吊谎", "弔謊" },
+ { "吊贺迎送", "弔賀迎送" },
+ { "吊钟", "吊鐘" },
+ { "吊问", "弔問" },
+ { "吊颈", "弔頸" },
+ { "吊鹤", "弔鶴" },
+ { "同伙", "同夥" },
+ { "同余", "同餘" },
+ { "后", "後" },
+ { "后丰", "后豐" },
+ { "后冠", "后冠" },
+ { "后北街", "后北街" },
+ { "后发座", "后髮座" },
+ { "后发星系团", "后髮星系團" },
+ { "后土", "后土" },
+ { "后妃", "后妃" },
+ { "后安路", "后安路" },
+ { "后平路", "后平路" },
+ { "后座", "后座" },
+ { "后海湾", "后海灣" },
+ { "后海灣", "后海灣" },
+ { "后瑞站", "后瑞站" },
+ { "后稷", "后稷" },
+ { "后羿", "后羿" },
+ { "后街", "后街" },
+ { "后角", "后角" },
+ { "后豐", "后豐" },
+ { "后里", "后里" },
+ { "后髮座", "后髮座" },
+ { "后髮星系團", "后髮星系團" },
+ { "向导", "嚮導" },
+ { "向应", "嚮應" },
+ { "向往", "嚮往" },
+ { "向着", "向著" },
+ { "向迩", "嚮邇" },
+ { "吓", "嚇" },
+ { "吕", "呂" },
+ { "吕后", "呂后" },
+ { "吗", "嗎" },
+ { "吞并", "吞併" },
+ { "吟游", "吟遊" },
+ { "吣", "唚" },
+ { "吨", "噸" },
+ { "含齿戴发", "含齒戴髮" },
+ { "听", "聽" },
+ { "启", "啟" },
+ { "吴", "吳" },
+ { "吹发", "吹髮" },
+ { "吹干", "吹乾" },
+ { "吹胡", "吹鬍" },
+ { "呂后", "呂后" },
+ { "呆串了皮", "獃串了皮" },
+ { "呆事", "獃事" },
+ { "呆人", "獃人" },
+ { "呆呆", "獃獃" },
+ { "呆头", "獃頭" },
+ { "呆子", "獃子" },
+ { "呆性", "獃性" },
+ { "呆想", "獃想" },
+ { "呆憨呆", "獃憨獃" },
+ { "呆根", "獃根" },
+ { "呆气", "獃氣" },
+ { "呆滞", "獃滯" },
+ { "呆痴", "獃痴" },
+ { "呆着", "獃著" },
+ { "呆磕", "獃磕" },
+ { "呆等", "獃等" },
+ { "呆脑", "獃腦" },
+ { "呆致致", "呆緻緻" },
+ { "呆话", "獃話" },
+ { "呆里呆气", "呆裡呆氣" },
+ { "呐", "吶" },
+ { "呒", "嘸" },
+ { "呓", "囈" },
+ { "呕", "嘔" },
+ { "呖", "嚦" },
+ { "呗", "唄" },
+ { "呗赞", "唄讚" },
+ { "员", "員" },
+ { "呙", "咼" },
+ { "呛", "嗆" },
+ { "呜", "嗚" },
+ { "周历", "周曆" },
+ { "周后", "周后" },
+ { "周庄王", "周莊王" },
+ { "周杰倫", "周杰倫" },
+ { "周游", "周遊" },
+ { "周游世界", "週遊世界" },
+ { "呼吁", "呼籲" },
+ { "和克制", "和剋制" },
+ { "和奸", "和姦" },
+ { "咎征", "咎徵" },
+ { "咏", "詠" },
+ { "咕咕钟", "咕咕鐘" },
+ { "咙", "嚨" },
+ { "咛", "嚀" },
+ { "咤", "吒" },
+ { "咨询", "諮詢" },
+ { "咬姜呷醋", "咬薑呷醋" },
+ { "咯当", "咯噹" },
+ { "咳嗽药", "咳嗽藥" },
+ { "咸卤", "鹹鹵" },
+ { "咸味", "鹹味" },
+ { "咸咸", "鹹鹹" },
+ { "咸嘴淡舌", "鹹嘴淡舌" },
+ { "咸土", "鹹土" },
+ { "咸度", "鹹度" },
+ { "咸得", "鹹得" },
+ { "咸批", "鹹批" },
+ { "咸水", "鹹水" },
+ { "咸汤", "鹹湯" },
+ { "咸派", "鹹派" },
+ { "咸海", "鹹海" },
+ { "咸淡", "鹹淡" },
+ { "咸湖", "鹹湖" },
+ { "咸潟", "鹹潟" },
+ { "咸猪肉", "鹹豬肉" },
+ { "咸的", "鹹的" },
+ { "咸类", "鹹類" },
+ { "咸粥", "鹹粥" },
+ { "咸肉", "鹹肉" },
+ { "咸菜", "鹹菜" },
+ { "咸菜干", "鹹菜乾" },
+ { "咸蛋", "鹹蛋" },
+ { "咸食", "鹹食" },
+ { "咸鱼", "鹹魚" },
+ { "咸鸭蛋", "鹹鴨蛋" },
+ { "哀吊", "哀弔" },
+ { "哀挽", "哀輓" },
+ { "品汇", "品彙" },
+ { "哄动", "鬨動" },
+ { "哄堂", "鬨堂" },
+ { "哄笑", "鬨笑" },
+ { "响", "響" },
+ { "响钟", "響鐘" },
+ { "哑", "啞" },
+ { "哒", "噠" },
+ { "哓", "嘵" },
+ { "哔", "嗶" },
+ { "哕", "噦" },
+ { "哗", "嘩" },
+ { "哙", "噲" },
+ { "哜", "嚌" },
+ { "哝", "噥" },
+ { "哟", "喲" },
+ { "哪里", "哪裡" },
+ { "哭脏", "哭髒" },
+ { "唁吊", "唁弔" },
+ { "唇干", "唇乾" },
+ { "唛", "嘜" },
+ { "唠", "嘮" },
+ { "唢", "嗩" },
+ { "唤", "喚" },
+ { "唱游", "唱遊" },
+ { "唾余", "唾餘" },
+ { "唾面自干", "唾面自乾" },
+ { "商历", "商曆" },
+ { "啧", "嘖" },
+ { "啬", "嗇" },
+ { "啭", "囀" },
+ { "啮", "嚙" },
+ { "啷当", "啷噹" },
+ { "啸", "嘯" },
+ { "喂乳", "餵乳" },
+ { "喂了", "餵了" },
+ { "喂养", "餵養" },
+ { "喂奶", "餵奶" },
+ { "喂猪", "餵豬" },
+ { "喂给", "餵給" },
+ { "喂羊", "餵羊" },
+ { "喂过", "餵過" },
+ { "喂食", "餵食" },
+ { "喂饱", "餵飽" },
+ { "喂驴", "餵驢" },
+ { "喂鱼", "餵魚" },
+ { "喂鸡", "餵雞" },
+ { "喂鸭", "餵鴨" },
+ { "喂鹅", "餵鵝" },
+ { "喜欢表", "喜歡錶" },
+ { "喜欢钟", "喜歡鐘" },
+ { "喝干", "喝乾" },
+ { "喧哄", "喧鬨" },
+ { "喷", "噴" },
+ { "喷洒", "噴洒" },
+ { "喽", "嘍" },
+ { "喾", "嚳" },
+ { "嗑药", "嗑藥" },
+ { "嗫", "囁" },
+ { "嗳", "噯" },
+ { "嘀嗒的表", "嘀嗒的錶" },
+ { "嘉肴", "嘉肴" },
+ { "嘉谷", "嘉穀" },
+ { "嘘", "噓" },
+ { "嘤", "嚶" },
+ { "嘱", "囑" },
+ { "嘱托", "囑託" },
+ { "嘴里", "嘴裡" },
+ { "噙齿戴发", "噙齒戴髮" },
+ { "噜", "嚕" },
+ { "噜苏", "嚕囌" },
+ { "嚣", "囂" },
+ { "嚼谷", "嚼穀" },
+ { "囉囉苏苏", "囉囉囌囌" },
+ { "囉苏", "囉囌" },
+ { "四余", "四餘" },
+ { "四出", "四齣" },
+ { "四出征收", "四出徵收" },
+ { "四分历", "四分曆" },
+ { "四只", "四隻" },
+ { "四扎", "四紮" },
+ { "四舍五入", "四捨五入" },
+ { "四舍六入", "四捨六入" },
+ { "四面钟", "四面鐘" },
+ { "回光返照", "迴光返照" },
+ { "回历", "回曆" },
+ { "回向", "迴向" },
+ { "回响", "迴響" },
+ { "回圈", "迴圈" },
+ { "回廊", "迴廊" },
+ { "回形夹", "迴形夾" },
+ { "回文", "迴文" },
+ { "回旋", "迴旋" },
+ { "回流", "迴流" },
+ { "回游", "回遊" },
+ { "回环", "迴環" },
+ { "回着", "回著" },
+ { "回纹针", "迴紋針" },
+ { "回绕", "迴繞" },
+ { "回翔", "迴翔" },
+ { "回肠", "迴腸" },
+ { "回荡", "回蕩" },
+ { "回诵", "迴誦" },
+ { "回路", "迴路" },
+ { "回转", "迴轉" },
+ { "回递性", "迴遞性" },
+ { "回避", "迴避" },
+ { "回采", "回採" },
+ { "回銮", "迴鑾" },
+ { "回阳荡气", "回陽蕩氣" },
+ { "回音", "迴音" },
+ { "回风", "迴風" },
+ { "团", "團" },
+ { "团子", "糰子" },
+ { "园", "園" },
+ { "园游会", "園遊會" },
+ { "园里", "園裡" },
+ { "困乏", "睏乏" },
+ { "困倦", "睏倦" },
+ { "困兽之斗", "困獸之鬥" },
+ { "困兽犹斗", "困獸猶鬥" },
+ { "困斗", "困鬥" },
+ { "困觉", "睏覺" },
+ { "囱", "囪" },
+ { "围", "圍" },
+ { "囵", "圇" },
+ { "固征", "固徵" },
+ { "国", "國" },
+ { "国之桢干", "國之楨榦" },
+ { "国仇", "國讎" },
+ { "国历", "國曆" },
+ { "图", "圖" },
+ { "图里", "圖裡" },
+ { "图鉴", "圖鑑" },
+ { "圆", "圓" },
+ { "圈占", "圈佔" },
+ { "圈子里", "圈子裡" },
+ { "圈梁", "圈樑" },
+ { "圈里", "圈裡" },
+ { "土制", "土製" },
+ { "土里", "土裡" },
+ { "圣", "聖" },
+ { "圣后", "聖后" },
+ { "在克制", "在剋制" },
+ { "地丑德齐", "地醜德齊" },
+ { "地克制", "地剋制" },
+ { "地占", "地佔" },
+ { "地心历表", "地心曆表" },
+ { "地志", "地誌" },
+ { "圹", "壙" },
+ { "场", "場" },
+ { "坏", "壞" },
+ { "坏于", "坏於" },
+ { "坐如钟", "坐如鐘" },
+ { "坐庄", "坐莊" },
+ { "坐钟", "坐鐘" },
+ { "坑里", "坑裡" },
+ { "块", "塊" },
+ { "坚", "堅" },
+ { "坚致", "堅緻" },
+ { "坛", "壇" },
+ { "坛坛罐罐", "罈罈罐罐" },
+ { "坛子", "罈子" },
+ { "坛騞", "罈騞" },
+ { "坜", "壢" },
+ { "坝", "壩" },
+ { "坞", "塢" },
+ { "坟", "墳" },
+ { "坠", "墜" },
+ { "坤范", "坤範" },
+ { "坦荡", "坦蕩" },
+ { "坦荡荡", "坦蕩蕩" },
+ { "坱郁", "坱鬱" },
+ { "垂发", "垂髮" },
+ { "垂范", "垂範" },
+ { "垄", "壟" },
+ { "垆", "壚" },
+ { "型范", "型範" },
+ { "垒", "壘" },
+ { "垦", "墾" },
+ { "垦复", "墾複" },
+ { "垦辟", "墾闢" },
+ { "垩", "堊" },
+ { "垫", "墊" },
+ { "垭", "埡" },
+ { "垲", "塏" },
+ { "埃及历", "埃及曆" },
+ { "埃及艳后", "埃及豔后" },
+ { "埃荣冲", "埃榮衝" },
+ { "埋头寻表", "埋頭尋錶" },
+ { "埋头寻钟", "埋頭尋鐘" },
+ { "城里", "城裡" },
+ { "埔裡社撫墾局", "埔裏社撫墾局" },
+ { "埔里社抚垦局", "埔裏社撫墾局" },
+ { "埘", "塒" },
+ { "埙", "塤" },
+ { "埚", "堝" },
+ { "埯", "垵" },
+ { "基准", "基準" },
+ { "基干", "基幹" },
+ { "堑", "塹" },
+ { "堕", "墮" },
+ { "堕胎药", "墮胎藥" },
+ { "堙淀", "堙澱" },
+ { "塞药", "塞藥" },
+ { "墓志", "墓誌" },
+ { "墙", "牆" },
+ { "墙里", "牆裡" },
+ { "增辟", "增闢" },
+ { "墨沈未干", "墨瀋未乾" },
+ { "壮", "壯" },
+ { "壮游", "壯遊" },
+ { "壮面", "壯麵" },
+ { "声", "聲" },
+ { "壳", "殼" },
+ { "壳里", "殼裡" },
+ { "壶", "壺" },
+ { "壶里", "壺裡" },
+ { "壹郁", "壹鬱" },
+ { "处", "處" },
+ { "备", "備" },
+ { "备注", "備註" },
+ { "复", "復" },
+ { "复习", "複習" },
+ { "复亩珍", "複畝珍" },
+ { "复仞年如", "複仞年如" },
+ { "复以百万", "複以百萬" },
+ { "复位", "複位" },
+ { "复信", "複信" },
+ { "复元音", "複元音" },
+ { "复写", "複寫" },
+ { "复决", "複決" },
+ { "复函数", "複函數" },
+ { "复分数", "複分數" },
+ { "复分析", "複分析" },
+ { "复分解", "複分解" },
+ { "复列", "複列" },
+ { "复利", "複利" },
+ { "复制", "複製" },
+ { "复印", "複印" },
+ { "复发", "複發" },
+ { "复变函数", "複變函數" },
+ { "复句", "複句" },
+ { "复叶", "複葉" },
+ { "复合", "複合" },
+ { "复名", "複名" },
+ { "复员", "複員" },
+ { "复壁", "複壁" },
+ { "复壮", "複壯" },
+ { "复复", "複復" },
+ { "复姓", "複姓" },
+ { "复字键", "複字鍵" },
+ { "复审", "複審" },
+ { "复对数", "複對數" },
+ { "复平面", "複平面" },
+ { "复式", "複式" },
+ { "复数", "複數" },
+ { "复本", "複本" },
+ { "复杂", "複雜" },
+ { "复查", "複查" },
+ { "复核", "複核" },
+ { "复检", "複檢" },
+ { "复次", "複次" },
+ { "复比", "複比" },
+ { "复活节历表", "復活節曆表" },
+ { "复流", "複流" },
+ { "复测", "複測" },
+ { "复电", "複電" },
+ { "复目", "複目" },
+ { "复眼", "複眼" },
+ { "复种", "複種" },
+ { "复线", "複線" },
+ { "复色", "複色" },
+ { "复议", "複議" },
+ { "复评", "複評" },
+ { "复诊", "複診" },
+ { "复词", "複詞" },
+ { "复试", "複試" },
+ { "复课", "複課" },
+ { "复赛", "複賽" },
+ { "复辅音", "複輔音" },
+ { "复述", "複述" },
+ { "复选", "複選" },
+ { "复钱", "複錢" },
+ { "复阅", "複閱" },
+ { "复音", "複音" },
+ { "复韵", "複韻" },
+ { "夏于乔", "夏于喬" },
+ { "夏于喬", "夏于喬" },
+ { "夏历", "夏曆" },
+ { "夏天里", "夏天裡" },
+ { "夏日里", "夏日裡" },
+ { "夏游", "夏遊" },
+ { "外制", "外製" },
+ { "外强中干", "外強中乾" },
+ { "多丑", "多醜" },
+ { "多么", "多麼" },
+ { "多余", "多餘" },
+ { "多冲", "多衝" },
+ { "多占", "多佔" },
+ { "多只", "多隻" },
+ { "夜光表", "夜光錶" },
+ { "夜游", "夜遊" },
+ { "夜里", "夜裡" },
+ { "够", "夠" },
+ { "够克制", "夠剋制" },
+ { "大伙", "大夥" },
+ { "大历", "大曆" },
+ { "大只", "大隻" },
+ { "大呆", "大獃" },
+ { "大周折", "大週摺" },
+ { "大型钟", "大型鐘" },
+ { "大干", "大幹" },
+ { "大批涌到", "大批湧到" },
+ { "大折儿", "大摺兒" },
+ { "大明历", "大明曆" },
+ { "大曲", "大麴" },
+ { "大本钟", "大本鐘" },
+ { "大病初愈", "大病初癒" },
+ { "大目干连", "大目乾連" },
+ { "大笨钟", "大笨鐘" },
+ { "大蜡", "大蜡" },
+ { "大衍历", "大衍曆" },
+ { "大言非夸", "大言非夸" },
+ { "大赞", "大讚" },
+ { "大钟", "大鐘" },
+ { "大锤", "大鎚" },
+ { "天克地冲", "天克地衝" },
+ { "天历", "天曆" },
+ { "天后", "天后" },
+ { "天地为范", "天地為範" },
+ { "天干物燥", "天乾物燥" },
+ { "天文历表", "天文曆表" },
+ { "天文学钟", "天文學鐘" },
+ { "天文钟", "天文鐘" },
+ { "太仆", "太僕" },
+ { "太初历", "太初曆" },
+ { "太后", "太后" },
+ { "夯干", "夯幹" },
+ { "头", "頭" },
+ { "头发", "頭髮" },
+ { "头巾吊在水里", "頭巾弔在水裡" },
+ { "头里", "頭裡" },
+ { "夸", "誇" },
+ { "夸丽", "夸麗" },
+ { "夸人", "夸人" },
+ { "夸克", "夸克" },
+ { "夸多斗靡", "誇多鬥靡" },
+ { "夸夸其谈", "夸夸其談" },
+ { "夸姣", "夸姣" },
+ { "夸容", "夸容" },
+ { "夸毗", "夸毗" },
+ { "夸父", "夸父" },
+ { "夸特", "夸特" },
+ { "夸脱", "夸脫" },
+ { "夸诞", "夸誕" },
+ { "夸赞", "誇讚" },
+ { "夹", "夾" },
+ { "夺", "奪" },
+ { "夺斗", "奪鬥" },
+ { "奁", "奩" },
+ { "奂", "奐" },
+ { "奇丑", "奇醜" },
+ { "奇迹", "奇蹟" },
+ { "奋", "奮" },
+ { "奋斗", "奮鬥" },
+ { "奏折", "奏摺" },
+ { "奖", "獎" },
+ { "奖杯", "獎盃" },
+ { "奥", "奧" },
+ { "奥占", "奧佔" },
+ { "女仆", "女僕" },
+ { "女佣", "女傭" },
+ { "奴仆", "奴僕" },
+ { "奸夫", "姦夫" },
+ { "奸妇", "姦婦" },
+ { "奸宄", "姦宄" },
+ { "奸情", "姦情" },
+ { "奸杀", "姦殺" },
+ { "奸污", "姦汙" },
+ { "奸淫", "姦淫" },
+ { "奸猾", "姦猾" },
+ { "奸细", "姦細" },
+ { "奸邪", "姦邪" },
+ { "她克制", "她剋制" },
+ { "好丑", "好醜" },
+ { "好呆", "好獃" },
+ { "好困", "好睏" },
+ { "好家伙", "好傢夥" },
+ { "好干", "好乾" },
+ { "好斗", "好鬥" },
+ { "好签", "好籤" },
+ { "如果干", "如果幹" },
+ { "如饥似渴", "如饑似渴" },
+ { "妆", "妝" },
+ { "妇", "婦" },
+ { "妈", "媽" },
+ { "妖后", "妖后" },
+ { "妙药", "妙藥" },
+ { "妩", "嫵" },
+ { "妪", "嫗" },
+ { "妫", "媯" },
+ { "委托", "委託" },
+ { "姗", "姍" },
+ { "姜丝", "薑絲" },
+ { "姜文杰", "姜文杰" },
+ { "姜是老的辣", "薑是老的辣" },
+ { "姜末", "薑末" },
+ { "姜桂", "薑桂" },
+ { "姜母", "薑母" },
+ { "姜汁", "薑汁" },
+ { "姜汤", "薑湯" },
+ { "姜片", "薑片" },
+ { "姜糖", "薑糖" },
+ { "姜老辣", "薑老辣" },
+ { "姜茶", "薑茶" },
+ { "姜蓉", "薑蓉" },
+ { "姜饼", "薑餅" },
+ { "姜黄", "薑黃" },
+ { "姹", "奼" },
+ { "威棱", "威稜" },
+ { "娄", "婁" },
+ { "娅", "婭" },
+ { "娆", "嬈" },
+ { "娇", "嬌" },
+ { "娈", "孌" },
+ { "娱", "娛" },
+ { "娲", "媧" },
+ { "娲杆", "媧杆" },
+ { "娴", "嫻" },
+ { "婢仆", "婢僕" },
+ { "婴", "嬰" },
+ { "婵", "嬋" },
+ { "婶", "嬸" },
+ { "媪", "媼" },
+ { "嫌凶", "嫌兇" },
+ { "嫌好道丑", "嫌好道醜" },
+ { "嫒", "嬡" },
+ { "嫔", "嬪" },
+ { "嫱", "嬙" },
+ { "嬉游", "嬉遊" },
+ { "嬖幸", "嬖倖" },
+ { "嬴余", "嬴餘" },
+ { "嬷", "嬤" },
+ { "子之丰兮", "子之丰兮" },
+ { "子云", "子云" },
+ { "字汇", "字彙" },
+ { "字里行间", "字裡行間" },
+ { "存折", "存摺" },
+ { "孙", "孫" },
+ { "学", "學" },
+ { "学里", "學裡" },
+ { "孪", "孿" },
+ { "宁", "寧" },
+ { "宇宙志", "宇宙誌" },
+ { "安沈铁路", "安瀋鐵路" },
+ { "安眠药", "安眠藥" },
+ { "安胎药", "安胎藥" },
+ { "宗周钟", "宗周鐘" },
+ { "官历", "官曆" },
+ { "官地为采", "官地為寀" },
+ { "官庄", "官莊" },
+ { "定准", "定準" },
+ { "定制", "定製" },
+ { "宜云", "宜云" },
+ { "宝", "寶" },
+ { "宝历", "寶曆" },
+ { "宝庄", "寶莊" },
+ { "宝里宝气", "寶裡寶氣" },
+ { "实", "實" },
+ { "实干", "實幹" },
+ { "宠", "寵" },
+ { "审", "審" },
+ { "宣泄", "宣洩" },
+ { "宦游", "宦遊" },
+ { "宪", "憲" },
+ { "宫", "宮" },
+ { "宫里", "宮裡" },
+ { "宴游", "宴遊" },
+ { "家丑", "家醜" },
+ { "家仆", "家僕" },
+ { "家伙", "傢伙" },
+ { "家俱", "傢俱" },
+ { "家具", "傢具" },
+ { "家庄", "家莊" },
+ { "家里", "家裡" },
+ { "容范", "容範" },
+ { "宽", "寬" },
+ { "宽余", "寬餘" },
+ { "宽宽松松", "寬寬鬆鬆" },
+ { "宽松", "寬鬆" },
+ { "宾", "賓" },
+ { "寄托", "寄託" },
+ { "密致", "密緻" },
+ { "寇仇", "寇讎" },
+ { "寇准", "寇準" },
+ { "富余", "富餘" },
+ { "寒假里", "寒假裡" },
+ { "寒栗", "寒慄" },
+ { "寝", "寢" },
+ { "寡占", "寡佔" },
+ { "寡欲", "寡慾" },
+ { "寮采", "寮寀" },
+ { "寸发千金", "寸髮千金" },
+ { "对", "對" },
+ { "对准", "對準" },
+ { "对准表", "對準錶" },
+ { "对准钟", "對準鐘" },
+ { "对折", "對摺" },
+ { "对表", "對錶" },
+ { "寺钟", "寺鐘" },
+ { "寻", "尋" },
+ { "导", "導" },
+ { "导游", "導遊" },
+ { "寿", "壽" },
+ { "寿面", "壽麵" },
+ { "封后", "封后" },
+ { "封面里", "封面裡" },
+ { "射雕", "射鵰" },
+ { "将", "將" },
+ { "将占", "將佔" },
+ { "尊后", "尊后" },
+ { "小仆", "小僕" },
+ { "小价", "小价" },
+ { "小伙子", "小夥子" },
+ { "小几", "小几" },
+ { "小只", "小隻" },
+ { "小型钟", "小型鐘" },
+ { "小米面", "小米麵" },
+ { "少占", "少佔" },
+ { "少采", "少採" },
+ { "尔", "爾" },
+ { "尔冬升", "爾冬陞" },
+ { "尘", "塵" },
+ { "尝", "嘗" },
+ { "尧", "堯" },
+ { "就克制", "就剋制" },
+ { "就范", "就範" },
+ { "就里", "就裡" },
+ { "尴", "尷" },
+ { "尸", "屍" },
+ { "尸位素餐", "尸位素餐" },
+ { "尸利", "尸利" },
+ { "尸居余气", "尸居餘氣" },
+ { "尸弃佛", "尸棄佛" },
+ { "尸祝", "尸祝" },
+ { "尸禄", "尸祿" },
+ { "尸罗精舍", "尸羅精舍" },
+ { "尸羅精舍", "尸羅精舍" },
+ { "尸臣", "尸臣" },
+ { "尸谏", "尸諫" },
+ { "尸魂界", "尸魂界" },
+ { "尸鸠", "尸鳩" },
+ { "尽", "盡" },
+ { "尽先", "儘先" },
+ { "尽其所有", "儘其所有" },
+ { "尽力", "儘力" },
+ { "尽可能", "儘可能" },
+ { "尽尽", "儘儘" },
+ { "尽快", "儘快" },
+ { "尽早", "儘早" },
+ { "尽是", "儘是" },
+ { "尽管", "儘管" },
+ { "尽速", "儘速" },
+ { "尽量克制", "盡量剋制" },
+ { "局里", "局裡" },
+ { "屁股大吊了心", "屁股大弔了心" },
+ { "层", "層" },
+ { "屉", "屜" },
+ { "届", "屆" },
+ { "屋子里", "屋子裡" },
+ { "屋梁", "屋樑" },
+ { "屋里", "屋裡" },
+ { "属", "屬" },
+ { "属托", "屬託" },
+ { "屡", "屢" },
+ { "屡顾尔仆", "屢顧爾僕" },
+ { "屦", "屨" },
+ { "屯扎", "屯紮" },
+ { "屯里", "屯裡" },
+ { "山岳", "山嶽" },
+ { "山崩钟应", "山崩鐘應" },
+ { "山庄", "山莊" },
+ { "山梁", "山樑" },
+ { "山棱", "山稜" },
+ { "山洞里", "山洞裡" },
+ { "山羊胡", "山羊鬍" },
+ { "山药", "山藥" },
+ { "山里", "山裡" },
+ { "山重水复", "山重水複" },
+ { "屿", "嶼" },
+ { "岁", "歲" },
+ { "岁聿云暮", "歲聿云暮" },
+ { "岂", "豈" },
+ { "岖", "嶇" },
+ { "岗", "崗" },
+ { "岘", "峴" },
+ { "岙", "嶴" },
+ { "岚", "嵐" },
+ { "岛", "島" },
+ { "岭", "嶺" },
+ { "岱岳", "岱嶽" },
+ { "岳岳", "嶽嶽" },
+ { "岳麓", "嶽麓" },
+ { "岿", "巋" },
+ { "峄", "嶧" },
+ { "峡", "峽" },
+ { "峤", "嶠" },
+ { "峥", "崢" },
+ { "峦", "巒" },
+ { "峰回", "峰迴" },
+ { "峻岭", "峻岭" },
+ { "崂", "嶗" },
+ { "崃", "崍" },
+ { "崖广", "崖广" },
+ { "崭", "嶄" },
+ { "嵘", "嶸" },
+ { "嵝", "嶁" },
+ { "嶒棱", "嶒稜" },
+ { "巅", "巔" },
+ { "川谷", "川穀" },
+ { "巡回", "巡迴" },
+ { "巡游", "巡遊" },
+ { "工致", "工緻" },
+ { "左冲右突", "左衝右突" },
+ { "巧历", "巧曆" },
+ { "巧干", "巧幹" },
+ { "巩", "鞏" },
+ { "巯", "巰" },
+ { "已占", "已佔" },
+ { "巴尔干", "巴爾幹" },
+ { "巷里", "巷裡" },
+ { "币", "幣" },
+ { "市占", "市佔" },
+ { "市里", "市裡" },
+ { "布于", "佈於" },
+ { "布庄", "布莊" },
+ { "布谷", "布穀" },
+ { "布谷鸟钟", "布穀鳥鐘" },
+ { "布道", "佈道" },
+ { "布雷封锁", "佈雷封鎖" },
+ { "布雷的", "佈雷的" },
+ { "布雷舰", "佈雷艦" },
+ { "布雷艇", "佈雷艇" },
+ { "布雷速度", "佈雷速度" },
+ { "帅", "帥" },
+ { "师", "師" },
+ { "师范", "師範" },
+ { "希伯来历", "希伯來曆" },
+ { "帏", "幃" },
+ { "帐", "帳" },
+ { "帘", "簾" },
+ { "帘子", "帘子" },
+ { "帘布", "帘布" },
+ { "帜", "幟" },
+ { "帝后台", "帝后臺" },
+ { "带", "帶" },
+ { "带发修行", "帶髮修行" },
+ { "带征", "帶徵" },
+ { "帧", "幀" },
+ { "席卷", "席捲" },
+ { "帮", "幫" },
+ { "帮佣", "幫傭" },
+ { "帱", "幬" },
+ { "帻", "幘" },
+ { "帼", "幗" },
+ { "幂", "冪" },
+ { "幞", "襆" },
+ { "干上", "幹上" },
+ { "干下去", "幹下去" },
+ { "干不了", "幹不了" },
+ { "干不成", "幹不成" },
+ { "干丝", "乾絲" },
+ { "干个", "幹個" },
+ { "干个够", "乾個夠" },
+ { "干么", "幹麼" },
+ { "干乔", "乾喬" },
+ { "干了", "幹了" },
+ { "干事", "幹事" },
+ { "干井", "乾井" },
+ { "干些", "幹些" },
+ { "干产", "乾產" },
+ { "干亲", "乾親" },
+ { "干人", "幹人" },
+ { "干什么", "幹什麼" },
+ { "干儿", "乾兒" },
+ { "干冰", "乾冰" },
+ { "干冷", "乾冷" },
+ { "干净", "乾淨" },
+ { "干凉", "乾涼" },
+ { "干刍", "乾芻" },
+ { "干刻版", "乾刻版" },
+ { "干剥剥", "乾剝剝" },
+ { "干办", "幹辦" },
+ { "干劲", "幹勁" },
+ { "干劲冲天", "幹勁沖天" },
+ { "干卦", "乾卦" },
+ { "干台", "乾颱" },
+ { "干号", "乾號" },
+ { "干吊着下巴", "乾吊著下巴" },
+ { "干吏", "幹吏" },
+ { "干吗", "幹嗎" },
+ { "干呕", "乾嘔" },
+ { "干员", "幹員" },
+ { "干和", "乾和" },
+ { "干咳", "乾咳" },
+ { "干咽", "乾咽" },
+ { "干哕", "乾噦" },
+ { "干哥", "乾哥" },
+ { "干哭", "乾哭" },
+ { "干唱", "乾唱" },
+ { "干啥", "幹啥" },
+ { "干啼", "乾啼" },
+ { "干嘛", "幹嘛" },
+ { "干嚎", "乾嚎" },
+ { "干回付", "乾回付" },
+ { "干圆洁净", "乾圓潔淨" },
+ { "干地", "乾地" },
+ { "干坏事", "幹壞事" },
+ { "干坞", "乾塢" },
+ { "干坤", "乾坤" },
+ { "干头", "幹頭" },
+ { "干女", "乾女" },
+ { "干奴才", "乾奴才" },
+ { "干妈", "乾媽" },
+ { "干妹", "乾妹" },
+ { "干姊", "乾姊" },
+ { "干姜", "乾薑" },
+ { "干娘", "乾娘" },
+ { "干子", "乾子" },
+ { "干季", "乾季" },
+ { "干完", "幹完" },
+ { "干家", "幹家" },
+ { "干将", "幹將" },
+ { "干尸", "乾屍" },
+ { "干屎橛", "乾屎橛" },
+ { "干巴", "乾巴" },
+ { "干干", "乾乾" },
+ { "干干净净", "乾乾淨淨" },
+ { "干式", "乾式" },
+ { "干弟", "乾弟" },
+ { "干当", "幹當" },
+ { "干得", "幹得" },
+ { "干急", "乾急" },
+ { "干性", "乾性" },
+ { "干性油", "幹性油" },
+ { "干才", "幹才" },
+ { "干打雷", "乾打雷" },
+ { "干折", "乾折" },
+ { "干掉", "幹掉" },
+ { "干探", "幹探" },
+ { "干撂台", "乾撂台" },
+ { "干撇下", "乾撇下" },
+ { "干擦", "乾擦" },
+ { "干支剌", "乾支剌" },
+ { "干支支", "乾支支" },
+ { "干料", "乾料" },
+ { "干旱", "乾旱" },
+ { "干暖", "乾暖" },
+ { "干材", "乾材" },
+ { "干村沙", "乾村沙" },
+ { "干杯", "乾杯" },
+ { "干果", "乾果" },
+ { "干枯", "乾枯" },
+ { "干柴", "乾柴" },
+ { "干校", "幹校" },
+ { "干梅", "乾梅" },
+ { "干死", "乾死" },
+ { "干池", "乾池" },
+ { "干沟", "乾溝" },
+ { "干没", "乾沒" },
+ { "干洗", "乾洗" },
+ { "干活", "幹活" },
+ { "干流", "幹流" },
+ { "干济", "幹濟" },
+ { "干涩", "乾澀" },
+ { "干涸", "乾涸" },
+ { "干渠", "乾渠" },
+ { "干渴", "乾渴" },
+ { "干湿", "乾濕" },
+ { "干漆", "乾漆" },
+ { "干灯盏", "乾燈盞" },
+ { "干热", "乾熱" },
+ { "干熬", "乾熬" },
+ { "干熱", "乾熱" },
+ { "干燥", "乾燥" },
+ { "干父之蛊", "幹父之蠱" },
+ { "干爸", "乾爸" },
+ { "干爹", "乾爹" },
+ { "干爽", "乾爽" },
+ { "干片", "乾片" },
+ { "干球温度", "幹球溫度" },
+ { "干甚么", "幹甚麼" },
+ { "干生受", "乾生受" },
+ { "干生子", "乾生子" },
+ { "干田", "乾田" },
+ { "干电", "乾電" },
+ { "干略", "幹略" },
+ { "干疥", "乾疥" },
+ { "干瘦", "乾瘦" },
+ { "干瘪", "乾癟" },
+ { "干瘾", "乾癮" },
+ { "干癣", "乾癬" },
+ { "干白儿", "乾白兒" },
+ { "干的", "乾的" },
+ { "干的停当", "幹的停當" },
+ { "干眼", "乾眼" },
+ { "干着", "乾著" },
+ { "干着急", "干著急" },
+ { "干瞪眼", "乾瞪眼" },
+ { "干礼", "乾禮" },
+ { "干稿", "乾稿" },
+ { "干笑", "乾笑" },
+ { "干等", "乾等" },
+ { "干篾片", "乾篾片" },
+ { "干粉", "乾粉" },
+ { "干粮", "乾糧" },
+ { "干糇", "乾餱" },
+ { "干系", "干係" },
+ { "干細胞", "幹細胞" },
+ { "干纲", "乾綱" },
+ { "干线", "幹線" },
+ { "干练", "幹練" },
+ { "干细胞", "幹細胞" },
+ { "干结", "乾結" },
+ { "干绷", "乾繃" },
+ { "干缺", "幹缺" },
+ { "干群关系", "幹群關係" },
+ { "干耗", "乾耗" },
+ { "干肉片", "乾肉片" },
+ { "干股", "乾股" },
+ { "干肥", "乾肥" },
+ { "干脆", "乾脆" },
+ { "干花", "乾花" },
+ { "干苔", "乾苔" },
+ { "干茨腊", "乾茨臘" },
+ { "干茶钱", "乾茶錢" },
+ { "干草", "乾草" },
+ { "干菜", "乾菜" },
+ { "干营生", "幹營生" },
+ { "干落", "乾落" },
+ { "干薪", "乾薪" },
+ { "干虔", "乾虔" },
+ { "干蛊", "幹蠱" },
+ { "干血浆", "乾血漿" },
+ { "干衣", "乾衣" },
+ { "干裂", "乾裂" },
+ { "干警", "幹警" },
+ { "干贝", "乾貝" },
+ { "干货", "乾貨" },
+ { "干起来", "幹起來" },
+ { "干路", "幹路" },
+ { "干躁", "乾躁" },
+ { "干这一行", "幹這一行" },
+ { "干这种事", "幹這種事" },
+ { "干逼", "乾逼" },
+ { "干道", "幹道" },
+ { "干部", "幹部" },
+ { "干酪", "乾酪" },
+ { "干酵母", "乾酵母" },
+ { "干醋", "乾醋" },
+ { "干重", "乾重" },
+ { "干量", "乾量" },
+ { "干阿奶", "乾阿奶" },
+ { "干隆", "乾隆" },
+ { "干雷", "乾雷" },
+ { "干霍乱", "乾霍亂" },
+ { "干面", "乾麵" },
+ { "干革命", "幹革命" },
+ { "干颡", "乾顙" },
+ { "干饭", "乾飯" },
+ { "干馆", "乾館" },
+ { "干馏", "乾餾" },
+ { "干鱼", "乾魚" },
+ { "干鲜", "乾鮮" },
+ { "平准", "平準" },
+ { "平泉庄", "平泉莊" },
+ { "年代里", "年代裡" },
+ { "年历", "年曆" },
+ { "年谷", "年穀" },
+ { "年里", "年裡" },
+ { "并", "並" },
+ { "并一不二", "併一不二" },
+ { "并为一体", "併為一體" },
+ { "并为一家", "併為一家" },
+ { "并产", "併產" },
+ { "并入", "併入" },
+ { "并兼", "併兼" },
+ { "并到", "併到" },
+ { "并力", "并力" },
+ { "并发型模式", "併發型模式" },
+ { "并发模式", "併發模式" },
+ { "并发症", "併發症" },
+ { "并发重症", "併發重症" },
+ { "并叠", "併疊" },
+ { "并合", "併合" },
+ { "并名", "併名" },
+ { "并吞", "并吞" },
+ { "并吞下", "併吞下" },
+ { "并存着", "並存著" },
+ { "并州", "并州" },
+ { "并当", "併當" },
+ { "并拢", "併攏" },
+ { "并日而食", "并日而食" },
+ { "并曰入淀", "並曰入澱" },
+ { "并案", "併案" },
+ { "并流", "併流" },
+ { "并火", "併火" },
+ { "并科", "併科" },
+ { "并线", "併線" },
+ { "并网", "併網" },
+ { "并肩子", "併肩子" },
+ { "并购", "併購" },
+ { "并迭", "并迭" },
+ { "并除", "併除" },
+ { "并骨", "併骨" },
+ { "幸免", "倖免" },
+ { "幸存", "倖存" },
+ { "幸幸", "倖幸" },
+ { "幸运胡", "幸運鬍" },
+ { "广", "廣" },
+ { "广征", "廣徵" },
+ { "广舍", "廣捨" },
+ { "广部", "广部" },
+ { "庄上", "莊上" },
+ { "庄严", "莊嚴" },
+ { "庄主", "莊主" },
+ { "庄农", "莊農" },
+ { "庄员", "莊員" },
+ { "庄周", "莊周" },
+ { "庄园", "莊園" },
+ { "庄士顿道", "莊士頓道" },
+ { "庄子", "莊子" },
+ { "庄客", "莊客" },
+ { "庄家", "莊家" },
+ { "庄户", "莊戶" },
+ { "庄房", "莊房" },
+ { "庄敬", "莊敬" },
+ { "庄田", "莊田" },
+ { "庄稼", "莊稼" },
+ { "庄舄越吟", "莊舄越吟" },
+ { "庄语", "莊語" },
+ { "庄里", "莊裡" },
+ { "庄重", "莊重" },
+ { "庄院", "莊院" },
+ { "庄骚", "莊騷" },
+ { "庆", "慶" },
+ { "庆历", "慶曆" },
+ { "庆吊", "慶弔" },
+ { "庐", "廬" },
+ { "庑", "廡" },
+ { "库", "庫" },
+ { "应", "應" },
+ { "应克制", "應剋制" },
+ { "应征", "應徵" },
+ { "应钟", "應鐘" },
+ { "店里", "店裡" },
+ { "庙", "廟" },
+ { "庙里", "廟裡" },
+ { "府干", "府幹" },
+ { "庞", "龐" },
+ { "废", "廢" },
+ { "废后", "廢后" },
+ { "座钟", "座鐘" },
+ { "康庄", "康莊" },
+ { "廢后", "廢后" },
+ { "廪", "廩" },
+ { "延历", "延曆" },
+ { "开", "開" },
+ { "开吊", "開弔" },
+ { "开哄", "開鬨" },
+ { "开征", "開徵" },
+ { "开药", "開藥" },
+ { "开辟", "開闢" },
+ { "开采", "開採" },
+ { "异", "異" },
+ { "弃", "棄" },
+ { "弃舍", "棄捨" },
+ { "弄丑", "弄醜" },
+ { "弄干", "弄乾" },
+ { "弄松", "弄鬆" },
+ { "弄脏", "弄髒" },
+ { "弄鬼吊猴", "弄鬼弔猴" },
+ { "弑", "弒" },
+ { "引斗", "引鬥" },
+ { "弘历", "弘曆" },
+ { "张", "張" },
+ { "张三丰", "張三丰" },
+ { "张乐于张徐", "張樂于張徐" },
+ { "张勋", "張勳" },
+ { "弥", "彌" },
+ { "弥山遍野", "瀰山遍野" },
+ { "弥弥", "瀰瀰" },
+ { "弥漫", "瀰漫" },
+ { "弥漫着", "瀰漫著" },
+ { "弪", "弳" },
+ { "弯", "彎" },
+ { "張三丰", "張三丰" },
+ { "弹", "彈" },
+ { "弹子台", "彈子檯" },
+ { "弹珠台", "彈珠檯" },
+ { "弹药", "彈藥" },
+ { "强", "強" },
+ { "强占", "強佔" },
+ { "强奸", "強姦" },
+ { "强干", "強幹" },
+ { "归", "歸" },
+ { "归余", "歸餘" },
+ { "归并", "歸併" },
+ { "当", "當" },
+ { "当准", "當準" },
+ { "当啷", "噹啷" },
+ { "当当", "噹噹" },
+ { "当着", "當著" },
+ { "录", "錄" },
+ { "录制", "錄製" },
+ { "录着", "錄著" },
+ { "形单影只", "形單影隻" },
+ { "形影相吊", "形影相弔" },
+ { "彦", "彥" },
+ { "彩带", "綵帶" },
+ { "彩排", "綵排" },
+ { "彩楼", "綵樓" },
+ { "彩牌楼", "綵牌樓" },
+ { "彩球", "綵球" },
+ { "彩线", "綵線" },
+ { "彩绸", "綵綢" },
+ { "彩船", "綵船" },
+ { "彩衣", "綵衣" },
+ { "彭于晏", "彭于晏" },
+ { "影后", "影后" },
+ { "彻", "徹" },
+ { "彼此克制", "彼此剋制" },
+ { "往复", "往複" },
+ { "往日無仇", "往日無讎" },
+ { "往里", "往裡" },
+ { "征人", "徵人" },
+ { "征令", "徵令" },
+ { "征信", "徵信" },
+ { "征候", "徵候" },
+ { "征兆", "徵兆" },
+ { "征兵", "徵兵" },
+ { "征到", "徵到" },
+ { "征募", "徵募" },
+ { "征占", "徵佔" },
+ { "征友", "徵友" },
+ { "征发", "徵發" },
+ { "征召", "徵召" },
+ { "征名责实", "徵名責實" },
+ { "征吏", "徵吏" },
+ { "征启", "徵啟" },
+ { "征咎", "徵咎" },
+ { "征圣", "徵聖" },
+ { "征士", "徵士" },
+ { "征婚", "徵婚" },
+ { "征实", "徵實" },
+ { "征庸", "徵庸" },
+ { "征引", "徵引" },
+ { "征得", "徵得" },
+ { "征怪", "徵怪" },
+ { "征才", "徵才" },
+ { "征招", "徵招" },
+ { "征收", "徵收" },
+ { "征效", "徵效" },
+ { "征文", "徵文" },
+ { "征求", "徵求" },
+ { "征状", "徵狀" },
+ { "征用", "徵用" },
+ { "征税", "徵稅" },
+ { "征稿", "徵稿" },
+ { "征答", "徵答" },
+ { "征结", "徵結" },
+ { "征聘", "徵聘" },
+ { "征训", "徵訓" },
+ { "征询", "徵詢" },
+ { "征调", "徵調" },
+ { "征象", "徵象" },
+ { "征购", "徵購" },
+ { "征车", "徵車" },
+ { "征辟", "徵辟" },
+ { "征迹", "徵跡" },
+ { "征选", "徵選" },
+ { "征逐", "徵逐" },
+ { "征集", "徵集" },
+ { "征风召雨", "徵風召雨" },
+ { "征验", "徵驗" },
+ { "径", "徑" },
+ { "很丑", "很醜" },
+ { "很凶", "很兇" },
+ { "很干", "很乾" },
+ { "律历志", "律曆志" },
+ { "徐干", "徐幹" },
+ { "徒托空言", "徒託空言" },
+ { "徕", "徠" },
+ { "得克制", "得剋制" },
+ { "御侮", "禦侮" },
+ { "御寇", "禦寇" },
+ { "御寒", "禦寒" },
+ { "御敌", "禦敵" },
+ { "德占", "德佔" },
+ { "心余", "心餘" },
+ { "心愿", "心愿" },
+ { "心系一", "心繫一" },
+ { "心系万", "心繫萬" },
+ { "心系东", "心繫東" },
+ { "心系两", "心繫兩" },
+ { "心系中", "心繫中" },
+ { "心系乔", "心繫乔" },
+ { "心系五", "心繫五" },
+ { "心系京", "心繫京" },
+ { "心系人", "心繫人" },
+ { "心系他", "心繫他" },
+ { "心系伊", "心繫伊" },
+ { "心系众", "心繫眾" },
+ { "心系传", "心繫傳" },
+ { "心系何", "心繫何" },
+ { "心系你", "心繫你" },
+ { "心系健", "心繫健" },
+ { "心系全", "心繫全" },
+ { "心系兰", "心繫蘭" },
+ { "心系农", "心繫农" },
+ { "心系功", "心繫功" },
+ { "心系动", "心繫動" },
+ { "心系募", "心繫募" },
+ { "心系北", "心繫北" },
+ { "心系十", "心繫十" },
+ { "心系千", "心繫千" },
+ { "心系南", "心繫南" },
+ { "心系台", "心繫台" },
+ { "心系和", "心繫和" },
+ { "心系哪", "心繫哪" },
+ { "心系唐", "心繫唐" },
+ { "心系嘱", "心繫囑" },
+ { "心系四", "心繫四" },
+ { "心系困", "心繫困" },
+ { "心系国", "心繫國" },
+ { "心系在", "心繫在" },
+ { "心系地", "心繫地" },
+ { "心系大", "心繫大" },
+ { "心系天", "心繫天" },
+ { "心系夫", "心繫夫" },
+ { "心系奥", "心繫奧" },
+ { "心系女", "心繫女" },
+ { "心系她", "心繫她" },
+ { "心系妇", "心繫婦" },
+ { "心系妻", "心繫妻" },
+ { "心系子", "心繫子" },
+ { "心系它", "心繫它" },
+ { "心系宣", "心繫宣" },
+ { "心系家", "心繫家" },
+ { "心系富", "心繫富" },
+ { "心系小", "心繫小" },
+ { "心系山", "心繫山" },
+ { "心系川", "心繫川" },
+ { "心系幼", "心繫幼" },
+ { "心系广", "心繫廣" },
+ { "心系彼", "心繫彼" },
+ { "心系德", "心繫德" },
+ { "心系您", "心繫您" },
+ { "心系慈", "心繫慈" },
+ { "心系我", "心繫我" },
+ { "心系摩", "心繫摩" },
+ { "心系故", "心繫故" },
+ { "心系新", "心繫新" },
+ { "心系日", "心繫日" },
+ { "心系昌", "心繫昌" },
+ { "心系晓", "心繫曉" },
+ { "心系曼", "心繫曼" },
+ { "心系林", "心繫林" },
+ { "心系母", "心繫母" },
+ { "心系民", "心繫民" },
+ { "心系江", "心繫江" },
+ { "心系汶", "心繫汶" },
+ { "心系沈", "心繫沈" },
+ { "心系沙", "心繫沙" },
+ { "心系泰", "心繫泰" },
+ { "心系浙", "心繫浙" },
+ { "心系港", "心繫港" },
+ { "心系湖", "心繫湖" },
+ { "心系澳", "心繫澳" },
+ { "心系灾", "心繫災" },
+ { "心系父", "心繫父" },
+ { "心系生", "心繫生" },
+ { "心系病", "心繫病" },
+ { "心系百", "心繫百" },
+ { "心系的", "心繫的" },
+ { "心系着", "心繫著" },
+ { "心系社", "心繫社" },
+ { "心系祖", "心繫祖" },
+ { "心系神", "心繫神" },
+ { "心系红", "心繫紅" },
+ { "心系美", "心繫美" },
+ { "心系群", "心繫群" },
+ { "心系老", "心繫老" },
+ { "心系舞", "心繫舞" },
+ { "心系英", "心繫英" },
+ { "心系茶", "心繫茶" },
+ { "心系西", "心繫西" },
+ { "心系贫", "心繫貧" },
+ { "心系输", "心繫輸" },
+ { "心系近", "心繫近" },
+ { "心系远", "心繫遠" },
+ { "心系选", "心繫選" },
+ { "心系重", "心繫重" },
+ { "心系长", "心繫長" },
+ { "心系阮", "心繫阮" },
+ { "心系震", "心繫震" },
+ { "心系非", "心繫非" },
+ { "心系风", "心繫風" },
+ { "心系香", "心繫香" },
+ { "心系高", "心繫高" },
+ { "心系麦", "心繫麥" },
+ { "心系黄", "心繫黃" },
+ { "心荡", "心蕩" },
+ { "心药", "心藥" },
+ { "心里", "心裡" },
+ { "心里面", "心裏面" },
+ { "心长发短", "心長髮短" },
+ { "忆", "憶" },
+ { "忏", "懺" },
+ { "志哀", "誌哀" },
+ { "志喜", "誌喜" },
+ { "志庆", "誌慶" },
+ { "志异", "誌異" },
+ { "忙并", "忙併" },
+ { "忙里", "忙裡" },
+ { "忙里偷闲", "忙裡偷閒" },
+ { "忠仆", "忠僕" },
+ { "忧", "憂" },
+ { "忧郁", "憂鬱" },
+ { "快克制", "快剋制" },
+ { "快冲", "快衝" },
+ { "快干", "快乾" },
+ { "忾", "愾" },
+ { "怀", "懷" },
+ { "怀表", "懷錶" },
+ { "怀里", "懷裡" },
+ { "怀钟", "懷鐘" },
+ { "态", "態" },
+ { "怂", "慫" },
+ { "怃", "憮" },
+ { "怄", "慪" },
+ { "怅", "悵" },
+ { "怆", "愴" },
+ { "怎么", "怎麼" },
+ { "怎么着", "怎麼著" },
+ { "怒发冲冠", "怒髮衝冠" },
+ { "怜", "憐" },
+ { "思如泉涌", "思如泉湧" },
+ { "急冲而下", "急衝而下" },
+ { "性征", "性徵" },
+ { "性欲", "性慾" },
+ { "怪里怪气", "怪裡怪氣" },
+ { "怫郁", "怫鬱" },
+ { "总", "總" },
+ { "怼", "懟" },
+ { "怿", "懌" },
+ { "恂栗", "恂慄" },
+ { "恋", "戀" },
+ { "恋恋不舍", "戀戀不捨" },
+ { "恒", "恆" },
+ { "恒生", "恒生" },
+ { "恕乏价催", "恕乏价催" },
+ { "息交绝游", "息交絕遊" },
+ { "息谷", "息穀" },
+ { "恰才", "恰纔" },
+ { "恳", "懇" },
+ { "恳托", "懇託" },
+ { "恶", "惡" },
+ { "恶心", "噁心" },
+ { "恶斗", "惡鬥" },
+ { "恶直丑正", "惡直醜正" },
+ { "恸", "慟" },
+ { "恹", "懨" },
+ { "恺", "愷" },
+ { "恻", "惻" },
+ { "恼", "惱" },
+ { "恽", "惲" },
+ { "悍药", "悍藥" },
+ { "悒郁", "悒鬱" },
+ { "悠悠荡荡", "悠悠蕩蕩" },
+ { "悠游", "悠遊" },
+ { "悠荡", "悠蕩" },
+ { "悦", "悅" },
+ { "您克制", "您剋制" },
+ { "悫", "愨" },
+ { "悬", "懸" },
+ { "悬梁", "懸樑" },
+ { "悬臂梁", "懸臂樑" },
+ { "悬钟", "懸鐘" },
+ { "悭", "慳" },
+ { "悯", "憫" },
+ { "悲筑", "悲筑" },
+ { "悲郁", "悲鬱" },
+ { "悸栗", "悸慄" },
+ { "情欲", "情慾" },
+ { "惇朴", "惇樸" },
+ { "惊", "驚" },
+ { "惊赞", "驚讚" },
+ { "惊钟", "驚鐘" },
+ { "惧", "懼" },
+ { "惨", "慘" },
+ { "惩", "懲" },
+ { "惫", "憊" },
+ { "惬", "愜" },
+ { "惭", "慚" },
+ { "惮", "憚" },
+ { "惯", "慣" },
+ { "想克制", "想剋制" },
+ { "惴栗", "惴慄" },
+ { "愈合", "癒合" },
+ { "意克制", "意剋制" },
+ { "意占", "意佔" },
+ { "意大利面", "意大利麵" },
+ { "意面", "意麵" },
+ { "感冒药", "感冒藥" },
+ { "愠", "慍" },
+ { "愤", "憤" },
+ { "愦", "憒" },
+ { "愿", "願" },
+ { "愿朴", "愿樸" },
+ { "愿而恭", "愿而恭" },
+ { "慌里慌张", "慌裡慌張" },
+ { "慑", "懾" },
+ { "懈松", "懈鬆" },
+ { "懑", "懣" },
+ { "懒", "懶" },
+ { "懔", "懍" },
+ { "懔栗", "懍慄" },
+ { "懿范", "懿範" },
+ { "戆", "戇" },
+ { "戋", "戔" },
+ { "戏", "戲" },
+ { "戏彩娱亲", "戲綵娛親" },
+ { "戏里", "戲裡" },
+ { "成药", "成藥" },
+ { "我克制", "我剋制" },
+ { "戗", "戧" },
+ { "战", "戰" },
+ { "战天斗地", "戰天鬥地" },
+ { "战斗", "戰鬥" },
+ { "战栗", "戰慄" },
+ { "截发", "截髮" },
+ { "戬", "戩" },
+ { "戬谷", "戩穀" },
+ { "戯", "戱" },
+ { "戴发含齿", "戴髮含齒" },
+ { "戴表", "戴錶" },
+ { "户", "戶" },
+ { "房里", "房裡" },
+ { "所云", "所云" },
+ { "所云云", "所云云" },
+ { "所占", "所佔" },
+ { "所托", "所託" },
+ { "扁拟谷盗虫", "扁擬穀盜蟲" },
+ { "手冢治虫", "手塚治虫" },
+ { "手塚治虫", "手塚治虫" },
+ { "手折", "手摺" },
+ { "手松", "手鬆" },
+ { "手表", "手錶" },
+ { "手里", "手裡" },
+ { "手里剑", "手裏劍" },
+ { "才克制", "才剋制" },
+ { "才则", "纔則" },
+ { "才干", "才幹" },
+ { "才得两年", "纔得兩年" },
+ { "才此", "纔此" },
+ { "扎上", "紮上" },
+ { "扎下", "紮下" },
+ { "扎囮", "紮囮" },
+ { "扎好", "紮好" },
+ { "扎实", "紮實" },
+ { "扎寨", "紮寨" },
+ { "扎带子", "紮帶子" },
+ { "扎成", "紮成" },
+ { "扎根", "紮根" },
+ { "扎紧", "紮緊" },
+ { "扎脚", "紮腳" },
+ { "扎营", "紮營" },
+ { "扎裹", "紮裹" },
+ { "扎诈", "紮詐" },
+ { "扎起", "紮起" },
+ { "扎铁", "紮鐵" },
+ { "扑", "撲" },
+ { "扑作教刑", "扑作教刑" },
+ { "扑冬", "撲鼕" },
+ { "扑冬冬", "撲鼕鼕" },
+ { "扑打", "扑打" },
+ { "扑挞", "扑撻" },
+ { "打出吊入", "打出弔入" },
+ { "打卡钟", "打卡鐘" },
+ { "打吨", "打吨" },
+ { "打干", "打幹" },
+ { "打干哕", "打乾噦" },
+ { "打并", "打併" },
+ { "打拼", "打拚" },
+ { "打斗", "打鬥" },
+ { "打着钟", "打著鐘" },
+ { "打谷", "打穀" },
+ { "打路庄板", "打路莊板" },
+ { "打钟", "打鐘" },
+ { "托买", "託買" },
+ { "托了", "託了" },
+ { "托事", "託事" },
+ { "托交", "託交" },
+ { "托人", "託人" },
+ { "托付", "託付" },
+ { "托儿所", "託兒所" },
+ { "托卖", "託賣" },
+ { "托古讽今", "託古諷今" },
+ { "托名", "託名" },
+ { "托命", "託命" },
+ { "托咎", "託咎" },
+ { "托大", "託大" },
+ { "托孤", "託孤" },
+ { "托庇", "託庇" },
+ { "托故", "託故" },
+ { "托梦", "託夢" },
+ { "托疾", "託疾" },
+ { "托病", "託病" },
+ { "托管", "託管" },
+ { "托言", "託言" },
+ { "托词", "託詞" },
+ { "托身", "託身" },
+ { "托辞", "託辭" },
+ { "托过", "託過" },
+ { "托运", "託運" },
+ { "托附", "託附" },
+ { "扛大梁", "扛大樑" },
+ { "扞御", "扞禦" },
+ { "执", "執" },
+ { "扩", "擴" },
+ { "扪", "捫" },
+ { "扫", "掃" },
+ { "扫荡", "掃蕩" },
+ { "扬", "揚" },
+ { "扯面", "扯麵" },
+ { "扰", "擾" },
+ { "扶余国", "扶餘國" },
+ { "批复", "批複" },
+ { "批斗", "批鬥" },
+ { "批注", "批註" },
+ { "承制", "承製" },
+ { "抑郁", "抑鬱" },
+ { "抓奸", "抓姦" },
+ { "抓斗", "抓鬥" },
+ { "抓药", "抓藥" },
+ { "投药", "投藥" },
+ { "抗御", "抗禦" },
+ { "抗癌药", "抗癌藥" },
+ { "抗药", "抗藥" },
+ { "折冲", "折衝" },
+ { "折叠", "摺疊" },
+ { "折合", "摺合" },
+ { "折奏", "摺奏" },
+ { "折子", "摺子" },
+ { "折尺", "摺尺" },
+ { "折扇", "摺扇" },
+ { "折梯", "摺梯" },
+ { "折椅", "摺椅" },
+ { "折痕", "摺痕" },
+ { "折篷", "摺篷" },
+ { "折纸", "摺紙" },
+ { "折裙", "摺裙" },
+ { "抚", "撫" },
+ { "抛", "拋" },
+ { "抟", "摶" },
+ { "抠", "摳" },
+ { "抡", "掄" },
+ { "抢", "搶" },
+ { "抢占", "搶佔" },
+ { "护", "護" },
+ { "护发", "護髮" },
+ { "报", "報" },
+ { "披发", "披髮" },
+ { "披头散发", "披頭散髮" },
+ { "披榛采兰", "披榛採蘭" },
+ { "抱素怀朴", "抱素懷樸" },
+ { "抵御", "抵禦" },
+ { "抹干", "抹乾" },
+ { "抽公签", "抽公籤" },
+ { "抽签", "抽籤" },
+ { "抿发", "抿髮" },
+ { "拂钟无声", "拂鐘無聲" },
+ { "担", "擔" },
+ { "担仔面", "擔仔麵" },
+ { "担担面", "擔擔麵" },
+ { "担着", "擔著" },
+ { "担负着", "擔負著" },
+ { "拆伙", "拆夥" },
+ { "拈须", "拈鬚" },
+ { "拉克施尔德钟", "拉克施爾德鐘" },
+ { "拉杆", "拉杆" },
+ { "拉纤", "拉縴" },
+ { "拉面", "拉麵" },
+ { "拓朴", "拓樸" },
+ { "拔发", "拔髮" },
+ { "拔须", "拔鬚" },
+ { "拗别", "拗彆" },
+ { "拙朴", "拙樸" },
+ { "拜托", "拜託" },
+ { "拟", "擬" },
+ { "拢", "攏" },
+ { "拣", "揀" },
+ { "拥", "擁" },
+ { "拦", "攔" },
+ { "拧", "擰" },
+ { "拧干", "擰乾" },
+ { "拨", "撥" },
+ { "拨谷", "撥穀" },
+ { "择", "擇" },
+ { "括发", "括髮" },
+ { "拭干", "拭乾" },
+ { "拮据", "拮据" },
+ { "拼却", "拚卻" },
+ { "拼命", "拚命" },
+ { "拼斗", "拚鬥" },
+ { "拼死", "拚死" },
+ { "拼生尽死", "拚生盡死" },
+ { "拼绝", "拚絕" },
+ { "拼老命", "拚老命" },
+ { "拼舍", "拚捨" },
+ { "拾沈", "拾瀋" },
+ { "拿下表", "拿下錶" },
+ { "拿下钟", "拿下鐘" },
+ { "拿准", "拿準" },
+ { "拿破仑", "拿破崙" },
+ { "挂", "掛" },
+ { "挂历", "掛曆" },
+ { "挂号", "挂號" },
+ { "挂图", "挂圖" },
+ { "挂帅", "挂帥" },
+ { "挂帘", "掛帘" },
+ { "挂彩", "挂彩" },
+ { "挂念", "挂念" },
+ { "挂车", "挂車" },
+ { "挂钟", "掛鐘" },
+ { "挂钩", "掛鈎" },
+ { "挂面", "挂面" },
+ { "挌斗", "挌鬥" },
+ { "挑大梁", "挑大樑" },
+ { "挑斗", "挑鬥" },
+ { "挚", "摯" },
+ { "挛", "攣" },
+ { "挝", "撾" },
+ { "挞", "撻" },
+ { "挟", "挾" },
+ { "挠", "撓" },
+ { "挡", "擋" },
+ { "挢", "撟" },
+ { "挣", "掙" },
+ { "挤", "擠" },
+ { "挥", "揮" },
+ { "挥杆", "揮杆" },
+ { "振荡", "振蕩" },
+ { "挽曲", "輓曲" },
+ { "挽歌", "輓歌" },
+ { "挽联", "輓聯" },
+ { "挽聯", "輓聯" },
+ { "挽詞", "輓詞" },
+ { "挽詩", "輓詩" },
+ { "挽词", "輓詞" },
+ { "挽诗", "輓詩" },
+ { "捆扎", "捆紮" },
+ { "捉发", "捉髮" },
+ { "捉奸", "捉姦" },
+ { "捍御", "捍禦" },
+ { "捏面人", "捏麵人" },
+ { "捞", "撈" },
+ { "捞干", "撈乾" },
+ { "捞面", "撈麵" },
+ { "损", "損" },
+ { "捡", "撿" },
+ { "换", "換" },
+ { "换发", "換髮" },
+ { "换只", "換隻" },
+ { "换签", "換籤" },
+ { "换药", "換藥" },
+ { "捣", "搗" },
+ { "捣鬼吊白", "搗鬼弔白" },
+ { "据", "據" },
+ { "据云", "據云" },
+ { "据干而窥井底", "據榦而窺井底" },
+ { "捵面", "捵麵" },
+ { "捶炼", "捶鍊" },
+ { "掌柜", "掌柜" },
+ { "排骨面", "排骨麵" },
+ { "掣签", "掣籤" },
+ { "接着说", "接著說" },
+ { "推情准理", "推情準理" },
+ { "推托", "推託" },
+ { "掳", "擄" },
+ { "掴", "摑" },
+ { "掷", "擲" },
+ { "掸", "撣" },
+ { "掺", "摻" },
+ { "掼", "摜" },
+ { "提子干", "提子乾" },
+ { "提心吊胆", "提心弔膽" },
+ { "握发", "握髮" },
+ { "揩干", "揩乾" },
+ { "揪发", "揪髮" },
+ { "揪采", "揪採" },
+ { "揪须", "揪鬚" },
+ { "揭丑", "揭醜" },
+ { "揽", "攬" },
+ { "揿", "撳" },
+ { "搀", "攙" },
+ { "搁", "擱" },
+ { "搂", "摟" },
+ { "搅", "攪" },
+ { "搋面", "搋麵" },
+ { "搏斗", "搏鬥" },
+ { "搤肮拊背", "搤肮拊背" },
+ { "搬斗", "搬鬥" },
+ { "搭伙", "搭夥" },
+ { "搭干铺", "搭乾鋪" },
+ { "携", "攜" },
+ { "搽药", "搽藥" },
+ { "摄", "攝" },
+ { "摄制", "攝製" },
+ { "摅", "攄" },
+ { "摆", "擺" },
+ { "摆钟", "擺鐘" },
+ { "摇", "搖" },
+ { "摇摇荡荡", "搖搖蕩蕩" },
+ { "摇荡", "搖蕩" },
+ { "摈", "擯" },
+ { "摊", "攤" },
+ { "摧坚获丑", "摧堅獲醜" },
+ { "摭采", "摭採" },
+ { "摸棱", "摸稜" },
+ { "摸钟", "摸鐘" },
+ { "撄", "攖" },
+ { "撇吊", "撇弔" },
+ { "撑", "撐" },
+ { "撚须", "撚鬚" },
+ { "撞球台", "撞球檯" },
+ { "撞钟", "撞鐘" },
+ { "撞阵冲军", "撞陣衝軍" },
+ { "撤并", "撤併" },
+ { "撩斗", "撩鬥" },
+ { "撵", "攆" },
+ { "撷", "擷" },
+ { "撸", "擼" },
+ { "撺", "攛" },
+ { "擀面", "擀麵" },
+ { "操作钟", "操作鐘" },
+ { "擞", "擻" },
+ { "擢发", "擢髮" },
+ { "擦干", "擦乾" },
+ { "擦干净", "擦乾淨" },
+ { "擦药", "擦藥" },
+ { "攒", "攢" },
+ { "支干", "支幹" },
+ { "支杆", "支杆" },
+ { "收获", "收穫" },
+ { "改征", "改徵" },
+ { "攻占", "攻佔" },
+ { "放松", "放鬆" },
+ { "放荡", "放蕩" },
+ { "放蒙挣", "放懞掙" },
+ { "故事里", "故事裡" },
+ { "故云", "故云" },
+ { "敌", "敵" },
+ { "敌忾同仇", "敵愾同讎" },
+ { "救药", "救藥" },
+ { "教学钟", "教學鐘" },
+ { "教范", "教範" },
+ { "敛", "斂" },
+ { "敢干", "敢幹" },
+ { "散伙", "散夥" },
+ { "散荡", "散蕩" },
+ { "敦朴", "敦樸" },
+ { "敬挽", "敬輓" },
+ { "数", "數" },
+ { "数与虏确", "數與虜确" },
+ { "数字钟", "數字鐘" },
+ { "数罪并罚", "數罪併罰" },
+ { "敲扑", "敲扑" },
+ { "敲钟", "敲鐘" },
+ { "整发用品", "整髮用品" },
+ { "整只", "整隻" },
+ { "整庄", "整莊" },
+ { "敷药", "敷藥" },
+ { "文征明", "文徵明" },
+ { "文思泉涌", "文思泉湧" },
+ { "斋", "齋" },
+ { "斓", "斕" },
+ { "斗上", "鬥上" },
+ { "斗不过", "鬥不過" },
+ { "斗丽", "鬥麗" },
+ { "斗了", "鬥了" },
+ { "斗争", "鬥爭" },
+ { "斗倒", "鬥倒" },
+ { "斗分子", "鬥分子" },
+ { "斗别气", "鬥彆氣" },
+ { "斗力", "鬥力" },
+ { "斗劲", "鬥勁" },
+ { "斗叠", "鬥疊" },
+ { "斗口", "鬥口" },
+ { "斗叶儿", "鬥葉兒" },
+ { "斗叶子", "鬥葉子" },
+ { "斗合", "鬥合" },
+ { "斗哄", "鬥鬨" },
+ { "斗嘴", "鬥嘴" },
+ { "斗地主", "鬥地主" },
+ { "斗士", "鬥士" },
+ { "斗头", "鬥頭" },
+ { "斗富", "鬥富" },
+ { "斗巧", "鬥巧" },
+ { "斗幌子", "鬥幌子" },
+ { "斗弄", "鬥弄" },
+ { "斗引", "鬥引" },
+ { "斗彩", "鬥彩" },
+ { "斗心眼", "鬥心眼" },
+ { "斗志", "鬥志" },
+ { "斗成", "鬥成" },
+ { "斗打", "鬥打" },
+ { "斗批改", "鬥批改" },
+ { "斗技", "鬥技" },
+ { "斗文", "鬥文" },
+ { "斗斗", "鬥鬥" },
+ { "斗智", "鬥智" },
+ { "斗暴", "鬥暴" },
+ { "斗来斗去", "鬥來鬥去" },
+ { "斗武", "鬥武" },
+ { "斗殴", "鬥毆" },
+ { "斗气", "鬥氣" },
+ { "斗法", "鬥法" },
+ { "斗牌", "鬥牌" },
+ { "斗牙拌齿", "鬥牙拌齒" },
+ { "斗牙斗齿", "鬥牙鬥齒" },
+ { "斗牛", "鬥牛" },
+ { "斗犀台", "鬥犀臺" },
+ { "斗犬", "鬥犬" },
+ { "斗狠", "鬥狠" },
+ { "斗百草", "鬥百草" },
+ { "斗眼", "鬥眼" },
+ { "斗着", "鬥著" },
+ { "斗私批修", "鬥私批修" },
+ { "斗而铸兵", "鬥而鑄兵" },
+ { "斗而铸锥", "鬥而鑄錐" },
+ { "斗胜", "鬥勝" },
+ { "斗脚", "鬥腳" },
+ { "斗舰", "鬥艦" },
+ { "斗艳", "鬥豔" },
+ { "斗茶", "鬥茶" },
+ { "斗草", "鬥草" },
+ { "斗蟋蟀", "鬥蟋蟀" },
+ { "斗话", "鬥話" },
+ { "斗起", "鬥起" },
+ { "斗趣", "鬥趣" },
+ { "斗闲气", "鬥閑氣" },
+ { "斗闷", "鬥悶" },
+ { "斗雪红", "鬥雪紅" },
+ { "斗风", "鬥風" },
+ { "斗鱼", "鬥魚" },
+ { "斗鸡", "鬥雞" },
+ { "斗鸭", "鬥鴨" },
+ { "斗鹌鹑", "鬥鵪鶉" },
+ { "斩", "斬" },
+ { "斫雕为朴", "斫雕為樸" },
+ { "断", "斷" },
+ { "断发", "斷髮" },
+ { "新历", "新曆" },
+ { "新庄", "新莊" },
+ { "新扎", "新紮" },
+ { "斲雕为朴", "斲雕為樸" },
+ { "方便面", "方便麵" },
+ { "方几", "方几" },
+ { "方志", "方誌" },
+ { "施舍", "施捨" },
+ { "施药", "施藥" },
+ { "旁征博引", "旁徵博引" },
+ { "旁注", "旁註" },
+ { "旅游", "旅遊" },
+ { "旋回", "旋迴" },
+ { "旋干转坤", "旋乾轉坤" },
+ { "旋绕着", "旋繞著" },
+ { "族里", "族裡" },
+ { "旗杆", "旗杆" },
+ { "无", "無" },
+ { "无余", "無餘" },
+ { "无征不信", "無徵不信" },
+ { "无梁楼盖", "無樑樓蓋" },
+ { "无法克制", "無法剋制" },
+ { "无药可救", "無藥可救" },
+ { "日占", "日佔" },
+ { "日历", "日曆" },
+ { "日子里", "日子裡" },
+ { "日心历表", "日心曆表" },
+ { "日志", "日誌" },
+ { "日晒", "日晒" },
+ { "旧", "舊" },
+ { "旧历", "舊曆" },
+ { "旧游", "舊遊" },
+ { "旧药", "舊藥" },
+ { "旧表", "舊錶" },
+ { "旧钟", "舊鐘" },
+ { "旧钟表", "舊鐘錶" },
+ { "旱干", "旱乾" },
+ { "时", "時" },
+ { "时钟", "時鐘" },
+ { "时间里", "時間裡" },
+ { "旷", "曠" },
+ { "昆仑", "崑崙" },
+ { "昆仑山", "昆崙山" },
+ { "昆剧", "崑劇" },
+ { "昆山", "崑山" },
+ { "昆曲", "崑曲" },
+ { "昆腔", "崑腔" },
+ { "昆苏", "崑蘇" },
+ { "昆调", "崑調" },
+ { "明征", "明徵" },
+ { "明目张胆", "明目張胆" },
+ { "明窗净几", "明窗淨几" },
+ { "明范", "明範" },
+ { "明里", "明裡" },
+ { "易克制", "易剋制" },
+ { "昙", "曇" },
+ { "星历", "星曆" },
+ { "星辰表", "星辰錶" },
+ { "春假里", "春假裡" },
+ { "春天里", "春天裡" },
+ { "春日里", "春日裡" },
+ { "春游", "春遊" },
+ { "春药", "春藥" },
+ { "春香斗学", "春香鬥學" },
+ { "昼", "晝" },
+ { "显", "顯" },
+ { "显示表", "顯示錶" },
+ { "显示钟", "顯示鐘" },
+ { "晃荡", "晃蕩" },
+ { "晋", "晉" },
+ { "晋升", "晉陞" },
+ { "晒", "曬" },
+ { "晒伤", "晒傷" },
+ { "晒图", "晒圖" },
+ { "晒干", "晒乾" },
+ { "晒成", "晒成" },
+ { "晒晒", "晒晒" },
+ { "晒烟", "晒煙" },
+ { "晒种", "晒種" },
+ { "晒衣", "晒衣" },
+ { "晒谷", "曬穀" },
+ { "晒黑", "晒黑" },
+ { "晓", "曉" },
+ { "晔", "曄" },
+ { "晕", "暈" },
+ { "晕船药", "暈船藥" },
+ { "晕车药", "暈車藥" },
+ { "晖", "暉" },
+ { "晚钟", "晚鐘" },
+ { "晞发", "晞髮" },
+ { "晨钟", "晨鐘" },
+ { "普冬冬", "普鼕鼕" },
+ { "景致", "景緻" },
+ { "晾干", "晾乾" },
+ { "暂", "暫" },
+ { "暑假里", "暑假裡" },
+ { "暗地里", "暗地裡" },
+ { "暗斗", "暗鬥" },
+ { "暗沟里", "暗溝裡" },
+ { "暗里", "暗裡" },
+ { "暧", "曖" },
+ { "暴敛横征", "暴斂橫徵" },
+ { "暴晒", "暴晒" },
+ { "曝晒", "曝晒" },
+ { "曰云", "曰云" },
+ { "曲尘", "麴塵" },
+ { "曲生", "麴生" },
+ { "曲秀才", "麴秀才" },
+ { "曲菌", "麴菌" },
+ { "曲蘖", "麴櫱" },
+ { "曲车", "麴車" },
+ { "曲道士", "麴道士" },
+ { "曲钱", "麴錢" },
+ { "曲院", "麴院" },
+ { "曲霉", "麴黴" },
+ { "更仆难数", "更僕難數" },
+ { "更签", "更籤" },
+ { "更钟", "更鐘" },
+ { "曾朴", "曾樸" },
+ { "月历", "月曆" },
+ { "月球历表", "月球曆表" },
+ { "有事之无范", "有事之無範" },
+ { "有仆", "有僕" },
+ { "有余", "有餘" },
+ { "有准", "有準" },
+ { "有发头陀寺", "有髮頭陀寺" },
+ { "有只", "有隻" },
+ { "有只采", "有只採" },
+ { "有够赞", "有夠讚" },
+ { "有征", "有徵" },
+ { "有恒街", "有恒街" },
+ { "有栖川", "有栖川" },
+ { "有棱有角", "有稜有角" },
+ { "服药", "服藥" },
+ { "望后石", "望后石" },
+ { "望着表", "望著錶" },
+ { "望着钟", "望著鐘" },
+ { "望着钟表", "望著鐘錶" },
+ { "朝钟", "朝鐘" },
+ { "木偶戏扎", "木偶戲紮" },
+ { "木制", "木製" },
+ { "木杆", "木杆" },
+ { "木材干馏", "木材乾餾" },
+ { "木梁", "木樑" },
+ { "木钟", "木鐘" },
+ { "未干", "未乾" },
+ { "末药", "末藥" },
+ { "本征", "本徵" },
+ { "术", "術" },
+ { "术赤", "朮赤" },
+ { "朱仑街", "朱崙街" },
+ { "朱唇皓齿", "硃唇皓齒" },
+ { "朱庆余", "朱慶餘" },
+ { "朱批", "硃批" },
+ { "朱理安历", "朱理安曆" },
+ { "朱砂", "硃砂" },
+ { "朱笔", "硃筆" },
+ { "朱红色", "硃紅色" },
+ { "朱色", "硃色" },
+ { "朱谕", "硃諭" },
+ { "朴修斯", "樸修斯" },
+ { "朴厚", "樸厚" },
+ { "朴学", "樸學" },
+ { "朴实", "樸實" },
+ { "朴念仁", "樸念仁" },
+ { "朴拙", "樸拙" },
+ { "朴樕", "樸樕" },
+ { "朴父", "樸父" },
+ { "朴直", "樸直" },
+ { "朴素", "樸素" },
+ { "朴讷", "樸訥" },
+ { "朴质", "樸質" },
+ { "朴鄙", "樸鄙" },
+ { "朴重", "樸重" },
+ { "朴野", "樸野" },
+ { "朴钝", "樸鈍" },
+ { "朴陋", "樸陋" },
+ { "朴马", "樸馬" },
+ { "朴鲁", "樸魯" },
+ { "机", "機" },
+ { "机械表", "機械錶" },
+ { "机械钟", "機械鐘" },
+ { "机绣", "機繡" },
+ { "杀", "殺" },
+ { "杀虫药", "殺蟲藥" },
+ { "杂", "雜" },
+ { "杂合面儿", "雜合麵兒" },
+ { "杂志", "雜誌" },
+ { "杂面", "雜麵" },
+ { "权", "權" },
+ { "杆", "桿" },
+ { "杆子", "杆子" },
+ { "李连杰", "李連杰" },
+ { "李連杰", "李連杰" },
+ { "材干", "材幹" },
+ { "村子里", "村子裡" },
+ { "村庄", "村莊" },
+ { "村里", "村裡" },
+ { "杜老志道", "杜老誌道" },
+ { "杞宋无征", "杞宋無徵" },
+ { "束发", "束髮" },
+ { "杠杆", "槓桿" },
+ { "条", "條" },
+ { "条干", "條幹" },
+ { "来", "來" },
+ { "来复", "來複" },
+ { "杨", "楊" },
+ { "杨雅筑", "楊雅筑" },
+ { "杩", "榪" },
+ { "杯干", "杯乾" },
+ { "杯面", "杯麵" },
+ { "杰", "傑" },
+ { "杰伦", "杰倫" },
+ { "杰威尔音乐", "杰威爾音樂" },
+ { "杰威爾音樂", "杰威爾音樂" },
+ { "杰特", "杰特" },
+ { "松一口气", "鬆一口氣" },
+ { "松了", "鬆了" },
+ { "松些", "鬆些" },
+ { "松元音", "鬆元音" },
+ { "松动", "鬆動" },
+ { "松劲", "鬆勁" },
+ { "松口", "鬆口" },
+ { "松喉", "鬆喉" },
+ { "松土", "鬆土" },
+ { "松宽", "鬆寬" },
+ { "松开", "鬆開" },
+ { "松弛", "鬆弛" },
+ { "松快", "鬆快" },
+ { "松懈", "鬆懈" },
+ { "松手", "鬆手" },
+ { "松掉", "鬆掉" },
+ { "松散", "鬆散" },
+ { "松松", "鬆鬆" },
+ { "松柔", "鬆柔" },
+ { "松气", "鬆氣" },
+ { "松浮", "鬆浮" },
+ { "松紧", "鬆緊" },
+ { "松绑", "鬆綁" },
+ { "松缓", "鬆緩" },
+ { "松脆", "鬆脆" },
+ { "松脱", "鬆脫" },
+ { "松蛋", "鬆蛋" },
+ { "松起", "鬆起" },
+ { "松软", "鬆軟" },
+ { "松通", "鬆通" },
+ { "松饼", "鬆餅" },
+ { "板着脸", "板著臉" },
+ { "板荡", "板蕩" },
+ { "极", "極" },
+ { "构", "構" },
+ { "林宏岳", "林宏嶽" },
+ { "林钟", "林鐘" },
+ { "果子干", "果子乾" },
+ { "果干", "果乾" },
+ { "枝不得大于干", "枝不得大於榦" },
+ { "枝干", "枝幹" },
+ { "枞", "樅" },
+ { "枢", "樞" },
+ { "枣", "棗" },
+ { "枣庄", "棗莊" },
+ { "枥", "櫪" },
+ { "枨", "棖" },
+ { "枪", "槍" },
+ { "枫", "楓" },
+ { "枭", "梟" },
+ { "枯干", "枯乾" },
+ { "架钟", "架鐘" },
+ { "某只", "某隻" },
+ { "染发", "染髮" },
+ { "染殿后", "染殿后" },
+ { "柜", "櫃" },
+ { "柜上", "柜上" },
+ { "柜台", "櫃檯" },
+ { "柜子", "柜子" },
+ { "柜柳", "柜柳" },
+ { "柠", "檸" },
+ { "柱梁", "柱樑" },
+ { "柳诒征", "柳詒徵" },
+ { "柽", "檉" },
+ { "栀", "梔" },
+ { "栅", "柵" },
+ { "标", "標" },
+ { "标准", "標準" },
+ { "标志", "標誌" },
+ { "标杆", "標杆" },
+ { "标注", "標註" },
+ { "标签", "標籤" },
+ { "标致", "標緻" },
+ { "栈", "棧" },
+ { "栉", "櫛" },
+ { "栉发工", "櫛髮工" },
+ { "栊", "櫳" },
+ { "栋", "棟" },
+ { "栋梁", "棟樑" },
+ { "栌", "櫨" },
+ { "栎", "櫟" },
+ { "栏", "欄" },
+ { "栏杆", "欄杆" },
+ { "树", "樹" },
+ { "树干", "樹榦" },
+ { "树梁", "樹樑" },
+ { "栖", "棲" },
+ { "栖栖皇皇", "栖栖皇皇" },
+ { "栗冽", "慄冽" },
+ { "栗栗", "慄慄" },
+ { "校仇", "校讎" },
+ { "校准", "校準" },
+ { "样", "樣" },
+ { "样范", "樣範" },
+ { "格斗", "格鬥" },
+ { "格范", "格範" },
+ { "格里历", "格里曆" },
+ { "格里高利历", "格里高利曆" },
+ { "栾", "欒" },
+ { "桂圆干", "桂圓乾" },
+ { "桅杆", "桅杆" },
+ { "桌几", "桌几" },
+ { "桌历", "桌曆" },
+ { "桑干", "桑乾" },
+ { "桠", "椏" },
+ { "桡", "橈" },
+ { "桢", "楨" },
+ { "桢干", "楨幹" },
+ { "档", "檔" },
+ { "桤", "榿" },
+ { "桥", "橋" },
+ { "桥梁", "橋樑" },
+ { "桦", "樺" },
+ { "桧", "檜" },
+ { "桨", "槳" },
+ { "桩", "樁" },
+ { "梁上", "樑上" },
+ { "梁柱", "樑柱" },
+ { "梦", "夢" },
+ { "梦游", "夢遊" },
+ { "梦里", "夢裡" },
+ { "梨干", "梨乾" },
+ { "梯冲", "梯衝" },
+ { "械斗", "械鬥" },
+ { "械系", "械繫" },
+ { "梼", "檮" },
+ { "检", "檢" },
+ { "棂", "欞" },
+ { "棉制", "棉製" },
+ { "棒子面", "棒子麵" },
+ { "棫朴", "棫樸" },
+ { "森林里", "森林裡" },
+ { "棱体", "稜體" },
+ { "棱台", "稜台" },
+ { "棱子", "稜子" },
+ { "棱层", "稜層" },
+ { "棱柱", "稜柱" },
+ { "棱棱", "稜稜" },
+ { "棱登", "稜登" },
+ { "棱等登", "稜等登" },
+ { "棱线", "稜線" },
+ { "棱缝", "稜縫" },
+ { "棱角", "稜角" },
+ { "棱锥", "稜錐" },
+ { "棱镜", "稜鏡" },
+ { "棺材里", "棺材裡" },
+ { "椁", "槨" },
+ { "植发", "植髮" },
+ { "椟", "櫝" },
+ { "椠", "槧" },
+ { "椤", "欏" },
+ { "椭", "橢" },
+ { "椰枣干", "椰棗乾" },
+ { "楊雅筑", "楊雅筑" },
+ { "楚庄王", "楚莊王" },
+ { "楚庄绝缨", "楚莊絕纓" },
+ { "楚庄问鼎", "楚莊問鼎" },
+ { "楼", "樓" },
+ { "榄", "欖" },
+ { "榇", "櫬" },
+ { "榈", "櫚" },
+ { "榉", "櫸" },
+ { "榨干", "榨乾" },
+ { "槛", "檻" },
+ { "槟", "檳" },
+ { "槠", "櫧" },
+ { "模制", "模製" },
+ { "模棱", "模稜" },
+ { "模范", "模範" },
+ { "横", "橫" },
+ { "横冲", "橫衝" },
+ { "横征暴敛", "橫徵暴斂" },
+ { "横杆", "橫杆" },
+ { "横梁", "橫樑" },
+ { "樯", "檣" },
+ { "樱", "櫻" },
+ { "樵采", "樵採" },
+ { "橥", "櫫" },
+ { "橱", "櫥" },
+ { "橹", "櫓" },
+ { "橼", "櫞" },
+ { "檩", "檁" },
+ { "欢", "歡" },
+ { "欤", "歟" },
+ { "欧", "歐" },
+ { "欧游", "歐遊" },
+ { "欲令智昏", "慾令智昏" },
+ { "欲壑难填", "慾壑難填" },
+ { "欲念", "慾念" },
+ { "欲望", "慾望" },
+ { "欲海", "慾海" },
+ { "欲火", "慾火" },
+ { "欲障", "慾障" },
+ { "欺蒙", "欺矇" },
+ { "歌后", "歌后" },
+ { "歌钟", "歌鐘" },
+ { "止咳药", "止咳藥" },
+ { "止痛药", "止痛藥" },
+ { "止血药", "止血藥" },
+ { "正在叱咤", "正在叱咤" },
+ { "武后", "武后" },
+ { "武斗", "武鬥" },
+ { "歹斗", "歹鬥" },
+ { "死里求生", "死裡求生" },
+ { "死里逃生", "死裡逃生" },
+ { "歼", "殲" },
+ { "殁", "歿" },
+ { "殇", "殤" },
+ { "残", "殘" },
+ { "残余", "殘餘" },
+ { "残肴", "殘肴" },
+ { "殒", "殞" },
+ { "殓", "殮" },
+ { "殖谷", "殖穀" },
+ { "殚", "殫" },
+ { "殡", "殯" },
+ { "殴", "毆" },
+ { "殴斗", "毆鬥" },
+ { "殷师牛斗", "殷師牛鬥" },
+ { "殿钟自鸣", "殿鐘自鳴" },
+ { "毁", "毀" },
+ { "毁钟为铎", "毀鐘為鐸" },
+ { "毂", "轂" },
+ { "母丑", "母醜" },
+ { "母后", "母后" },
+ { "母范", "母範" },
+ { "每只", "每隻" },
+ { "毒药", "毒藥" },
+ { "毕", "畢" },
+ { "毗婆尸佛", "毗婆尸佛" },
+ { "毙", "斃" },
+ { "毛发", "毛髮" },
+ { "毛坏", "毛坏" },
+ { "毛姜", "毛薑" },
+ { "毡", "氈" },
+ { "毫厘", "毫釐" },
+ { "毫发", "毫髮" },
+ { "毵", "毿" },
+ { "氇", "氌" },
+ { "气", "氣" },
+ { "气郁", "氣鬱" },
+ { "氢", "氫" },
+ { "氤郁", "氤鬱" },
+ { "氩", "氬" },
+ { "氲", "氳" },
+ { "水准", "水準" },
+ { "水无怜奈", "水無怜奈" },
+ { "水来汤里去", "水來湯裡去" },
+ { "水里", "水裡" },
+ { "永历", "永曆" },
+ { "永志不忘", "永誌不忘" },
+ { "求知欲", "求知慾" },
+ { "求签", "求籤" },
+ { "汇", "匯" },
+ { "汇刊", "彙刊" },
+ { "汇报", "彙報" },
+ { "汇整", "彙整" },
+ { "汇算", "彙算" },
+ { "汇纂", "彙纂" },
+ { "汇编", "彙編" },
+ { "汇辑", "彙輯" },
+ { "汇集", "彙集" },
+ { "汉", "漢" },
+ { "汉弥登钟", "漢彌登鐘" },
+ { "池里", "池裡" },
+ { "污蔑", "污衊" },
+ { "汤", "湯" },
+ { "汤下面", "湯下麵" },
+ { "汤团", "湯糰" },
+ { "汤药", "湯藥" },
+ { "汤面", "湯麵" },
+ { "汹", "洶" },
+ { "汹涌", "洶湧" },
+ { "沈吉线", "瀋吉線" },
+ { "沈山线", "瀋山線" },
+ { "沈州", "瀋州" },
+ { "沈水", "瀋水" },
+ { "沈河", "瀋河" },
+ { "沈海", "瀋海" },
+ { "沈淀", "沈澱" },
+ { "沈着", "沈著" },
+ { "沈郁", "沈鬱" },
+ { "沈阳", "瀋陽" },
+ { "沉淀", "沉澱" },
+ { "沉郁", "沉鬱" },
+ { "沙里淘金", "沙裡淘金" },
+ { "沟", "溝" },
+ { "没", "沒" },
+ { "没事干", "沒事幹" },
+ { "没准", "沒準" },
+ { "没干", "沒幹" },
+ { "没干没净", "沒乾沒淨" },
+ { "没折至", "沒摺至" },
+ { "没梢干", "沒梢幹" },
+ { "没药", "沒藥" },
+ { "沣", "灃" },
+ { "沤", "漚" },
+ { "沤郁", "漚鬱" },
+ { "沥", "瀝" },
+ { "沦", "淪" },
+ { "沧", "滄" },
+ { "沩", "溈" },
+ { "沪", "滬" },
+ { "河岳", "河嶽" },
+ { "河里", "河裡" },
+ { "油斗", "油鬥" },
+ { "油面", "油麵" },
+ { "治愈", "治癒" },
+ { "沿溯", "沿泝" },
+ { "泄欲", "洩慾" },
+ { "法占", "法佔" },
+ { "泛游", "泛遊" },
+ { "泞", "濘" },
+ { "泡制", "泡製" },
+ { "泡面", "泡麵" },
+ { "波发藻", "波髮藻" },
+ { "波棱菜", "波稜菜" },
+ { "注上", "註上" },
+ { "注云", "注云" },
+ { "注册", "註冊" },
+ { "注失", "註失" },
+ { "注定", "註定" },
+ { "注明", "註明" },
+ { "注标", "註標" },
+ { "注生娘娘", "註生娘娘" },
+ { "注疏", "註疏" },
+ { "注脚", "註腳" },
+ { "注解", "註解" },
+ { "注记", "註記" },
+ { "注译", "註譯" },
+ { "注销", "註銷" },
+ { "泪", "淚" },
+ { "泪如泉涌", "淚如泉湧" },
+ { "泪干", "淚乾" },
+ { "泱郁", "泱鬱" },
+ { "泳气钟", "泳氣鐘" },
+ { "泶", "澩" },
+ { "泷", "瀧" },
+ { "泸", "瀘" },
+ { "泺", "濼" },
+ { "泻", "瀉" },
+ { "泻药", "瀉藥" },
+ { "泼", "潑" },
+ { "泽", "澤" },
+ { "泽渗漓而下降", "澤滲灕而下降" },
+ { "泾", "涇" },
+ { "洁", "潔" },
+ { "洄游", "洄遊" },
+ { "洒", "灑" },
+ { "洒家", "洒家" },
+ { "洒扫", "洒掃" },
+ { "洒水", "洒水" },
+ { "洒洒", "洒洒" },
+ { "洒涤", "洒滌" },
+ { "洒淅", "洒淅" },
+ { "洒濯", "洒濯" },
+ { "洒然", "洒然" },
+ { "洒脱", "洒脫" },
+ { "洗发", "洗髮" },
+ { "洗炼", "洗鍊" },
+ { "洗练", "洗鍊" },
+ { "洛钟东应", "洛鐘東應" },
+ { "洪范", "洪範" },
+ { "洪适", "洪适" },
+ { "洪钟", "洪鐘" },
+ { "洼", "窪" },
+ { "流征", "流徵" },
+ { "流荡", "流蕩" },
+ { "浃", "浹" },
+ { "浅", "淺" },
+ { "浅淀", "淺澱" },
+ { "浆", "漿" },
+ { "浇", "澆" },
+ { "浈", "湞" },
+ { "浊", "濁" },
+ { "测", "測" },
+ { "浍", "澮" },
+ { "济", "濟" },
+ { "浏", "瀏" },
+ { "浑", "渾" },
+ { "浑个", "渾箇" },
+ { "浑朴", "渾樸" },
+ { "浒", "滸" },
+ { "浓", "濃" },
+ { "浓发", "濃髮" },
+ { "浔", "潯" },
+ { "浩浩荡荡", "浩浩蕩蕩" },
+ { "浩荡", "浩蕩" },
+ { "浪游", "浪遊" },
+ { "浪琴表", "浪琴錶" },
+ { "浪荡", "浪蕩" },
+ { "浮松", "浮鬆" },
+ { "浮荡", "浮蕩" },
+ { "海上布雷", "海上佈雷" },
+ { "海干", "海乾" },
+ { "海湾布雷", "海灣佈雷" },
+ { "涂", "塗" },
+ { "涂善妮", "涂善妮" },
+ { "涂坤", "涂坤" },
+ { "涂壮勋", "涂壯勳" },
+ { "涂壯勳", "涂壯勳" },
+ { "涂天相", "涂天相" },
+ { "涂姓", "涂姓" },
+ { "涂序瑄", "涂序瑄" },
+ { "涂敏恆", "涂敏恆" },
+ { "涂敏恒", "涂敏恆" },
+ { "涂泽民", "涂澤民" },
+ { "涂澤民", "涂澤民" },
+ { "涂着", "塗著" },
+ { "涂绍煃", "涂紹煃" },
+ { "涂羽卿", "涂羽卿" },
+ { "涂药", "塗藥" },
+ { "涂謹申", "涂謹申" },
+ { "涂谨申", "涂謹申" },
+ { "涂逢年", "涂逢年" },
+ { "涂醒哲", "涂醒哲" },
+ { "涂長望", "涂長望" },
+ { "涂长望", "涂長望" },
+ { "涂鴻欽", "涂鴻欽" },
+ { "涂鸿钦", "涂鴻欽" },
+ { "消炎药", "消炎藥" },
+ { "消肿药", "消腫藥" },
+ { "涌上", "湧上" },
+ { "涌入", "湧入" },
+ { "涌出", "湧出" },
+ { "涌向", "湧向" },
+ { "涌来", "湧來" },
+ { "涌泉", "湧泉" },
+ { "涌现", "湧現" },
+ { "涌起", "湧起" },
+ { "涌进", "湧進" },
+ { "涛", "濤" },
+ { "涝", "澇" },
+ { "涞", "淶" },
+ { "涟", "漣" },
+ { "涠", "潿" },
+ { "涡", "渦" },
+ { "涣", "渙" },
+ { "涤", "滌" },
+ { "润", "潤" },
+ { "涧", "澗" },
+ { "涨", "漲" },
+ { "涩", "澀" },
+ { "液晶表", "液晶錶" },
+ { "涳蒙", "涳濛" },
+ { "涸干", "涸乾" },
+ { "淀乃不耕之地", "澱乃不耕之地" },
+ { "淀北片", "澱北片" },
+ { "淀山", "澱山" },
+ { "淀淀", "澱澱" },
+ { "淀积", "澱積" },
+ { "淀粉", "澱粉" },
+ { "淀解物", "澱解物" },
+ { "淀谓之滓", "澱謂之滓" },
+ { "淋余土", "淋餘土" },
+ { "淑范", "淑範" },
+ { "淡朱", "淡硃" },
+ { "淡蒙蒙", "淡濛濛" },
+ { "淫欲", "淫慾" },
+ { "淫荡", "淫蕩" },
+ { "淬炼", "淬鍊" },
+ { "深山何处钟", "深山何處鐘" },
+ { "深渊里", "深淵裡" },
+ { "淳于", "淳于" },
+ { "淳朴", "淳樸" },
+ { "清汤挂面", "清湯掛麵" },
+ { "渊", "淵" },
+ { "渊淳岳峙", "淵淳嶽峙" },
+ { "渌", "淥" },
+ { "渍", "漬" },
+ { "渎", "瀆" },
+ { "渐", "漸" },
+ { "渑", "澠" },
+ { "渔", "漁" },
+ { "渖", "瀋" },
+ { "渗", "滲" },
+ { "渠冲", "渠衝" },
+ { "温", "溫" },
+ { "港制", "港製" },
+ { "游丝", "遊絲" },
+ { "游乐", "遊樂" },
+ { "游了", "遊了" },
+ { "游人", "遊人" },
+ { "游仙", "遊仙" },
+ { "游伴", "遊伴" },
+ { "游侠", "遊俠" },
+ { "游兴", "遊興" },
+ { "游冶", "遊冶" },
+ { "游刃有余", "遊刃有餘" },
+ { "游动", "遊動" },
+ { "游历", "遊歷" },
+ { "游园", "遊園" },
+ { "游子", "遊子" },
+ { "游学", "遊學" },
+ { "游客", "遊客" },
+ { "游宦", "遊宦" },
+ { "游山玩水", "遊山玩水" },
+ { "游必有方", "遊必有方" },
+ { "游憩", "遊憩" },
+ { "游戏", "遊戲" },
+ { "游手好闲", "遊手好閒" },
+ { "游方", "遊方" },
+ { "游星", "遊星" },
+ { "游标卡尺", "遊標卡尺" },
+ { "游民", "遊民" },
+ { "游河", "遊河" },
+ { "游猎", "遊獵" },
+ { "游玩", "遊玩" },
+ { "游目骋怀", "遊目騁懷" },
+ { "游离", "遊離" },
+ { "游程", "遊程" },
+ { "游船", "遊船" },
+ { "游艇", "遊艇" },
+ { "游艺", "遊藝" },
+ { "游荡", "遊盪" },
+ { "游荡不归", "遊蕩不歸" },
+ { "游行", "遊行" },
+ { "游街", "遊街" },
+ { "游览", "遊覽" },
+ { "游记", "遊記" },
+ { "游说", "遊說" },
+ { "游资", "遊資" },
+ { "游走", "遊走" },
+ { "游踪", "遊蹤" },
+ { "游逛", "遊逛" },
+ { "游错", "遊錯" },
+ { "游骑兵", "遊騎兵" },
+ { "游魂", "遊魂" },
+ { "湖里", "湖裡" },
+ { "湘累", "湘纍" },
+ { "湘绣", "湘繡" },
+ { "湟潦生苹", "湟潦生苹" },
+ { "湮郁", "湮鬱" },
+ { "湾", "灣" },
+ { "湿", "濕" },
+ { "溃", "潰" },
+ { "溅", "濺" },
+ { "溆", "漵" },
+ { "溟蒙", "溟濛" },
+ { "溲面", "溲麵" },
+ { "滃郁", "滃鬱" },
+ { "滑借", "滑藉" },
+ { "滗", "潷" },
+ { "滚", "滾" },
+ { "滞", "滯" },
+ { "滠", "灄" },
+ { "满", "滿" },
+ { "满头洋发", "滿頭洋髮" },
+ { "满拼自尽", "滿拚自盡" },
+ { "滢", "瀅" },
+ { "滤", "濾" },
+ { "滥", "濫" },
+ { "滦", "灤" },
+ { "滨", "濱" },
+ { "滩", "灘" },
+ { "滩涂", "灘涂" },
+ { "漂荡", "漂蕩" },
+ { "漓水", "灕水" },
+ { "漓江", "灕江" },
+ { "漓湘", "灕湘" },
+ { "漓然", "灕然" },
+ { "漕挽", "漕輓" },
+ { "漤", "灠" },
+ { "漫游", "漫遊" },
+ { "潆", "瀠" },
+ { "潇", "瀟" },
+ { "潇洒", "瀟洒" },
+ { "潋", "瀲" },
+ { "潍", "濰" },
+ { "潜", "潛" },
+ { "潜意识里", "潛意識裡" },
+ { "潜水表", "潛水錶" },
+ { "潜水钟", "潛水鐘" },
+ { "潭里", "潭裡" },
+ { "潮涌", "潮湧" },
+ { "潴", "瀦" },
+ { "澒蒙", "澒濛" },
+ { "澜", "瀾" },
+ { "澹台", "澹臺" },
+ { "澹荡", "澹蕩" },
+ { "激荡", "激蕩" },
+ { "濑", "瀨" },
+ { "濒", "瀕" },
+ { "灌药", "灌藥" },
+ { "灏", "灝" },
+ { "火并", "火併" },
+ { "火拼", "火拚" },
+ { "火签", "火籤" },
+ { "火箭布雷", "火箭佈雷" },
+ { "火药", "火藥" },
+ { "灭", "滅" },
+ { "灯", "燈" },
+ { "灰蒙", "灰濛" },
+ { "灰蒙蒙", "灰濛濛" },
+ { "灵", "靈" },
+ { "灵药", "靈藥" },
+ { "灾", "災" },
+ { "灿", "燦" },
+ { "炀", "煬" },
+ { "炆面", "炆麵" },
+ { "炉", "爐" },
+ { "炒面", "炒麵" },
+ { "炖", "燉" },
+ { "炖药", "燉藥" },
+ { "炜", "煒" },
+ { "炝", "熗" },
+ { "炮制", "炮製" },
+ { "炸药", "炸藥" },
+ { "炸酱面", "炸醬麵" },
+ { "点", "點" },
+ { "点半钟", "點半鐘" },
+ { "点多钟", "點多鐘" },
+ { "点里", "點裡" },
+ { "点钟", "點鐘" },
+ { "炼", "煉" },
+ { "炼冶", "鍊冶" },
+ { "炼制", "煉製" },
+ { "炼句", "鍊句" },
+ { "炼字", "鍊字" },
+ { "炼师", "鍊師" },
+ { "炼度", "鍊度" },
+ { "炼形", "鍊形" },
+ { "炼气", "鍊氣" },
+ { "炼汞", "鍊汞" },
+ { "炼石", "鍊石" },
+ { "炼药", "煉藥" },
+ { "炼贫", "鍊貧" },
+ { "炼金术", "鍊金術" },
+ { "炼钢", "鍊鋼" },
+ { "炽", "熾" },
+ { "烁", "爍" },
+ { "烂", "爛" },
+ { "烃", "烴" },
+ { "烘制", "烘製" },
+ { "烘干", "烘乾" },
+ { "烛", "燭" },
+ { "烟", "煙" },
+ { "烟卷", "煙捲" },
+ { "烤干", "烤乾" },
+ { "烤晒", "烤晒" },
+ { "烦", "煩" },
+ { "烧", "燒" },
+ { "烧干", "燒乾" },
+ { "烨", "燁" },
+ { "烩", "燴" },
+ { "烫", "燙" },
+ { "烫一个发", "燙一個髮" },
+ { "烫一次发", "燙一次髮" },
+ { "烫个发", "燙個髮" },
+ { "烫发", "燙髮" },
+ { "烫完发", "燙完髮" },
+ { "烫次发", "燙次髮" },
+ { "烫面", "燙麵" },
+ { "烬", "燼" },
+ { "烬余", "燼餘" },
+ { "热", "熱" },
+ { "焕", "煥" },
+ { "焖", "燜" },
+ { "焘", "燾" },
+ { "焙干", "焙乾" },
+ { "無言不仇", "無言不讎" },
+ { "煎药", "煎藥" },
+ { "煎面", "煎麵" },
+ { "照入签", "照入籤" },
+ { "照准", "照準" },
+ { "照占", "照佔" },
+ { "煨干", "煨乾" },
+ { "煮面", "煮麵" },
+ { "熊杰", "熊杰" },
+ { "熬药", "熬藥" },
+ { "燎发", "燎髮" },
+ { "燕几", "燕几" },
+ { "燕游", "燕遊" },
+ { "爰定祥历", "爰定祥厤" },
+ { "爱", "愛" },
+ { "爱困", "愛睏" },
+ { "爷", "爺" },
+ { "爽荡", "爽蕩" },
+ { "片言只语", "片言隻語" },
+ { "牍", "牘" },
+ { "牙签", "牙籤" },
+ { "牛只", "牛隻" },
+ { "牛肉面", "牛肉麵" },
+ { "牦", "氂" },
+ { "物欲", "物慾" },
+ { "牵", "牽" },
+ { "牵一发", "牽一髮" },
+ { "牵系", "牽繫" },
+ { "特别致", "特别致" },
+ { "特制", "特製" },
+ { "特征", "特徵" },
+ { "特效药", "特效藥" },
+ { "牺", "犧" },
+ { "犊", "犢" },
+ { "状", "狀" },
+ { "犷", "獷" },
+ { "犹", "猶" },
+ { "犹如表", "猶如錶" },
+ { "犹如钟", "猶如鐘" },
+ { "狂占", "狂佔" },
+ { "狂并潮", "狂併潮" },
+ { "狄志杰", "狄志杰" },
+ { "狈", "狽" },
+ { "狐借虎威", "狐藉虎威" },
+ { "狞", "獰" },
+ { "独", "獨" },
+ { "独占", "獨佔" },
+ { "独辟蹊径", "獨闢蹊徑" },
+ { "狭", "狹" },
+ { "狮", "獅" },
+ { "狯", "獪" },
+ { "狰", "猙" },
+ { "狱", "獄" },
+ { "狱里", "獄裡" },
+ { "狲", "猻" },
+ { "猃", "獫" },
+ { "猎", "獵" },
+ { "猕", "獼" },
+ { "猛冲", "猛衝" },
+ { "猜三划五", "猜三划五" },
+ { "猡", "玀" },
+ { "猪", "豬" },
+ { "猫", "貓" },
+ { "猬", "蝟" },
+ { "献", "獻" },
+ { "献丑", "獻醜" },
+ { "獭", "獺" },
+ { "玉历", "玉曆" },
+ { "王余鱼", "王餘魚" },
+ { "王侯后", "王侯后" },
+ { "王后", "王后" },
+ { "王庄", "王莊" },
+ { "玑", "璣" },
+ { "玛", "瑪" },
+ { "玮", "瑋" },
+ { "环", "環" },
+ { "环游", "環遊" },
+ { "现", "現" },
+ { "玺", "璽" },
+ { "珍肴异馔", "珍肴異饌" },
+ { "珐", "琺" },
+ { "珑", "瓏" },
+ { "班里", "班裡" },
+ { "珲", "琿" },
+ { "球杆", "球杆" },
+ { "理一个发", "理一個髮" },
+ { "理一次发", "理一次髮" },
+ { "理个发", "理個髮" },
+ { "理发", "理髮" },
+ { "理完发", "理完髮" },
+ { "理次发", "理次髮" },
+ { "琏", "璉" },
+ { "琐", "瑣" },
+ { "琴钟", "琴鐘" },
+ { "琼", "瓊" },
+ { "瑞征", "瑞徵" },
+ { "瑶", "瑤" },
+ { "瑶签", "瑤籤" },
+ { "瑷", "璦" },
+ { "璎", "瓔" },
+ { "瓒", "瓚" },
+ { "瓮安", "甕安" },
+ { "瓯", "甌" },
+ { "瓷制", "瓷製" },
+ { "甄后", "甄后" },
+ { "甚么", "甚麼" },
+ { "甜水面", "甜水麵" },
+ { "甜面酱", "甜麵醬" },
+ { "生力面", "生力麵" },
+ { "生发", "生髮" },
+ { "生姜", "生薑" },
+ { "生物钟", "生物鐘" },
+ { "生锈", "生鏽" },
+ { "用药", "用藥" },
+ { "甩发", "甩髮" },
+ { "田庄", "田莊" },
+ { "田谷", "田穀" },
+ { "田里", "田裡" },
+ { "由表及里", "由表及裡" },
+ { "甲后路", "甲后路" },
+ { "电", "電" },
+ { "电冲", "電衝" },
+ { "电子表", "電子錶" },
+ { "电子钟", "電子鐘" },
+ { "电杆", "電杆" },
+ { "电波钟", "電波鐘" },
+ { "电线杆", "電線杆" },
+ { "电表", "電錶" },
+ { "电钟", "電鐘" },
+ { "男仆", "男僕" },
+ { "男用表", "男用錶" },
+ { "画", "畫" },
+ { "画着", "畫著" },
+ { "畅", "暢" },
+ { "畅游", "暢遊" },
+ { "留发", "留髮" },
+ { "畴", "疇" },
+ { "疏松", "疏鬆" },
+ { "疑凶", "疑兇" },
+ { "疑系", "疑係" },
+ { "疖", "癤" },
+ { "疗", "療" },
+ { "疟", "瘧" },
+ { "疠", "癘" },
+ { "疡", "瘍" },
+ { "疬", "癧" },
+ { "疮", "瘡" },
+ { "疯", "瘋" },
+ { "疱", "皰" },
+ { "疲困", "疲睏" },
+ { "疴", "痾" },
+ { "病余", "病餘" },
+ { "病征", "病徵" },
+ { "病愈", "病癒" },
+ { "症候", "癥候" },
+ { "症状", "癥狀" },
+ { "症结", "癥結" },
+ { "痈", "癰" },
+ { "痉", "痙" },
+ { "痊愈", "痊癒" },
+ { "痒", "癢" },
+ { "痒疹", "痒疹" },
+ { "痒痒", "痒痒" },
+ { "痕迹", "痕迹" },
+ { "痨", "癆" },
+ { "痪", "瘓" },
+ { "痫", "癇" },
+ { "瘅", "癉" },
+ { "瘗", "瘞" },
+ { "瘘", "瘺" },
+ { "瘪", "癟" },
+ { "瘫", "癱" },
+ { "瘾", "癮" },
+ { "瘿", "癭" },
+ { "癞", "癩" },
+ { "癣", "癬" },
+ { "癫", "癲" },
+ { "白兔擣药", "白兔擣藥" },
+ { "白净面皮", "白淨面皮" },
+ { "白发", "白髮" },
+ { "白干", "白乾" },
+ { "白术", "白朮" },
+ { "白朴", "白樸" },
+ { "白粉面", "白粉麵" },
+ { "白胡", "白鬍" },
+ { "白里透红", "白裡透紅" },
+ { "白霉", "白黴" },
+ { "百余", "百餘" },
+ { "百只", "百隻" },
+ { "百扎", "百紮" },
+ { "百拙千丑", "百拙千醜" },
+ { "百炼", "百鍊" },
+ { "百科里", "百科裡" },
+ { "百花历", "百花曆" },
+ { "百药之长", "百藥之長" },
+ { "百谷", "百穀" },
+ { "的克制", "的剋制" },
+ { "的钟", "的鐘" },
+ { "的钟表", "的鐘錶" },
+ { "的长发", "的長髮" },
+ { "皆准", "皆準" },
+ { "皆可作淀", "皆可作澱" },
+ { "皇历", "皇曆" },
+ { "皇后", "皇后" },
+ { "皇庄", "皇莊" },
+ { "皇极历", "皇極曆" },
+ { "皑", "皚" },
+ { "皓发", "皓髮" },
+ { "皮制", "皮製" },
+ { "皮松", "皮鬆" },
+ { "皮里春秋", "皮裡春秋" },
+ { "皮里阳秋", "皮裡陽秋" },
+ { "皱", "皺" },
+ { "皱别", "皺彆" },
+ { "皱折", "皺摺" },
+ { "皲", "皸" },
+ { "盆吊", "盆弔" },
+ { "盈余", "盈餘" },
+ { "盏", "盞" },
+ { "盐", "鹽" },
+ { "盐余", "鹽餘" },
+ { "盐卤", "鹽滷" },
+ { "盐打怎么咸", "鹽打怎麼鹹" },
+ { "监", "監" },
+ { "监制", "監製" },
+ { "盒里", "盒裡" },
+ { "盖", "蓋" },
+ { "盗", "盜" },
+ { "盗采", "盜採" },
+ { "盗钟", "盜鐘" },
+ { "盘", "盤" },
+ { "盘回", "盤迴" },
+ { "盘里", "盤裡" },
+ { "盛赞", "盛讚" },
+ { "盲干", "盲幹" },
+ { "直冲", "直衝" },
+ { "直接参与", "直接參与" },
+ { "相克", "相剋" },
+ { "相冲", "相衝" },
+ { "相并", "相併" },
+ { "相斗", "相鬥" },
+ { "看下表", "看下錶" },
+ { "看下钟", "看下鐘" },
+ { "看准", "看準" },
+ { "看着表", "看著錶" },
+ { "看着钟", "看著鐘" },
+ { "看着钟表", "看著鐘錶" },
+ { "看表", "看錶" },
+ { "看钟", "看鐘" },
+ { "真个", "真箇" },
+ { "真凶", "真兇" },
+ { "眦", "眥" },
+ { "眼帘", "眼帘" },
+ { "眼干", "眼乾" },
+ { "眼眶里", "眼眶裡" },
+ { "眼睛里", "眼睛裡" },
+ { "眼药", "眼藥" },
+ { "眼里", "眼裡" },
+ { "着书立说", "著書立說" },
+ { "着儿", "著兒" },
+ { "着克制", "著剋制" },
+ { "着录", "著錄" },
+ { "着色软体", "著色軟體" },
+ { "着重指出", "著重指出" },
+ { "睁", "睜" },
+ { "睐", "睞" },
+ { "睑", "瞼" },
+ { "睡游病", "睡遊病" },
+ { "睡着了", "睡著了" },
+ { "瞄准", "瞄準" },
+ { "瞅下表", "瞅下錶" },
+ { "瞅下钟", "瞅下鐘" },
+ { "瞒", "瞞" },
+ { "瞧着表", "瞧著錶" },
+ { "瞧着钟", "瞧著鐘" },
+ { "瞧着钟表", "瞧著鐘錶" },
+ { "瞩", "矚" },
+ { "瞩托", "矚託" },
+ { "瞳蒙", "瞳矇" },
+ { "矜庄", "矜莊" },
+ { "矫", "矯" },
+ { "短几", "短几" },
+ { "短发", "短髮" },
+ { "矮几", "矮几" },
+ { "石几", "石几" },
+ { "石梁", "石樑" },
+ { "石英表", "石英錶" },
+ { "石英钟", "石英鐘" },
+ { "石莼", "石蓴" },
+ { "石钟乳", "石鐘乳" },
+ { "矶", "磯" },
+ { "矾", "礬" },
+ { "矿", "礦" },
+ { "砀", "碭" },
+ { "码", "碼" },
+ { "码表", "碼錶" },
+ { "研制", "研製" },
+ { "砖", "磚" },
+ { "砗", "硨" },
+ { "砚", "硯" },
+ { "砰当", "砰噹" },
+ { "砺", "礪" },
+ { "砻", "礱" },
+ { "砻谷机", "礱穀機" },
+ { "砾", "礫" },
+ { "础", "礎" },
+ { "硕", "碩" },
+ { "硖", "硤" },
+ { "硗", "磽" },
+ { "硗确", "磽确" },
+ { "硬干", "硬幹" },
+ { "确", "確" },
+ { "确瘠", "确瘠" },
+ { "碍", "礙" },
+ { "碑志", "碑誌" },
+ { "碛", "磧" },
+ { "碜", "磣" },
+ { "碰钟", "碰鐘" },
+ { "碱", "鹼" },
+ { "磁制", "磁製" },
+ { "磨制", "磨製" },
+ { "磨炼", "磨鍊" },
+ { "磬钟", "磬鐘" },
+ { "示范", "示範" },
+ { "礼", "禮" },
+ { "礼赞", "禮讚" },
+ { "社里", "社裡" },
+ { "祝发", "祝髮" },
+ { "祝赞", "祝讚" },
+ { "神游", "神遊" },
+ { "神雕", "神鵰" },
+ { "祢", "禰" },
+ { "票庄", "票莊" },
+ { "祭吊", "祭弔" },
+ { "祯", "禎" },
+ { "祷", "禱" },
+ { "祸", "禍" },
+ { "禀", "稟" },
+ { "禁欲", "禁慾" },
+ { "禁药", "禁藥" },
+ { "禄", "祿" },
+ { "禅", "禪" },
+ { "离", "離" },
+ { "禾谷", "禾穀" },
+ { "秀发", "秀髮" },
+ { "私下里", "私下裡" },
+ { "私斗", "私鬥" },
+ { "私欲", "私慾" },
+ { "秃", "禿" },
+ { "秃发", "禿髮" },
+ { "秃妃之发", "禿妃之髮" },
+ { "秆", "稈" },
+ { "秋假里", "秋假裡" },
+ { "秋千", "鞦韆" },
+ { "秋发", "秋髮" },
+ { "秋天里", "秋天裡" },
+ { "秋日里", "秋日裡" },
+ { "秋游", "秋遊" },
+ { "秋阴入井干", "秋陰入井幹" },
+ { "种", "種" },
+ { "种师中", "种師中" },
+ { "种师道", "种師道" },
+ { "种放", "种放" },
+ { "种谷", "種穀" },
+ { "科范", "科範" },
+ { "秒表", "秒錶" },
+ { "秒钟", "秒鐘" },
+ { "秦庄襄王", "秦莊襄王" },
+ { "积", "積" },
+ { "积极参与", "積极參与" },
+ { "积极参加", "積极參加" },
+ { "积淀", "積澱" },
+ { "积谷", "積穀" },
+ { "积谷防饥", "積穀防饑" },
+ { "积郁", "積鬱" },
+ { "称", "稱" },
+ { "称赞", "稱讚" },
+ { "秽", "穢" },
+ { "稀松", "稀鬆" },
+ { "稆", "穭" },
+ { "税", "稅" },
+ { "稣", "穌" },
+ { "稳", "穩" },
+ { "稳占", "穩佔" },
+ { "稳扎", "穩紮" },
+ { "稻谷", "稻穀" },
+ { "稽征", "稽徵" },
+ { "穆罕默德历", "穆罕默德曆" },
+ { "穑", "穡" },
+ { "穗帏飘井干", "繐幃飄井幹" },
+ { "穷", "窮" },
+ { "穷发", "窮髮" },
+ { "穷追不舍", "窮追不捨" },
+ { "空中布雷", "空中佈雷" },
+ { "空余", "空餘" },
+ { "空投布雷", "空投佈雷" },
+ { "空荡", "空蕩" },
+ { "空荡荡", "空蕩蕩" },
+ { "空蒙", "空濛" },
+ { "空钟", "空鐘" },
+ { "窃", "竊" },
+ { "窃钟掩耳", "竊鐘掩耳" },
+ { "窍", "竅" },
+ { "窑", "窯" },
+ { "窒欲", "窒慾" },
+ { "窗台", "窗檯" },
+ { "窗帘", "窗帘" },
+ { "窗明几亮", "窗明几亮" },
+ { "窗明几净", "窗明几淨" },
+ { "窜", "竄" },
+ { "窝", "窩" },
+ { "窝里", "窩裡" },
+ { "窥", "窺" },
+ { "窦", "竇" },
+ { "窭", "窶" },
+ { "立后综", "立后綜" },
+ { "立范", "立範" },
+ { "竖", "豎" },
+ { "竖着", "豎著" },
+ { "站干岸儿", "站乾岸兒" },
+ { "竞", "競" },
+ { "竞斗", "競鬥" },
+ { "童仆", "童僕" },
+ { "端庄", "端莊" },
+ { "竹几", "竹几" },
+ { "竹制", "竹製" },
+ { "竹林之游", "竹林之遊" },
+ { "竹签", "竹籤" },
+ { "笃", "篤" },
+ { "笋", "筍" },
+ { "笋干", "筍乾" },
+ { "笑里藏刀", "笑裡藏刀" },
+ { "笔", "筆" },
+ { "笔秃墨干", "筆禿墨乾" },
+ { "笕", "筧" },
+ { "笺", "箋" },
+ { "笼", "籠" },
+ { "笾", "籩" },
+ { "筑", "築" },
+ { "筑前", "筑前" },
+ { "筑北", "筑北" },
+ { "筑后", "筑後" },
+ { "筑州", "筑州" },
+ { "筑後", "筑後" },
+ { "筑波", "筑波" },
+ { "筑紫", "筑紫" },
+ { "筑肥", "筑肥" },
+ { "筑西", "筑西" },
+ { "筑邦", "筑邦" },
+ { "筑阳", "筑陽" },
+ { "筑陽", "筑陽" },
+ { "答复", "答覆" },
+ { "筚", "篳" },
+ { "筛", "篩" },
+ { "筝", "箏" },
+ { "筵几", "筵几" },
+ { "筹", "籌" },
+ { "签", "簽" },
+ { "签押", "籤押" },
+ { "签条", "籤條" },
+ { "签着", "簽著" },
+ { "签诗", "籤詩" },
+ { "简", "簡" },
+ { "简并", "簡併" },
+ { "简朴", "簡樸" },
+ { "简筑翎", "簡筑翎" },
+ { "算准", "算準" },
+ { "算历", "算曆" },
+ { "算发", "算髮" },
+ { "管干", "管幹" },
+ { "箦", "簀" },
+ { "箧", "篋" },
+ { "箨", "籜" },
+ { "箩", "籮" },
+ { "箪", "簞" },
+ { "箫", "簫" },
+ { "篑", "簣" },
+ { "篓", "簍" },
+ { "篮", "籃" },
+ { "篱", "籬" },
+ { "簖", "籪" },
+ { "簡筑翎", "簡筑翎" },
+ { "簸荡", "簸蕩" },
+ { "籁", "籟" },
+ { "米谷", "米穀" },
+ { "籴", "糴" },
+ { "类", "類" },
+ { "籼", "秈" },
+ { "粉拳绣腿", "粉拳繡腿" },
+ { "粉签子", "粉籤子" },
+ { "粗制", "粗製" },
+ { "粜", "糶" },
+ { "粝", "糲" },
+ { "粤", "粵" },
+ { "粪", "糞" },
+ { "粪秽蔑面", "糞穢衊面" },
+ { "粮", "糧" },
+ { "精准", "精準" },
+ { "精制", "精製" },
+ { "精干", "精幹" },
+ { "精松", "精鬆" },
+ { "精炼", "精鍊" },
+ { "精致", "精緻" },
+ { "精辟", "精闢" },
+ { "糁", "糝" },
+ { "糇", "餱" },
+ { "糊里糊涂", "糊裡糊塗" },
+ { "糕干", "糕乾" },
+ { "系上", "繫上" },
+ { "系世", "繫世" },
+ { "系为", "係為" },
+ { "系于", "繫於" },
+ { "系于一发", "繫於一髮" },
+ { "系列里", "系列裡" },
+ { "系到", "繫到" },
+ { "系囚", "繫囚" },
+ { "系心", "繫心" },
+ { "系念", "繫念" },
+ { "系怀", "繫懷" },
+ { "系恋", "繫戀" },
+ { "系数", "係數" },
+ { "系着", "系著" },
+ { "系紧", "繫緊" },
+ { "系累", "繫纍" },
+ { "系结", "繫結" },
+ { "系绳", "繫繩" },
+ { "系辞", "繫辭" },
+ { "系里", "系裡" },
+ { "系风捕影", "繫風捕影" },
+ { "素发", "素髮" },
+ { "素朴", "素樸" },
+ { "素面", "素麵" },
+ { "索面", "索麵" },
+ { "紧", "緊" },
+ { "紧绷", "緊繃" },
+ { "紧绷着", "緊繃著" },
+ { "紧绷绷", "緊繃繃" },
+ { "紧致", "緊緻" },
+ { "紧追不舍", "緊追不捨" },
+ { "紫姜", "紫薑" },
+ { "累囚", "纍囚" },
+ { "累堆", "纍堆" },
+ { "累瓦结绳", "纍瓦結繩" },
+ { "累绁", "纍紲" },
+ { "累臣", "纍臣" },
+ { "絷", "縶" },
+ { "綑扎", "綑紮" },
+ { "經有云", "經有云" },
+ { "緝凶", "緝兇" },
+ { "繁复", "繁複" },
+ { "繁钟", "繁鐘" },
+ { "纠", "糾" },
+ { "纡", "紆" },
+ { "纡余", "紆餘" },
+ { "纡回", "紆迴" },
+ { "纡郁", "紆鬱" },
+ { "红", "紅" },
+ { "红发", "紅髮" },
+ { "红绳系足", "紅繩繫足" },
+ { "红色长发", "紅色長髮" },
+ { "红钟", "紅鐘" },
+ { "纣", "紂" },
+ { "纤", "纖" },
+ { "纤夫", "縴夫" },
+ { "纤手", "縴手" },
+ { "纥", "紇" },
+ { "约", "約" },
+ { "约占", "約佔" },
+ { "级", "級" },
+ { "纨", "紈" },
+ { "纩", "纊" },
+ { "纪", "紀" },
+ { "纪历", "紀曆" },
+ { "纫", "紉" },
+ { "纬", "緯" },
+ { "纭", "紜" },
+ { "纯", "純" },
+ { "纯朴", "純樸" },
+ { "纰", "紕" },
+ { "纱", "紗" },
+ { "纲", "綱" },
+ { "纳", "納" },
+ { "纳征", "納徵" },
+ { "纵", "縱" },
+ { "纵欲", "縱慾" },
+ { "纶", "綸" },
+ { "纷", "紛" },
+ { "纸", "紙" },
+ { "纸扎", "紙紮" },
+ { "纹", "紋" },
+ { "纺", "紡" },
+ { "纽", "紐" },
+ { "纾", "紓" },
+ { "线", "線" },
+ { "绀", "紺" },
+ { "绁", "紲" },
+ { "绂", "紱" },
+ { "练", "練" },
+ { "组", "組" },
+ { "组里", "組裡" },
+ { "绅", "紳" },
+ { "细", "細" },
+ { "细不容发", "細不容髮" },
+ { "细如发", "細如髮" },
+ { "细炼", "細鍊" },
+ { "细致", "細緻" },
+ { "织", "織" },
+ { "终", "終" },
+ { "绉", "縐" },
+ { "绊", "絆" },
+ { "绋", "紼" },
+ { "绌", "絀" },
+ { "绍", "紹" },
+ { "绎", "繹" },
+ { "经", "經" },
+ { "经有云", "經有云" },
+ { "绐", "紿" },
+ { "绑", "綁" },
+ { "绑扎", "綁紮" },
+ { "绒", "絨" },
+ { "结", "結" },
+ { "结伙", "結夥" },
+ { "结伴同游", "結伴同遊" },
+ { "结余", "結餘" },
+ { "结发", "結髮" },
+ { "结彩", "結綵" },
+ { "结扎", "結紮" },
+ { "绕", "繞" },
+ { "绕梁", "繞樑" },
+ { "绗", "絎" },
+ { "绘", "繪" },
+ { "绘制", "繪製" },
+ { "给", "給" },
+ { "绚", "絢" },
+ { "绛", "絳" },
+ { "络", "絡" },
+ { "络腮胡", "絡腮鬍" },
+ { "绝", "絕" },
+ { "绞", "絞" },
+ { "绞干", "絞乾" },
+ { "统", "統" },
+ { "绠", "綆" },
+ { "绡", "綃" },
+ { "绢", "絹" },
+ { "绣", "綉" },
+ { "绣像", "繡像" },
+ { "绣口", "繡口" },
+ { "绣得", "繡得" },
+ { "绣户", "繡戶" },
+ { "绣房", "繡房" },
+ { "绣毯", "繡毯" },
+ { "绣球", "繡球" },
+ { "绣的", "繡的" },
+ { "绣花", "繡花" },
+ { "绣衣", "繡衣" },
+ { "绣起", "繡起" },
+ { "绣阁", "繡閣" },
+ { "绣鞋", "繡鞋" },
+ { "绥", "綏" },
+ { "绦", "絛" },
+ { "继", "繼" },
+ { "绨", "綈" },
+ { "绩", "績" },
+ { "绪", "緒" },
+ { "绪余", "緒餘" },
+ { "绫", "綾" },
+ { "续", "續" },
+ { "绮", "綺" },
+ { "绯", "緋" },
+ { "绰", "綽" },
+ { "绲", "緄" },
+ { "绳", "繩" },
+ { "维", "維" },
+ { "维系", "維繫" },
+ { "绵", "綿" },
+ { "绶", "綬" },
+ { "绷住", "繃住" },
+ { "绷子", "繃子" },
+ { "绷带", "繃帶" },
+ { "绷开", "繃開" },
+ { "绷扒吊拷", "繃扒弔拷" },
+ { "绷着", "繃著" },
+ { "绷紧", "繃緊" },
+ { "绷脸", "繃臉" },
+ { "绸", "綢" },
+ { "绸缎庄", "綢緞莊" },
+ { "绺", "綹" },
+ { "绻", "綣" },
+ { "综", "綜" },
+ { "绽", "綻" },
+ { "绾", "綰" },
+ { "绾发", "綰髮" },
+ { "绿", "綠" },
+ { "绿发", "綠髮" },
+ { "缀", "綴" },
+ { "缁", "緇" },
+ { "缂", "緙" },
+ { "缃", "緗" },
+ { "缄", "緘" },
+ { "缅", "緬" },
+ { "缆", "纜" },
+ { "缇", "緹" },
+ { "缈", "緲" },
+ { "缉", "緝" },
+ { "缉凶", "緝兇" },
+ { "缋", "繢" },
+ { "缌", "緦" },
+ { "缍", "綞" },
+ { "缎", "緞" },
+ { "缏", "緶" },
+ { "缑", "緱" },
+ { "缒", "縋" },
+ { "缓", "緩" },
+ { "缓冲", "緩衝" },
+ { "缓征", "緩徵" },
+ { "缔", "締" },
+ { "缕", "縷" },
+ { "编", "編" },
+ { "编制", "編製" },
+ { "编发", "編髮" },
+ { "编采", "編採" },
+ { "编钟", "編鐘" },
+ { "缗", "緡" },
+ { "缘", "緣" },
+ { "缙", "縉" },
+ { "缚", "縛" },
+ { "缛", "縟" },
+ { "缜", "縝" },
+ { "缜致", "縝緻" },
+ { "缝", "縫" },
+ { "缝制", "縫製" },
+ { "缝里", "縫裡" },
+ { "缟", "縞" },
+ { "缠", "纏" },
+ { "缠斗", "纏鬥" },
+ { "缡", "縭" },
+ { "缢", "縊" },
+ { "缣", "縑" },
+ { "缤", "繽" },
+ { "缥", "縹" },
+ { "缦", "縵" },
+ { "缧", "縲" },
+ { "缨", "纓" },
+ { "缩", "縮" },
+ { "缩栗", "縮慄" },
+ { "缪", "繆" },
+ { "缫", "繅" },
+ { "缬", "纈" },
+ { "缭", "繚" },
+ { "缮", "繕" },
+ { "缯", "繒" },
+ { "缰", "韁" },
+ { "缱", "繾" },
+ { "缲", "繰" },
+ { "缳", "繯" },
+ { "缴", "繳" },
+ { "缵", "纘" },
+ { "罂", "罌" },
+ { "网", "網" },
+ { "网志", "網誌" },
+ { "网游", "網遊" },
+ { "网里", "網裡" },
+ { "罗", "羅" },
+ { "罚", "罰" },
+ { "罢", "罷" },
+ { "置言成范", "置言成範" },
+ { "罴", "羆" },
+ { "羁", "羈" },
+ { "羁系", "羈繫" },
+ { "美丑", "美醜" },
+ { "美仑", "美崙" },
+ { "美制", "美製" },
+ { "美占", "美佔" },
+ { "美发", "美髮" },
+ { "羟", "羥" },
+ { "羡", "羨" },
+ { "羡余", "羨餘" },
+ { "群丑", "群醜" },
+ { "翕辟", "翕闢" },
+ { "翘", "翹" },
+ { "翱游", "翱遊" },
+ { "翻松", "翻鬆" },
+ { "翻涌", "翻湧" },
+ { "老仆", "老僕" },
+ { "老姜", "老薑" },
+ { "老干", "老乾" },
+ { "老干部", "老幹部" },
+ { "老庄", "老莊" },
+ { "老板", "老闆" },
+ { "老爷钟", "老爺鐘" },
+ { "老蒙", "老懞" },
+ { "考征", "考徵" },
+ { "而克制", "而剋制" },
+ { "耍斗", "耍鬥" },
+ { "耕佣", "耕傭" },
+ { "耕获", "耕穫" },
+ { "耧", "耬" },
+ { "耳余", "耳餘" },
+ { "耸", "聳" },
+ { "耻", "恥" },
+ { "聂", "聶" },
+ { "聋", "聾" },
+ { "职", "職" },
+ { "聍", "聹" },
+ { "联", "聯" },
+ { "联系", "聯繫" },
+ { "聘雇", "聘僱" },
+ { "聩", "聵" },
+ { "聪", "聰" },
+ { "肃", "肅" },
+ { "肉丝面", "肉絲麵" },
+ { "肉干", "肉乾" },
+ { "肉松", "肉鬆" },
+ { "肉欲", "肉慾" },
+ { "肉羹面", "肉羹麵" },
+ { "肚里", "肚裡" },
+ { "肝郁", "肝鬱" },
+ { "肠", "腸" },
+ { "股栗", "股慄" },
+ { "肤", "膚" },
+ { "肤发", "膚髮" },
+ { "肥筑方言", "肥筑方言" },
+ { "肮", "骯" },
+ { "肮肮脏脏", "骯骯髒髒" },
+ { "肮脏", "骯髒" },
+ { "肴", "餚" },
+ { "肴馔", "肴饌" },
+ { "肾", "腎" },
+ { "肿", "腫" },
+ { "胀", "脹" },
+ { "胁", "脅" },
+ { "胃药", "胃藥" },
+ { "胃里", "胃裡" },
+ { "胆", "膽" },
+ { "背地里", "背地裡" },
+ { "胎发", "胎髮" },
+ { "胜", "勝" },
+ { "胜肽", "胜肽" },
+ { "胜键", "胜鍵" },
+ { "胡云", "胡云" },
+ { "胡同", "衚衕" },
+ { "胡子", "鬍子" },
+ { "胡朴安", "胡樸安" },
+ { "胡梢", "鬍梢" },
+ { "胡渣", "鬍渣" },
+ { "胡里胡涂", "胡裡胡塗" },
+ { "胡须", "鬍鬚" },
+ { "胡髭", "鬍髭" },
+ { "胡髯", "鬍髯" },
+ { "胧", "朧" },
+ { "胪", "臚" },
+ { "胫", "脛" },
+ { "胶", "膠" },
+ { "胶卷", "膠捲" },
+ { "能克制", "能剋制" },
+ { "能干", "能幹" },
+ { "脉", "脈" },
+ { "脉冲", "脈衝" },
+ { "脊梁", "脊樑" },
+ { "脍", "膾" },
+ { "脏", "臟" },
+ { "脏东西", "髒東西" },
+ { "脏乱", "髒亂" },
+ { "脏了", "髒了" },
+ { "脏兮兮", "髒兮兮" },
+ { "脏发", "髒髮" },
+ { "脏字", "髒字" },
+ { "脏得", "髒得" },
+ { "脏心", "髒心" },
+ { "脏水", "髒水" },
+ { "脏的", "髒的" },
+ { "脏词", "髒詞" },
+ { "脏话", "髒話" },
+ { "脏钱", "髒錢" },
+ { "脐", "臍" },
+ { "脑", "腦" },
+ { "脑子里", "腦子裡" },
+ { "脑干", "腦幹" },
+ { "脓", "膿" },
+ { "脔", "臠" },
+ { "脚", "腳" },
+ { "脚注", "腳註" },
+ { "脚炼", "腳鍊" },
+ { "脱", "脫" },
+ { "脱发", "脫髮" },
+ { "脱谷机", "脫穀機" },
+ { "脶", "腡" },
+ { "脸", "臉" },
+ { "腊", "臘" },
+ { "腊之以为饵", "腊之以為餌" },
+ { "腊味", "腊味" },
+ { "腊毒", "腊毒" },
+ { "腊笔", "腊筆" },
+ { "腐余", "腐餘" },
+ { "腐干", "腐乾" },
+ { "腕表", "腕錶" },
+ { "腭", "齶" },
+ { "腰里", "腰裡" },
+ { "腻", "膩" },
+ { "腼", "靦" },
+ { "腽", "膃" },
+ { "腾", "騰" },
+ { "腾冲", "騰衝" },
+ { "膏药", "膏藥" },
+ { "膑", "臏" },
+ { "膨松", "膨鬆" },
+ { "臣仆", "臣僕" },
+ { "臧谷亡羊", "臧穀亡羊" },
+ { "自制", "自製" },
+ { "自觉自愿", "自覺自愿" },
+ { "致密", "緻密" },
+ { "舂谷", "舂穀" },
+ { "舆", "輿" },
+ { "舌干唇焦", "舌乾唇焦" },
+ { "舍不得", "捨不得" },
+ { "舍出", "捨出" },
+ { "舍去", "捨去" },
+ { "舍命", "捨命" },
+ { "舍堕", "捨墮" },
+ { "舍安就危", "捨安就危" },
+ { "舍实", "捨實" },
+ { "舍己为人", "捨己為人" },
+ { "舍己为公", "捨己為公" },
+ { "舍己为国", "捨己為國" },
+ { "舍己从人", "捨己從人" },
+ { "舍己救人", "捨己救人" },
+ { "舍弃", "捨棄" },
+ { "舍得", "捨得" },
+ { "舍我其谁", "捨我其誰" },
+ { "舍本逐末", "捨本逐末" },
+ { "舍死忘生", "捨死忘生" },
+ { "舍生", "捨生" },
+ { "舍短取长", "捨短取長" },
+ { "舍身", "捨身" },
+ { "舍车保帅", "捨車保帥" },
+ { "舍近求远", "捨近求遠" },
+ { "舒卷", "舒捲" },
+ { "舞后", "舞后" },
+ { "舣", "艤" },
+ { "航海历", "航海曆" },
+ { "舰", "艦" },
+ { "舰只", "艦隻" },
+ { "舱", "艙" },
+ { "船只", "船隻" },
+ { "船钟", "船鐘" },
+ { "舻", "艫" },
+ { "良药", "良藥" },
+ { "艰", "艱" },
+ { "色欲", "色慾" },
+ { "艳", "艷" },
+ { "艳后", "艷后" },
+ { "艷后", "艷后" },
+ { "艸木丰丰", "艸木丰丰" },
+ { "艺", "藝" },
+ { "节", "節" },
+ { "节余", "節餘" },
+ { "节欲", "節慾" },
+ { "芈", "羋" },
+ { "芍药", "芍藥" },
+ { "芗", "薌" },
+ { "芜", "蕪" },
+ { "芦", "蘆" },
+ { "花卷", "花捲" },
+ { "花哄", "花鬨" },
+ { "花庵词选", "花菴詞選" },
+ { "花拳绣腿", "花拳繡腿" },
+ { "花盆里", "花盆裡" },
+ { "花药", "花藥" },
+ { "花钟", "花鐘" },
+ { "花马吊嘴", "花馬弔嘴" },
+ { "苁", "蓯" },
+ { "苇", "葦" },
+ { "苈", "藶" },
+ { "苋", "莧" },
+ { "苌", "萇" },
+ { "苍", "蒼" },
+ { "苍发", "蒼髮" },
+ { "苍术", "蒼朮" },
+ { "苍郁", "蒼鬱" },
+ { "苎", "苧" },
+ { "苏", "蘇" },
+ { "苏昆", "蘇崑" },
+ { "苑里", "苑裡" },
+ { "苦干", "苦幹" },
+ { "苦斗", "苦鬥" },
+ { "苦药", "苦藥" },
+ { "苦里", "苦裡" },
+ { "苧", "薴" },
+ { "英占", "英佔" },
+ { "苹", "蘋" },
+ { "苹萦", "苹縈" },
+ { "茂都淀", "茂都澱" },
+ { "范例", "範例" },
+ { "范围", "範圍" },
+ { "范字", "範字" },
+ { "范式", "範式" },
+ { "范性形变", "範性形變" },
+ { "范数", "範數" },
+ { "范文", "範文" },
+ { "范本", "範本" },
+ { "范畴", "範疇" },
+ { "范金", "範金" },
+ { "茎", "莖" },
+ { "茎干", "莖幹" },
+ { "茏", "蘢" },
+ { "茑", "蔦" },
+ { "茔", "塋" },
+ { "茕", "煢" },
+ { "茧", "繭" },
+ { "茶余", "茶餘" },
+ { "茶几", "茶几" },
+ { "茶庄", "茶莊" },
+ { "茶面", "茶麵" },
+ { "荆", "荊" },
+ { "草丛里", "草叢裡" },
+ { "草广", "草广" },
+ { "草荐", "草荐" },
+ { "草药", "草藥" },
+ { "荐", "薦" },
+ { "荐居", "荐居" },
+ { "荐臻", "荐臻" },
+ { "荐饥", "荐饑" },
+ { "荚", "莢" },
+ { "荛", "蕘" },
+ { "荜", "蓽" },
+ { "荞", "蕎" },
+ { "荞麦面", "蕎麥麵" },
+ { "荟", "薈" },
+ { "荠", "薺" },
+ { "荡", "盪" },
+ { "荡产", "蕩產" },
+ { "荡女", "蕩女" },
+ { "荡妇", "蕩婦" },
+ { "荡寇", "蕩寇" },
+ { "荡平", "蕩平" },
+ { "荡来荡去", "蕩來蕩去" },
+ { "荡气回肠", "蕩氣迴腸" },
+ { "荡涤", "蕩滌" },
+ { "荡漾", "蕩漾" },
+ { "荡然", "蕩然" },
+ { "荡舟", "蕩舟" },
+ { "荡船", "蕩船" },
+ { "荡荡", "蕩蕩" },
+ { "荣", "榮" },
+ { "荤", "葷" },
+ { "荥", "滎" },
+ { "荦", "犖" },
+ { "荦确", "犖确" },
+ { "荧", "熒" },
+ { "荧郁", "熒鬱" },
+ { "荨", "蕁" },
+ { "荩", "藎" },
+ { "荪", "蓀" },
+ { "荫", "蔭" },
+ { "荭", "葒" },
+ { "药", "葯" },
+ { "药专", "藥專" },
+ { "药丸", "藥丸" },
+ { "药典", "藥典" },
+ { "药到命除", "藥到命除" },
+ { "药到病除", "藥到病除" },
+ { "药剂", "藥劑" },
+ { "药力", "藥力" },
+ { "药包", "藥包" },
+ { "药医学系", "藥醫學系" },
+ { "药单", "藥單" },
+ { "药厂", "藥廠" },
+ { "药名", "藥名" },
+ { "药味", "藥味" },
+ { "药品", "藥品" },
+ { "药商", "藥商" },
+ { "药头", "藥頭" },
+ { "药婆", "藥婆" },
+ { "药学", "藥學" },
+ { "药害", "藥害" },
+ { "药局", "藥局" },
+ { "药师", "藥師" },
+ { "药店", "藥店" },
+ { "药引", "藥引" },
+ { "药性", "藥性" },
+ { "药房", "藥房" },
+ { "药效", "藥效" },
+ { "药方", "藥方" },
+ { "药材", "藥材" },
+ { "药检局", "藥檢局" },
+ { "药棉", "藥棉" },
+ { "药水", "藥水" },
+ { "药油", "藥油" },
+ { "药液", "藥液" },
+ { "药渣", "藥渣" },
+ { "药片", "藥片" },
+ { "药物", "藥物" },
+ { "药王", "藥王" },
+ { "药理", "藥理" },
+ { "药瓶", "藥瓶" },
+ { "药用", "藥用" },
+ { "药皂", "藥皂" },
+ { "药盒", "藥盒" },
+ { "药石", "藥石" },
+ { "药科", "藥科" },
+ { "药签", "藥籤" },
+ { "药箱", "藥箱" },
+ { "药粉", "藥粉" },
+ { "药糖", "藥糖" },
+ { "药线", "藥線" },
+ { "药罐", "藥罐" },
+ { "药膏", "藥膏" },
+ { "药舖", "藥舖" },
+ { "药茶", "藥茶" },
+ { "药草", "藥草" },
+ { "药行", "藥行" },
+ { "药贩", "藥販" },
+ { "药费", "藥費" },
+ { "药酒", "藥酒" },
+ { "药量", "藥量" },
+ { "药针", "藥針" },
+ { "药铺", "藥鋪" },
+ { "药面儿", "藥麵兒" },
+ { "药饵", "藥餌" },
+ { "荷花淀", "荷花澱" },
+ { "莅", "蒞" },
+ { "莜面", "莜麵" },
+ { "莱", "萊" },
+ { "莲", "蓮" },
+ { "莳", "蒔" },
+ { "莴", "萵" },
+ { "莶", "薟" },
+ { "获", "獲" },
+ { "获匪其丑", "獲匪其醜" },
+ { "莸", "蕕" },
+ { "莹", "瑩" },
+ { "莺", "鶯" },
+ { "莽荡", "莽蕩" },
+ { "菜干", "菜乾" },
+ { "菜肴", "菜肴" },
+ { "菠棱菜", "菠稜菜" },
+ { "菠萝干", "菠蘿乾" },
+ { "萝", "蘿" },
+ { "萝卜", "蘿蔔" },
+ { "萝卜干", "蘿蔔乾" },
+ { "萤", "螢" },
+ { "营", "營" },
+ { "营干", "營幹" },
+ { "萦", "縈" },
+ { "萦回", "縈迴" },
+ { "萧", "蕭" },
+ { "萧参", "蕭蔘" },
+ { "萨", "薩" },
+ { "落发", "落髮" },
+ { "落腮胡", "落腮鬍" },
+ { "葡占", "葡佔" },
+ { "葡萄干", "葡萄乾" },
+ { "董氏封发", "董氏封髮" },
+ { "葱", "蔥" },
+ { "葱郁", "蔥鬱" },
+ { "蒇", "蕆" },
+ { "蒉", "蕢" },
+ { "蒋", "蔣" },
+ { "蒌", "蔞" },
+ { "蒙事", "矇事" },
+ { "蒙头转", "矇頭轉" },
+ { "蒙庄", "蒙莊" },
+ { "蒙懂", "懞懂" },
+ { "蒙昧无知", "矇昧無知" },
+ { "蒙松雨", "濛鬆雨" },
+ { "蒙汗药", "蒙汗藥" },
+ { "蒙汜", "濛汜" },
+ { "蒙混", "矇混" },
+ { "蒙直", "懞直" },
+ { "蒙着", "矇著" },
+ { "蒙瞍", "矇瞍" },
+ { "蒙聩", "矇聵" },
+ { "蒙胧", "朦朧" },
+ { "蒙蒙懂懂", "懞懞懂懂" },
+ { "蒙蒙细雨", "濛濛細雨" },
+ { "蒙雾", "濛霧" },
+ { "蒙骗", "矇騙" },
+ { "蒙鸿", "濛鴻" },
+ { "蒜发", "蒜髮" },
+ { "蓄发", "蓄髮" },
+ { "蓄胡", "蓄鬍" },
+ { "蓄须", "蓄鬚" },
+ { "蓊郁", "蓊鬱" },
+ { "蓝", "藍" },
+ { "蓝淀", "藍澱" },
+ { "蓟", "薊" },
+ { "蓠", "蘺" },
+ { "蓣", "蕷" },
+ { "蓥", "鎣" },
+ { "蓦", "驀" },
+ { "蓬发", "蓬髮" },
+ { "蓬松", "蓬鬆" },
+ { "蓬蓬松松", "蓬蓬鬆鬆" },
+ { "蔂", "虆" },
+ { "蔷", "薔" },
+ { "蔹", "蘞" },
+ { "蔺", "藺" },
+ { "蔼", "藹" },
+ { "蕲", "蘄" },
+ { "蕴", "蘊" },
+ { "蕴含着", "蘊含著" },
+ { "蕴涵着", "蘊涵著" },
+ { "薄干", "薄幹" },
+ { "薄幸", "薄倖" },
+ { "薙发", "薙髮" },
+ { "薝卜", "薝蔔" },
+ { "薮", "藪" },
+ { "藏历", "藏曆" },
+ { "藏蒙歌儿", "藏矇歌兒" },
+ { "藓", "蘚" },
+ { "藤制", "藤製" },
+ { "蘖", "櫱" },
+ { "虎斗", "虎鬥" },
+ { "虎须", "虎鬚" },
+ { "虏", "虜" },
+ { "虑", "慮" },
+ { "虚", "虛" },
+ { "虫", "蟲" },
+ { "虫部", "虫部" },
+ { "虬", "虯" },
+ { "虮", "蟣" },
+ { "虮蝨相吊", "蟣蝨相弔" },
+ { "虽", "雖" },
+ { "虾", "蝦" },
+ { "虿", "蠆" },
+ { "蚀", "蝕" },
+ { "蚁", "蟻" },
+ { "蚁后", "蟻后" },
+ { "蚂", "螞" },
+ { "蚊动牛斗", "蚊動牛鬥" },
+ { "蚕", "蠶" },
+ { "蚬", "蜆" },
+ { "蛇发女妖", "蛇髮女妖" },
+ { "蛊", "蠱" },
+ { "蛎", "蠣" },
+ { "蛏", "蟶" },
+ { "蛏干", "蟶乾" },
+ { "蛔虫药", "蛔蟲藥" },
+ { "蛮", "蠻" },
+ { "蛮干", "蠻幹" },
+ { "蛰", "蟄" },
+ { "蛱", "蛺" },
+ { "蛲", "蟯" },
+ { "蛳", "螄" },
+ { "蛴", "蠐" },
+ { "蜂准", "蜂準" },
+ { "蜂后", "蜂后" },
+ { "蜂涌", "蜂湧" },
+ { "蜕", "蛻" },
+ { "蜗", "蝸" },
+ { "蜜里调油", "蜜裡調油" },
+ { "蜡", "蠟" },
+ { "蜡月", "蜡月" },
+ { "蜡祭", "蜡祭" },
+ { "蝇", "蠅" },
+ { "蝈", "蟈" },
+ { "蝉", "蟬" },
+ { "蝎", "蠍" },
+ { "蝎蝎螫螫", "蝎蝎螫螫" },
+ { "蝎谮", "蝎譖" },
+ { "蝼", "螻" },
+ { "蝾", "蠑" },
+ { "蟻后", "蟻后" },
+ { "蠁干", "蠁幹" },
+ { "血余", "血餘" },
+ { "血拼", "血拚" },
+ { "衅", "釁" },
+ { "衅钟", "釁鐘" },
+ { "行事历", "行事曆" },
+ { "行凶", "行兇" },
+ { "衔", "銜" },
+ { "衣绣昼行", "衣繡晝行" },
+ { "补", "補" },
+ { "补注", "補註" },
+ { "补药", "補藥" },
+ { "补血药", "補血藥" },
+ { "表停", "錶停" },
+ { "表冠", "錶冠" },
+ { "表厂", "錶廠" },
+ { "表壳", "錶殼" },
+ { "表带", "錶帶" },
+ { "表店", "錶店" },
+ { "表征", "表徵" },
+ { "表快", "錶快" },
+ { "表慢", "錶慢" },
+ { "表板", "錶板" },
+ { "表王", "錶王" },
+ { "表的历史", "錶的歷史" },
+ { "表的嘀嗒", "錶的嘀嗒" },
+ { "表盘", "錶盤" },
+ { "表蒙子", "錶蒙子" },
+ { "表行", "錶行" },
+ { "表转", "錶轉" },
+ { "表速", "錶速" },
+ { "表里", "表裡" },
+ { "表针", "錶針" },
+ { "表链", "錶鏈" },
+ { "衬", "襯" },
+ { "衬里", "襯裡" },
+ { "衮", "袞" },
+ { "袄", "襖" },
+ { "袅", "裊" },
+ { "袋表", "袋錶" },
+ { "袋里", "袋裡" },
+ { "袖里", "袖裡" },
+ { "袜", "襪" },
+ { "被发佯狂", "被髮佯狂" },
+ { "被发入山", "被髮入山" },
+ { "被发左衽", "被髮左衽" },
+ { "被发缨冠", "被髮纓冠" },
+ { "被发阳狂", "被髮陽狂" },
+ { "被复", "被複" },
+ { "被里", "被裡" },
+ { "袭", "襲" },
+ { "裁制", "裁製" },
+ { "裁并", "裁併" },
+ { "装", "裝" },
+ { "装折", "裝摺" },
+ { "裆", "襠" },
+ { "裢", "褳" },
+ { "裣", "襝" },
+ { "裤", "褲" },
+ { "褒赞", "褒讚" },
+ { "褛", "褸" },
+ { "褴", "襤" },
+ { "西占", "西佔" },
+ { "西历", "西曆" },
+ { "西周钟", "西周鐘" },
+ { "西岳", "西嶽" },
+ { "西晒", "西晒" },
+ { "西游", "西遊" },
+ { "西药", "西藥" },
+ { "要么", "要麼" },
+ { "要克制", "要剋制" },
+ { "要冲", "要衝" },
+ { "要占", "要佔" },
+ { "覆盖着", "覆蓋著" },
+ { "覆着", "覆著" },
+ { "见", "見" },
+ { "见棱见角", "見稜見角" },
+ { "见素抱朴", "見素抱樸" },
+ { "观", "觀" },
+ { "观采", "觀採" },
+ { "规", "規" },
+ { "规范", "規範" },
+ { "觅", "覓" },
+ { "视", "視" },
+ { "觇", "覘" },
+ { "览", "覽" },
+ { "觉", "覺" },
+ { "觊", "覬" },
+ { "觋", "覡" },
+ { "觌", "覿" },
+ { "觎", "覦" },
+ { "觏", "覯" },
+ { "觐", "覲" },
+ { "觑", "覷" },
+ { "角落里", "角落裡" },
+ { "觚棱", "觚稜" },
+ { "觞", "觴" },
+ { "解发佯狂", "解髮佯狂" },
+ { "解痛药", "解痛藥" },
+ { "解药", "解藥" },
+ { "解雇", "解僱" },
+ { "触", "觸" },
+ { "触须", "觸鬚" },
+ { "觯", "觶" },
+ { "言云", "言云" },
+ { "言大而夸", "言大而夸" },
+ { "言辩而确", "言辯而确" },
+ { "詩云", "詩云" },
+ { "誉", "譽" },
+ { "誊", "謄" },
+ { "語有云", "語有云" },
+ { "謷丑", "謷醜" },
+ { "警世钟", "警世鐘" },
+ { "警报钟", "警報鐘" },
+ { "警示钟", "警示鐘" },
+ { "警钟", "警鐘" },
+ { "计", "計" },
+ { "计时表", "計時錶" },
+ { "订", "訂" },
+ { "订制", "訂製" },
+ { "讣", "訃" },
+ { "认", "認" },
+ { "认准", "認準" },
+ { "讥", "譏" },
+ { "讦", "訐" },
+ { "讧", "訌" },
+ { "讨", "討" },
+ { "让", "讓" },
+ { "讪", "訕" },
+ { "讫", "訖" },
+ { "训", "訓" },
+ { "议", "議" },
+ { "讯", "訊" },
+ { "记", "記" },
+ { "讲", "講" },
+ { "讳", "諱" },
+ { "讴", "謳" },
+ { "讵", "詎" },
+ { "讶", "訝" },
+ { "讷", "訥" },
+ { "许", "許" },
+ { "许愿起经", "許愿起經" },
+ { "许虬", "許虬" },
+ { "讹", "訛" },
+ { "论", "論" },
+ { "讼", "訟" },
+ { "讽", "諷" },
+ { "设", "設" },
+ { "访", "訪" },
+ { "诀", "訣" },
+ { "证", "證" },
+ { "诂", "詁" },
+ { "诃", "訶" },
+ { "评", "評" },
+ { "评注", "評註" },
+ { "诅", "詛" },
+ { "识", "識" },
+ { "诈", "詐" },
+ { "诉", "訴" },
+ { "诊", "診" },
+ { "诋", "詆" },
+ { "诌", "謅" },
+ { "词", "詞" },
+ { "词余", "詞餘" },
+ { "词干", "詞幹" },
+ { "词汇", "詞彙" },
+ { "诎", "詘" },
+ { "诏", "詔" },
+ { "译", "譯" },
+ { "译注", "譯註" },
+ { "诒", "詒" },
+ { "诓", "誆" },
+ { "诔", "誄" },
+ { "诔赞", "誄讚" },
+ { "试", "試" },
+ { "试制", "試製" },
+ { "试药", "試藥" },
+ { "诖", "詿" },
+ { "诗", "詩" },
+ { "诗云", "詩云" },
+ { "诗余", "詩餘" },
+ { "诗赞", "詩讚" },
+ { "诗钟", "詩鐘" },
+ { "诘", "詰" },
+ { "诙", "詼" },
+ { "诚", "誠" },
+ { "诚征", "誠徵" },
+ { "诚朴", "誠樸" },
+ { "诛", "誅" },
+ { "诜", "詵" },
+ { "话", "話" },
+ { "话里有话", "話裡有話" },
+ { "诞", "誕" },
+ { "诟", "詬" },
+ { "诠", "詮" },
+ { "诡", "詭" },
+ { "询", "詢" },
+ { "诣", "詣" },
+ { "诤", "諍" },
+ { "该", "該" },
+ { "该钟", "該鐘" },
+ { "详", "詳" },
+ { "详征博引", "詳徵博引" },
+ { "详注", "詳註" },
+ { "诧", "詫" },
+ { "诨", "諢" },
+ { "诩", "詡" },
+ { "诫", "誡" },
+ { "诬", "誣" },
+ { "诬蔑", "誣衊" },
+ { "语", "語" },
+ { "语云", "語云" },
+ { "语有云", "語有云" },
+ { "语汇", "語彙" },
+ { "诮", "誚" },
+ { "误", "誤" },
+ { "诰", "誥" },
+ { "诱", "誘" },
+ { "诱奸", "誘姦" },
+ { "诲", "誨" },
+ { "诳", "誑" },
+ { "说", "說" },
+ { "说着", "說著" },
+ { "诵", "誦" },
+ { "诶", "誒" },
+ { "请", "請" },
+ { "请君入瓮", "請君入甕" },
+ { "请托", "請託" },
+ { "诸", "諸" },
+ { "诸余", "諸餘" },
+ { "诹", "諏" },
+ { "诺", "諾" },
+ { "读", "讀" },
+ { "诼", "諑" },
+ { "诽", "誹" },
+ { "课", "課" },
+ { "课余", "課餘" },
+ { "课征", "課徵" },
+ { "诿", "諉" },
+ { "谀", "諛" },
+ { "谁", "誰" },
+ { "谁干的", "誰幹的" },
+ { "谂", "諗" },
+ { "调", "調" },
+ { "调准", "調準" },
+ { "调制", "調製" },
+ { "调表", "調錶" },
+ { "谄", "諂" },
+ { "谅", "諒" },
+ { "谆", "諄" },
+ { "谇", "誶" },
+ { "谈", "談" },
+ { "谈征", "談徵" },
+ { "谊", "誼" },
+ { "谋", "謀" },
+ { "谋干", "謀幹" },
+ { "谌", "諶" },
+ { "谍", "諜" },
+ { "谎", "謊" },
+ { "谏", "諫" },
+ { "谐", "諧" },
+ { "谑", "謔" },
+ { "谒", "謁" },
+ { "谓", "謂" },
+ { "谔", "諤" },
+ { "谕", "諭" },
+ { "谖", "諼" },
+ { "谗", "讒" },
+ { "谘", "諮" },
+ { "谙", "諳" },
+ { "谚", "諺" },
+ { "谛", "諦" },
+ { "谜", "謎" },
+ { "谝", "諞" },
+ { "谟", "謨" },
+ { "谠", "讜" },
+ { "谡", "謖" },
+ { "谢", "謝" },
+ { "谢华后", "謝華后" },
+ { "谣", "謠" },
+ { "谤", "謗" },
+ { "谥", "謚" },
+ { "谦", "謙" },
+ { "谧", "謐" },
+ { "谨", "謹" },
+ { "谩", "謾" },
+ { "谪", "謫" },
+ { "谫", "譾" },
+ { "谬", "謬" },
+ { "谬赞", "謬讚" },
+ { "谬采虚声", "謬採虛聲" },
+ { "谭", "譚" },
+ { "谮", "譖" },
+ { "谯", "譙" },
+ { "谰", "讕" },
+ { "谱", "譜" },
+ { "谲", "譎" },
+ { "谳", "讞" },
+ { "谴", "譴" },
+ { "谵", "譫" },
+ { "谶", "讖" },
+ { "谷人", "穀人" },
+ { "谷仓", "穀倉" },
+ { "谷保家商", "穀保家商" },
+ { "谷圭", "穀圭" },
+ { "谷场", "穀場" },
+ { "谷壳", "穀殼" },
+ { "谷子", "穀子" },
+ { "谷日", "穀日" },
+ { "谷旦", "穀旦" },
+ { "谷梁", "穀梁" },
+ { "谷物", "穀物" },
+ { "谷皮", "穀皮" },
+ { "谷神", "穀神" },
+ { "谷米", "穀米" },
+ { "谷类", "穀類" },
+ { "谷粒", "穀粒" },
+ { "谷舱", "穀艙" },
+ { "谷苗", "穀苗" },
+ { "谷草", "穀草" },
+ { "谷谷", "穀穀" },
+ { "谷贱伤农", "穀賤傷農" },
+ { "谷贵饿农", "穀貴餓農" },
+ { "谷道", "穀道" },
+ { "谷雨", "穀雨" },
+ { "谷食", "穀食" },
+ { "豆干", "豆乾" },
+ { "象征", "象徵" },
+ { "象征着", "象徵著" },
+ { "買凶", "買兇" },
+ { "賈后", "賈后" },
+ { "賢后", "賢后" },
+ { "賸余", "賸餘" },
+ { "贝", "貝" },
+ { "贞", "貞" },
+ { "负", "負" },
+ { "负债累累", "負債纍纍" },
+ { "贡", "貢" },
+ { "财", "財" },
+ { "责", "責" },
+ { "贤", "賢" },
+ { "贤后", "賢后" },
+ { "败", "敗" },
+ { "账", "賬" },
+ { "货", "貨" },
+ { "质", "質" },
+ { "质朴", "質樸" },
+ { "贩", "販" },
+ { "贪", "貪" },
+ { "贪欲", "貪慾" },
+ { "贫", "貧" },
+ { "贬", "貶" },
+ { "购", "購" },
+ { "购买欲", "購買慾" },
+ { "购并", "購併" },
+ { "贮", "貯" },
+ { "贯", "貫" },
+ { "贰", "貳" },
+ { "贱", "賤" },
+ { "贲", "賁" },
+ { "贳", "貰" },
+ { "贴", "貼" },
+ { "贵", "貴" },
+ { "贵价", "貴价" },
+ { "贵干", "貴幹" },
+ { "贵征", "貴徵" },
+ { "贶", "貺" },
+ { "贷", "貸" },
+ { "贸", "貿" },
+ { "费", "費" },
+ { "费占", "費佔" },
+ { "贺", "賀" },
+ { "贻", "貽" },
+ { "贻范", "貽範" },
+ { "贼", "賊" },
+ { "贽", "贄" },
+ { "贾", "賈" },
+ { "贾后", "賈后" },
+ { "贿", "賄" },
+ { "赀", "貲" },
+ { "赁", "賃" },
+ { "赂", "賂" },
+ { "赃", "贓" },
+ { "资", "資" },
+ { "赅", "賅" },
+ { "赆", "贐" },
+ { "赇", "賕" },
+ { "赈", "賑" },
+ { "赈饥", "賑饑" },
+ { "赉", "賚" },
+ { "赊", "賒" },
+ { "赋", "賦" },
+ { "赌", "賭" },
+ { "赌台", "賭檯" },
+ { "赌后", "賭后" },
+ { "赌斗", "賭鬥" },
+ { "赍", "齎" },
+ { "赎", "贖" },
+ { "赏", "賞" },
+ { "赏赞", "賞讚" },
+ { "赐", "賜" },
+ { "赓", "賡" },
+ { "赔", "賠" },
+ { "赕", "賧" },
+ { "赖", "賴" },
+ { "赘", "贅" },
+ { "赙", "賻" },
+ { "赚", "賺" },
+ { "赛", "賽" },
+ { "赜", "賾" },
+ { "赝", "贗" },
+ { "赞", "贊" },
+ { "赞不绝口", "讚不絕口" },
+ { "赞乐", "讚樂" },
+ { "赞佩", "讚佩" },
+ { "赞叹", "讚歎" },
+ { "赞叹不已", "讚嘆不已" },
+ { "赞呗", "讚唄" },
+ { "赞扬", "讚揚" },
+ { "赞歌", "讚歌" },
+ { "赞美", "讚美" },
+ { "赞羡", "讚羨" },
+ { "赞誉", "讚譽" },
+ { "赞许", "讚許" },
+ { "赞词", "讚詞" },
+ { "赞赏", "讚賞" },
+ { "赞辞", "讚辭" },
+ { "赞颂", "讚頌" },
+ { "赠", "贈" },
+ { "赡", "贍" },
+ { "赢", "贏" },
+ { "赢余", "贏餘" },
+ { "赣", "贛" },
+ { "赤术", "赤朮" },
+ { "赤绳系足", "赤繩繫足" },
+ { "赵", "趙" },
+ { "赵威后", "趙威后" },
+ { "赵庄", "趙莊" },
+ { "赵惠后", "趙惠后" },
+ { "赵治勋", "趙治勳" },
+ { "赶", "趕" },
+ { "赶制", "趕製" },
+ { "赶面棍", "趕麵棍" },
+ { "起哄", "起鬨" },
+ { "起复", "起複" },
+ { "超级杯", "超級盃" },
+ { "趋", "趨" },
+ { "趱", "趲" },
+ { "趱干", "趲幹" },
+ { "趸", "躉" },
+ { "跃", "躍" },
+ { "跄", "蹌" },
+ { "跌扑", "跌扑" },
+ { "跌荡", "跌蕩" },
+ { "跞", "躒" },
+ { "路签", "路籤" },
+ { "跳梁小丑", "跳樑小丑" },
+ { "跳荡", "跳蕩" },
+ { "跳表", "跳錶" },
+ { "践", "踐" },
+ { "跷", "蹺" },
+ { "跸", "蹕" },
+ { "跹", "躚" },
+ { "跻", "躋" },
+ { "踊", "踴" },
+ { "踌", "躊" },
+ { "踪", "蹤" },
+ { "踬", "躓" },
+ { "踯", "躑" },
+ { "蹑", "躡" },
+ { "蹒", "蹣" },
+ { "蹰", "躕" },
+ { "蹿", "躥" },
+ { "躁郁", "躁鬱" },
+ { "躏", "躪" },
+ { "躜", "躦" },
+ { "躯", "軀" },
+ { "躯干", "軀幹" },
+ { "车", "車" },
+ { "车库里", "車庫裡" },
+ { "车站里", "車站裡" },
+ { "车里", "車裡" },
+ { "轧", "軋" },
+ { "轨", "軌" },
+ { "轨范", "軌範" },
+ { "轩", "軒" },
+ { "轩辟", "軒闢" },
+ { "轫", "軔" },
+ { "转", "轉" },
+ { "转台", "轉檯" },
+ { "转托", "轉託" },
+ { "转斗千里", "轉鬥千里" },
+ { "轭", "軛" },
+ { "轮", "輪" },
+ { "轮回", "輪迴" },
+ { "轮奸", "輪姦" },
+ { "软", "軟" },
+ { "轰", "轟" },
+ { "轲", "軻" },
+ { "轳", "轤" },
+ { "轴", "軸" },
+ { "轵", "軹" },
+ { "轶", "軼" },
+ { "轸", "軫" },
+ { "轹", "轢" },
+ { "轺", "軺" },
+ { "轻", "輕" },
+ { "轻松", "輕鬆" },
+ { "轻轻松松", "輕輕鬆鬆" },
+ { "轼", "軾" },
+ { "载", "載" },
+ { "轾", "輊" },
+ { "轿", "轎" },
+ { "辁", "輇" },
+ { "辂", "輅" },
+ { "较", "較" },
+ { "辄", "輒" },
+ { "辅", "輔" },
+ { "辆", "輛" },
+ { "辇", "輦" },
+ { "辈", "輩" },
+ { "辉", "輝" },
+ { "辊", "輥" },
+ { "辋", "輞" },
+ { "辍", "輟" },
+ { "辎", "輜" },
+ { "辏", "輳" },
+ { "辐", "輻" },
+ { "辑", "輯" },
+ { "输", "輸" },
+ { "辔", "轡" },
+ { "辕", "轅" },
+ { "辖", "轄" },
+ { "辗", "輾" },
+ { "辘", "轆" },
+ { "辙", "轍" },
+ { "辚", "轔" },
+ { "辞", "辭" },
+ { "辞汇", "辭彙" },
+ { "辟为", "闢為" },
+ { "辟佛", "闢佛" },
+ { "辟作", "闢作" },
+ { "辟划", "闢劃" },
+ { "辟土", "闢土" },
+ { "辟地", "闢地" },
+ { "辟室", "闢室" },
+ { "辟建", "闢建" },
+ { "辟田", "闢田" },
+ { "辟筑", "闢築" },
+ { "辟谣", "闢謠" },
+ { "辟谷", "辟穀" },
+ { "辟辟", "闢辟" },
+ { "辟邪以律", "闢邪以律" },
+ { "辩", "辯" },
+ { "辩斗", "辯鬥" },
+ { "辫", "辮" },
+ { "辫发", "辮髮" },
+ { "边", "邊" },
+ { "辽", "遼" },
+ { "辽沈", "遼瀋" },
+ { "达", "達" },
+ { "迁", "遷" },
+ { "迂回", "迂迴" },
+ { "过", "過" },
+ { "过杆", "過杆" },
+ { "过水面", "過水麵" },
+ { "迈", "邁" },
+ { "运", "運" },
+ { "近日無仇", "近日無讎" },
+ { "近日里", "近日裡" },
+ { "返朴", "返樸" },
+ { "还", "還" },
+ { "还冲", "還衝" },
+ { "还占", "還佔" },
+ { "还采", "還採" },
+ { "这", "這" },
+ { "这么", "這麼" },
+ { "这么着", "這麼著" },
+ { "这伙人", "這夥人" },
+ { "这只", "這隻" },
+ { "这只采", "這只採" },
+ { "这里", "這裡" },
+ { "这钟", "這鐘" },
+ { "进", "進" },
+ { "进占", "進佔" },
+ { "远", "遠" },
+ { "远县才至", "遠縣纔至" },
+ { "远游", "遠遊" },
+ { "违", "違" },
+ { "连", "連" },
+ { "连三并四", "連三併四" },
+ { "连占", "連佔" },
+ { "连庄", "連莊" },
+ { "连系", "連繫" },
+ { "连采", "連採" },
+ { "迟", "遲" },
+ { "迥然回异", "迥然迴異" },
+ { "迩", "邇" },
+ { "迳", "逕" },
+ { "迷幻药", "迷幻藥" },
+ { "迷药", "迷藥" },
+ { "迷蒙", "迷濛" },
+ { "迷魂药", "迷魂藥" },
+ { "迹", "跡" },
+ { "追凶", "追兇" },
+ { "退伙", "退夥" },
+ { "退烧药", "退燒藥" },
+ { "适", "適" },
+ { "逆钟", "逆鐘" },
+ { "选", "選" },
+ { "逊", "遜" },
+ { "逋发", "逋髮" },
+ { "逍遥游", "逍遙遊" },
+ { "透辟", "透闢" },
+ { "递", "遞" },
+ { "递回", "遞迴" },
+ { "通历", "通曆" },
+ { "通奸", "通姦" },
+ { "通庄", "通莊" },
+ { "通心面", "通心麵" },
+ { "逞凶斗狠", "逞兇鬥狠" },
+ { "逞凶鬥狠", "逞兇鬥狠" },
+ { "造钟", "造鐘" },
+ { "造钟表", "造鐘錶" },
+ { "逦", "邐" },
+ { "逻", "邏" },
+ { "逼并", "逼併" },
+ { "道范", "道範" },
+ { "遗", "遺" },
+ { "遗传钟", "遺傳鐘" },
+ { "遗范", "遺範" },
+ { "遗迹", "遺迹" },
+ { "遥", "遙" },
+ { "遨游", "遨遊" },
+ { "遮丑", "遮醜" },
+ { "避孕药", "避孕藥" },
+ { "邀天之幸", "邀天之倖" },
+ { "邋里邋遢", "邋裡邋遢" },
+ { "邓", "鄧" },
+ { "邝", "鄺" },
+ { "那么", "那麼" },
+ { "那么着", "那麼著" },
+ { "那卷", "那捲" },
+ { "那只", "那隻" },
+ { "那里", "那裡" },
+ { "邬", "鄔" },
+ { "邮", "郵" },
+ { "邱于庭", "邱于庭" },
+ { "邹", "鄒" },
+ { "邺", "鄴" },
+ { "邻", "鄰" },
+ { "郁伊", "鬱伊" },
+ { "郁勃", "鬱勃" },
+ { "郁卒", "鬱卒" },
+ { "郁南", "鬱南" },
+ { "郁垒", "鬱壘" },
+ { "郁堙不偶", "鬱堙不偶" },
+ { "郁塞", "鬱塞" },
+ { "郁律", "鬱律" },
+ { "郁悒", "鬱悒" },
+ { "郁愤", "鬱憤" },
+ { "郁抑", "鬱抑" },
+ { "郁挹", "鬱挹" },
+ { "郁朴", "郁樸" },
+ { "郁林", "鬱林" },
+ { "郁气", "鬱氣" },
+ { "郁江", "鬱江" },
+ { "郁沉沉", "鬱沉沉" },
+ { "郁泱", "鬱泱" },
+ { "郁火", "鬱火" },
+ { "郁热", "鬱熱" },
+ { "郁燠", "鬱燠" },
+ { "郁症", "鬱症" },
+ { "郁积", "鬱積" },
+ { "郁纡", "鬱紆" },
+ { "郁结", "鬱結" },
+ { "郁蒸", "鬱蒸" },
+ { "郁蓊", "鬱蓊" },
+ { "郁血", "鬱血" },
+ { "郁邑", "鬱邑" },
+ { "郁郁", "鬱郁" },
+ { "郁郁不乐", "鬱鬱不樂" },
+ { "郁郁不平", "鬱鬱不平" },
+ { "郁郁寡欢", "鬱鬱寡歡" },
+ { "郁郁而终", "鬱鬱而終" },
+ { "郁郁葱葱", "鬱鬱蔥蔥" },
+ { "郁金", "鬱金" },
+ { "郁闭", "鬱閉" },
+ { "郁闷", "鬱悶" },
+ { "郁陶", "鬱陶" },
+ { "郁黑", "鬱黑" },
+ { "郊游", "郊遊" },
+ { "郏", "郟" },
+ { "郐", "鄶" },
+ { "郑", "鄭" },
+ { "郑凯云", "鄭凱云" },
+ { "郑庄公", "鄭莊公" },
+ { "郓", "鄆" },
+ { "郘钟", "郘鐘" },
+ { "郦", "酈" },
+ { "郧", "鄖" },
+ { "郭后", "郭后" },
+ { "郸", "鄲" },
+ { "鄉愿", "鄉愿" },
+ { "鄭凱云", "鄭凱云" },
+ { "配制", "配製" },
+ { "配水干管", "配水幹管" },
+ { "配药", "配藥" },
+ { "酒坛", "酒罈" },
+ { "酒帘", "酒帘" },
+ { "酒曲", "酒麴" },
+ { "酒肴", "酒肴" },
+ { "酒药", "酒藥" },
+ { "酝", "醞" },
+ { "酝酿着", "醞釀著" },
+ { "酥松", "酥鬆" },
+ { "酱", "醬" },
+ { "酽", "釅" },
+ { "酾", "釃" },
+ { "酿", "釀" },
+ { "酿制", "釀製" },
+ { "醇朴", "醇樸" },
+ { "醋坛", "醋罈" },
+ { "采下", "採下" },
+ { "采为", "採為" },
+ { "采买", "採買" },
+ { "采伐", "採伐" },
+ { "采住", "採住" },
+ { "采信", "採信" },
+ { "采光", "採光" },
+ { "采到", "採到" },
+ { "采制", "採制" },
+ { "采办", "採辦" },
+ { "采区", "採區" },
+ { "采去", "採去" },
+ { "采取", "採取" },
+ { "采回", "採回" },
+ { "采在", "採在" },
+ { "采好", "採好" },
+ { "采录", "採錄" },
+ { "采得", "採得" },
+ { "采择", "採擇" },
+ { "采拾", "採拾" },
+ { "采挖", "採挖" },
+ { "采掘", "採掘" },
+ { "采摘", "採摘" },
+ { "采摭", "採摭" },
+ { "采撷", "採擷" },
+ { "采收", "採收" },
+ { "采料", "採料" },
+ { "采暖", "採暖" },
+ { "采树种", "採樹種" },
+ { "采样", "採樣" },
+ { "采桑", "採桑" },
+ { "采樵人", "採樵人" },
+ { "采气", "採氣" },
+ { "采油", "採油" },
+ { "采煤", "採煤" },
+ { "采猎", "採獵" },
+ { "采珠", "採珠" },
+ { "采生折割", "採生折割" },
+ { "采用", "採用" },
+ { "采的", "採的" },
+ { "采盐", "採鹽" },
+ { "采石", "採石" },
+ { "采矿", "採礦" },
+ { "采砂场", "採砂場" },
+ { "采种", "採種" },
+ { "采空区", "採空區" },
+ { "采空采穗", "採空採穗" },
+ { "采納", "採納" },
+ { "采纳", "採納" },
+ { "采给", "採給" },
+ { "采花", "採花" },
+ { "采芹人", "採芹人" },
+ { "采茶", "採茶" },
+ { "采药", "採藥" },
+ { "采莲", "採蓮" },
+ { "采获", "採獲" },
+ { "采菊", "採菊" },
+ { "采薇", "採薇" },
+ { "采薪", "採薪" },
+ { "采行", "採行" },
+ { "采补", "採補" },
+ { "采访", "採訪" },
+ { "采证", "採證" },
+ { "采购", "採購" },
+ { "采过", "採過" },
+ { "采运", "採運" },
+ { "采选", "採選" },
+ { "采金", "採金" },
+ { "采铁", "採鐵" },
+ { "采集", "採集" },
+ { "采风", "採風" },
+ { "采食", "採食" },
+ { "釉药", "釉藥" },
+ { "释", "釋" },
+ { "里勾外连", "裡勾外連" },
+ { "里头", "裡頭" },
+ { "里层", "裡層" },
+ { "里屋", "裡屋" },
+ { "里布", "裡布" },
+ { "里带", "裡帶" },
+ { "里应外合", "裡應外合" },
+ { "里弦", "裡弦" },
+ { "里手", "裏手" },
+ { "里海", "裏海" },
+ { "里程表", "里程錶" },
+ { "里脊", "裡脊" },
+ { "里衣", "裡衣" },
+ { "里边", "裡邊" },
+ { "里通外国", "裡通外國" },
+ { "里通外敌", "裡通外敵" },
+ { "里间", "裡間" },
+ { "里面", "裡面" },
+ { "重制", "重製" },
+ { "重复", "重複" },
+ { "重托", "重託" },
+ { "重折", "重摺" },
+ { "重游", "重遊" },
+ { "重罗面", "重羅麵" },
+ { "重锤", "重鎚" },
+ { "野姜", "野薑" },
+ { "野游", "野遊" },
+ { "金仑溪", "金崙溪" },
+ { "金发", "金髮" },
+ { "金色长发", "金色長髮" },
+ { "金范", "金範" },
+ { "金表", "金錶" },
+ { "金装玉里", "金裝玉裡" },
+ { "金钟", "金鐘" },
+ { "金马仑道", "金馬崙道" },
+ { "鉴", "鑒" },
+ { "銮", "鑾" },
+ { "錾", "鏨" },
+ { "鎭", "鎮" },
+ { "钆", "釓" },
+ { "钇", "釔" },
+ { "针", "針" },
+ { "钉", "釘" },
+ { "钉锤", "釘鎚" },
+ { "钊", "釗" },
+ { "钋", "釙" },
+ { "钌", "釕" },
+ { "钍", "釷" },
+ { "钏", "釧" },
+ { "钐", "釤" },
+ { "钒", "釩" },
+ { "钓", "釣" },
+ { "钔", "鍆" },
+ { "钕", "釹" },
+ { "钗", "釵" },
+ { "钙", "鈣" },
+ { "钛", "鈦" },
+ { "钜", "鉅" },
+ { "钝", "鈍" },
+ { "钞", "鈔" },
+ { "钟", "鍾" },
+ { "钟上", "鐘上" },
+ { "钟下", "鐘下" },
+ { "钟不", "鐘不" },
+ { "钟乳洞", "鐘乳洞" },
+ { "钟乳石", "鐘乳石" },
+ { "钟体", "鐘體" },
+ { "钟停", "鐘停" },
+ { "钟关", "鐘關" },
+ { "钟匠", "鐘匠" },
+ { "钟发音", "鐘發音" },
+ { "钟口", "鐘口" },
+ { "钟响", "鐘響" },
+ { "钟在寺里", "鐘在寺裡" },
+ { "钟塔", "鐘塔" },
+ { "钟壁", "鐘壁" },
+ { "钟声", "鐘聲" },
+ { "钟太", "鐘太" },
+ { "钟头", "鐘頭" },
+ { "钟好", "鐘好" },
+ { "钟山", "鐘山" },
+ { "钟左右", "鐘左右" },
+ { "钟差", "鐘差" },
+ { "钟座", "鐘座" },
+ { "钟形", "鐘形" },
+ { "钟律", "鐘律" },
+ { "钟快", "鐘快" },
+ { "钟意", "鐘意" },
+ { "钟慢", "鐘慢" },
+ { "钟摆", "鐘擺" },
+ { "钟敲", "鐘敲" },
+ { "钟有", "鐘有" },
+ { "钟楼", "鐘樓" },
+ { "钟模", "鐘模" },
+ { "钟没", "鐘沒" },
+ { "钟漏", "鐘漏" },
+ { "钟点", "鐘點" },
+ { "钟王", "鐘王" },
+ { "钟琴", "鐘琴" },
+ { "钟的", "鐘的" },
+ { "钟盘", "鐘盤" },
+ { "钟相", "鐘相" },
+ { "钟磬", "鐘磬" },
+ { "钟纽", "鐘紐" },
+ { "钟罩", "鐘罩" },
+ { "钟腰", "鐘腰" },
+ { "钟螺", "鐘螺" },
+ { "钟行", "鐘行" },
+ { "钟表", "鐘錶" },
+ { "钟表面", "鐘表面" },
+ { "钟被", "鐘被" },
+ { "钟调", "鐘調" },
+ { "钟身", "鐘身" },
+ { "钟速", "鐘速" },
+ { "钟陈列", "鐘陳列" },
+ { "钟面", "鐘面" },
+ { "钟顶", "鐘頂" },
+ { "钟鸣", "鐘鳴" },
+ { "钟鼎", "鐘鼎" },
+ { "钟鼓", "鐘鼓" },
+ { "钠", "鈉" },
+ { "钡", "鋇" },
+ { "钢", "鋼" },
+ { "钢制", "鋼製" },
+ { "钢梁", "鋼樑" },
+ { "钣", "鈑" },
+ { "钤", "鈐" },
+ { "钥", "鑰" },
+ { "钦", "欽" },
+ { "钧", "鈞" },
+ { "钨", "鎢" },
+ { "钩", "鉤" },
+ { "钩心斗角", "鈎心鬥角" },
+ { "钪", "鈧" },
+ { "钫", "鈁" },
+ { "钬", "鈥" },
+ { "钭", "鈄" },
+ { "钮", "鈕" },
+ { "钯", "鈀" },
+ { "钰", "鈺" },
+ { "钱", "錢" },
+ { "钱庄", "錢莊" },
+ { "钱范", "錢範" },
+ { "钱谷", "錢穀" },
+ { "钲", "鉦" },
+ { "钳", "鉗" },
+ { "钴", "鈷" },
+ { "钵", "缽" },
+ { "钶", "鈳" },
+ { "钸", "鈽" },
+ { "钹", "鈸" },
+ { "钺", "鉞" },
+ { "钻", "鑽" },
+ { "钼", "鉬" },
+ { "钽", "鉭" },
+ { "钾", "鉀" },
+ { "钿", "鈿" },
+ { "铀", "鈾" },
+ { "铁", "鐵" },
+ { "铁杆", "鐵杆" },
+ { "铁钟", "鐵鐘" },
+ { "铁锈", "鐵鏽" },
+ { "铁锤", "鐵鎚" },
+ { "铂", "鉑" },
+ { "铃", "鈴" },
+ { "铄", "鑠" },
+ { "铅", "鉛" },
+ { "铆", "鉚" },
+ { "铈", "鈰" },
+ { "铉", "鉉" },
+ { "铊", "鉈" },
+ { "铋", "鉍" },
+ { "铌", "鈮" },
+ { "铍", "鈹" },
+ { "铎", "鐸" },
+ { "铐", "銬" },
+ { "铑", "銠" },
+ { "铒", "鉺" },
+ { "铕", "銪" },
+ { "铖", "鋮" },
+ { "铗", "鋏" },
+ { "铙", "鐃" },
+ { "铛", "鐺" },
+ { "铜", "銅" },
+ { "铜制", "銅製" },
+ { "铜范", "銅範" },
+ { "铜钟", "銅鐘" },
+ { "铝", "鋁" },
+ { "铝制", "鋁製" },
+ { "铟", "銦" },
+ { "铠", "鎧" },
+ { "铡", "鍘" },
+ { "铢", "銖" },
+ { "铣", "銑" },
+ { "铤", "鋌" },
+ { "铥", "銩" },
+ { "铧", "鏵" },
+ { "铨", "銓" },
+ { "铩", "鎩" },
+ { "铪", "鉿" },
+ { "铫", "銚" },
+ { "铬", "鉻" },
+ { "铭", "銘" },
+ { "铮", "錚" },
+ { "铯", "銫" },
+ { "铯钟", "銫鐘" },
+ { "铰", "鉸" },
+ { "铱", "銥" },
+ { "铲", "鏟" },
+ { "铲出", "剷出" },
+ { "铲刈", "剷刈" },
+ { "铲头", "剷頭" },
+ { "铲平", "剷平" },
+ { "铲除", "剷除" },
+ { "铳", "銃" },
+ { "铴", "鐋" },
+ { "铵", "銨" },
+ { "银", "銀" },
+ { "银发", "銀髮" },
+ { "银朱", "銀硃" },
+ { "铷", "銣" },
+ { "铸", "鑄" },
+ { "铸钟", "鑄鐘" },
+ { "铹", "鐒" },
+ { "铺", "鋪" },
+ { "铺锦列绣", "鋪錦列繡" },
+ { "铼", "錸" },
+ { "铽", "鋱" },
+ { "链", "鏈" },
+ { "铿", "鏗" },
+ { "销", "銷" },
+ { "锁", "鎖" },
+ { "锂", "鋰" },
+ { "锄", "鋤" },
+ { "锅", "鍋" },
+ { "锅庄", "鍋莊" },
+ { "锆", "鋯" },
+ { "锇", "鋨" },
+ { "锈", "銹" },
+ { "锈病", "鏽病" },
+ { "锈菌", "鏽菌" },
+ { "锈蚀", "鏽蝕" },
+ { "锉", "銼" },
+ { "锊", "鋝" },
+ { "锋", "鋒" },
+ { "锌", "鋅" },
+ { "锐", "銳" },
+ { "锑", "銻" },
+ { "锒", "鋃" },
+ { "锓", "鋟" },
+ { "锔", "鋦" },
+ { "锕", "錒" },
+ { "锖", "錆" },
+ { "锗", "鍺" },
+ { "错", "錯" },
+ { "锚", "錨" },
+ { "锛", "錛" },
+ { "锞", "錁" },
+ { "锟", "錕" },
+ { "锡", "錫" },
+ { "锢", "錮" },
+ { "锣", "鑼" },
+ { "锤", "錘" },
+ { "锤儿", "鎚兒" },
+ { "锤头", "鎚頭" },
+ { "锤子", "鎚子" },
+ { "锤炼", "錘鍊" },
+ { "锥", "錐" },
+ { "锦", "錦" },
+ { "锦绣", "錦繡" },
+ { "锨", "杴" },
+ { "锩", "錈" },
+ { "锬", "錟" },
+ { "锭", "錠" },
+ { "键", "鍵" },
+ { "锯", "鋸" },
+ { "锰", "錳" },
+ { "锱", "錙" },
+ { "锲", "鍥" },
+ { "锲而不舍", "鍥而不捨" },
+ { "锴", "鍇" },
+ { "锵", "鏘" },
+ { "锶", "鍶" },
+ { "锷", "鍔" },
+ { "锸", "鍤" },
+ { "锹", "鍬" },
+ { "锺", "鍾" },
+ { "锻", "鍛" },
+ { "锻炼出", "鍛鍊出" },
+ { "锼", "鎪" },
+ { "锾", "鍰" },
+ { "镀", "鍍" },
+ { "镁", "鎂" },
+ { "镂", "鏤" },
+ { "镄", "鐨" },
+ { "镆", "鏌" },
+ { "镇", "鎮" },
+ { "镉", "鎘" },
+ { "镊", "鑷" },
+ { "镌", "鐫" },
+ { "镍", "鎳" },
+ { "镏", "鎦" },
+ { "镐", "鎬" },
+ { "镑", "鎊" },
+ { "镒", "鎰" },
+ { "镓", "鎵" },
+ { "镔", "鑌" },
+ { "镖", "鏢" },
+ { "镗", "鏜" },
+ { "镘", "鏝" },
+ { "镙", "鏍" },
+ { "镛", "鏞" },
+ { "镜", "鏡" },
+ { "镝", "鏑" },
+ { "镞", "鏃" },
+ { "镟", "鏇" },
+ { "镡", "鐔" },
+ { "镢", "钁" },
+ { "镣", "鐐" },
+ { "镤", "鏷" },
+ { "镦", "鐓" },
+ { "镧", "鑭" },
+ { "镨", "鐠" },
+ { "镪", "鏹" },
+ { "镫", "鐙" },
+ { "镬", "鑊" },
+ { "镭", "鐳" },
+ { "镯", "鐲" },
+ { "镰", "鐮" },
+ { "镰仓", "鎌倉" },
+ { "镱", "鐿" },
+ { "镳", "鑣" },
+ { "镶", "鑲" },
+ { "长", "長" },
+ { "长几", "長几" },
+ { "长历", "長曆" },
+ { "长生药", "長生藥" },
+ { "长胡", "長鬍" },
+ { "门", "門" },
+ { "门吊儿", "門弔兒" },
+ { "门帘", "門帘" },
+ { "门里", "門裡" },
+ { "闩", "閂" },
+ { "闪", "閃" },
+ { "闫", "閆" },
+ { "闭", "閉" },
+ { "问", "問" },
+ { "闯", "闖" },
+ { "闯炼", "闖鍊" },
+ { "闯荡", "闖蕩" },
+ { "闰", "閏" },
+ { "闱", "闈" },
+ { "闲", "閑" },
+ { "闲情逸致", "閒情逸緻" },
+ { "闲游", "閒遊" },
+ { "闲荡", "閒蕩" },
+ { "闳", "閎" },
+ { "间", "間" },
+ { "间不容发", "間不容髮" },
+ { "闵", "閔" },
+ { "闵采尔", "閔採爾" },
+ { "闶", "閌" },
+ { "闷", "悶" },
+ { "闷着头儿干", "悶著頭兒幹" },
+ { "闸", "閘" },
+ { "闹", "鬧" },
+ { "闹着玩儿", "鬧著玩兒" },
+ { "闹表", "鬧錶" },
+ { "闹钟", "鬧鐘" },
+ { "闺", "閨" },
+ { "闺范", "閨範" },
+ { "闻", "聞" },
+ { "闼", "闥" },
+ { "闽", "閩" },
+ { "闾", "閭" },
+ { "阀", "閥" },
+ { "阁", "閣" },
+ { "阂", "閡" },
+ { "阃", "閫" },
+ { "阃范", "閫範" },
+ { "阄", "鬮" },
+ { "阅", "閱" },
+ { "阆", "閬" },
+ { "阈", "閾" },
+ { "阉", "閹" },
+ { "阊", "閶" },
+ { "阋", "鬩" },
+ { "阌", "閿" },
+ { "阍", "閽" },
+ { "阎", "閻" },
+ { "阏", "閼" },
+ { "阐", "闡" },
+ { "阑", "闌" },
+ { "阒", "闃" },
+ { "阔", "闊" },
+ { "阕", "闋" },
+ { "阖", "闔" },
+ { "阗", "闐" },
+ { "阙", "闕" },
+ { "阚", "闞" },
+ { "队", "隊" },
+ { "防台", "防颱" },
+ { "防御", "防禦" },
+ { "防晒", "防晒" },
+ { "防水表", "防水錶" },
+ { "防范", "防範" },
+ { "防锈", "防鏽" },
+ { "阳", "陽" },
+ { "阳历", "陽曆" },
+ { "阳春面", "陽春麵" },
+ { "阴", "陰" },
+ { "阴历", "陰曆" },
+ { "阴干", "陰乾" },
+ { "阴沟里翻船", "陰溝裡翻船" },
+ { "阴郁", "陰鬱" },
+ { "阵", "陣" },
+ { "阶", "階" },
+ { "阿呆", "阿獃" },
+ { "附注", "附註" },
+ { "际", "際" },
+ { "陆", "陸" },
+ { "陆游", "陸遊" },
+ { "陇", "隴" },
+ { "陈", "陳" },
+ { "陈冲", "陳冲" },
+ { "陈有后", "陳有后" },
+ { "陈炼", "陳鍊" },
+ { "陉", "陘" },
+ { "降压药", "降壓藥" },
+ { "陕", "陝" },
+ { "除臭药", "除臭藥" },
+ { "陧", "隉" },
+ { "陨", "隕" },
+ { "险", "險" },
+ { "陪吊", "陪弔" },
+ { "陳冲", "陳冲" },
+ { "隆准", "隆準" },
+ { "随", "隨" },
+ { "隐", "隱" },
+ { "隐几", "隱几" },
+ { "隐占", "隱佔" },
+ { "隶", "隸" },
+ { "隽", "雋" },
+ { "难", "難" },
+ { "难舍", "難捨" },
+ { "雅致", "雅緻" },
+ { "雅范", "雅範" },
+ { "集游法", "集遊法" },
+ { "雇主", "僱主" },
+ { "雇人", "僱人" },
+ { "雇佣", "僱傭" },
+ { "雇农", "僱農" },
+ { "雇到", "僱到" },
+ { "雇员", "僱員" },
+ { "雇工", "僱工" },
+ { "雇用", "僱用" },
+ { "雏", "雛" },
+ { "雕心雁爪", "鵰心雁爪" },
+ { "雕悍", "鵰悍" },
+ { "雕梁画栋", "雕樑畫棟" },
+ { "雕翎", "鵰翎" },
+ { "雕鹗", "鵰鶚" },
+ { "雠", "讎" },
+ { "雪窗萤几", "雪窗螢几" },
+ { "雪里", "雪裡" },
+ { "雳", "靂" },
+ { "零余", "零餘" },
+ { "零只", "零隻" },
+ { "雾", "霧" },
+ { "雾里", "霧裡" },
+ { "霁", "霽" },
+ { "霁范", "霽範" },
+ { "震栗", "震慄" },
+ { "震荡", "震蕩" },
+ { "霉毒", "黴毒" },
+ { "霉素", "黴素" },
+ { "霉菌", "黴菌" },
+ { "霉黑", "黴黑" },
+ { "霉黧", "黴黧" },
+ { "霭", "靄" },
+ { "露丑", "露醜" },
+ { "霸占", "霸佔" },
+ { "青山一发", "青山一髮" },
+ { "青苹", "青苹" },
+ { "青霉", "青黴" },
+ { "靓", "靚" },
+ { "静", "靜" },
+ { "非占不可", "非佔不可" },
+ { "面临着", "面臨著" },
+ { "面人儿", "麵人兒" },
+ { "面价", "麵價" },
+ { "面包", "麵包" },
+ { "面包扎", "面包紮" },
+ { "面包着", "面包著" },
+ { "面厂", "麵廠" },
+ { "面团", "麵糰" },
+ { "面坊", "麵坊" },
+ { "面坯儿", "麵坯兒" },
+ { "面塑", "麵塑" },
+ { "面店", "麵店" },
+ { "面摊", "麵攤" },
+ { "面朝着", "面朝著" },
+ { "面杖", "麵杖" },
+ { "面条", "麵條" },
+ { "面汤", "麵湯" },
+ { "面浆", "麵漿" },
+ { "面灰", "麵灰" },
+ { "面疙瘩", "麵疙瘩" },
+ { "面皮", "麵皮" },
+ { "面码儿", "麵碼兒" },
+ { "面筋", "麵筋" },
+ { "面粉", "麵粉" },
+ { "面糊", "麵糊" },
+ { "面线", "麵線" },
+ { "面缸", "麵缸" },
+ { "面茶", "麵茶" },
+ { "面食", "麵食" },
+ { "面食面", "面食麵" },
+ { "面饺", "麵餃" },
+ { "面饼", "麵餅" },
+ { "面馆", "麵館" },
+ { "靥", "靨" },
+ { "鞋里", "鞋裡" },
+ { "鞑", "韃" },
+ { "鞣制", "鞣製" },
+ { "鞭辟入里", "鞭辟入裡" },
+ { "鞯", "韉" },
+ { "鞲", "韝" },
+ { "韦", "韋" },
+ { "韦庄", "韋莊" },
+ { "韧", "韌" },
+ { "韩", "韓" },
+ { "韩制", "韓製" },
+ { "韩国制", "韓國製" },
+ { "韪", "韙" },
+ { "韫", "韞" },
+ { "韬", "韜" },
+ { "音准", "音準" },
+ { "音声如钟", "音聲如鐘" },
+ { "韵", "韻" },
+ { "页", "頁" },
+ { "顶", "頂" },
+ { "顷", "頃" },
+ { "顸", "頇" },
+ { "项", "項" },
+ { "项庄", "項莊" },
+ { "顺", "順" },
+ { "顺钟向", "順鐘向" },
+ { "须", "須" },
+ { "须发", "鬚髮" },
+ { "须根", "鬚根" },
+ { "须毛", "鬚毛" },
+ { "须生", "鬚生" },
+ { "须眉", "鬚眉" },
+ { "须胡", "鬚鬍" },
+ { "须须", "鬚鬚" },
+ { "须鲨", "鬚鯊" },
+ { "须鲸", "鬚鯨" },
+ { "顼", "頊" },
+ { "顽", "頑" },
+ { "顾", "顧" },
+ { "顿", "頓" },
+ { "颀", "頎" },
+ { "颁", "頒" },
+ { "颂", "頌" },
+ { "颂系", "頌繫" },
+ { "颂赞", "頌讚" },
+ { "颃", "頏" },
+ { "预", "預" },
+ { "预制", "預製" },
+ { "颅", "顱" },
+ { "领", "領" },
+ { "领域里", "領域裡" },
+ { "领袖欲", "領袖慾" },
+ { "颇", "頗" },
+ { "颈", "頸" },
+ { "颉", "頡" },
+ { "颊", "頰" },
+ { "颊须", "頰鬚" },
+ { "颌", "頜" },
+ { "颍", "潁" },
+ { "颏", "頦" },
+ { "颐", "頤" },
+ { "频", "頻" },
+ { "颓", "頹" },
+ { "颔", "頷" },
+ { "颖", "穎" },
+ { "颗", "顆" },
+ { "题", "題" },
+ { "题签", "題籤" },
+ { "颚", "顎" },
+ { "颛", "顓" },
+ { "颜", "顏" },
+ { "颜范", "顏範" },
+ { "额", "額" },
+ { "额征", "額徵" },
+ { "额我略历", "額我略曆" },
+ { "颞", "顳" },
+ { "颟", "顢" },
+ { "颠", "顛" },
+ { "颠干倒坤", "顛乾倒坤" },
+ { "颡", "顙" },
+ { "颢", "顥" },
+ { "颤", "顫" },
+ { "颤栗", "顫慄" },
+ { "颦", "顰" },
+ { "颧", "顴" },
+ { "风", "風" },
+ { "风卷残云", "風捲殘雲" },
+ { "风后", "風后" },
+ { "风土志", "風土誌" },
+ { "风干", "風乾" },
+ { "风物志", "風物誌" },
+ { "风范", "風範" },
+ { "风起云涌", "風起雲湧" },
+ { "风里", "風裡" },
+ { "飑", "颮" },
+ { "飒", "颯" },
+ { "飓", "颶" },
+ { "飕", "颼" },
+ { "飘", "飄" },
+ { "飘游", "飄遊" },
+ { "飘荡", "飄蕩" },
+ { "飘飘荡荡", "飄飄蕩蕩" },
+ { "飙", "飆" },
+ { "飞", "飛" },
+ { "飞刍挽粟", "飛芻輓粟" },
+ { "飞扎", "飛紮" },
+ { "飞行钟", "飛行鐘" },
+ { "食欲", "食慾" },
+ { "食野之苹", "食野之苹" },
+ { "食面", "食麵" },
+ { "飨", "饗" },
+ { "餍", "饜" },
+ { "饥", "飢" },
+ { "饥寒", "饑寒" },
+ { "饥民", "饑民" },
+ { "饥渴", "饑渴" },
+ { "饥溺", "饑溺" },
+ { "饥荒", "饑荒" },
+ { "饥饱", "饑飽" },
+ { "饥馑", "饑饉" },
+ { "饧", "餳" },
+ { "饨", "飩" },
+ { "饩", "餼" },
+ { "饪", "飪" },
+ { "饫", "飫" },
+ { "饬", "飭" },
+ { "饭", "飯" },
+ { "饭后钟", "飯後鐘" },
+ { "饭团", "飯糰" },
+ { "饭庄", "飯莊" },
+ { "饮", "飲" },
+ { "饯", "餞" },
+ { "饰", "飾" },
+ { "饱", "飽" },
+ { "饲", "飼" },
+ { "饲喂", "飼餵" },
+ { "饴", "飴" },
+ { "饵", "餌" },
+ { "饶", "饒" },
+ { "饷", "餉" },
+ { "饺", "餃" },
+ { "饼", "餅" },
+ { "饼干", "餅乾" },
+ { "饽", "餑" },
+ { "饿", "餓" },
+ { "馀", "餘" },
+ { "馁", "餒" },
+ { "馄", "餛" },
+ { "馄饨面", "餛飩麵" },
+ { "馅", "餡" },
+ { "馆", "館" },
+ { "馆谷", "館穀" },
+ { "馆里", "館裡" },
+ { "馈", "饋" },
+ { "馊", "餿" },
+ { "馋", "饞" },
+ { "馍", "饃" },
+ { "馏", "餾" },
+ { "馐", "饈" },
+ { "馑", "饉" },
+ { "馒", "饅" },
+ { "馔", "饌" },
+ { "首只", "首隻" },
+ { "首当其冲", "首當其衝" },
+ { "香干", "香乾" },
+ { "马", "馬" },
+ { "马干", "馬乾" },
+ { "马杆", "馬杆" },
+ { "马表", "馬錶" },
+ { "驭", "馭" },
+ { "驮", "馱" },
+ { "驯", "馴" },
+ { "驰", "馳" },
+ { "驱", "驅" },
+ { "驳", "駁" },
+ { "驴", "驢" },
+ { "驵", "駔" },
+ { "驶", "駛" },
+ { "驷", "駟" },
+ { "驸", "駙" },
+ { "驹", "駒" },
+ { "驺", "騶" },
+ { "驻", "駐" },
+ { "驻扎", "駐紮" },
+ { "驼", "駝" },
+ { "驽", "駑" },
+ { "驾", "駕" },
+ { "驿", "驛" },
+ { "骀", "駘" },
+ { "骀荡", "駘蕩" },
+ { "骁", "驍" },
+ { "骂", "罵" },
+ { "骂着", "罵著" },
+ { "骄", "驕" },
+ { "骅", "驊" },
+ { "骆", "駱" },
+ { "骇", "駭" },
+ { "骈", "駢" },
+ { "骊", "驪" },
+ { "骋", "騁" },
+ { "验", "驗" },
+ { "骏", "駿" },
+ { "骐", "騏" },
+ { "骑", "騎" },
+ { "骒", "騍" },
+ { "骓", "騅" },
+ { "骖", "驂" },
+ { "骗", "騙" },
+ { "骘", "騭" },
+ { "骚", "騷" },
+ { "骛", "騖" },
+ { "骜", "驁" },
+ { "骝", "騮" },
+ { "骞", "騫" },
+ { "骟", "騸" },
+ { "骠", "驃" },
+ { "骡", "騾" },
+ { "骢", "驄" },
+ { "骣", "驏" },
+ { "骤", "驟" },
+ { "骥", "驥" },
+ { "骧", "驤" },
+ { "骨坛", "骨罈" },
+ { "骨子里", "骨子裡" },
+ { "骨干", "骨幹" },
+ { "骨灰坛", "骨灰罈" },
+ { "髅", "髏" },
+ { "髋", "髖" },
+ { "髌", "髕" },
+ { "高几", "高几" },
+ { "高干", "高幹" },
+ { "高清愿", "高清愿" },
+ { "髡发", "髡髮" },
+ { "髭胡", "髭鬍" },
+ { "髭须", "髭鬚" },
+ { "髯胡", "髯鬍" },
+ { "髼松", "髼鬆" },
+ { "鬅松", "鬅鬆" },
+ { "鬈发", "鬈髮" },
+ { "鬒发", "鬒髮" },
+ { "鬓", "鬢" },
+ { "鬓发", "鬢髮" },
+ { "魂牵梦系", "魂牽夢繫" },
+ { "魇", "魘" },
+ { "魉", "魎" },
+ { "魏征", "魏徵" },
+ { "魔杰座", "魔杰座" },
+ { "魔表", "魔錶" },
+ { "鱼", "魚" },
+ { "鱼干", "魚乾" },
+ { "鱼松", "魚鬆" },
+ { "鱿", "魷" },
+ { "鲁", "魯" },
+ { "鲂", "魴" },
+ { "鲆", "鮃" },
+ { "鲇", "鯰" },
+ { "鲈", "鱸" },
+ { "鲋", "鮒" },
+ { "鲍", "鮑" },
+ { "鲎", "鱟" },
+ { "鲐", "鮐" },
+ { "鲑", "鮭" },
+ { "鲒", "鮚" },
+ { "鲔", "鮪" },
+ { "鲕", "鮞" },
+ { "鲚", "鱭" },
+ { "鲛", "鮫" },
+ { "鲜", "鮮" },
+ { "鲞", "鯗" },
+ { "鲟", "鱘" },
+ { "鲠", "鯁" },
+ { "鲡", "鱺" },
+ { "鲢", "鰱" },
+ { "鲣", "鰹" },
+ { "鲤", "鯉" },
+ { "鲥", "鰣" },
+ { "鲦", "鰷" },
+ { "鲧", "鯀" },
+ { "鲨", "鯊" },
+ { "鲩", "鯇" },
+ { "鲫", "鯽" },
+ { "鲭", "鯖" },
+ { "鲮", "鯪" },
+ { "鲰", "鯫" },
+ { "鲱", "鯡" },
+ { "鲲", "鯤" },
+ { "鲳", "鯧" },
+ { "鲵", "鯢" },
+ { "鲶", "鯰" },
+ { "鲷", "鯛" },
+ { "鲸", "鯨" },
+ { "鲸须", "鯨鬚" },
+ { "鲻", "鯔" },
+ { "鲽", "鰈" },
+ { "鳃", "鰓" },
+ { "鳄", "鱷" },
+ { "鳅", "鰍" },
+ { "鳆", "鰒" },
+ { "鳇", "鰉" },
+ { "鳌", "鰲" },
+ { "鳍", "鰭" },
+ { "鳎", "鰨" },
+ { "鳏", "鰥" },
+ { "鳐", "鰩" },
+ { "鳓", "鰳" },
+ { "鳔", "鰾" },
+ { "鳕", "鱈" },
+ { "鳖", "鱉" },
+ { "鳗", "鰻" },
+ { "鳜", "鱖" },
+ { "鳝", "鱔" },
+ { "鳞", "鱗" },
+ { "鳟", "鱒" },
+ { "鳢", "鱧" },
+ { "鸟", "鳥" },
+ { "鸠", "鳩" },
+ { "鸠占鹊巢", "鳩佔鵲巢" },
+ { "鸡", "雞" },
+ { "鸡丝面", "雞絲麵" },
+ { "鸡争鹅斗", "雞爭鵝鬥" },
+ { "鸡只", "雞隻" },
+ { "鸡吵鹅斗", "雞吵鵝鬥" },
+ { "鸡奸", "雞姦" },
+ { "鸡腿面", "雞腿麵" },
+ { "鸡蛋里挑骨头", "雞蛋裡挑骨頭" },
+ { "鸢", "鳶" },
+ { "鸣", "鳴" },
+ { "鸣钟", "鳴鐘" },
+ { "鸥", "鷗" },
+ { "鸦", "鴉" },
+ { "鸨", "鴇" },
+ { "鸩", "鴆" },
+ { "鸪", "鴣" },
+ { "鸫", "鶇" },
+ { "鸬", "鸕" },
+ { "鸭", "鴨" },
+ { "鸯", "鴦" },
+ { "鸱", "鴟" },
+ { "鸲", "鴝" },
+ { "鸳", "鴛" },
+ { "鸵", "鴕" },
+ { "鸶", "鷥" },
+ { "鸷", "鷙" },
+ { "鸸", "鴯" },
+ { "鸹", "鴰" },
+ { "鸺", "鵂" },
+ { "鸽", "鴿" },
+ { "鸾", "鸞" },
+ { "鸿", "鴻" },
+ { "鸿案相庄", "鴻案相莊" },
+ { "鸿篇巨制", "鴻篇巨製" },
+ { "鸿范", "鴻範" },
+ { "鹁", "鵓" },
+ { "鹂", "鸝" },
+ { "鹃", "鵑" },
+ { "鹄", "鵠" },
+ { "鹄发", "鵠髮" },
+ { "鹅", "鵝" },
+ { "鹅准", "鵝準" },
+ { "鹆", "鵒" },
+ { "鹇", "鷳" },
+ { "鹈", "鵜" },
+ { "鹉", "鵡" },
+ { "鹊", "鵲" },
+ { "鹌", "鵪" },
+ { "鹎", "鵯" },
+ { "鹏", "鵬" },
+ { "鹑", "鶉" },
+ { "鹕", "鶘" },
+ { "鹗", "鶚" },
+ { "鹘", "鶻" },
+ { "鹚", "鶿" },
+ { "鹜", "鶩" },
+ { "鹞", "鷂" },
+ { "鹣", "鶼" },
+ { "鹤", "鶴" },
+ { "鹤发", "鶴髮" },
+ { "鹤吊", "鶴弔" },
+ { "鹦", "鸚" },
+ { "鹧", "鷓" },
+ { "鹨", "鷚" },
+ { "鹩", "鷯" },
+ { "鹪", "鷦" },
+ { "鹫", "鷲" },
+ { "鹬", "鷸" },
+ { "鹭", "鷺" },
+ { "鹰", "鷹" },
+ { "鹰雕", "鹰鵰" },
+ { "鹳", "鸛" },
+ { "鹾", "鹺" },
+ { "麦", "麥" },
+ { "麸", "麩" },
+ { "麻药", "麻藥" },
+ { "麻酱面", "麻醬麵" },
+ { "麻醉药", "麻醉藥" },
+ { "黃詩杰", "黃詩杰" },
+ { "黃鈺筑", "黃鈺筑" },
+ { "黄", "黃" },
+ { "黄历", "黃曆" },
+ { "黄发", "黃髮" },
+ { "黄干黑瘦", "黃乾黑瘦" },
+ { "黄曲毒素", "黃麴毒素" },
+ { "黄诗杰", "黃詩杰" },
+ { "黄钟", "黃鐘" },
+ { "黄钰筑", "黃鈺筑" },
+ { "黉", "黌" },
+ { "黑发", "黑髮" },
+ { "黑色长发", "黑色長髮" },
+ { "黩", "黷" },
+ { "黪", "黲" },
+ { "黾", "黽" },
+ { "鼋", "黿" },
+ { "鼍", "鼉" },
+ { "鼓里", "鼓裡" },
+ { "鼗", "鞀" },
+ { "鼠曲草", "鼠麴草" },
+ { "鼠药", "鼠藥" },
+ { "鼹", "鼴" },
+ { "鼻准", "鼻準" },
+ { "鼻梁", "鼻樑" },
+ { "齄", "齇" },
+ { "齐", "齊" },
+ { "齐庄", "齊莊" },
+ { "齐王舍牛", "齊王捨牛" },
+ { "齑", "齏" },
+ { "齿", "齒" },
+ { "齿危发秀", "齒危髮秀" },
+ { "齿发", "齒髮" },
+ { "龀", "齔" },
+ { "龃", "齟" },
+ { "龄", "齡" },
+ { "龅", "齙" },
+ { "龆", "齠" },
+ { "龇", "齜" },
+ { "龈", "齦" },
+ { "龉", "齬" },
+ { "龊", "齪" },
+ { "龋", "齲" },
+ { "龌", "齷" },
+ { "龙", "龍" },
+ { "龙卷", "龍捲" },
+ { "龙斗虎伤", "龍鬥虎傷" },
+ { "龙须", "龍鬚" },
+ { "龚", "龔" },
+ { "龛", "龕" },
+ { "龟", "龜" },
+};
+#define SIMP_TO_TRAD_MAX_LEN (6)
diff --git a/src/PyZySpecialPhrase.cc b/src/PyZySpecialPhrase.cc
new file mode 100644
index 0000000..24bd44c
--- /dev/null
+++ b/src/PyZySpecialPhrase.cc
@@ -0,0 +1,30 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZySpecialPhrase.h"
+
+namespace PY {
+
+SpecialPhrase::~SpecialPhrase (void)
+{
+}
+
+};
+
diff --git a/src/PyZySpecialPhrase.h b/src/PyZySpecialPhrase.h
new file mode 100644
index 0000000..00c9347
--- /dev/null
+++ b/src/PyZySpecialPhrase.h
@@ -0,0 +1,47 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __SPECIAL_PHRASE_H_
+#define __SPECIAL_PHRASE_H_
+
+#include <string>
+#include <glib.h>
+
+namespace PyZy {
+
+class SpecialPhrase {
+public:
+ SpecialPhrase (guint pos) : m_position (pos) { }
+ virtual ~SpecialPhrase (void) { }
+
+ guint position (void) const
+ {
+ return m_position;
+ }
+
+ virtual std::string text (void) = 0;
+
+private:
+ guint m_position;
+};
+
+}; // namespace PyZy
+
+#endif // __SPECIAL_PHRASE_H_
diff --git a/src/PyZySpecialPhraseTable.cc b/src/PyZySpecialPhraseTable.cc
new file mode 100644
index 0000000..22cc0c1
--- /dev/null
+++ b/src/PyZySpecialPhraseTable.cc
@@ -0,0 +1,102 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "PyZySpecialPhraseTable.h"
+#include <fstream>
+#include "PyZyDynamicSpecialPhrase.h"
+#include "PyZySpecialPhrase.h"
+
+namespace PyZy {
+
+SpecialPhraseTable SpecialPhraseTable::m_instance;
+
+class StaticSpecialPhrase : public SpecialPhrase {
+public:
+ StaticSpecialPhrase (const std::string &text, guint pos) :
+ SpecialPhrase (pos), m_text (text) { }
+ ~StaticSpecialPhrase (void) { }
+
+ std::string text (void) { return m_text; }
+
+private:
+ std::string m_text;
+};
+
+SpecialPhraseTable::SpecialPhraseTable (void)
+{
+ gchar * path = g_build_filename (g_get_user_config_dir (),
+ "ibus", "pinyin", "phrases.txt", NULL);
+
+ load ("phrases.txt") ||
+ load (path) ||
+ load (PKGDATADIR G_DIR_SEPARATOR_S "phrases.txt");
+ g_free (path);
+}
+
+gboolean
+SpecialPhraseTable::lookup (const std::string &command,
+ std::vector<std::string> &result)
+{
+ result.clear ();
+
+ std::pair<Map::iterator, Map::iterator> range = m_map.equal_range (command);
+ for (Map::iterator it = range.first; it != range.second; it ++) {
+ result.push_back ((*it).second->text ());
+ }
+
+ return result.size () > 0;
+}
+
+gboolean
+SpecialPhraseTable::load (const gchar *file)
+{
+ m_map.clear ();
+
+ std::ifstream in (file);
+ if (in.fail ())
+ return FALSE;
+
+ std::string line;
+ while (!in.eof ()) {
+ getline (in, line);
+ if (line.size () == 0 || line[0] == ';')
+ continue;
+ size_t pos = line.find ('=');
+ if (pos == line.npos)
+ continue;
+
+ std::string command = line.substr(0, pos);
+ std::string value = line.substr(pos + 1);
+ if (command.empty () || value.empty ())
+ continue;
+
+ if (value[0] != '#') {
+ SpecialPhrasePtr phrase (new StaticSpecialPhrase (value, 0));
+ m_map.insert (Map::value_type (command, phrase));
+ }
+ else if (value.size () > 1) {
+ SpecialPhrasePtr phrase (new DynamicSpecialPhrase (value.substr (1), 0));
+ m_map.insert (Map::value_type (command, phrase));
+ }
+ }
+ return TRUE;
+}
+
+}; // namespace PyZy
diff --git a/src/PyZySpecialPhraseTable.h b/src/PyZySpecialPhraseTable.h
new file mode 100644
index 0000000..35b73da
--- /dev/null
+++ b/src/PyZySpecialPhraseTable.h
@@ -0,0 +1,58 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __SPECIAL_PHRASE_TABLE_H_
+#define __SPECIAL_PHRASE_TABLE_H_
+
+#include <map>
+#include <string>
+#include <vector>
+#include <glib.h>
+#include "PyZyUtil.h"
+
+namespace PyZy {
+
+class SpecialPhrase;
+typedef std::shared_ptr<SpecialPhrase> SpecialPhrasePtr;
+
+class SpecialPhraseTable {
+private:
+ SpecialPhraseTable (void);
+
+public:
+ gboolean lookup (const std::string &command, std::vector<std::string> &result);
+
+private:
+ gboolean load (const gchar *file);
+
+public:
+ static SpecialPhraseTable & instance (void) { return m_instance; }
+
+private:
+ typedef std::multimap<std::string, SpecialPhrasePtr> Map;
+ Map m_map;
+
+private:
+ static SpecialPhraseTable m_instance;
+};
+
+}; // namespace PyZy
+
+#endif // __SPECIAL_PHRASE_TABLE_H_
diff --git a/src/PyZyString.h b/src/PyZyString.h
new file mode 100644
index 0000000..50ef67e
--- /dev/null
+++ b/src/PyZyString.h
@@ -0,0 +1,183 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __STRING_H_
+#define __STRING_H_
+
+#include <glib.h>
+#include <stdarg.h>
+#include <string>
+
+namespace PyZy {
+
+class String : public std::string {
+public:
+ String () : std::string () { }
+ String (const gchar *str) : std::string (str) { }
+ String (const std::string &str) : std::string (str) { }
+ String (gint len) : std::string () { reserve (len); }
+
+ String & printf (const gchar *fmt, ...)
+ {
+ gchar *str;
+ va_list args;
+
+ va_start (args, fmt);
+ str = g_strdup_vprintf (fmt, args);
+ va_end (args);
+
+ assign (str);
+ g_free (str);
+ return *this;
+ }
+
+ String & appendPrintf (const gchar *fmt, ...)
+ {
+ gchar *str;
+ va_list args;
+
+ va_start (args, fmt);
+ str = g_strdup_vprintf (fmt, args);
+ va_end (args);
+
+ append (str);
+ g_free (str);
+
+ return *this;
+ }
+
+ String & appendUnichar (gunichar ch)
+ {
+ gchar str[12];
+ gint len;
+ len = g_unichar_to_utf8 (ch, str);
+ str[len] = 0;
+ append (str);
+ return *this;
+ }
+
+ String & insert (gint i, gchar ch)
+ {
+ std::string::insert (i, 1, ch);
+ return *this;
+ }
+
+ String & truncate (guint len)
+ {
+ erase(len);
+ return *this;
+ }
+
+ String & replace (const gchar *pattern, const gchar *str)
+ {
+ String result;
+ String::size_type pos = 0;
+ String::size_type pos_before = 0;
+ const String::size_type length = std::string (pattern).size ();
+
+ while ((pos = this->find (pattern, pos)) != String::npos) {
+ result.append (*this, pos_before, pos - pos_before);
+ result.append (str);
+ pos += length;
+ pos_before = pos;
+ }
+ result.append (*this, pos_before, this->size () - pos_before);
+ this->assign (result);
+ return *this;
+ }
+
+ gsize utf8Length (void) const
+ {
+ return g_utf8_strlen (c_str(), -1);
+ }
+
+ String & operator<< (gint i)
+ {
+ return appendPrintf ("%d", i);
+ }
+
+ String & operator<< (guint i)
+ {
+ return appendPrintf ("%u", i);
+ }
+
+ String & operator<< (const gchar ch)
+ {
+ append (1, ch);
+ return *this;
+ }
+
+ String & operator<< (const gchar *str)
+ {
+ append (str);
+ return *this;
+ }
+
+ String & operator<< (const gunichar *wstr)
+ {
+ gchar *str;
+ GError *error;
+ str = g_ucs4_to_utf8 (wstr, -1, NULL, NULL, &error);
+ if (str == NULL) {
+ g_warning ("convert ucs4 to utf8 failed: %s", error->message);
+ g_error_free (error);
+ }
+ else {
+ append (str);
+ g_free (str);
+ }
+ return *this;
+ }
+
+ gchar operator[] (gint i)
+ {
+ return std::string::operator[] (i);
+ }
+
+ String & operator<< (const std::string &str)
+ {
+ return operator<< (str.c_str ());
+ }
+
+ String & operator<< (const String &str)
+ {
+ return operator<< ((const gchar *)str);
+ }
+
+ String & operator= (const gchar * str)
+ {
+ assign (str);
+ return *this;
+ }
+
+ operator const gchar *(void) const
+ {
+ return this->c_str ();
+ }
+
+ operator gboolean (void) const
+ {
+ return ! empty ();
+ }
+};
+
+}; // namespace PyZy
+
+#endif // __STRING_H_
diff --git a/src/PyZyTest.cc b/src/PyZyTest.cc
new file mode 100644
index 0000000..3e0cd6f
--- /dev/null
+++ b/src/PyZyTest.cc
@@ -0,0 +1,1341 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include <gtest/gtest.h>
+#include <glib/gstdio.h>
+
+#include <iostream>
+#include <algorithm>
+
+#include "PyZyConfig.h"
+#include "PyZyDoublePinyinContext.h"
+#include "PyZyFullPinyinContext.h"
+#include "PyZyBopomofoContext.h"
+#include "PyZyPhoneticContext.h"
+
+#include "PyZyPinyinArray.h"
+#include "PyZyDatabase.h"
+
+using namespace std;
+using namespace PyZy;
+
+
+int main(int argc, char **argv) {
+ testing::InitGoogleTest (&argc, argv);
+ return RUN_ALL_TESTS ();
+}
+
+class PyZyTest : public testing::Test {
+protected:
+ virtual void SetUp () {
+ PhoneticContext::init ("libpyzy-test");
+ PinyinConfig::init ();
+ BopomofoConfig::init ();
+ }
+
+ virtual void TearDown () {
+ PyZy::Database::finalize ();
+
+ std::string db_file = g_get_user_cache_dir();
+ db_file += G_DIR_SEPARATOR_S;
+ db_file += "libpyzy-test";
+ db_file += G_DIR_SEPARATOR_S;
+ db_file += "user-1.3.db";
+ g_unlink (db_file.c_str ());
+ }
+};
+
+class CounterObserver : public PyZy::PhoneticContext::Observer {
+public:
+ void commitText (const std::string &commit_text) {
+ m_commited_text = commit_text;
+ ++m_commit_text;
+ }
+ void preeditTextChanged () { ++m_preedit_text; }
+ void auxiliaryTextChanged () { ++m_auxiliary_text; }
+ void lookupTableChanged () { ++m_lookup_table; }
+
+ string commitedText () { return m_commited_text; }
+ guint commitTextCount () { return m_commit_text; }
+ guint preeditTextCount () { return m_preedit_text; }
+ guint auxiliaryTextCount () { return m_auxiliary_text; }
+ guint lookupTableCount () { return m_lookup_table; }
+
+ void clear () {
+ m_commited_text.clear ();
+ m_commit_text = 0;
+ m_preedit_text = 0;
+ m_auxiliary_text = 0;
+ m_lookup_table = 0;
+ }
+private:
+ string m_commited_text;
+ guint m_commit_text;
+ guint m_preedit_text;
+ guint m_auxiliary_text;
+ guint m_lookup_table;
+};
+
+void insertKeys (PhoneticContext &context, const string &keys) {
+ for (guint i = 0; i < keys.size (); ++i) {
+ context.processKeyEvent (keys[i]);
+ }
+}
+
+TEST_F (PyZyTest, FullPinyinBasicTest) {
+ CounterObserver observer;
+ FullPinyinContext context(PinyinConfig::instance (), &observer);
+
+ { // Reset
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihao");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_RESET);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ }
+
+ { // Commit directly
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihao");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("nihao", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select candidate
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihao");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("你好", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select special phrases.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("AA制", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select special phrases with some operations.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhii");
+ EXPECT_EQ (6, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊啊之", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("a a zhi i|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (6, observer.preeditTextCount ());
+ EXPECT_EQ (6, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("aazhi|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("AA制", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("AA制i", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Many operations
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_FOCUS | '2');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊啊之", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a a zhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '4');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("啊", context.selectedText ());
+ EXPECT_EQ ("啊之", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊啊之", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a a zhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("a a zh|i", context.restText ());
+ EXPECT_EQ ("a a zh|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent ('i');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("aazhi|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_CHARACTER_BEFORE);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("a a zh|i", context.restText ());
+ EXPECT_EQ ("a a zh|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_RIGHT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_WORD_BEFORE);
+ EXPECT_EQ (2, context.cursor ());
+ EXPECT_EQ ("aa", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊啊", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a a|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ insertKeys (context, "nihao");
+ EXPECT_EQ (7, context.cursor ());
+ EXPECT_EQ ("aanihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊啊你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a a ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '2');
+ EXPECT_EQ (7, context.cursor ());
+ EXPECT_EQ ("aanihao", context.inputText ());
+ EXPECT_EQ ("啊啊", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("啊啊nihao", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+}
+
+TEST_F (PyZyTest, DoublePinyinBasicTest) {
+ CounterObserver observer;
+ DoublePinyinContext context(PinyinConfig::instance (), &observer);
+
+ { // Reset
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihk");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("nihk", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_RESET);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ }
+
+ { // Commit directly
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihk");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("nihk", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("nihk", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select candidate
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "nihk");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("nihk", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("你好", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select special phrases.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("AA制", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select special phrases with some operations.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhii");
+ EXPECT_EQ (6, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊展翅", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zang chi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (6, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("aazhi|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("AA制", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("AA制i", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Many operations
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_FOCUS | '2');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊战场", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zang ch|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '4');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("阿", context.selectedText ());
+ EXPECT_EQ ("战场", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("zang ch|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ // TODO(hsumita) fix. maybe we should get AA制
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊战场", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zang ch|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("a zang|i", context.restText ());
+ EXPECT_EQ ("a zang|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent ('i');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("i", context.restText ());
+ EXPECT_EQ ("aazhi|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_CHARACTER_BEFORE);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("a zang|i", context.restText ());
+ EXPECT_EQ ("a zang|i", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_RIGHT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("AA制", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("aazhi|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_WORD_BEFORE);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazh", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊张", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zang|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ insertKeys (context, "nihk");
+ EXPECT_EQ (8, context.cursor ());
+ EXPECT_EQ ("aazhnihk", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("啊张你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("a zang ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '2');
+ EXPECT_EQ (8, context.cursor ());
+ EXPECT_EQ ("aazhnihk", context.inputText ());
+ EXPECT_EQ ("啊", context.selectedText ());
+ EXPECT_EQ ("张你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("zang ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("啊zhnihk", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+}
+
+TEST_F (PyZyTest, BopomofoBasicTest) {
+ CounterObserver observer;
+ BopomofoContext context(BopomofoConfig::instance (), &observer);
+
+ { // Reset
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "sucl");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("sucl", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_RESET);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ }
+
+ { // Commit directly
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "sucl");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("sucl", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("sucl", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select candidate
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "sucl");
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("sucl", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("你好", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Don't use special phrases for bopomofo.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("妈妈好吃哦", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Select special phrases with some operations.
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhii");
+ EXPECT_EQ (6, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃哦哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (6, observer.preeditTextCount ());
+ EXPECT_EQ (6, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("ㄇㄇㄈㄘㄛ ㄛ", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|ㄛ", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '1');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("妈妈好吃哦", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("ㄛ", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("妈妈好吃哦ㄛ", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+
+ { // Many operations
+ context.reset ();
+
+ observer.clear ();
+ insertKeys (context, "aazhi");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_FOCUS | '2');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '4');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("慢慢", context.selectedText ());
+ EXPECT_EQ ("好吃哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ // TODO(hsumita) maybe we should get AA制
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ // TODO (hsumita): should we use a space as a separator of restText
+ // TODO (hsumita): "ㄇㄇㄈㄘ ㄛ" is conversionText or restText ?
+ observer.clear ();
+ context.processKeyEvent (VKEY_CURSOR_LEFT);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("ㄇㄇㄈㄘ ㄛ", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|ㄛ", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent ('i');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhii", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("ㄇㄇㄈㄘㄛ ㄛ", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|ㄛ", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_CHARACTER_BEFORE);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("ㄇㄇㄈㄘ ㄛ", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|ㄛ", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CURSOR_RIGHT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("aazhi", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_DELETE_WORD_BEFORE);
+ EXPECT_EQ (4, context.cursor ());
+ EXPECT_EQ ("aazh", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ insertKeys (context, "nihk");
+ EXPECT_EQ (8, context.cursor ());
+ EXPECT_EQ ("aazhnihk", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妈妈好吃是哦车", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄙ,ㄛ,ㄘㄜ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (4, observer.preeditTextCount ());
+ EXPECT_EQ (4, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_CANDIDATE_SELECT | '2');
+ EXPECT_EQ (8, context.cursor ());
+ EXPECT_EQ ("aazhnihk", context.inputText ());
+ EXPECT_EQ ("妈妈", context.selectedText ());
+ EXPECT_EQ ("好吃是哦车", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ㄈ,ㄘ,ㄙ,ㄛ,ㄘㄜ|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+
+ observer.clear ();
+ context.processKeyEvent(VKEY_COMMIT);
+ EXPECT_EQ (0, context.cursor ());
+ EXPECT_EQ ("", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("", context.auxiliaryText ());
+ EXPECT_EQ (0, context.candidates ().size ());
+ EXPECT_EQ ("妈妈ㄈㄘㄙㄛㄘㄜ", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (1, observer.commitTextCount ());
+ }
+}
+
+TEST_F(PyZyTest, PagingTest) {
+ {
+ CounterObserver observer;
+ FullPinyinContext context(PinyinConfig::instance (), &observer);
+
+ observer.clear ();
+ insertKeys (context, "nihao");
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (5, observer.preeditTextCount ());
+ EXPECT_EQ (5, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (0, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CANDIDATE_FOCUS | '4');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("尼", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (3, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_PREVIOUS);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("尼", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (3, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_NEXT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("腻", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (8, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_END);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("匿", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (12, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_NEXT);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("匿", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (12, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_PREVIOUS);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("妮", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (7, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_CANDIDATE_FOCUS | '1');
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("泥", context.conversionText ());
+ EXPECT_EQ ("hao", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (5, context.focusedCandidate ());
+
+ observer.clear ();
+ context.processKeyEvent (VKEY_PAGE_BEGIN);
+ EXPECT_EQ (5, context.cursor ());
+ EXPECT_EQ ("nihao", context.inputText ());
+ EXPECT_EQ ("", context.selectedText ());
+ EXPECT_EQ ("你好", context.conversionText ());
+ EXPECT_EQ ("", context.restText ());
+ EXPECT_EQ ("ni hao|", context.auxiliaryText ());
+ EXPECT_LT (0, context.candidates ().size ());
+ EXPECT_EQ ("", observer.commitedText ());
+ EXPECT_EQ (1, observer.preeditTextCount ());
+ EXPECT_EQ (1, observer.lookupTableCount ());
+ EXPECT_EQ (0, observer.commitTextCount ());
+ EXPECT_EQ (0, context.focusedCandidate ());
+ }
+}
diff --git a/src/PyZyTypes.h b/src/PyZyTypes.h
new file mode 100644
index 0000000..bc17f96
--- /dev/null
+++ b/src/PyZyTypes.h
@@ -0,0 +1,146 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __TYPES_H_
+#define __TYPES_H_
+
+#include <glib.h>
+
+namespace PyZy {
+
+#define PINYIN_ID_VOID (-1)
+#define PINYIN_ID_ZERO (0)
+#define PINYIN_ID_B (1)
+#define PINYIN_ID_C (2)
+#define PINYIN_ID_CH (3)
+#define PINYIN_ID_D (4)
+#define PINYIN_ID_F (5)
+#define PINYIN_ID_G (6)
+#define PINYIN_ID_H (7)
+#define PINYIN_ID_J (8)
+#define PINYIN_ID_K (9)
+#define PINYIN_ID_L (10)
+#define PINYIN_ID_M (11)
+#define PINYIN_ID_N (12)
+#define PINYIN_ID_P (13)
+#define PINYIN_ID_Q (14)
+#define PINYIN_ID_R (15)
+#define PINYIN_ID_S (16)
+#define PINYIN_ID_SH (17)
+#define PINYIN_ID_T (18)
+#define PINYIN_ID_W (19)
+#define PINYIN_ID_X (20)
+#define PINYIN_ID_Y (21)
+#define PINYIN_ID_Z (22)
+#define PINYIN_ID_ZH (23)
+#define PINYIN_ID_A (24)
+#define PINYIN_ID_AI (25)
+#define PINYIN_ID_AN (26)
+#define PINYIN_ID_ANG (27)
+#define PINYIN_ID_AO (28)
+#define PINYIN_ID_E (29)
+#define PINYIN_ID_EI (30)
+#define PINYIN_ID_EN (31)
+#define PINYIN_ID_ENG (32)
+#define PINYIN_ID_ER (33)
+#define PINYIN_ID_I (34)
+#define PINYIN_ID_IA (35)
+#define PINYIN_ID_IAN (36)
+#define PINYIN_ID_IANG (37)
+#define PINYIN_ID_IAO (38)
+#define PINYIN_ID_IE (39)
+#define PINYIN_ID_IN (40)
+#define PINYIN_ID_ING (41)
+#define PINYIN_ID_IONG (42)
+#define PINYIN_ID_IU (43)
+#define PINYIN_ID_O (44)
+#define PINYIN_ID_ONG (45)
+#define PINYIN_ID_OU (46)
+#define PINYIN_ID_U (47)
+#define PINYIN_ID_UA (48)
+#define PINYIN_ID_UAI (49)
+#define PINYIN_ID_UAN (50)
+#define PINYIN_ID_UANG (51)
+#define PINYIN_ID_UE (52)
+#define PINYIN_ID_VE PINYIN_ID_UE
+#define PINYIN_ID_UI (53)
+#define PINYIN_ID_UN (54)
+#define PINYIN_ID_UO (55)
+#define PINYIN_ID_V (56)
+#define PINYIN_ID_NG PINYIN_ID_VOID
+
+#define PINYIN_INCOMPLETE_PINYIN (1U << 0)
+
+#define PINYIN_CORRECT_GN_TO_NG (1U << 1)
+#define PINYIN_CORRECT_MG_TO_NG (1U << 2)
+#define PINYIN_CORRECT_IOU_TO_IU (1U << 3)
+#define PINYIN_CORRECT_UEI_TO_UI (1U << 4)
+#define PINYIN_CORRECT_UEN_TO_UN (1U << 5)
+#define PINYIN_CORRECT_UE_TO_VE (1U << 6)
+#define PINYIN_CORRECT_V_TO_U (1U << 7)
+#define PINYIN_CORRECT_ON_TO_ONG (1U << 8)
+#define PINYIN_CORRECT_ALL (0x000001fe)
+
+#define PINYIN_FUZZY_C_CH (1U << 9)
+#define PINYIN_FUZZY_CH_C (1U << 10)
+#define PINYIN_FUZZY_Z_ZH (1U << 11)
+#define PINYIN_FUZZY_ZH_Z (1U << 12)
+#define PINYIN_FUZZY_S_SH (1U << 13)
+#define PINYIN_FUZZY_SH_S (1U << 14)
+#define PINYIN_FUZZY_L_N (1U << 15)
+#define PINYIN_FUZZY_N_L (1U << 16)
+#define PINYIN_FUZZY_F_H (1U << 17)
+#define PINYIN_FUZZY_H_F (1U << 18)
+#define PINYIN_FUZZY_L_R (1U << 19)
+#define PINYIN_FUZZY_R_L (1U << 20)
+#define PINYIN_FUZZY_K_G (1U << 21)
+#define PINYIN_FUZZY_G_K (1U << 22)
+
+#define PINYIN_FUZZY_AN_ANG (1U << 23)
+#define PINYIN_FUZZY_ANG_AN (1U << 24)
+#define PINYIN_FUZZY_EN_ENG (1U << 25)
+#define PINYIN_FUZZY_ENG_EN (1U << 26)
+#define PINYIN_FUZZY_IN_ING (1U << 27)
+#define PINYIN_FUZZY_ING_IN (1U << 28)
+#define PINYIN_FUZZY_IAN_IANG PINYIN_FUZZY_AN_ANG
+#define PINYIN_FUZZY_IANG_IAN PINYIN_FUZZY_ANG_AN
+#define PINYIN_FUZZY_UAN_UANG PINYIN_FUZZY_AN_ANG
+#define PINYIN_FUZZY_UANG_UAN PINYIN_FUZZY_ANG_AN
+#define PINYIN_FUZZY_ALL (0x1ffffe00)
+
+struct Pinyin {
+ const gchar *text;
+ const wchar_t *bopomofo;
+ const gchar *sheng;
+ const gchar *yun;
+ struct {
+ guint8 sheng;
+ guint8 yun;
+ } pinyin_id[3];
+ const guint len;
+ const guint flags;
+};
+
+#define MAX_UTF8_LEN 6
+#define MAX_PHRASE_LEN 16
+
+}; // namespace PyZy
+
+#endif // __TYPES_H_
diff --git a/src/PyZyUtil.h b/src/PyZyUtil.h
new file mode 100644
index 0000000..0940053
--- /dev/null
+++ b/src/PyZyUtil.h
@@ -0,0 +1,120 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-pinyin - The Chinese PinYin engine for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __UTIL_H_
+#define __UTIL_H_
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined(HAVE_UUID_CREATE)
+# include <uuid.h>
+#elif defined(HAVE_LIBUUID)
+# include <uuid/uuid.h>
+#endif
+
+#include <sys/utsname.h>
+#include <cstdlib>
+#include <string>
+#include <glib/gtypes.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <memory>
+#else
+# include <boost/shared_ptr.hpp>
+# include <boost/scoped_ptr.hpp>
+
+namespace std {
+ // import boost::shared_ptr to std namespace
+ using boost::shared_ptr;
+ // import boost::scoped_ptr to std namespace, and rename to unique_ptr
+ // XXX: the unique_ptr can transfer the pointer ownership,
+ // but scoped_ptr cannot.
+ template<typename T> class unique_ptr : public boost::scoped_ptr<T> {};
+};
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+namespace PyZy {
+
+class UUID {
+public:
+ UUID (void)
+ {
+ uuid_t u;
+#if defined(HAVE_UUID_CREATE)
+ gchar* uuid;
+ uuid_create (&u, 0);
+ uuid_to_string (&u, &uuid, 0);
+ g_strlcpy (m_uuid, uuid, sizeof(m_uuid));
+ free(uuid);
+#elif defined(HAVE_LIBUUID)
+ uuid_generate (u);
+ uuid_unparse_lower (u, m_uuid);
+#endif
+ }
+
+ operator const gchar * (void) const
+ {
+ return m_uuid;
+ }
+
+private:
+ gchar m_uuid[256];
+};
+
+class Uname {
+public:
+ Uname (void)
+ {
+ uname (&m_buf);
+ }
+
+ const gchar *hostname (void) const { return m_buf.nodename; }
+private:
+ struct utsname m_buf;
+};
+
+class Hostname : public Uname {
+public:
+ operator const gchar * (void) const
+ {
+ return hostname ();
+ }
+};
+
+class Env : public std::string {
+public:
+ Env (const gchar *name)
+ {
+ gchar *str;
+ str = std::getenv (name);
+ assign (str != NULL ? str : "");
+ }
+
+ operator const gchar *(void) const
+ {
+ return c_str();
+ }
+};
+
+}; // namespace PyZy
+
+#endif // __UTIL_H_
diff --git a/src/main.db b/src/main.db
new file mode 120000
index 0000000..9aac38c
--- /dev/null
+++ b/src/main.db
@@ -0,0 +1 @@
+../data/db/android/android.db \ No newline at end of file
diff --git a/src/phrases.txt b/src/phrases.txt
new file mode 100644
index 0000000..bdc209c
--- /dev/null
+++ b/src/phrases.txt
@@ -0,0 +1,78 @@
+; ibus 拼音输入法--自定义短语配置文件
+;
+; 说明:
+; **注意**
+; 修改后请重新启动输入法
+; 或者运行下面命令:pkill -x -u $USERNAME ibus-engine-pinyin
+; 格式:
+; 英文字符串=短语
+; 英文字符串=#动态短语
+; 动态短语:
+; 函数 含义 举例
+; ${year} 年(4位) 2006、2008
+; ${year_yy} 年(2位) 06、08
+; ${month} 月 12、8、3
+; ${month_mm} 月 12、08、03
+; ${day} 日 3、13、22
+; ${day_dd} 日 03、13、22
+; ${weekday} 星期 0、1、2、5、6
+; ${fullhour} 时(24小时制) 02、08、13、23
+; ${halfhour} 时(12小时制) 02、08、01、11
+; ${ampm} AM、PM(英) AM、PM(大写)
+; ${minute} 分 02、08、15、28
+; ${second} 秒 02、08、15、28
+; ${year_cn} 年(中文4位) 二〇〇六
+; ${year_yy_cn} 年(中文2位) 〇六
+; ${month_cn} 月(中文) 十二、八、三
+; ${day_cn} 日(中文) 三、十三、二十二
+; ${weekday_cn} 星期(中文) 日、一、二、五、六
+; ${fullhour_cn} 月(中文24时制) 二、八、十三、二十三
+; ${halfhour_cn} 时(中文12时制) 二、八、一、十一
+; ${ampm_cn} 上午下午(中文) 上午、下午
+; ${minute_cn} 分(中文) 零二、零八、十五、二十八
+; ${second_cn} 秒(中文) 零二、零八、十五、二十八
+
+aazhi=AA制
+agu=A股
+bchao=B超
+bgu=B股
+bichao=B超
+bsn=╭∩╮(︶︿︶)╭∩╮鄙视你!
+ceo=首席执行官
+cpan=C盘
+cyuyan=C语言
+dna=脱氧核糖核酸
+dpan=D盘
+gps=全球定位系统
+haha=^_^
+haha=o(∩∩)o...哈哈
+hehe=:-)
+hgu=H股
+icka=IC卡
+ipdianhua=IP电话
+ipdizhi=IP地址
+ipka=IP卡
+kalaok=卡拉OK
+pcji=PC机
+qiruiqq=奇瑞QQ
+qqhao=QQ号
+simka=SIM卡
+tixu=T恤
+tixushan=T恤衫
+txingtai=T型台
+txu=T恤
+upan=U盘
+xixi=(*^__^*) 嘻嘻……
+xshexian=X射线
+
+; 动态短语
+rq=#${year}年${month}月${day}日
+rq=#${year_cn}年${month_cn}月${day_cn}日
+rq=#${year}-${month}-${day}
+sj=#${fullhour}时${minute}分${second}秒
+sj=#${fullhour}:${minute}:${second}
+xq=#星期${weekday_cn}
+lb=#礼拜${weekday_cn}
+
+; 暂时不支持
+; nl=#农历${lunardate}
diff --git a/src/pinyin.xml.in.in b/src/pinyin.xml.in.in
new file mode 100644
index 0000000..94b803a
--- /dev/null
+++ b/src/pinyin.xml.in.in
@@ -0,0 +1,42 @@
+<?xml version=\"1.0\" encoding=\"utf-8\"?>
+<!-- filename: pinyin.xml -->
+<component>
+ <name>org.freedesktop.IBus.Pinyin</name>
+ <description>Pinyin Component</description>
+ <exec>${libexecdir}/ibus-engine-pinyin --ibus</exec>
+ <version>@VERSION@</version>
+ <author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+ <license>GPL</license>
+ <homepage>http://code.google.com/p/ibus</homepage>
+ <textdomain>ibus-pinyin</textdomain>
+
+ <engines>
+ <engine>
+ <name>pinyin</name>
+ <language>zh</language>
+ <license>GPL</license>
+ <author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;
+BYVoid &lt;byvoid1@gmail.com&gt;
+Peng Wu &lt;alexepico@gmail.com&gt;</author>
+ <icon>${pkgdatadir}/icons/ibus-pinyin.svg</icon>
+ <layout>us</layout>
+ <longname>Pinyin</longname>
+ <description>Pinyin input method</description>
+ <rank>99</rank>
+ </engine>
+ <engine>
+ <name>bopomofo</name>
+ <language>zh</language>
+ <license>GPL</license>
+ <author>BYVoid &lt;byvoid1@gmail.com&gt;
+Peng Huang &lt;shawn.p.huang@gmail.com&gt;
+Peng Wu &lt;alexepico@gmail.com&gt;</author>
+ <icon>${pkgdatadir}/icons/ibus-bopomofo.svg</icon>
+ <layout>us</layout>
+ <longname>Bopomofo</longname>
+ <description>Bopomofo input method</description>
+ <rank>98</rank>
+ </engine>
+ </engines>
+
+</component>
diff --git a/src/special_table b/src/special_table
new file mode 100644
index 0000000..6ef631a
--- /dev/null
+++ b/src/special_table
@@ -0,0 +1,573 @@
+# 该文件采用 UTF-8 编码.
+#
+# 以 # 号开头的行是注释.
+#
+# 等号左边是英文按键序列 等号右边是以逗号隔开的特殊字符串序列.
+# 在输入的时候先键入 i 然后再键入相应的英文按键序列
+# 候选词窗口中就会显示出对应应的特殊字符串序列.
+#
+# 以 X_ 开头的特殊字符串为内建标识 例如 X_DATE_1 代表阿拉伯数字格式的当前日期.
+#
+# 用户可以按照该文件格式自行编辑定制的用户文件 ~/.ibus/pinyin/special_table
+#
+
+# 当前日期
+# riqi = "X_DATE_1","X_DATE_2","X_DATE_3","X_DATE_4","X_DATE_5"
+# date = "X_DATE_1","X_DATE_2","X_DATE_3","X_DATE_4","X_DATE_5"
+# rq = "X_DATE_1","X_DATE_2","X_DATE_3","X_DATE_4","X_DATE_5"
+
+# 当前时间
+# shijian = "X_TIME_1","X_TIME_2","X_TIME_3","X_TIME_4","X_TIME_5","X_TIME_6","X_TIME_7","X_TIME_8"
+# time = "X_TIME_1","X_TIME_2","X_TIME_3","X_TIME_4","X_TIME_5","X_TIME_6","X_TIME_7","X_TIME_8"
+# sj = "X_TIME_1","X_TIME_2","X_TIME_3","X_TIME_4","X_TIME_5","X_TIME_6","X_TIME_7","X_TIME_8"
+
+# 当前星期
+# xingqi = "X_DAY_1","X_DAY_2","X_DAY_3","X_DAY_4"
+# tian = "X_DAY_1","X_DAY_2","X_DAY_3","X_DAY_4"
+# day = "X_DAY_1","X_DAY_2","X_DAY_3","X_DAY_4"
+# xq = "X_DAY_1","X_DAY_2","X_DAY_3","X_DAY_4"
+
+# 各种标点符号
+bdfh = "‐","–","—","―","‖","‘","’","“"
+bdfh = "”","‥","…","‰","′","″","‵","※"
+bdfh = "€","℃","℅","℉","№","℡","、","。"
+bdfh = "〃","々","〆","〇","〈","〉","《","》"
+bdfh = "「","」","『","』","【","】","〒","〓"
+bdfh = "〔","〕","〖","〗","〝","〞","〡","〢"
+bdfh = "〣","〤","〥","〦","〧","〨","〩","〾"
+bdfh = "︰","︱","︳","︴","︵","︶","︷","︸"
+bdfh = "︹","︺","︻","︼","︽","︾","︿","﹀"
+bdfh = "﹁","﹂","﹃","﹄","﹉","﹊","﹋","﹌"
+bdfh = "﹍","﹎","﹏","﹐","﹑","﹒","﹔","﹕"
+bdfh = "﹖","﹗","﹙","﹚","﹛","﹜","﹝","﹞"
+bdfh = "﹟","﹠","﹡","﹢","﹣","﹤","﹥","﹦"
+bdfh = "﹨","﹩","﹪","﹫","!",""","#","$"
+bdfh = "%","&","'","(",")","*","+",","
+bdfh = "-",".","/",":",";","<","=",">"
+bdfh = "?","@","[","\","]","^","_","`"
+bdfh = "{","|","}","~","¢","£","¬"," ̄"
+bdfh = "¦","¥","§","¨","°","±","·","×"
+bdfh = "÷","㈱"
+
+# 同上
+fuhao = "‐","–","—","―","‖","‘","’","“"
+fuhao = "”","‥","…","‰","′","″","‵","※"
+fuhao = "€","℃","℅","℉","№","℡","、","。"
+fuhao = "〃","々","〆","〇","〈","〉","《","》"
+fuhao = "「","」","『","』","【","】","〒","〓"
+fuhao = "〔","〕","〖","〗","〝","〞","〡","〢"
+fuhao = "〣","〤","〥","〦","〧","〨","〩","〾"
+fuhao = "︰","︱","︳","︴","︵","︶","︷","︸"
+fuhao = "︹","︺","︻","︼","︽","︾","︿","﹀"
+fuhao = "﹁","﹂","﹃","﹄","﹉","﹊","﹋","﹌"
+fuhao = "﹍","﹎","﹏","﹐","﹑","﹒","﹔","﹕"
+fuhao = "﹖","﹗","﹙","﹚","﹛","﹜","﹝","﹞"
+fuhao = "﹟","﹠","﹡","﹢","﹣","﹤","﹥","﹦"
+fuhao = "﹨","﹩","﹪","﹫","!",""","#","$"
+fuhao = "%","&","'","(",")","*","+",","
+fuhao = "-",".","/",":",";","<","=",">"
+fuhao = "?","@","[","\","]","^","_","`"
+fuhao = "{","|","}","~","¢","£","¬"," ̄"
+fuhao = "¦","¥","§","¨","°","±","·","×"
+fuhao = "÷","㈱"
+
+# 同上
+symbol = "‐","–","—","―","‖","‘","’","“"
+symbol = "”","‥","…","‰","′","″","‵","※"
+symbol = "€","℃","℅","℉","№","℡","、","。"
+symbol = "〃","々","〆","〇","〈","〉","《","》"
+symbol = "「","」","『","』","【","】","〒","〓"
+symbol = "〔","〕","〖","〗","〝","〞","〡","〢"
+symbol = "〣","〤","〥","〦","〧","〨","〩","〾"
+symbol = "︰","︱","︳","︴","︵","︶","︷","︸"
+symbol = "︹","︺","︻","︼","︽","︾","︿","﹀"
+symbol = "﹁","﹂","﹃","﹄","﹉","﹊","﹋","﹌"
+symbol = "﹍","﹎","﹏","﹐","﹑","﹒","﹔","﹕"
+symbol = "﹖","﹗","﹙","﹚","﹛","﹜","﹝","﹞"
+symbol = "﹟","﹠","﹡","﹢","﹣","﹤","﹥","﹦"
+symbol = "﹨","﹩","﹪","﹫","!",""","#","$"
+symbol = "%","&","'","(",")","*","+",","
+symbol = "-",".","/",":",";","<","=",">"
+symbol = "?","@","[","\","]","^","_","`"
+symbol = "{","|","}","~","¢","£","¬"," ̄"
+symbol = "¦","¥","§","¨","°","±","·","×"
+symbol = "÷","㈱"
+
+section = "§"
+duanluo = "§"
+dl = "§"
+
+degree = "°","℃","℉"
+du = "°","℃","℉"
+
+centigrade = "℃"
+sheshidu = "℃"
+ssd = "℃"
+fahrenheit = "℉"
+huashidu = "℉"
+hsd = "℉"
+
+middledot = "·"
+midpoint = "·"
+zhongdian = "·"
+zd = "·"
+
+plusminus = "±"
+jiajian = "±"
+jj = "±"
+
+multiplication = "×"
+chenghao = "×"
+ch = "×"
+
+division = "÷"
+chuhao = "÷"
+ch = "÷"
+
+numero = "№"
+bianhao = "№"
+no = "№"
+No = "№"
+bh = "№"
+
+telephone = "℡"
+dianhua = "℡"
+dh = "℡"
+
+# 各种数字
+shuziromanc = "Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ"
+shuziromans = "ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ"
+shuziquan = "①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩"
+shuzikuo = "⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽"
+shuzikuo = "⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇"
+shuzidian = "⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑"
+shuzidian = "⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"
+shuzikuohan = "㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩"
+
+dxrmsz = "Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ"
+xxrmsz = "ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ"
+yqsz = "①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩"
+khsz = "⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽"
+khsz = "⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇"
+dsz = "⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑"
+dsz = "⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"
+khhysz = "㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩"
+
+# 同上
+numromanc = "Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ"
+numromans = "ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ"
+numcircle = "①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩"
+numparen = "⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽"
+numparen = "⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇"
+numdot = "⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑"
+numdot = "⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"
+numpareni = "㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩"
+
+# 大写数字
+daxieshuzi = "零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"
+dxsz = "零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"
+shuzidaxie = "零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"
+dxling = "零"
+dxyi = "壹"
+dxer = "贰"
+dxsan = "叁"
+dxsi = "肆"
+dxwu = "伍"
+dxliu = "陆"
+dxqi = "柒"
+dxba = "捌"
+dxjiu = "玖"
+dxshi = "拾"
+dxbai = "佰"
+dxqian = "仟"
+
+# 货币符号
+huobi = "¤","€","$","¢","£","¥"
+currency = "¤","€","$","¢","£","¥"
+ouyuan = "€"
+euro = "€"
+meiyuan = "$"
+dollar = "$"
+yingbang = "£"
+pound = "£"
+renminbi = "¥"
+rmb = "¥"
+yen = "¥"
+yuan = "¥"
+
+# 箭头
+jiantou = "←","↑","→","↓","↔","↕","↖","↗"
+jiantou = "↘","↙","↵","⇐","⇑","⇒","⇓","⇔","⇕"
+arrow = "←","↑","→","↓","↔","↕","↖","↗"
+arrow = "↘","↙","↵","⇐","⇑","⇒","⇓","⇔","⇕"
+
+# 音调符号
+yindiao = "ˇ","ˉ","ˊ","ˋ","˙"
+shengdiao = "ˇ","ˉ","ˊ","ˋ","˙"
+tone = "ˇ","ˉ","ˊ","ˋ","˙"
+sd = "ˇ","ˉ","ˊ","ˋ","˙"
+yisheng = "ˉ"
+ersheng = "ˊ"
+sansheng = "ˇ"
+sisheng = "ˋ"
+
+# 数学符号
+shuxue = "∀","∂","∃","∅","∆","∇","∈","∉"
+shuxue = "∋","∏","∑","−","∕","∗","∙","√"
+shuxue = "∝","∞","∟","∠","∣","∥","∧","∨"
+shuxue = "∩","∪","∫","∬","∮","∴","∵","∶"
+shuxue = "∷","∼","∽","≅","≈","≌","≒","≠"
+shuxue = "≡","≤","≥","≦","≧","≪","≫","≮"
+shuxue = "≯","⊂","⊃","⊄","⊆","⊇","⊕","⊗"
+shuxue = "⊙","⊥","⊿","⋅","⌒","⌠","⌡","〈"
+shuxue = "〉","㏑","㏒","±","×","÷"
+
+# 同上
+math = "∀","∂","∃","∅","∆","∇","∈","∉"
+math = "∋","∏","∑","−","∕","∗","∙","√"
+math = "∝","∞","∟","∠","∣","∥","∧","∨"
+math = "∩","∪","∫","∬","∮","∴","∵","∶"
+math = "∷","∼","∽","≅","≈","≌","≒","≠"
+math = "≡","≤","≥","≦","≧","≪","≫","≮"
+math = "≯","⊂","⊃","⊄","⊆","⊇","⊕","⊗"
+math = "⊙","⊥","⊿","⋅","⌒","⌠","⌡","〈"
+math = "〉","㏑","㏒","±","×","÷"
+
+elementof = "∈"
+shuyu = "∈"
+sy = "∈"
+product = "∏"
+qiuji = "∏"
+summation = "∑"
+qiuhe = "∑"
+
+squareroot = "√"
+root = "√"
+pingfanggen = "√"
+gen = "√"
+pfg = "√"
+
+therefore = "∴"
+suoyi = "∴"
+sy = "∴"
+
+because = "∵"
+yinwei = "∵"
+yw = "∵"
+
+parallel = "∥"
+pingxing = "∥"
+px = "∥"
+
+and = "∧"
+yu = "∧"
+
+or = "∨"
+huo = "∨"
+
+intersection = "∩"
+jiao = "∩"
+
+union = "∪"
+lianhe = "∪"
+bing = "∪"
+
+integral = "∫"
+jifen = "∫"
+jf = "∫"
+
+uptack = "⊥"
+orthogonal = "⊥"
+chuizhi = "⊥"
+cz = "⊥"
+
+# 拉丁扩展
+latin = "à","á","è","é","ê","ì","í","ò"
+latin = "ó","ù","ú","ü","ā","ē","ě","ī"
+latin = "ń","ň","ō","ū","ǎ","ǐ","ǒ","ǔ"
+latin = "ǖ","ǘ","ǚ","ǜ","ǹ","ɑ","ɡ"
+lading = "à","á","è","é","ê","ì","í","ò"
+lading = "ó","ù","ú","ü","ā","ē","ě","ī"
+lading = "ń","ň","ō","ū","ǎ","ǐ","ǒ","ǔ"
+lading = "ǖ","ǘ","ǚ","ǜ","ǹ","ɑ","ɡ"
+
+# 希腊字母
+xila = "Α","Β","Γ","Δ","Ε","Ζ","Η","Θ"
+xila = "Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π"
+xila = "Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω"
+xila = "α","β","γ","δ","ε","ζ","η","θ"
+xila = "ι","κ","λ","μ","ν","ξ","ο","π"
+xila = "ρ","ς","σ","τ","υ","φ","χ","ψ"
+xila = "ω","ϑ","ϕ"
+
+# 同上
+greek = "Α","Β","Γ","Δ","Ε","Ζ","Η","Θ"
+greek = "Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π"
+greek = "Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω"
+greek = "α","β","γ","δ","ε","ζ","η","θ"
+greek = "ι","κ","λ","μ","ν","ξ","ο","π"
+greek = "ρ","ς","σ","τ","υ","φ","χ","ψ"
+greek = "ω","ϑ","ϕ"
+
+Alpha = "Α"
+Beta = "Β"
+Gamma = "Γ"
+Delta = "Δ"
+Epsilon = "Ε"
+Zeta = "Ζ"
+Eta = "Η"
+Theta = "Θ"
+Iota = "Ι"
+Kappa = "Κ"
+Lamda = "Λ"
+Mu = "Μ"
+Nu = "Ν"
+Xi = "Ξ"
+Omicron = "Ο"
+Pi = "Π"
+Rho = "Ρ"
+Sigma = "Σ"
+Tau = "Τ"
+Upsilon = "Υ"
+Phi = "Φ"
+Chi = "Χ"
+Psi = "Ψ"
+Omega = "Ω"
+
+ALPHA = "Α"
+BETA = "Β"
+GAMMA = "Γ"
+DELTA = "Δ"
+EPSILON = "Ε"
+ZETA = "Ζ"
+ETA = "Η"
+THETA = "Θ"
+IOTA = "Ι"
+KAPPA = "Κ"
+LAMDA = "Λ"
+MU = "Μ"
+NU = "Ν"
+XI = "Ξ"
+OMICRON = "Ο"
+PI = "Π"
+RHO = "Ρ"
+SIGMA = "Σ"
+TAU = "Τ"
+UPSILON = "Υ"
+PHI = "Φ"
+CHI = "Χ"
+PSI = "Ψ"
+OMEGA = "Ω"
+
+alpha = "α"
+beta = "β"
+gamma = "γ"
+delta = "δ"
+epsilon = "ε"
+zeta = "ζ"
+eta = "η"
+theta = "θ"
+iota = "ι"
+kappa = "κ"
+lamda = "λ"
+mu = "μ"
+nu = "ν"
+xi = "ξ"
+omicron = "ο"
+pi = "π"
+rho = "ρ"
+stigma = "ς"
+sigma = "σ"
+tau = "τ"
+upsilon = "υ"
+phi = "φ"
+chi = "χ"
+psi = "ψ"
+omega = "ω"
+
+
+# 俄语字母
+eyu = "Ё","А","Б","В","Г","Д","Е","Ж"
+eyu = "З","И","Й","К","Л","М","Н","О"
+eyu = "П","Р","С","Т","У","Ф","Х","Ц"
+eyu = "Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю"
+eyu = "Я","а","б","в","г","д","е","ж"
+eyu = "з","и","й","к","л","м","н","о"
+eyu = "п","р","с","т","у","ф","х","ц"
+eyu = "ч","ш","щ","ъ","ы","ь","э","ю"
+eyu = "я","ё"
+
+# 同上
+cyrillic = "Ё","А","Б","В","Г","Д","Е","Ж"
+cyrillic = "З","И","Й","К","Л","М","Н","О"
+cyrillic = "П","Р","С","Т","У","Ф","Х","Ц"
+cyrillic = "Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю"
+cyrillic = "Я","а","б","в","г","д","е","ж"
+cyrillic = "з","и","й","к","л","м","н","о"
+cyrillic = "п","р","с","т","у","ф","х","ц"
+cyrillic = "ч","ш","щ","ъ","ы","ь","э","ю"
+cyrillic = "я","ё"
+
+# 制表符
+table = "─","━","│","┃","┄","┅","┆","┇"
+table = "┈","┉","┊","┋","┌","┍","┎","┏"
+table = "┐","┑","┒","┓","└","┕","┖","┗"
+table = "┘","┙","┚","┛","├","┝","┞","┟"
+table = "┠","┡","┢","┣","┤","┥","┦","┧"
+table = "┨","┩","┪","┫","┬","┭","┮","┯"
+table = "┰","┱","┲","┳","┴","┵","┶","┷"
+table = "┸","┹","┺","┻","┼","┽","┾","┿"
+table = "╀","╁","╂","╃","╄","╅","╆","╇"
+table = "╈","╉","╊","╋","═","║","╒","╓"
+table = "╔","╕","╖","╗","╘","╙","╚","╛"
+table = "╜","╝","╞","╟","╠","╡","╢","╣"
+table = "╤","╥","╦","╧","╨","╩","╪","╫"
+table = "╬","╭","╮","╯","╰","╱","╲","╳"
+
+# 同上
+zbf = "─","━","│","┃","┄","┅","┆","┇"
+zbf = "┈","┉","┊","┋","┌","┍","┎","┏"
+zbf = "┐","┑","┒","┓","└","┕","┖","┗"
+zbf = "┘","┙","┚","┛","├","┝","┞","┟"
+zbf = "┠","┡","┢","┣","┤","┥","┦","┧"
+zbf = "┨","┩","┪","┫","┬","┭","┮","┯"
+zbf = "┰","┱","┲","┳","┴","┵","┶","┷"
+zbf = "┸","┹","┺","┻","┼","┽","┾","┿"
+zbf = "╀","╁","╂","╃","╄","╅","╆","╇"
+zbf = "╈","╉","╊","╋","═","║","╒","╓"
+zbf = "╔","╕","╖","╗","╘","╙","╚","╛"
+zbf = "╜","╝","╞","╟","╠","╡","╢","╣"
+zbf = "╤","╥","╦","╧","╨","╩","╪","╫"
+zbf = "╬","╭","╮","╯","╰","╱","╲","╳"
+
+# 同上
+zhibiao = "─","━","│","┃","┄","┅","┆","┇"
+zhibiao = "┈","┉","┊","┋","┌","┍","┎","┏"
+zhibiao = "┐","┑","┒","┓","└","┕","┖","┗"
+zhibiao = "┘","┙","┚","┛","├","┝","┞","┟"
+zhibiao = "┠","┡","┢","┣","┤","┥","┦","┧"
+zhibiao = "┨","┩","┪","┫","┬","┭","┮","┯"
+zhibiao = "┰","┱","┲","┳","┴","┵","┶","┷"
+zhibiao = "┸","┹","┺","┻","┼","┽","┾","┿"
+zhibiao = "╀","╁","╂","╃","╄","╅","╆","╇"
+zhibiao = "╈","╉","╊","╋","═","║","╒","╓"
+zhibiao = "╔","╕","╖","╗","╘","╙","╚","╛"
+zhibiao = "╜","╝","╞","╟","╠","╡","╢","╣"
+zhibiao = "╤","╥","╦","╧","╨","╩","╪","╫"
+zhibiao = "╬","╭","╮","╯","╰","╱","╲","╳"
+
+
+# 块状图案
+block = "▁","▂","▃","▄","▅","▆","▇","█"
+block = "▉","▊","▋","▌","▍","▎","▏","▓"
+block = "▔","▕"
+
+kuai = "▁","▂","▃","▄","▅","▆","▇","█"
+kuai = "▉","▊","▋","▌","▍","▎","▏","▓"
+kuai = "▔","▕"
+
+cfx = "▁","▂","▃","▄","▅","▆","▇","█"
+cfx = "▉","▊","▋","▌","▍","▎","▏","▓"
+cfx = "▔","▕"
+
+# 几何形状
+fangkuai = "■","□"
+square = "■","□"
+zfx = "■","□"
+heifangkuai = "■"
+blacksquare = "■"
+hfk = "■"
+baifangkuai = "□"
+whitesquare = "□"
+bfk = "□"
+
+sanjiao = "▲","△","▼","▽","◢","◣","◤","◥"
+triangle = "▲","△","▼","▽"
+sjx = "▲","△","▼","▽","◢","◣","◤","◥"
+shangsanjiao = "▲","△"
+xiasanjiao = "▼","▽"
+ssj = "▲","△"
+xsj = "▼","▽"
+hssj = "▲"
+bssj = "△"
+hxsj = "▼"
+bxsj = "▽"
+
+zuanshi = "◆","◇"
+diamond = "◆","◇"
+hzs = "◆"
+bzs = "◇"
+
+yuanquan = "○","◎","●"
+circle = "○","◎","●"
+yq = "○","◎","●"
+byq = "○"
+syq = "◎"
+hyq = "●"
+
+wujiaoxing = "★","☆"
+wjx = "★","☆"
+star = "★","☆"
+hwjx = "★"
+bwjx = "☆"
+
+taiyang = "☉"
+sun = "☉"
+
+xingbie = "♀","♂"
+xb = "♀","♂"
+cixing = "♀"
+nvren = "♀"
+female = "♀"
+
+xiongxing = "♂"
+nanren = "♂"
+male = "♂"
+
+# 偏旁部首
+pianpang = "⺁","⺄","⺈","⺋","⺌","⺗","⺧","⺪"
+pianpang = "⺮","⺳","⺶","⺷","⺻","⻊"
+radical = "⺁","⺄","⺈","⺋","⺌","⺗","⺧","⺪"
+radical = "⺮","⺳","⺶","⺷","⺻","⻊"
+pp = "⺁","⺄","⺈","⺋","⺌","⺗","⺧","⺪"
+pp = "⺮","⺳","⺶","⺷","⺻","⻊"
+
+# 汉字结构描述符
+jiegou = "⿰","⿱","⿲","⿳","⿴","⿵","⿶","⿷"
+jiegou = "⿸","⿹","⿺","⿻"
+struct = "⿰","⿱","⿲","⿳","⿴","⿵","⿶","⿷"
+struct = "⿸","⿹","⿺","⿻"
+hzjg = "⿰","⿱","⿲","⿳","⿴","⿵","⿶","⿷"
+hzjg = "⿸","⿹","⿺","⿻"
+
+
+# 度量单位
+danwei = "㎎","㎏","㎜","㎝","㎞","㎡","㏄","㏎","㏕"
+unit = "㎎","㎏","㎜","㎝","㎞","㎡","㏄","㏎","㏕"
+
+mg = "㎎"
+kg = "㎏"
+mm = "㎜"
+cm = "㎝"
+km = "㎞"
+m2 = "㎡"
+cc = "㏄"
+KM = "㏎"
+mil = "㏕"
+
+# 中文拼音
+pinyina = "ā","á","ǎ","à"
+pinyinA = "Ā","Á","Ǎ","À"
+pinyine = "ē","é","ě","è"
+pinyinE = "Ē","É","Ě","È"
+pinyini = "ī","í","ǐ","ì"
+pinyinI = "Ī","Í","Ǐ","Ì"
+pinyino = "ō","ó","ǒ","ò"
+pinyinO = "Ō","Ó","Ǒ","Ò"
+pinyinu = "ū","ú","ǔ","ù"
+pinyinU = "Ū","Ú","Ǔ","Ù"
+pinyinv = "ǖ","ǘ","ǚ","ǜ","ü"
+pinyinV = "Ǖ","Ǘ","Ǚ","Ǜ","Ü"
+
+# 其他
+hp = "Peng Huang <shawn.p.huang@gmail.com>"
diff --git a/tools/googlecode_upload.py b/tools/googlecode_upload.py
new file mode 100755
index 0000000..d2d5f97
--- /dev/null
+++ b/tools/googlecode_upload.py
@@ -0,0 +1,248 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, 2007 Google Inc. All Rights Reserved.
+# Author: danderson@google.com (David Anderson)
+#
+# Script for uploading files to a Google Code project.
+#
+# This is intended to be both a useful script for people who want to
+# streamline project uploads and a reference implementation for
+# uploading files to Google Code projects.
+#
+# To upload a file to Google Code, you need to provide a path to the
+# file on your local machine, a small summary of what the file is, a
+# project name, and a valid account that is a member or owner of that
+# project. You can optionally provide a list of labels that apply to
+# the file. The file will be uploaded under the same name that it has
+# in your local filesystem (that is, the "basename" or last path
+# component). Run the script with '--help' to get the exact syntax
+# and available options.
+#
+# Note that the upload script requests that you enter your
+# googlecode.com password. This is NOT your Gmail account password!
+# This is the password you use on googlecode.com for committing to
+# Subversion and uploading files. You can find your password by going
+# to http://code.google.com/hosting/settings when logged in with your
+# Gmail account. If you have already committed to your project's
+# Subversion repository, the script will automatically retrieve your
+# credentials from there (unless disabled, see the output of '--help'
+# for details).
+#
+# If you are looking at this script as a reference for implementing
+# your own Google Code file uploader, then you should take a look at
+# the upload() function, which is the meat of the uploader. You
+# basically need to build a multipart/form-data POST request with the
+# right fields and send it to https://PROJECT.googlecode.com/files .
+# Authenticate the request using HTTP Basic authentication, as is
+# shown below.
+#
+# Licensed under the terms of the Apache Software License 2.0:
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Questions, comments, feature requests and patches are most welcome.
+# Please direct all of these to the Google Code users group:
+# http://groups.google.com/group/google-code-hosting
+
+"""Google Code file uploader script.
+"""
+
+__author__ = 'danderson@google.com (David Anderson)'
+
+import httplib
+import os.path
+import optparse
+import getpass
+import base64
+import sys
+
+
+def upload(file, project_name, user_name, password, summary, labels=None):
+ """Upload a file to a Google Code project's file server.
+
+ Args:
+ file: The local path to the file.
+ project_name: The name of your project on Google Code.
+ user_name: Your Google account name.
+ password: The googlecode.com password for your account.
+ Note that this is NOT your global Google Account password!
+ summary: A small description for the file.
+ labels: an optional list of label strings with which to tag the file.
+
+ Returns: a tuple:
+ http_status: 201 if the upload succeeded, something else if an
+ error occured.
+ http_reason: The human-readable string associated with http_status
+ file_url: If the upload succeeded, the URL of the file on Google
+ Code, None otherwise.
+ """
+ # The login is the user part of user@gmail.com. If the login provided
+ # is in the full user@domain form, strip it down.
+ if user_name.endswith('@gmail.com'):
+ user_name = user_name[:user_name.index('@gmail.com')]
+
+ form_fields = [('summary', summary)]
+ if labels is not None:
+ form_fields.extend([('label', l.strip()) for l in labels])
+
+ content_type, body = encode_upload_request(form_fields, file)
+
+ upload_host = '%s.googlecode.com' % project_name
+ upload_uri = '/files'
+ auth_token = base64.b64encode('%s:%s'% (user_name, password))
+ headers = {
+ 'Authorization': 'Basic %s' % auth_token,
+ 'User-Agent': 'Googlecode.com uploader v0.9.4',
+ 'Content-Type': content_type,
+ }
+
+ server = httplib.HTTPSConnection(upload_host)
+ server.request('POST', upload_uri, body, headers)
+ resp = server.getresponse()
+ server.close()
+
+ if resp.status == 201:
+ location = resp.getheader('Location', None)
+ else:
+ location = None
+ return resp.status, resp.reason, location
+
+
+def encode_upload_request(fields, file_path):
+ """Encode the given fields and file into a multipart form body.
+
+ fields is a sequence of (name, value) pairs. file is the path of
+ the file to upload. The file will be uploaded to Google Code with
+ the same file name.
+
+ Returns: (content_type, body) ready for httplib.HTTP instance
+ """
+ BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla'
+ CRLF = '\r\n'
+
+ body = []
+
+ # Add the metadata about the upload first
+ for key, value in fields:
+ body.extend(
+ ['--' + BOUNDARY,
+ 'Content-Disposition: form-data; name="%s"' % key,
+ '',
+ value,
+ ])
+
+ # Now add the file itself
+ file_name = os.path.basename(file_path)
+ f = open(file_path, 'rb')
+ file_content = f.read()
+ f.close()
+
+ body.extend(
+ ['--' + BOUNDARY,
+ 'Content-Disposition: form-data; name="filename"; filename="%s"'
+ % file_name,
+ # The upload server determines the mime-type, no need to set it.
+ 'Content-Type: application/octet-stream',
+ '',
+ file_content,
+ ])
+
+ # Finalize the form body
+ body.extend(['--' + BOUNDARY + '--', ''])
+
+ return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body)
+
+
+def upload_find_auth(file_path, project_name, summary, labels=None,
+ user_name=None, password=None, tries=3):
+ """Find credentials and upload a file to a Google Code project's file server.
+
+ file_path, project_name, summary, and labels are passed as-is to upload.
+
+ Args:
+ file_path: The local path to the file.
+ project_name: The name of your project on Google Code.
+ summary: A small description for the file.
+ labels: an optional list of label strings with which to tag the file.
+ config_dir: Path to Subversion configuration directory, 'none', or None.
+ user_name: Your Google account name.
+ tries: How many attempts to make.
+ """
+
+ while tries > 0:
+ if user_name is None:
+ # Read username if not specified or loaded from svn config, or on
+ # subsequent tries.
+ sys.stdout.write('Please enter your googlecode.com username: ')
+ sys.stdout.flush()
+ user_name = sys.stdin.readline().rstrip()
+ if password is None:
+ # Read password if not loaded from svn config, or on subsequent tries.
+ print 'Please enter your googlecode.com password.'
+ print '** Note that this is NOT your Gmail account password! **'
+ print 'It is the password you use to access Subversion repositories,'
+ print 'and can be found here: http://code.google.com/hosting/settings'
+ password = getpass.getpass()
+
+ status, reason, url = upload(file_path, project_name, user_name, password,
+ summary, labels)
+ # Returns 403 Forbidden instead of 401 Unauthorized for bad
+ # credentials as of 2007-07-17.
+ if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]:
+ # Rest for another try.
+ user_name = password = None
+ tries = tries - 1
+ else:
+ # We're done.
+ break
+
+ return status, reason, url
+
+
+def main():
+ parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY '
+ '-p PROJECT [options] FILE')
+ parser.add_option('-s', '--summary', dest='summary',
+ help='Short description of the file')
+ parser.add_option('-p', '--project', dest='project',
+ help='Google Code project name')
+ parser.add_option('-u', '--user', dest='user',
+ help='Your Google Code username')
+ parser.add_option('-w', '--password', dest='password',
+ help='Your Google Code password')
+ parser.add_option('-l', '--labels', dest='labels',
+ help='An optional list of comma-separated labels to attach '
+ 'to the file')
+
+ options, args = parser.parse_args()
+
+ if not options.summary:
+ parser.error('File summary is missing.')
+ elif not options.project:
+ parser.error('Project name is missing.')
+ elif len(args) < 1:
+ parser.error('File to upload not provided.')
+ elif len(args) > 1:
+ parser.error('Only one file may be specified.')
+
+ file_path = args[0]
+
+ if options.labels:
+ labels = options.labels.split(',')
+ else:
+ labels = None
+
+ status, reason, url = upload_find_auth(file_path, options.project,
+ options.summary, labels,
+ options.user, options.password)
+ if url:
+ print 'The file was uploaded successfully.'
+ print 'URL: %s' % url
+ return 0
+ else:
+ print 'An error occurred. Your file was not uploaded.'
+ print 'Google Code upload server said: %s (%s)' % (reason, status)
+ return 1
+
+
+if __name__ == '__main__':
+ sys.exit(main())