diff options
author | Hiroshi Sumita <hsumita@chromium.org> | 2011-10-24 15:54:35 +0900 |
---|---|---|
committer | Hiroshi Sumita <hsumita@chromium.org> | 2011-10-24 15:54:35 +0900 |
commit | 5221438adafbdc2db5f404be699e10369d1a41ad (patch) | |
tree | c120a61496bea84d9fc7f174fa9117336b3a81f4 | |
parent | c39096f6ea544ba53a2bf349cb00910598421c9a (diff) | |
download | pyzy-5221438adafbdc2db5f404be699e10369d1a41ad.tar.gz |
Initial implementation of libpyzy.
BUG=
TEST=
Review URL: http://codereview.appspot.com/5235062
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 @@ -0,0 +1,6 @@ +Peng Huang <shawn.p.huang@gmail.com> +BYVoid <byvoid1@gmail.com> +Peng Wu <alexepico@gmail.com> + +ru.po: +koterpillar @@ -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/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 <shawn.p.huang@gmail.com></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 <shawn.p.huang@gmail.com> +BYVoid <byvoid1@gmail.com> +Peng Wu <alexepico@gmail.com></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 <byvoid1@gmail.com> +Peng Huang <shawn.p.huang@gmail.com> +Peng Wu <alexepico@gmail.com></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()) |