commit 5a8dc8f3b3f3e923f6cc54543b84f6953bdac05a Author: Markus Scherer Date: Mon May 23 21:13:20 2011 +0000 ICU-8581 ICU4J 4.8 maintenance branch copied from trunk at r30135 X-SVN-Rev: 30137 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..774b8534b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,454 @@ +* text=auto !eol + +*.c text !eol +*.cc text !eol +*.classpath text !eol +*.cpp text !eol +*.css text !eol +*.dsp text !eol +*.dsw text !eol +*.filters text !eol +*.h text !eol +*.htm text !eol +*.html text !eol +*.in text !eol +*.java text !eol +*.launch text !eol +*.mak text !eol +*.md text !eol +*.MF text !eol +*.mk text !eol +*.pl text !eol +*.pm text !eol +*.project text !eol +*.properties text !eol +*.py text !eol +*.rc text !eol +*.sh text eol=lf +*.sln text !eol +*.stub text !eol +*.txt text !eol +*.ucm text !eol +*.vcproj text !eol +*.vcxproj text !eol +*.xml text !eol +*.xsl text !eol +*.xslt text !eol +Makefile text !eol +configure text !eol +LICENSE text !eol +README text !eol + +*.bin -text +*.brk -text +*.cnv -text +*.icu -text +*.res -text +*.nrm -text +*.spp -text +*.tri2 -text + +/build.properties -text +demos/.settings/org.eclipse.core.resources.prefs -text +demos/manifest.stub -text +eclipse-build/features.template/com.ibm.icu.base/.project -text +eclipse-build/features.template/com.ibm.icu.base/build.properties -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/.classpath -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/.project -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/META-INF/MANIFEST.MF -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/build.properties -text +eclipse-build/plugins.template/com.ibm.icu.base.tests/plugin.properties -text +eclipse-build/plugins.template/com.ibm.icu.base/.classpath -text +eclipse-build/plugins.template/com.ibm.icu.base/.project -text +eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs -text +eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs -text +eclipse-build/plugins.template/com.ibm.icu.base/META-INF/MANIFEST.MF -text +eclipse-build/plugins.template/com.ibm.icu.base/build.properties -text +eclipse-build/plugins.template/com.ibm.icu.base/plugin.properties -text +eclipse-build/plugins.template/com.ibm.icu.tests/META-INF/MANIFEST.MF -text +eclipse-build/plugins.template/com.ibm.icu.tests/plugin.properties -text +eclipse-build/plugins.template/com.ibm.icu/META-INF/MANIFEST.MF -text +main/classes/charset/.classpath -text +main/classes/charset/.project -text +main/classes/charset/.settings/org.eclipse.core.resources.prefs -text +main/classes/charset/.settings/org.eclipse.jdt.core.prefs -text +main/classes/charset/manifest.stub -text +main/classes/collate/.classpath -text +main/classes/collate/.project -text +main/classes/collate/.settings/org.eclipse.core.resources.prefs -text +main/classes/collate/.settings/org.eclipse.jdt.core.prefs -text +main/classes/collate/.settings/org.eclipse.jdt.ui.prefs -text +main/classes/collate/collate-build.launch -text +main/classes/core/.classpath -text +main/classes/core/.project -text +main/classes/core/.settings/org.eclipse.core.resources.prefs -text +main/classes/core/.settings/org.eclipse.jdt.core.prefs -text +main/classes/core/manifest.stub -text +main/classes/currdata/.externalToolBuilders/copy-data-currdata.launch -text +main/classes/currdata/.settings/org.eclipse.core.resources.prefs -text +main/classes/currdata/.settings/org.eclipse.jdt.core.prefs -text +main/classes/currdata/.settings/org.eclipse.jdt.ui.prefs -text +main/classes/currdata/currdata-build.launch -text +main/classes/langdata/.externalToolBuilders/copy-data-langdata.launch -text +main/classes/langdata/.settings/org.eclipse.core.resources.prefs -text +main/classes/langdata/.settings/org.eclipse.jdt.core.prefs -text +main/classes/langdata/.settings/org.eclipse.jdt.ui.prefs -text +main/classes/langdata/langdata-build.launch -text +main/classes/localespi/.classpath -text +main/classes/localespi/.project -text +main/classes/localespi/.settings/org.eclipse.core.resources.prefs -text +main/classes/localespi/.settings/org.eclipse.jdt.core.prefs -text +main/classes/localespi/manifest.stub -text +main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider -text +main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider -text +main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider -text +main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider -text +main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider -text +main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider -text +main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider -text +main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider -text +main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider -text +main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties -text +main/classes/regiondata/.externalToolBuilders/copy-data-regiondata.launch -text +main/classes/regiondata/.settings/org.eclipse.core.resources.prefs -text +main/classes/regiondata/.settings/org.eclipse.jdt.core.prefs -text +main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs -text +main/classes/regiondata/regiondata-build.launch -text +main/classes/translit/.externalToolBuilders/copy-data-translit.launch -text +main/classes/translit/.settings/org.eclipse.core.resources.prefs -text +main/classes/translit/.settings/org.eclipse.jdt.core.prefs -text +main/classes/translit/.settings/org.eclipse.jdt.ui.prefs -text +main/classes/translit/translit-build.launch -text +main/shared/.project -text +main/shared/.settings/org.eclipse.core.resources.prefs -text +main/shared/data/icudata.jar -text +main/shared/data/testdata.jar -text +main/tests/charset/.classpath -text +main/tests/charset/.project -text +main/tests/charset/.settings/org.eclipse.core.resources.prefs -text +main/tests/charset/.settings/org.eclipse.jdt.core.prefs -text +main/tests/charset/manifest.stub -text +main/tests/collate/.classpath -text +main/tests/collate/.project -text +main/tests/collate/.settings/org.eclipse.core.resources.prefs -text +main/tests/collate/.settings/org.eclipse.jdt.core.prefs -text +main/tests/collate/.settings/org.eclipse.jdt.ui.prefs -text +main/tests/collate/collate-tests-build.launch -text +main/tests/core/.classpath -text +main/tests/core/.project -text +main/tests/core/.settings/org.eclipse.core.resources.prefs -text +main/tests/core/.settings/org.eclipse.jdt.core.prefs -text +main/tests/core/manifest.stub -text +main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict -text +main/tests/core/src/com/ibm/icu/dev/data/resources/testmessages.properties -text +main/tests/core/src/com/ibm/icu/dev/data/thai6.ucs -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.DateNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.InvalidFormatException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.JavaTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.OlsonTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.RelativeDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.BigDecimal.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.MathContext.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ArabicShapingException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.CurrencyPluralInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralRules.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.SimpleDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.StringPrepParseException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.TimeUnitFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.BuddhistCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Calendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ChineseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.CopticCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Currency.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateInterval.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateTimeRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.EthiopicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.GregorianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.HebrewCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IllformedLocaleException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IndianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IslamicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.JapaneseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.SimpleTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TaiwanCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ULocale.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.VTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.DateNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.InvalidFormatException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.JavaTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.OlsonTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.RelativeDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.TimeZoneAdapter.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.impl.locale.LocaleSyntaxException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.math.BigDecimal.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.math.MathContext.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.ArabicShapingException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.ChineseDateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.ChineseDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.CurrencyPluralInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateIntervalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DateIntervalInfo.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DecimalFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.DecimalFormatSymbols.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.MessageFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.MessageFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.NumberFormat$Field.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.NumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.PluralFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.PluralRules.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.RuleBasedNumberFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.SelectFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.SimpleDateFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.StringPrepParseException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.text.TimeUnitFormat.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.AnnualTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.BuddhistCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.Calendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.ChineseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.CopticCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.Currency.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.DateInterval.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.DateTimeRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.EthiopicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.GregorianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.HebrewCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.IllformedLocaleException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.IndianCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.InitialTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.IslamicCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.JapaneseCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.RuleBasedTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.SimpleTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.TaiwanCalendar.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.TimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.ULocale.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.UResourceTypeMismatchException.dat -text +main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.4/com.ibm.icu.util.VTimeZone.dat -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges1.16.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges1.32.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges2.16.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges2.32.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges3.16.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges3.32.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRangesEmpty.16.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRangesEmpty.32.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRangesSingleValue.16.tri2 -text +main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRangesSingleValue.32.tri2 -text +main/tests/framework/.classpath -text +main/tests/framework/.project -text +main/tests/framework/.settings/org.eclipse.core.resources.prefs -text +main/tests/framework/.settings/org.eclipse.jdt.core.prefs -text +main/tests/framework/manifest.stub -text +main/tests/localespi/.classpath -text +main/tests/localespi/.project -text +main/tests/localespi/.settings/org.eclipse.core.resources.prefs -text +main/tests/localespi/manifest.stub -text +main/tests/packaging/.settings/org.eclipse.core.resources.prefs -text +main/tests/packaging/.settings/org.eclipse.jdt.core.prefs -text +main/tests/packaging/.settings/org.eclipse.jdt.ui.prefs -text +main/tests/packaging/packaging-tests-build.launch -text +main/tests/translit/.externalToolBuilders/copy-translit-test-data.launch -text +main/tests/translit/.settings/org.eclipse.core.resources.prefs -text +main/tests/translit/.settings/org.eclipse.jdt.core.prefs -text +main/tests/translit/.settings/org.eclipse.jdt.ui.prefs -text +main/tests/translit/translit-tests-build.launch -text +/manifest.stub -text +tools/build/.settings/org.eclipse.core.resources.prefs -text +tools/build/icu4j28.api.gz -text +tools/build/icu4j30.api.gz -text +tools/build/icu4j32.api.gz -text +tools/build/icu4j34.api.gz -text +tools/build/icu4j341.api.gz -text +tools/build/icu4j342.api.gz -text +tools/build/icu4j343.api.gz -text +tools/build/icu4j36.api.gz -text +tools/build/icu4j38.api.gz -text +tools/build/icu4j381.api.gz -text +tools/build/icu4j400.api.gz -text +tools/build/icu4j401.api.gz -text +tools/build/icu4j42.api.gz -text +tools/build/icu4j421.api.gz -text +tools/build/icu4j44.api.gz -text +tools/build/icu4j44.api2.gz -text +tools/build/icu4j46.api2.gz -text +tools/build/manifest.stub -text +tools/misc/.settings/org.eclipse.core.resources.prefs -text +tools/misc/manifest.stub -text + +# The following file types are stored in Git-LFS. +*.jar filter=lfs diff=lfs merge=lfs -text +*.dat filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..110959588d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +/*.jar +/.project +demos/out +/doc +main/classes/charset/out +main/classes/collate/out +main/classes/core/out +main/classes/currdata/out +main/classes/langdata/out +main/classes/localespi/out +main/classes/regiondata/out +main/classes/translit/out +main/tests/charset/out +main/tests/collate/out +main/tests/core/out +main/tests/framework/out +main/tests/localespi/out +main/tests/packaging/out +main/tests/translit/out +/out +tools/build/out +tools/misc/out diff --git a/APIChangeReport.html b/APIChangeReport.html new file mode 100644 index 00000000000..c122f855ff1 --- /dev/null +++ b/APIChangeReport.html @@ -0,0 +1,208 @@ + + + + +ICU4J API Comparison: ICU4J 4.6 with ICU4J 4.8 + + + +

ICU4J API Comparison: ICU4J 4.6 with ICU4J 4.8

+ +
+

Removed from ICU4J 4.6

+ +

Package com.ibm.icu.lang

+ + +

Package com.ibm.icu.text

+ + +

Package com.ibm.icu.util

+ + + +
+

Deprecated or Obsoleted in ICU4J 4.8

+

(no API obsoleted)

+ +
+

Changed in ICU4J 4.8 (old, new)

+ +

Package com.ibm.icu.text

+ + + +
+

Promoted to stable in ICU4J 4.8

+ +

Package com.ibm.icu.text

+ + + +
+

Added in ICU4J 4.8

+ +

Package com.ibm.icu.charset

+ + +

Package com.ibm.icu.lang

+ + +

Package com.ibm.icu.text

+ + +

Package com.ibm.icu.util

+ + +
+

Contents generated by ReportAPI tool on Fri May 13 12:38:20 EDT 2011
Copyright (C) 2011, International Business Machines Corporation, All Rights Reserved.

+ + diff --git a/build.properties b/build.properties new file mode 100644 index 00000000000..002cdbd686f --- /dev/null +++ b/build.properties @@ -0,0 +1,8 @@ +#******************************************************************************* +#* Copyright (C) 2009-2011, International Business Machines Corporation and * +#* others. All Rights Reserved. * +#******************************************************************************* +api.report.version = 48 +api.report.prev.version = 46 +release.file.ver = 4_8 + diff --git a/build.xml b/build.xml new file mode 100644 index 00000000000..e1a919f8bb8 --- /dev/null +++ b/build.xml @@ -0,0 +1,1631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/demos/.classpath b/demos/.classpath new file mode 100644 index 00000000000..c13960c4471 --- /dev/null +++ b/demos/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/demos/.project b/demos/.project new file mode 100644 index 00000000000..69e0c1ba71f --- /dev/null +++ b/demos/.project @@ -0,0 +1,20 @@ + + + icu4j-demos + + + icu4j-charset + icu4j-core + icu4j-shared + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/demos/.settings/org.eclipse.core.resources.prefs b/demos/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..c62da786ca8 --- /dev/null +++ b/demos/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Fri Nov 05 14:18:21 EDT 2010 +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/demos/.settings/org.eclipse.jdt.core.prefs b/demos/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..1c6961a58bd --- /dev/null +++ b/demos/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,330 @@ +#Fri Aug 28 16:05:27 EDT 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=ignore +org.eclipse.jdt.core.compiler.problem.deprecation=ignore +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/demos/.settings/org.eclipse.jdt.ui.prefs b/demos/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..abf9d8707a9 --- /dev/null +++ b/demos/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,6 @@ +#Tue Jun 09 16:57:19 EDT 2009 +eclipse.preferences.version=1 +formatter_profile=_ICU4J Standard +formatter_settings_version=11 +org.eclipse.jdt.ui.javadoc=false +org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/demos/build.properties b/demos/build.properties new file mode 100644 index 00000000000..f374881842f --- /dev/null +++ b/demos/build.properties @@ -0,0 +1,5 @@ +#******************************************************************************* +#* Copyright (C) 2009, International Business Machines Corporation and * +#* others. All Rights Reserved. * +#******************************************************************************* +shared.dir = ../main/shared diff --git a/demos/build.xml b/demos/build.xml new file mode 100644 index 00000000000..a47a7c4de4a --- /dev/null +++ b/demos/build.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demos/demos-build.launch b/demos/demos-build.launch new file mode 100644 index 00000000000..cead29ec957 --- /dev/null +++ b/demos/demos-build.launch @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/manifest.stub b/demos/manifest.stub new file mode 100644 index 00000000000..5180077ab25 --- /dev/null +++ b/demos/manifest.stub @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Main-Class: com.ibm.icu.dev.demo.Launcher +Class-Path: icu4j.jar + +Name: com/ibm/icu/dev/demo +Specification-Title: ICU for Java Demo +Specification-Version: @SPECVERSION@ +Specification-Vendor: ICU +Implementation-Title: ICU for Java Demo +Implementation-Version: @IMPLVERSION@ +Implementation-Vendor: IBM Corporation +Implementation-Vendor-Id: com.ibm +Copyright-Info: @COPYRIGHT@ diff --git a/demos/src/com/ibm/icu/dev/demo/Launcher.java b/demos/src/com/ibm/icu/dev/demo/Launcher.java new file mode 100644 index 00000000000..2d8804453ee --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/Launcher.java @@ -0,0 +1,192 @@ +/* + ******************************************************************************* + * Copyright (C) 2007, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Color; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import com.ibm.icu.dev.demo.impl.DemoApplet; +import com.ibm.icu.dev.demo.impl.DemoUtility; +import com.ibm.icu.util.VersionInfo; + + +/** + * @author srl + * Application to provide a panel of demos to launch + */ +public class Launcher extends DemoApplet { + private static final long serialVersionUID = -8054963875776183877L; + + /** + * base package of all demos + */ + public static final String demoBase = "com.ibm.icu.dev.demo"; + /** + * list of classes, relative to the demoBase. all must have a static void main(String[]) + */ + public static final String demoList[] = { + "calendar.CalendarApp", + "charsetdet.DetectingViewer", + "holiday.HolidayCalendarDemo", +// "number.CurrencyDemo", -- console +// "rbbi.DBBIDemo", +// "rbbi.RBBIDemo", +// "rbbi.TextBoundDemo", + "rbnf.RbnfDemo", +// "timescale.PivotDemo", -- console + "translit.Demo", + }; + + public class LauncherFrame extends Frame implements ActionListener { + private static final long serialVersionUID = -8054963875776183878L; + + public Button buttonList[] = new Button[demoList.length]; // one button for each demo + public Label statusLabel; + private DemoApplet applet; + + LauncherFrame(DemoApplet applet) { + init(); + this.applet = applet; + } + + public void init() { + // close down when close is clicked. + // TODO: this should be factored.. + addWindowListener( + new WindowAdapter() { + public void windowClosing(WindowEvent e) { + setVisible(false); + dispose(); + + if (applet != null) { + applet.demoClosed(); + } else System.exit(0); + } + } ); + + setBackground(DemoUtility.bgColor); + setLayout(new BorderLayout()); + + Panel topPanel = new Panel(); + topPanel.setLayout(new GridLayout(5,3)); + + for(int i=0;i 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) || + i < locales.length - 1 && + locales[i].getLanguage().equals(locales[i+1].getLanguage())) + { + localeMenu.addItem( locales[i].getDisplayName() ); + } else { + localeMenu.addItem( locales[i].getDisplayLanguage()); + } + + thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale); + + if (thisMatch >= bestMatch) { + bestMatch = thisMatch; + selectMe = i; + } + } + + localeMenu.setBackground(DemoUtility.choiceColor); + localeMenu.select(selectMe); + + Label localeLabel =new Label("Display Locale"); + localeLabel.setFont(DemoUtility.labelFont); + + localePanel.add(localeLabel); + localePanel.add(localeMenu); + DemoUtility.fixGrid(localePanel,2); + + localeMenu.addItemListener( new ItemListener() { + public void itemStateChanged(ItemEvent e) { + Locale loc = locales[localeMenu.getSelectedIndex()]; + System.out.println("Change locale to " + loc.getDisplayName()); + + for (int i = 0; i < calendars.length; i++) { + calendars[i].setLocale(loc); + } + millisFormat(); + } + } ); + } + add(rollAddPanel); + add(DemoUtility.createSpacer()); + add(localePanel); + add(DemoUtility.createSpacer()); + +// COPYRIGHT + Panel copyrightPanel = new Panel(); + addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT), + DemoUtility.creditFont); + DemoUtility.fixGrid(copyrightPanel,1); + add(copyrightPanel); + } + + /** + * This function is called when users change the pattern text. + */ + public void setFormatFromPattern() { + String timePattern = patternText.getText(); + + for (int i = 0; i < calendars.length; i++) { + calendars[i].applyPattern(timePattern); + } + + millisFormat(); + } + + /** + * This function is called when it is necessary to parse the time + * string in one of the formatted date fields + */ + public void textChanged(int index) { + String rightString = calendars[index].text.getText(); + + ParsePosition status = new ParsePosition(0); + + if (rightString.length() == 0) + { + errorText("Error: no input to parse!"); + return; + } + + try { + Date date = calendars[index].format.parse(rightString, status); + time = date.getTime(); + } + catch (Exception e) { + for (int i = 0; i < calendars.length; i++) { + if (i != index) { + calendars[i].text.setText("ERROR"); + } + } + errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString); + return; + } + + int start = calendars[index].text.getSelectionStart(); + int end = calendars[index].text.getSelectionEnd(); + + millisFormat(); + + calendars[index].text.select(start,end); + } + + /** + * This function is called when it is necessary to format the time + * in the "Millis" text field. + */ + public void millisFormat() { + String out = ""; + + for (int i = 0; i < calendars.length; i++) { + try { + out = calendars[i].format.format(new Date(time)); + calendars[i].text.setText(out); + } + catch (Exception e) { + calendars[i].text.setText("ERROR"); + errorText("Exception: " + e.getClass().toString() + " formatting " + + calendars[i].name + " " + time); + } + } + } + + + /** + * This function is called when users change the pattern text. + */ + public void patternTextChanged() { + setFormatFromPattern(); + } + + /** + * This function is called when users select a new representative city. + */ + public void cityChanged() { + TimeZone timeZone = TimeZone.getDefault(); + + for (int i = 0; i < calendars.length; i++) { + calendars[i].format.setTimeZone(timeZone); + } + millisFormat(); + } + + /** + * This function is called when users select a new time field + * to add or roll its value. + */ + public void dateFieldChanged(boolean isUp) { + int field = kRollAddFields[dateMenu.getSelectedIndex()].field; + + for (int i = 0; i < calendars.length; i++) + { + if (calendars[i].rollAdd.getState()) + { + Calendar c = calendars[i].calendar; + c.setTime(new Date(time)); + + if (getAdd.getState()) { + c.add(field, isUp ? 1 : -1); + } else { + c.roll(field, isUp); + } + + time = c.getTime().getTime(); + millisFormat(); + break; + } + } + } + + /** + * Print out the error message while debugging this program. + */ + public void errorText(String s) + { + if (true) { + System.out.println(s); + } + } + + /** + * Called if an action occurs in the CalendarCalcFrame object. + */ + public void actionPerformed(ActionEvent evt) + { + // *** Button events are handled here. + Object obj = evt.getSource(); + System.out.println("action " + obj); + if (obj instanceof Button) { + if (evt.getSource() == up) { + dateFieldChanged(false); + } else + if (evt.getSource() == down) { + dateFieldChanged(true); + } + } + } + + /** + * Handles the event. Returns true if the event is handled and should not + * be passed to the parent of this component. The default event handler + * calls some helper methods to make life easier on the programmer. + */ + protected void processKeyEvent(KeyEvent evt) + { + System.out.println("key " + evt); + if (evt.getID() == KeyEvent.KEY_RELEASED) { + if (evt.getSource() == patternText) { + patternTextChanged(); + } + else { + for (int i = 0; i < calendars.length; i++) { + if (evt.getSource() == calendars[i].text) { + textChanged(i); + } + } + } + } + } + + protected void processWindowEvent(WindowEvent evt) + { + System.out.println("window " + evt); + if (evt.getID() == WindowEvent.WINDOW_CLOSING && + evt.getSource() == this) { + this.hide(); + this.dispose(); + + if (applet != null) { + applet.demoClosed(); + } else System.exit(0); + } + } + + /* + protected void processEvent(AWTEvent evt) + { + if (evt.getID() == AWTEvent. Event.ACTION_EVENT && evt.target == up) { + dateFieldChanged(true); + return true; + } + else if (evt.id == Event.ACTION_EVENT && evt.target == down) { + dateFieldChanged(false); + return true; + } + } + */ + + private static final int FIELD_COLUMNS = 35; + + + class CalendarRec { + public CalendarRec(String nameStr, Calendar cal) + { + name = nameStr; + calendar = cal; + rollAdd = new Checkbox(); + + text = new JTextField("",FIELD_COLUMNS); + text.setFont(DemoUtility.editFont); + + format = DateFormat.getDateInstance(cal, DateFormat.FULL, + Locale.getDefault()); + //format.applyPattern(DEFAULT_FORMAT); + } + + public void setLocale(Locale loc) { + String pattern = toPattern(); + + format = DateFormat.getDateInstance(calendar, DateFormat.FULL, + loc); + applyPattern(pattern); + } + + public void applyPattern(String pattern) { + if (format instanceof SimpleDateFormat) { + ((SimpleDateFormat)format).applyPattern(pattern); +//hey {al} - +// } else if (format instanceof java.text.SimpleDateFormat) { +// ((java.text.SimpleDateFormat)format).applyPattern(pattern); + } + } + + private String toPattern() { + if (format instanceof SimpleDateFormat) { + return ((SimpleDateFormat)format).toPattern(); +//hey {al} - +// } else if (format instanceof java.text.SimpleDateFormat) { +// return ((java.text.SimpleDateFormat)format).toPattern(); + } + return ""; + } + + Calendar calendar; + DateFormat format; + String name; + JTextField text; + Checkbox rollAdd; + } + + private final CalendarRec[] calendars = { + new CalendarRec("Gregorian", new GregorianCalendar()), + new CalendarRec("Hebrew", new HebrewCalendar()), + new CalendarRec("Islamic (civil)", makeIslamic(true)), + new CalendarRec("Islamic (true)", makeIslamic(false)), + new CalendarRec("Buddhist", new BuddhistCalendar()), + new CalendarRec("Japanese", new JapaneseCalendar()), +// new CalendarRec("Chinese", new ChineseCalendar()), + }; + + static private final Calendar makeIslamic(boolean civil) { + IslamicCalendar cal = new IslamicCalendar(); + cal.setCivil(civil); + return cal; + } +} + +class RollAddField { + RollAddField(int field, String name) { + this.field = field; + this.name = name; + } + int field; + String name; +} diff --git a/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java new file mode 100644 index 00000000000..fd76ec7d17d --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java @@ -0,0 +1,442 @@ +/* + ******************************************************************************* + * Copyright (C) 1997-2007, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.dev.demo.calendar; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.dev.demo.impl.DemoApplet; +import com.ibm.icu.dev.demo.impl.DemoUtility; +import com.ibm.icu.text.DateFormat; +import com.ibm.icu.util.BuddhistCalendar; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.GregorianCalendar; +import com.ibm.icu.util.HebrewCalendar; +import com.ibm.icu.util.IslamicCalendar; +import com.ibm.icu.util.JapaneseCalendar; +import com.ibm.icu.util.SimpleTimeZone; + +/** + * A Frame is a top-level window with a title. The default layout for a frame + * is BorderLayout. The CalendarFrame class defines the window layout of + * CalendarDemo. + */ +class CalendarFrame extends Frame +{ + /** + * For serialization + */ + private static final long serialVersionUID = -4289697663503820619L; + + private static final boolean DEBUG = false; + + private DemoApplet applet; + + /** + * Constructs a new CalendarFrame that is initially invisible. + */ + public CalendarFrame(DemoApplet myApplet) + { + super("Calendar Demo"); + this.applet = myApplet; + init(); + + // When the window is closed, we want to shut down the applet or application + addWindowListener( + new WindowAdapter() { + public void windowClosing(WindowEvent e) { + setVisible(false); + dispose(); + + if (applet != null) { + applet.demoClosed(); + } else System.exit(0); + } + } ); + } + + private Choice displayMenu; + private Locale[] locales = DemoUtility.getG7Locales(); + + private Calendar calendars[] = new Calendar[2]; + private Choice calMenu[] = new Choice[2]; + private ColoredLabel monthLabel[] = new ColoredLabel[2]; + private DateFormat monthFormat[] = new DateFormat[2]; + + private Button prevYear; + private Button prevMonth; + private Button gotoToday; + private Button nextMonth; + private Button nextYear; + private CalendarPanel calendarPanel; + + private static void add(Container container, Component component, + GridBagLayout g, GridBagConstraints c, + int gridwidth, int weightx) + { + c.gridwidth = gridwidth; + c.weightx = weightx; + g.setConstraints(component, c); + container.add(component); + } + + /** + * Initializes the applet. You never need to call this directly, it + * is called automatically by the system once the applet is created. + */ + public void init() { + setBackground(DemoUtility.bgColor); + setLayout(new BorderLayout(10,10)); + + Panel topPanel = new Panel(); + GridBagLayout g = new GridBagLayout(); + topPanel.setLayout(g); + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.HORIZONTAL; + + // Build the two menus for selecting which calendar is displayed, + // plus the month/year label for each calendar + for (int i = 0; i < 2; i++) { + calMenu[i] = new Choice(); + for (int j = 0; j < CALENDARS.length; j++) { + calMenu[i].addItem(CALENDARS[j].name); + } + calMenu[i].setBackground(DemoUtility.choiceColor); + calMenu[i].select(i); + calMenu[i].addItemListener(new CalMenuListener()); + + // Label for the current month name + monthLabel[i] = new ColoredLabel("", COLORS[i]); + monthLabel[i].setFont(DemoUtility.titleFont); + + // And the default calendar to use for this slot + calendars[i] = CALENDARS[i].calendar; + + add(topPanel, calMenu[i], g, c, 5, 0); + add(topPanel, monthLabel[i], g, c, GridBagConstraints.REMAINDER, 1); + } + + // Now add the next/previous year/month buttons: + prevYear = new Button("<<"); + prevYear.addActionListener(new AddAction(Calendar.YEAR, -1)); + + prevMonth = new Button("<"); + prevMonth.addActionListener(new AddAction(Calendar.MONTH, -1)); + + gotoToday = new Button("Today"); + gotoToday.addActionListener( new ActionListener() + { + public void actionPerformed(ActionEvent e) { + calendarPanel.setDate( new Date() ); + updateMonthName(); + } + } ); + + nextMonth = new Button(">"); + nextMonth.addActionListener(new AddAction(Calendar.MONTH, 1)); + + nextYear = new Button(">>"); + nextYear.addActionListener(new AddAction(Calendar.YEAR, 1)); + + c.fill = GridBagConstraints.NONE; + add(topPanel, prevYear, g, c, 1, 0); + add(topPanel, prevMonth, g, c, 1, 0); + add(topPanel, gotoToday, g, c, 1, 0); + add(topPanel, nextMonth, g, c, 1, 0); + add(topPanel, nextYear, g, c, 1, 0); + + // Now add the menu for selecting the display language + Panel displayPanel = new Panel(); + { + displayMenu = new Choice(); + Locale defaultLocale = Locale.getDefault(); + int bestMatch = -1, thisMatch = -1; + int selectMe = 0; + + for (int i = 0; i < locales.length; i++) { + if (i > 0 && + locales[i].getLanguage().equals(locales[i-1].getLanguage()) || + i < locales.length - 1 && + locales[i].getLanguage().equals(locales[i+1].getLanguage())) + { + displayMenu.addItem( locales[i].getDisplayName() ); + } else { + displayMenu.addItem( locales[i].getDisplayLanguage()); + } + + thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale); + + if (thisMatch >= bestMatch) { + bestMatch = thisMatch; + selectMe = i; + } + } + + displayMenu.setBackground(DemoUtility.choiceColor); + displayMenu.select(selectMe); + + displayMenu.addItemListener( new ItemListener() + { + public void itemStateChanged(ItemEvent e) { + Locale loc = locales[displayMenu.getSelectedIndex()]; + calendarPanel.setLocale( loc ); + monthFormat[0] = monthFormat[1] = null; + updateMonthName(); + repaint(); + } + } ); + + Label l1 = new Label("Display Language:", Label.RIGHT); + l1.setFont(DemoUtility.labelFont); + + displayPanel.setLayout(new FlowLayout()); + displayPanel.add(l1); + displayPanel.add(displayMenu); + + } + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.EAST; + + add(topPanel, displayPanel, g, c, GridBagConstraints.REMAINDER, 0); + + // The title, buttons, etc. go in a panel at the top of the window + add("North", topPanel); + + // The copyright notice goes at the bottom of the window + Label copyright = new Label(DemoUtility.copyright1, Label.LEFT); + copyright.setFont(DemoUtility.creditFont); + add("South", copyright); + + // Now create the big calendar panel and stick it in the middle + calendarPanel = new CalendarPanel( locales[displayMenu.getSelectedIndex()] ); + add("Center", calendarPanel); + + for (int i = 0; i < 2; i++) { + calendarPanel.setCalendar(i, calendars[i]); + calendarPanel.setColor(i, COLORS[i]); + } + + updateMonthName(); + } + + + private void updateMonthName() + { + for (int i = 0; i < 2; i++) { + try { + if (monthFormat[i] == null) { // TODO: optimize + DateFormat f = DateFormat.getDateTimeInstance( + calendars[i], DateFormat.MEDIUM, -1, + locales[displayMenu.getSelectedIndex()]); + if (f instanceof com.ibm.icu.text.SimpleDateFormat) { + com.ibm.icu.text.SimpleDateFormat f1 = (com.ibm.icu.text.SimpleDateFormat) f; + f1.applyPattern("MMMM, yyyy G"); + f1.setTimeZone(new SimpleTimeZone(0, "UTC")); + } + monthFormat[i] = f; + } + } catch (ClassCastException e) { + //hey {lw} - there's something wrong in this routine that cuases exceptions. + System.out.println(e); + } + + monthLabel[i].setText( monthFormat[i].format( calendarPanel.firstOfMonth() )); + } + } + + /** + * CalMenuListener responds to events in the two popup menus that select + * the calendar systems to be used in the display. It figures out which + * of the two menus the event occurred in and updates the corresponding + * element of the calendars[] array to match the new selection. + */ + private class CalMenuListener implements ItemListener + { + public void itemStateChanged(ItemEvent e) + { + for (int i = 0; i < calMenu.length; i++) + { + if (e.getItemSelectable() == calMenu[i]) + { + // We found the menu that the event happened in. + // Figure out which new calendar they selected. + Calendar newCal = CALENDARS[ calMenu[i].getSelectedIndex() ].calendar; + + if (newCal != calendars[i]) + { + // If any of the other menus are set to the same new calendar + // we're about to use for this menu, set them to the current + // calendar from *this* menu so we won't have two the same + for (int j = 0; j < calendars.length; j++) { + if (j != i && calendars[j] == newCal) { + calendars[j] = calendars[i]; + calendarPanel.setCalendar(j, calendars[j]); + monthFormat[j] = null; + + for (int k = 0; k < CALENDARS.length; k++) { + if (calendars[j] == CALENDARS[k].calendar) { + calMenu[j].select(k); + break; + } + } + } + } + // Now update this menu to use the new calendar the user selected + calendars[i] = newCal; + calendarPanel.setCalendar(i, newCal); + monthFormat[i] = null; + + updateMonthName(); + } + break; + } + } + } + } + + /** + * AddAction handles the next/previous year/month buttons... + */ + private class AddAction implements ActionListener { + AddAction(int field, int amount) { + this.field = field; + this.amount = amount; + } + + public void actionPerformed(ActionEvent e) { + calendarPanel.add(field, amount); + updateMonthName(); + } + + private int field, amount; + } + + /** + * ColoredLabel is similar to java.awt.Label, with two differences: + * + * - You can set its text color + * + * - It draws text using drawString rather than using a host-specific + * "Peer" object like AWT does. On 1.2, using drawString gives + * us Bidi reordering for free. + */ + static private class ColoredLabel extends Component { + /** + * For serialization + */ + private static final long serialVersionUID = 5004484960341875722L; + public ColoredLabel(String label) { + text = label; + } + + public ColoredLabel(String label, Color c) { + text = label; + color = c; + } + + public void setText(String label) { + text = label; + repaint(); + } + + public void setFont(Font f) { + font = f; + repaint(); + } + + public void paint(Graphics g) { + FontMetrics fm = g.getFontMetrics(font); + + Rectangle bounds = getBounds(); + + g.setColor(color); + g.setFont(font); + g.drawString(text, fm.stringWidth("\u00a0"), + bounds.height/2 + fm.getHeight() + - fm.getAscent() + fm.getLeading()/2); + } + + public Dimension getPreferredSize() { + return getMinimumSize(); + } + + public Dimension getMinimumSize() { + FontMetrics fm = getFontMetrics(font); + + return new Dimension( fm.stringWidth(text) + 2*fm.stringWidth("\u00a0"), + fm.getHeight() + fm.getLeading()*2); + } + + String text; + Color color = Color.black; + Font font = DemoUtility.labelFont; + } + + /** + * Print out the error message while debugging this program. + */ + public void errorText(String s) + { + if (DEBUG) + { + System.out.println(s); + } + } + + class CalendarRec { + public CalendarRec(String nameStr, Calendar cal) + { + name = nameStr; + calendar = cal; + } + + Calendar calendar; + String name; + } + + private final CalendarRec[] CALENDARS = { + new CalendarRec("Gregorian Calendar", new GregorianCalendar()), + new CalendarRec("Hebrew Calendar", new HebrewCalendar()), + new CalendarRec("Islamic Calendar", makeIslamic(false)), + new CalendarRec("Islamic Civil Calendar ", makeIslamic(true)), + new CalendarRec("Buddhist Calendar", new BuddhistCalendar()), + new CalendarRec("Japanese Calendar", new JapaneseCalendar()), + }; + + static private final Calendar makeIslamic(boolean civil) { + IslamicCalendar cal = new IslamicCalendar(); + cal.setCivil(civil); + return cal; + } + + static final Color[] COLORS = { Color.blue, Color.black }; +} + diff --git a/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java new file mode 100644 index 00000000000..8ea94d3f9fa --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java @@ -0,0 +1,365 @@ +/* + ******************************************************************************* + * Copyright (C) 1997-2007, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.dev.demo.calendar; + +import java.awt.Canvas; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Point; +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.dev.demo.impl.DemoUtility; +import com.ibm.icu.text.DateFormatSymbols; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.SimpleTimeZone; + +class CalendarPanel extends Canvas { + + /** + * For serialization + */ + private static final long serialVersionUID = 625400018027387141L; + + public CalendarPanel( Locale locale ) { + setLocale(locale); + } + + public void setLocale(Locale locale) { + if (fDisplayLocale == null || !fDisplayLocale.equals(locale)) { + fDisplayLocale = locale; + dirty = true; + + for (int i = 0; i < fCalendar.length; i++) { + if (fCalendar[i] != null) { + fSymbols[i] = new DateFormatSymbols(fCalendar[i], + fDisplayLocale); + } + } + String lang = locale.getLanguage(); + leftToRight = !(lang.equals("iw") || lang.equals("ar")); + + repaint(); + } + } + + public void setDate(Date date) { + fStartOfMonth = date; + dirty = true; + repaint(); + } + + public void add(int field, int delta) + { + synchronized(fCalendar) { + fCalendar[0].setTime(fStartOfMonth); + fCalendar[0].add(field, delta); + fStartOfMonth = fCalendar[0].getTime(); + } + dirty = true; + repaint(); + } + + public void setColor(int index, Color c) { + fColor[index] = c; + repaint(); + } + + public void setCalendar(int index, Calendar c) { + Date date = (fCalendar[index] == null) ? new Date() + : fCalendar[index].getTime(); + + fCalendar[index] = c; + fCalendar[index].setTime(date); + + fSymbols[index] = new DateFormatSymbols(c, fDisplayLocale); + dirty = true; + repaint(); + } + + public Calendar getCalendar(int index) { + return fCalendar[index]; + } + + public Locale getDisplayLocale() { + return fDisplayLocale; + } + + public Date firstOfMonth() { + return fStartOfMonth; + } + + private Date startOfMonth(Date dateInMonth) + { + synchronized(fCalendar) { + fCalendar[0].setTime(dateInMonth); + + int era = fCalendar[0].get(Calendar.ERA); + int year = fCalendar[0].get(Calendar.YEAR); + int month = fCalendar[0].get(Calendar.MONTH); + + fCalendar[0].clear(); + fCalendar[0].set(Calendar.ERA, era); + fCalendar[0].set(Calendar.YEAR, year); + fCalendar[0].set(Calendar.MONTH, month); + fCalendar[0].set(Calendar.DATE, 1); + + return fCalendar[0].getTime(); + } + } + + private void calculate() + { + // + // As a workaround for JDK 1.1.3 and below, where Calendars and time + // zones are a bit goofy, always set my calendar's time zone to UTC. + // You would think I would want to do this in the "set" function above, + // but if I do that, the program hangs when this class is loaded, + // perhaps due to some sort of static initialization ordering problem. + // So I do it here instead. + // + fCalendar[0].setTimeZone(new SimpleTimeZone(0, "UTC")); + + Calendar c = (Calendar)fCalendar[0].clone(); // Temporary copy + + fStartOfMonth = startOfMonth(fStartOfMonth); + + // Stash away a few useful constants for this calendar and display + minDay = c.getMinimum(Calendar.DAY_OF_WEEK); + daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1; + + firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek(); + + // Stash away a Date for the start of this month + + // Find the day of week of the first day in this month + c.setTime(fStartOfMonth); + firstDayInMonth = c.get(Calendar.DAY_OF_WEEK); + int firstWeek = c.get(Calendar.WEEK_OF_MONTH); + + // Now find the # of days in the month + c.roll(Calendar.DATE, false); + daysInMonth = c.get(Calendar.DATE); + + // Finally, find the end of the month, i.e. the start of the next one + c.roll(Calendar.DATE, true); + c.add(Calendar.MONTH, 1); + c.getTime(); // JDK 1.1.2 bug workaround + c.add(Calendar.SECOND, -1); + Date endOfMonth = c.getTime(); + if(endOfMonth==null){ + //do nothing + } + endOfMonth = null; + int lastWeek = c.get(Calendar.WEEK_OF_MONTH); + + // Calculate the number of full or partial weeks in this month. + numWeeks = lastWeek - firstWeek + 1; + + dirty = false; + } + + static final int XINSET = 4; + static final int YINSET = 2; + + /* + * Convert from the day number within a month (1-based) + * to the cell coordinates on the calendar (0-based) + */ + private void dateToCell(int date, Point pos) + { + int cell = (date + firstDayInMonth - firstDayOfWeek - minDay); + if (firstDayInMonth < firstDayOfWeek) { + cell += daysInWeek; + } + + pos.x = cell % daysInWeek; + pos.y = cell / daysInWeek; + } + //private Point dateToCell(int date) { + // Point p = new Point(0,0); + // dateToCell(date, p); + // return p; + //} + + public void paint(Graphics g) { + + if (dirty) { + calculate(); + } + + Point cellPos = new Point(0,0); // Temporary variable + Dimension d = this.getSize(); + + g.setColor(Color.lightGray); + g.fillRect(0,0,d.width,d.height); + + // Draw the day names at the top + g.setColor(Color.black); + g.setFont(DemoUtility.labelFont); + FontMetrics fm = g.getFontMetrics(); + int labelHeight = fm.getHeight() + YINSET * 2; + + int v = fm.getAscent() + YINSET; + for (int i = 0; i < daysInWeek; i++) { + int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1; + String dayName = fSymbols[0].getWeekdays()[dayNum]; + + + double h; + if (leftToRight) { + h = d.width*(i + 0.5) / daysInWeek; + } else { + h = d.width*(daysInWeek - i - 0.5) / daysInWeek; + } + h -= fm.stringWidth(dayName) / 2; + + g.drawString(dayName, (int)h, v); + } + + double cellHeight = (d.height - labelHeight - 1) / numWeeks; + double cellWidth = (double)(d.width - 1) / daysInWeek; + + // Draw a white background in the part of the calendar + // that displays this month. + // First figure out how much of the first week should be shaded. + { + g.setColor(Color.white); + dateToCell(1, cellPos); + int width = (int)(cellPos.x*cellWidth); // Width of unshaded area + + if (leftToRight) { + g.fillRect((int)(width), labelHeight , + d.width - width, (int)cellHeight); + } else { + g.fillRect(0, labelHeight , + d.width - width, (int)cellHeight); + } + + // All of the intermediate weeks get shaded completely + g.fillRect(0, (int)(labelHeight + cellHeight), + d.width, (int)(cellHeight * (numWeeks - 2))); + + // Now figure out the last week. + dateToCell(daysInMonth, cellPos); + width = (int)((cellPos.x+1)*cellWidth); // Width of shaded area + + if (leftToRight) { + g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight), + width, (int)cellHeight); + } else { + g.fillRect(d.width - width, (int)(labelHeight + (numWeeks-1) * cellHeight), + width, (int)cellHeight); + } + + } + // Draw the X/Y grid lines + g.setColor(Color.black); + for (int i = 0; i <= numWeeks; i++) { + int y = (int)(labelHeight + i * cellHeight); + g.drawLine(0, y, d.width - 1, y); + } + for (int i = 0; i <= daysInWeek; i++) { + int x = (int)(i * cellWidth); + g.drawLine(x, labelHeight, x, d.height - 1); + } + + // Now loop through all of the days in the month, figure out where + // they go in the grid, and draw the day # for each one + + // Figure out the date of the first cell in the calendar display + int cell = (1 + firstDayInMonth - firstDayOfWeek - minDay); + if (firstDayInMonth < firstDayOfWeek) { + cell += daysInWeek; + } + + Calendar c = (Calendar)fCalendar[0].clone(); + c.setTime(fStartOfMonth); + c.add(Calendar.DATE, -cell); + + StringBuffer buffer = new StringBuffer(); + + for (int row = 0; row < numWeeks; row++) { + for (int col = 0; col < daysInWeek; col++) { + + g.setFont(DemoUtility.numberFont); + g.setColor(Color.black); + fm = g.getFontMetrics(); + + int cellx; + if (leftToRight) { + cellx = (int)((col) * cellWidth); + } else { + cellx = (int)((daysInWeek - col - 1) * cellWidth); + } + + int celly = (int)(row * cellHeight + labelHeight); + + for (int i = 0; i < 2; i++) { + fCalendar[i].setTime(c.getTime()); + + int date = fCalendar[i].get(Calendar.DATE); + buffer.setLength(0); + buffer.append(date); + String dayNum = buffer.toString(); + + int x; + + if (leftToRight) { + x = cellx + (int)cellWidth - XINSET - fm.stringWidth(dayNum); + } else { + x = cellx + XINSET; + } + int y = celly + + fm.getAscent() + YINSET + i * fm.getHeight(); + + if (fColor[i] != null) { + g.setColor(fColor[i]); + } + g.drawString(dayNum, x, y); + + if (date == 1 || row == 0 && col == 0) { + g.setFont(DemoUtility.numberFont); + String month = fSymbols[i].getMonths()[ + fCalendar[i].get(Calendar.MONTH)]; + + if (leftToRight) { + x = cellx + XINSET; + } else { + x = cellx + (int)cellWidth - XINSET - fm.stringWidth(month); + } + g.drawString(month, x, y); + } + } + + c.add(Calendar.DATE, 1); + } + } + } + + // Important state variables + private Calendar[] fCalendar = new Calendar[4]; + private Color[] fColor = new Color[4]; + + private Locale fDisplayLocale; + private DateFormatSymbols[] fSymbols = new DateFormatSymbols[4]; + + private Date fStartOfMonth = new Date(); // 00:00:00 on first day of month + + // Cached calculations to make drawing faster. + private transient int minDay; // Minimum legal day # + private transient int daysInWeek; // # of days in a week + private transient int firstDayOfWeek; // First day to display in week + private transient int numWeeks; // # full or partial weeks in month + private transient int daysInMonth; // # days in this month + private transient int firstDayInMonth; // Day of week of first day in month + private transient boolean leftToRight; + + private transient boolean dirty = true; +} diff --git a/demos/src/com/ibm/icu/dev/demo/calendar/package.html b/demos/src/com/ibm/icu/dev/demo/calendar/package.html new file mode 100644 index 00000000000..c1bb1050957 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/calendar/package.html @@ -0,0 +1,12 @@ + + + + + + +Calendar demo applications including date/time arithmetic. + + \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java b/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java new file mode 100644 index 00000000000..284d16d26b5 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java @@ -0,0 +1,421 @@ +/* + ************************************************************************** + * Copyright (C) 2005-2010, International Business Machines Corporation * + * and others. All Rights Reserved. * + ************************************************************************** + * + */ + +package com.ibm.icu.dev.demo.charsetdet; + +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.security.AccessControlException; + +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; +import javax.swing.KeyStroke; + +import com.ibm.icu.charset.CharsetICU; +import com.ibm.icu.dev.demo.impl.DemoApplet; +import com.ibm.icu.text.CharsetDetector; +import com.ibm.icu.text.CharsetMatch; + +/** + * This simple application demonstrates how to use the CharsetDetector API. It + * opens a file or web page, detects the encoding, and then displays it using that + * encoding. + */ +public class DetectingViewer extends JFrame implements ActionListener +{ + + /** + * For serialization + */ + private static final long serialVersionUID = -2307065724464747775L; + private JTextPane text; + private JFileChooser fileChooser; + + /** + * @throws java.awt.HeadlessException + */ + public DetectingViewer() + { + super(); + DemoApplet.demoFrameOpened(); + + try { + fileChooser = new JFileChooser(); + } catch (AccessControlException ace) { + System.err.println("no file chooser - access control exception. Continuing without file browsing. "+ace.toString()); + fileChooser = null; // + } + +// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(800, 800); + + setJMenuBar(makeMenus()); + text = new JTextPane(); + text.setContentType("text/plain"); + text.setText(""); + text.setSize(800, 800); + + Font font = new Font("Arial Unicode MS", Font.PLAIN, 24); + text.setFont(font); + + JScrollPane scrollPane = new JScrollPane(text); + + getContentPane().add(scrollPane); + setVisible(true); + + addWindowListener( + new WindowAdapter() { + public void windowClosing(WindowEvent e) { +// setVisible(false); +// dispose(); + + doQuit(); + } + } ); + + + } + + public void actionPerformed(ActionEvent event) + { + String cmd = event.getActionCommand(); + + if (cmd.equals("New...")) { + doNew(); + } else if (cmd.equals("Open File...")) { + doOpenFile(); + } else if (cmd.equals("Open URL...")) { + doOpenURL(); + } else if (cmd.equals("Quit")) { + doQuit(); + } + } + + public static void main(String[] args) + { + new DetectingViewer(); + } + + private void errorDialog(String title, String msg) + { + JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE); + } + + private BufferedInputStream openFile(File file) + { + FileInputStream fileStream = null; + + try { + fileStream = new FileInputStream(file); + } catch (Exception e) { + errorDialog("Error Opening File", e.getMessage()); + return null; + } + + return new BufferedInputStream(fileStream); + } + +// private void openFile(String directory, String filename) +// { +// openFile(new File(directory, filename)); +// } + + + private BufferedInputStream openURL(String url) + { + InputStream s = null; + + try { + URL aURL = new URL(url); + s = aURL.openStream(); + } catch (Exception e) { + errorDialog("Error Opening URL", e.getMessage()); + return null; + } + + return new BufferedInputStream(s); + } + + private String encodingName(CharsetMatch match) + { + return match.getName() + " (" + match.getLanguage() + ")"; + } + + private void setMatchMenu(CharsetMatch[] matches) + { + JMenu menu = getJMenuBar().getMenu(1); + JMenuItem menuItem; + + menu.removeAll(); + + for (int i = 0; i < matches.length; i += 1) { + CharsetMatch match = matches[i]; + + menuItem = new JMenuItem(encodingName(match) + " " + match.getConfidence()); + + menu.add(menuItem); + } + } + + private byte[] scriptTag = {(byte) 's', (byte) 'c', (byte) 'r', (byte) 'i', (byte) 'p', (byte) 't'}; + private byte[] styleTag = {(byte) 's', (byte) 't', (byte) 'y', (byte) 'l', (byte) 'e'}; + private static int BUFFER_SIZE = 100000; + + private boolean openTag(byte[] buffer, int offset, int length, byte[] tag) + { + int tagLen = tag.length; + int bufRem = length - offset; + int b; + + for (b = 0; b < tagLen && b < bufRem; b += 1) { + if (buffer[b + offset] != tag[b]) { + return false; + } + } + + return b == tagLen; + } + + private boolean closedTag(byte[] buffer, int offset, int length, byte[] tag) + { + if (buffer[offset] != (byte) '/') { + return false; + } + + return openTag(buffer, offset + 1, length, tag); + } + + private byte[] filter(InputStream in) + { + byte[] buffer = new byte[BUFFER_SIZE]; + int bytesRemaining = BUFFER_SIZE; + int bufLen = 0; + + in.mark(BUFFER_SIZE); + + try { + while (bytesRemaining > 0) { + int bytesRead = in.read(buffer, bufLen, bytesRemaining); + + if (bytesRead <= 0) { + break; + } + + bufLen += bytesRead; + bytesRemaining -= bytesRead; + } + } catch (Exception e) { + // TODO: error handling? + return null; + } + + boolean inTag = false; + boolean skip = false; + int out = 0; + + for (int i = 0; i < bufLen; i += 1) { + byte b = buffer[i]; + + if (b == (byte) '<') { + inTag = true; + + if (openTag(buffer, i + 1, bufLen, scriptTag) || + openTag(buffer, i + 1, bufLen, styleTag)) { + skip = true; + } else if (closedTag(buffer, i + 1, bufLen, scriptTag) || + closedTag(buffer, i + 1, bufLen, styleTag)) { + skip = false; + } + } else if (b == (byte) '>') { + inTag = false; + } else if (! (inTag || skip)) { + buffer[out++] = b; + } + } + + byte[] filtered = new byte[out]; + + System.arraycopy(buffer, 0, filtered, 0, out); + return filtered; + } + + private CharsetMatch[] detect(byte[] bytes) + { + CharsetDetector det = new CharsetDetector(); + + det.setText(bytes); + + return det.detectAll(); + } + + private CharsetMatch[] detect(BufferedInputStream inputStream) + { + CharsetDetector det = new CharsetDetector(); + + try { + det.setText(inputStream); + + return det.detectAll(); + } catch (Exception e) { + // TODO: error message? + return null; + } + } + + private void show(InputStream inputStream, CharsetMatch[] matches, String title) + { + InputStreamReader isr; + char[] buffer = new char[1024]; + int bytesRead = 0; + + if (matches == null || matches.length == 0) { + errorDialog("Match Error", "No matches!"); + return; + } + + try { + StringBuffer sb = new StringBuffer(); + String encoding = matches[0].getName(); + + inputStream.reset(); + + if (encoding.startsWith("UTF-32")) { + byte[] bytes = new byte[1024]; + int offset = 0; + int chBytes = 0; + Charset utf32 = CharsetICU.forNameICU(encoding); + + while ((bytesRead = inputStream.read(bytes, offset, 1024)) >= 0) { + offset = bytesRead % 4; + chBytes = bytesRead - offset; + + sb.append(utf32.decode(ByteBuffer.wrap(bytes)).toString()); + + if (offset != 0) { + for (int i = 0; i < offset; i += 1) { + bytes[i] = bytes[chBytes + i]; + } + } + } + } else { + isr = new InputStreamReader(inputStream, encoding); + + while ((bytesRead = isr.read(buffer, 0, 1024)) >= 0) { + sb.append(buffer, 0, bytesRead); + } + + isr.close(); + } + + this.setTitle(title + " - " + encodingName(matches[0])); + + setMatchMenu(matches); + text.setText(sb.toString()); + } catch (IOException e) { + errorDialog("IO Error", e.getMessage()); + } catch (Exception e) { + errorDialog("Internal Error", e.getMessage()); + } + } + + private void doNew() + { + // open a new window... + } + + private void doOpenFile() + { + int retVal = fileChooser.showOpenDialog(this); + + if (retVal == JFileChooser.APPROVE_OPTION) { + File file = fileChooser.getSelectedFile(); + BufferedInputStream inputStream = openFile(file); + + if (inputStream != null) { + CharsetMatch[] matches = detect(inputStream); + + show(inputStream, matches, file.getName()); + } + } + } + + private void doOpenURL() + { + String url = (String) JOptionPane.showInputDialog(this, "URL to open:", "Open URL", JOptionPane.PLAIN_MESSAGE, + null, null, null); + + if (url != null && url.length() > 0) { + BufferedInputStream inputStream = openURL(url); + + if (inputStream != null) { + byte[] filtered = filter(inputStream); + CharsetMatch[] matches = detect(filtered); + + show(inputStream, matches, url); + } + } +} + + private void doQuit() + { + DemoApplet.demoFrameClosed(); + this.setVisible(false); + this.dispose(); + } + + private JMenuBar makeMenus() + { + JMenu menu = new JMenu("File"); + JMenuItem mi; + + mi = new JMenuItem("Open File..."); + mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))); + mi.addActionListener(this); + menu.add(mi); + if(fileChooser == null) { + mi.setEnabled(false); // no file chooser. + } + + mi = new JMenuItem("Open URL..."); + mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK))); + mi.addActionListener(this); + menu.add(mi); + + mi = new JMenuItem("Quit"); + mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK))); + mi.addActionListener(this); + menu.add(mi); + + JMenuBar mbar = new JMenuBar(); + mbar.add(menu); + + menu = new JMenu("Detected Encodings"); + mbar.add(menu); + + return mbar; + } +} diff --git a/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java new file mode 100644 index 00000000000..cd81ef1fa74 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java @@ -0,0 +1,552 @@ +/* + ******************************************************************************* + * Copyright (C) 1997-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.holiday; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Panel; + +/** + * Various graphical borders. The border itself is a Panel so that it can + * contain other Components (i.e. it borders something). You use the + * HolidayBorderPanel like any other Panel: you set the layout that you prefer and + * add Components to it. Beware that a null layout does not obey the insets + * of the panel so if you use null layouts, adjust your measurements to + * handle the border by calling insets(). + * + * @author Andy Clark, Taligent Inc. + * @version 1.0 + */ +public class HolidayBorderPanel extends Panel { + /** + * For serialization + */ + private static final long serialVersionUID = 4669213306492461159L; + // Constants + + /** Solid border. */ + public final static int SOLID = 0; + /** A raised border. */ + public final static int RAISED = 1; + /** A lowered border. */ + public final static int LOWERED = 2; + /** An etched in border. */ + public final static int IN = 3; + /** An etched out border. */ + public final static int OUT = 4; + + /** Left alignment. */ + public final static int LEFT = 0; + /** Center alignment. */ + public final static int CENTER = 1; + /** Right alignment. */ + public final static int RIGHT = 2; + + /** Default style (IN). */ + public final static int DEFAULT_STYLE = IN; + /** Default thickness (10). */ + public final static int DEFAULT_THICKNESS = 10; + /** Default thickness for solid borders (4). */ + public final static int DEFAULT_SOLID_THICKNESS = 4; + /** Default thickness for raised borders (2). */ + public final static int DEFAULT_RAISED_THICKNESS = 2; + /** Default thickness for lowered borders (2). */ + public final static int DEFAULT_LOWERED_THICKNESS = 2; + /** Default thickness for etched-in borders (10). */ + public final static int DEFAULT_IN_THICKNESS = 10; + /** Default thickness for etched-out borders (10). */ + public final static int DEFAULT_OUT_THICKNESS = 10; + /** Default gap between border and contained component (5). */ + public final static int DEFAULT_GAP = 5; + /** Default color (black). Applies to SOLID and etched borders. */ + public final static Color DEFAULT_COLOR = Color.black; + + /** Default font (TimesRoman,PLAIN,14). Only applies to etched borders. */ + public final static Font DEFAULT_FONT = new Font("TimesRoman", Font.PLAIN, 14); + /** Default alignment (LEFT). Only applies to etched borders. */ + public final static int DEFAULT_ALIGNMENT = LEFT; + + // Data + private int style; + private int thickness; + private int gap; + private Color color; + + private Font font; + private String text; + private int alignment; + + /** + * Constructor. Makes default border. + */ + public HolidayBorderPanel() { + + // initialize data + style = DEFAULT_STYLE; + thickness = DEFAULT_THICKNESS; + gap = DEFAULT_GAP; + color = DEFAULT_COLOR; + + text = null; + font = DEFAULT_FONT; + alignment = DEFAULT_ALIGNMENT; + + } + + /** + * Constructor. Makes an etched IN border with given text caption. + * + * @param text Text caption + */ + public HolidayBorderPanel(String text) { + this(); + + style = IN; + this.text = text; + } + + /** + * Constructor. Makes SOLID border with color and thickness given. + * + * @param color The color for the border. + * @param thickness The thickness of the border. + */ + public HolidayBorderPanel(Color color, int thickness) { + this(); + + style = SOLID; + this.color = color; + this.thickness = thickness; + } + + /** + * Constructor. Makes a border of the given style with the default + * thickness for that style. + * + * @param style The style for this border. + */ + public HolidayBorderPanel(int style) { + this(); + + // set thickness appropriate to this style + switch (style) { + case SOLID: thickness = DEFAULT_SOLID_THICKNESS; break; + case RAISED: thickness = DEFAULT_RAISED_THICKNESS; break; + case LOWERED: thickness = DEFAULT_LOWERED_THICKNESS; break; + case IN: thickness = DEFAULT_IN_THICKNESS; break; + case OUT: thickness = DEFAULT_OUT_THICKNESS; break; + default: + thickness = DEFAULT_THICKNESS; + } + + this.style = style; + } + + /** + * Constructor. Makes border with given style and thickness. + * + * @param style The style for this border. + * @param thickness The thickness for this border. + */ + public HolidayBorderPanel(int style, int thickness) { + this(); + + this.style = style; + this.thickness = thickness; + } + + /** + * Returns the insets of this panel.. + */ + public Insets getInsets() { + int adjustment = 0; + + // adjust for text string + if (style == IN || style == OUT) { + if (text != null && text.length() > 0) { + try { + // set font and get info + int height = getGraphics().getFontMetrics(font).getHeight(); + if (height > thickness) + adjustment = height - thickness; + } + catch (Exception e) { + // nothing: just in case there is no graphics context + // at the beginning. + System.out.print(""); + } + } + } + + // return appropriate insets + int dist = thickness + gap; + return new Insets(dist + adjustment, dist, dist, dist); + } + + /** + * Sets the style of the border + * + * @param style The new style. + */ + public HolidayBorderPanel setStyle(int style) { + + // set the style and re-layout the panel + this.style = style; + doLayout(); + repaint(); + + return this; + } + + /** + * Gets the style of the border + */ + public int getStyle() { + + return style; + } + + /** + * Sets the thickness of the border. + * + * @param thickness The new thickness + */ + public HolidayBorderPanel setThickness(int thickness) { + + if (thickness > 0) { + this.thickness = thickness; + doLayout(); + repaint(); + } + + return this; + } + + /** + * Gets the thickness of the border. + */ + public int getThickness() { + + return thickness; + } + + /** + * Sets the gap between the border and the contained Component. + * + * @param gap The new gap, in pixels. + */ + public HolidayBorderPanel setGap(int gap) { + + if (gap > -1) { + this.gap = gap; + doLayout(); + repaint(); + } + + return this; + } + + /** + * Gets the gap between the border and the contained Component. + */ + public int getGap() { + + return gap; + } + + /** + * Sets the current color for SOLID borders and the caption text + * color for etched borders. + * + * @param color The new color. + */ + public HolidayBorderPanel setColor(Color color) { + + this.color = color; + if (style == SOLID || style == IN || style == OUT) + repaint(); + + return this; + } + + /** + * Gets the current color for SOLID borders and the caption + * text color for etched borders. + */ + public Color getColor() { + + return color; + } + + /** + * Sets the font. Only applies to etched borders. + */ + public HolidayBorderPanel setTextFont(Font font) { + + // set font + if (font != null) { + this.font = font; + if (style == IN || style == OUT) { + doLayout(); + repaint(); + } + } + + return this; + } + + /** + * Gets the font of the text. Only applies to etched borders. + */ + public Font getTextFont() { + + return font; + } + + /** + * Sets the text. Only applies to etched borders. + * + * @param text The new text. + */ + public HolidayBorderPanel setText(String text) { + + this.text = text; + if (style == IN || style == OUT) { + doLayout(); + repaint(); + } + + return this; + } + + /** + * Gets the text. Only applies to etched borders. + */ + public String getText() { + + return text; + } + + /** + * Sets the text alignment. Only applies to etched borders. + * + * @param alignment The new alignment. + */ + public HolidayBorderPanel setAlignment(int alignment) { + + this.alignment = alignment; + if (style == IN || style == OUT) { + doLayout(); + repaint(); + } + + return this; + } + + /** + * Gets the text alignment. + */ + public int getAlignment() { + + return alignment; + } + + /** + * Repaints the border. + * + * @param g The graphics context. + */ + public void paint(Graphics g) { + + // get current dimensions + Dimension size = getSize(); + int width = size.width; + int height = size.height; + + // set colors + Color light = getBackground().brighter().brighter().brighter(); + Color dark = getBackground().darker().darker().darker(); + + // Draw border + switch (style) { + case RAISED: // 3D Border (in or out) + case LOWERED: + Color topleft = null; + Color bottomright = null; + + // set colors + if (style == RAISED) { + topleft = light; + bottomright = dark; + } + else { + topleft = dark; + bottomright = light; + } + + // draw border + g.setColor(topleft); + for (int i = 0; i < thickness; i++) { + g.drawLine(i, i, width - i - 2, i); + g.drawLine(i, i + 1, i, height - i - 1); + } + g.setColor(bottomright); + for (int i = 0; i < thickness; i++) { + g.drawLine(i + 1, height - i - 1, width - i - 1, height - i - 1); + g.drawLine(width - i - 1, i, width - i - 1, height - i - 2); + } + break; + + case IN: // Etched Border (in or out) + case OUT: + int adjust1 = 0; + int adjust2 = 0; + + // set font and get info + Font oldfont = g.getFont(); + g.setFont(font); + FontMetrics fm = g.getFontMetrics(); + int ascent = fm.getAscent(); + + // set adjustment + if (style == IN) + adjust1 = 1; + else + adjust2 = 1; + + // Calculate adjustment for text + int adjustment = 0; + if (text != null && text.length() > 0) { + if (ascent > thickness) + adjustment = (ascent - thickness) / 2; + } + + // The adjustment is there so that we always draw the + // light rectangle first. Otherwise, your eye picks up + // the discrepancy where the light rect. passes over + // the darker rect. + int x = thickness / 2; + int y = thickness / 2 + adjustment; + int w = width - thickness - 1; + int h = height - thickness - 1 - adjustment; + + // draw rectangles + g.setColor(light); + g.drawRect(x + adjust1, y + adjust1, w, h); + g.setColor(dark); + g.drawRect(x + adjust2, y + adjust2, w, h); + + // draw text, if applicable + if (text != null && text.length() > 0) { + // calculate drawing area + int fontheight = fm.getHeight(); + int strwidth = fm.stringWidth(text); + + int textwidth = width - 2 * (thickness + 5); + if (strwidth > textwidth) + strwidth = textwidth; + + // calculate offset for alignment + int offset; + switch (alignment) { + case CENTER: + offset = (width - strwidth) / 2; + break; + case RIGHT: + offset = width - strwidth - thickness - 5; + break; + case LEFT: + default: // assume left alignment if invalid + offset = thickness + 5; + break; + } + + // clear drawing area and set clipping region + g.clearRect(offset - 5, 0, strwidth + 10, fontheight); + g.clipRect(offset, 0, strwidth, fontheight); + + // draw text + g.setColor(color); + g.drawString(text, offset, ascent); + + // restore old clipping area + g.clipRect(0, 0, width, height); + } + + g.setFont(oldfont); + break; + + case SOLID: + default: // assume SOLID + g.setColor(color); + for (int i = 0; i < thickness; i++) + g.drawRect(i, i, width - 2 * i - 1, height - 2 * i - 1); + } + + } + + /** + * Returns the settings of this HolidayBorderPanel instance as a string. + */ + public String toString() { + StringBuffer str = new StringBuffer("HolidayBorderPanel["); + + // style + str.append("style="); + switch (style) { + case SOLID: str.append("SOLID"); break; + case RAISED: str.append("RAISED"); break; + case LOWERED: str.append("LOWERED"); break; + case IN: str.append("IN"); break; + case OUT: str.append("OUT"); break; + default: str.append("unknown"); + } + str.append(","); + + // thickness + str.append("thickness="); + str.append(thickness); + str.append(","); + + // gap + str.append("gap="); + str.append(gap); + str.append(","); + + // color + str.append(color); + str.append(","); + + // font + str.append(font); + str.append(","); + + // text + str.append("text="); + str.append(text); + str.append(","); + + // alignment + str.append("alignment="); + switch (alignment) { + case LEFT: str.append("LEFT"); break; + case CENTER: str.append("CENTER"); break; + case RIGHT: str.append("RIGHT"); break; + default: str.append("unknown"); + } + + str.append("]"); + + return str.toString(); + } + + } + diff --git a/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java new file mode 100644 index 00000000000..5899b78cc01 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java @@ -0,0 +1,744 @@ +/* + ******************************************************************************* + * Copyright (C) 1996-2007, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.dev.demo.holiday; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.WindowEvent; +import java.text.DateFormatSymbols; +import java.util.Date; +import java.util.Locale; +import java.util.Vector; + +import com.ibm.icu.dev.demo.impl.DemoApplet; +import com.ibm.icu.dev.demo.impl.DemoTextBox; +import com.ibm.icu.dev.demo.impl.DemoUtility; +import com.ibm.icu.text.SimpleDateFormat; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.Holiday; +import com.ibm.icu.util.SimpleTimeZone; + +/** + * CalendarDemo demonstrates how Calendar works. + */ +public class HolidayCalendarDemo extends DemoApplet +{ + /** + * For serialization + */ + private static final long serialVersionUID = 4546085430817359372L; + + /** + * The main function which defines the behavior of the CalendarDemo + * applet when an applet is started. + */ + public static void main(String argv[]) { + + new HolidayCalendarDemo().showDemo(); + } + + /* This creates a CalendarFrame for the demo applet. */ + public Frame createDemoFrame(DemoApplet applet) { + return new CalendarFrame(applet); + } + + /** + * A Frame is a top-level window with a title. The default layout for a frame + * is BorderLayout. The CalendarFrame class defines the window layout of + * CalendarDemo. + */ + private static class CalendarFrame extends Frame implements ActionListener, + ItemListener + { + /** + * For serialization + */ + private static final long serialVersionUID = -7023296782393042761L; + + private static final boolean DEBUG = false; + + //private Locale curLocale = Locale.US; // unused + + private DemoApplet applet; + + private static final Locale[] calendars = { + //new Locale("de","AT"), + Locale.CANADA, + Locale.CANADA_FRENCH, + Locale.FRANCE, + Locale.GERMANY, + new Locale("iw","IL"), + new Locale("el","GR"), + //new Locale("es","MX"), + Locale.UK, + Locale.US, + }; + private static final Locale[] displays = { + Locale.CANADA, + Locale.UK, + Locale.US, + Locale.FRANCE, + Locale.CANADA_FRENCH, + //new Locale("de","AT"), + Locale.GERMAN, + new Locale("el","GR"), + //new Locale("iw","IL"), + new Locale("es","MX"), + }; + + /** + * Constructs a new CalendarFrame that is initially invisible. + */ + public CalendarFrame(DemoApplet applet) + { + super("Calendar Demo"); + this.applet = applet; + init(); + start(); + enableEvents(WindowEvent.WINDOW_CLOSING); + } + + /** + * Initializes the applet. You never need to call this directly, it + * is called automatically by the system once the applet is created. + */ + public void init() + { + // Get G7 locales only for demo purpose. To get all the locales + // supported, switch to calling Calendar.getAvailableLocales(). + // commented + locales = displays; + + buildGUI(); + } + + //------------------------------------------------------------ + // package private + //------------------------------------------------------------ + void addWithFont(Container container, Component foo, Font font) { + if (font != null) + foo.setFont(font); + container.add(foo); + } + + /** + * Called to start the applet. You never need to call this method + * directly, it is called when the applet's document is visited. + */ + public void start() + { + // do nothing + } + + private Choice localeMenu; + private Choice displayMenu; + private Locale[] locales; + + private Label monthLabel; + private Button prevYear; + private Button prevMonth; + private Button gotoToday; + private Button nextMonth; + private Button nextYear; + private CalendarPanel calendarPanel; + + private static final Locale kFirstLocale = Locale.US; + + private static void add(Container container, Component component, + GridBagLayout g, GridBagConstraints c) + { + g.setConstraints(component, c); + container.add(component); + } + + public void buildGUI() + { + setBackground(DemoUtility.bgColor); + setLayout(new BorderLayout(10,10)); + + // Label for the demo's title + Label titleLabel = new Label("Calendar Demo", Label.CENTER); + titleLabel.setFont(DemoUtility.titleFont); + + // Label for the current month name + monthLabel = new Label("", Label.LEFT); + monthLabel.setFont(new Font(DemoUtility.titleFont.getName(), + DemoUtility.titleFont.getStyle(), + (DemoUtility.titleFont.getSize() * 3)/2)); + + // Make the locale popup menus + localeMenu= new Choice(); + localeMenu.addItemListener(this); + int selectMe = 0; + + for (int i = 0; i < calendars.length; i++) { + if (i > 0 && + calendars[i].getCountry().equals(calendars[i-1].getCountry()) || + i < calendars.length - 1 && + calendars[i].getCountry().equals(calendars[i+1].getCountry())) + { + localeMenu.addItem(calendars[i].getDisplayCountry() + " (" + + calendars[i].getDisplayLanguage() + ")"); + } else { + localeMenu.addItem( calendars[i].getDisplayCountry() ); + } + + if (calendars[i].equals(kFirstLocale)) { + selectMe = i; + } + } + + localeMenu.setBackground(DemoUtility.choiceColor); + localeMenu.select(selectMe); + + displayMenu = new Choice(); + displayMenu.addItemListener(this); + + selectMe = 0; + for (int i = 0; i < locales.length; i++) { + if (i > 0 && + locales[i].getLanguage().equals(locales[i-1].getLanguage()) || + i < locales.length - 1 && + locales[i].getLanguage().equals(locales[i+1].getLanguage())) + { + displayMenu.addItem( locales[i].getDisplayName() ); + } else { + displayMenu.addItem( locales[i].getDisplayLanguage()); + } + + if (locales[i].equals(kFirstLocale)) { + selectMe = i; + } + } + + displayMenu.setBackground(DemoUtility.choiceColor); + displayMenu.select(selectMe); + + // Make all the next/previous/today buttons + prevYear = new Button("<<"); + prevYear.addActionListener(this); + prevMonth = new Button("<"); + prevMonth.addActionListener(this); + gotoToday = new Button("Today"); + gotoToday.addActionListener(this); + nextMonth = new Button(">"); + nextMonth.addActionListener(this); + nextYear = new Button(">>"); + nextYear.addActionListener(this); + + // The month name and the control buttons are bunched together + Panel monthPanel = new Panel(); + { + GridBagLayout g = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + monthPanel.setLayout(g); + + c.weightx = 1; + c.weighty = 1; + + c.gridwidth = 1; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridwidth = GridBagConstraints.REMAINDER; + add(monthPanel, monthLabel, g, c); + + c.gridwidth = 1; + add(monthPanel, prevYear, g, c); + add(monthPanel, prevMonth, g, c); + add(monthPanel, gotoToday, g, c); + add(monthPanel, nextMonth, g, c); + c.gridwidth = GridBagConstraints.REMAINDER; + add(monthPanel, nextYear, g, c); + } + + // Stick the menu and buttons in a little "control panel" + Panel menuPanel = new Panel(); + { + GridBagLayout g = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + menuPanel.setLayout(g); + + c.weightx = 1; + c.weighty = 1; + + c.fill = GridBagConstraints.HORIZONTAL; + + c.gridwidth = GridBagConstraints.RELATIVE; + Label l1 = new Label("Holidays"); + l1.setFont(DemoUtility.labelFont); + add(menuPanel, l1, g, c); + + c.gridwidth = GridBagConstraints.REMAINDER; + add(menuPanel, localeMenu, g, c); + + c.gridwidth = GridBagConstraints.RELATIVE; + Label l2 = new Label("Display:"); + l2.setFont(DemoUtility.labelFont); + add(menuPanel, l2, g, c); + + c.gridwidth = GridBagConstraints.REMAINDER; + add(menuPanel, displayMenu, g, c); + } + + // The title, buttons, etc. go in a panel at the top of the window + Panel topPanel = new Panel(); + { + topPanel.setLayout(new BorderLayout()); + + //topPanel.add("North", titleLabel); + topPanel.add("Center", monthPanel); + topPanel.add("East", menuPanel); + } + add("North", topPanel); + + // The copyright notice goes at the bottom of the window + Label copyright = new Label(DemoUtility.copyright1, Label.LEFT); + copyright.setFont(DemoUtility.creditFont); + add("South", copyright); + + // Now create the big calendar panel and stick it in the middle + calendarPanel = new CalendarPanel( kFirstLocale ); + add("Center", calendarPanel); + + updateMonthName(); + } + + private void updateMonthName() + { + SimpleDateFormat f = new SimpleDateFormat("MMMM yyyyy", + calendarPanel.getDisplayLocale()); + f.setCalendar(calendarPanel.getCalendar()); + f.setTimeZone(new SimpleTimeZone(0, "UTC")); // JDK 1.1.2 workaround + monthLabel.setText( f.format( calendarPanel.firstOfMonth() )); + } + + /** + * Handles the event. Returns true if the event is handled and should not + * be passed to the parent of this component. The default event handler + * calls some helper methods to make life easier on the programmer. + */ + public void actionPerformed(ActionEvent e) + { + Object obj = e.getSource(); + + // *** Button events are handled here. + if (obj instanceof Button) { + if (obj == nextMonth) { + calendarPanel.add(Calendar.MONTH, +1); + } + else + if (obj == prevMonth) { + calendarPanel.add(Calendar.MONTH, -1); + } + else + if (obj == prevYear) { + calendarPanel.add(Calendar.YEAR, -1); + } + else + if (obj == nextYear) { + calendarPanel.add(Calendar.YEAR, +1); + } + else + if (obj == gotoToday) { + calendarPanel.set( new Date() ); + } + updateMonthName(); + } + } + + public void itemStateChanged(ItemEvent e) + { + Object obj = e.getSource(); + if (obj == localeMenu) { + calendarPanel.setCalendarLocale(calendars[localeMenu.getSelectedIndex()]); + updateMonthName(); + } + else + if (obj == displayMenu) { + calendarPanel.setDisplayLocale(locales[displayMenu.getSelectedIndex()]); + updateMonthName(); + } + } + + /** + * Print out the error message while debugging this program. + */ + public void errorText(String s) + { + if (DEBUG) + { + System.out.println(s); + } + } + + protected void processWindowEvent(WindowEvent e) + { + System.out.println("event " + e); + if (e.getID() == WindowEvent.WINDOW_CLOSING) { + this.hide(); + this.dispose(); + + if (applet != null) { + applet.demoClosed(); + } else { + System.exit(0); + } + } + } + } + + + private static class CalendarPanel extends Canvas { + + /** + * For serialization + */ + private static final long serialVersionUID = 1521099412250120821L; + + public CalendarPanel( Locale locale ) { + set(locale, locale, new Date()); + } + + public void setCalendarLocale(Locale locale) { + set(locale, fDisplayLocale, fCalendar.getTime()); + } + + public void setDisplayLocale(Locale locale) { + set(fCalendarLocale, locale, fCalendar.getTime()); + } + + public void set(Date date) { + set(fCalendarLocale, fDisplayLocale, date); + } + + public void set(Locale loc, Locale display, Date date) + { + if (fCalendarLocale == null || !loc.equals(fCalendarLocale)) { + fCalendarLocale = loc; + fCalendar = Calendar.getInstance(fCalendarLocale); + fAllHolidays = Holiday.getHolidays(fCalendarLocale); + } + if (fDisplayLocale == null || !display.equals(fDisplayLocale)) { + fDisplayLocale = display; + fSymbols = new DateFormatSymbols(fDisplayLocale); + } + + fStartOfMonth = date; + + dirty = true; + repaint(); + } + + public void add(int field, int delta) + { + synchronized(fCalendar) { + fCalendar.setTime(fStartOfMonth); + fCalendar.add(field, delta); + fStartOfMonth = fCalendar.getTime(); + } + dirty = true; + repaint(); + } + + public com.ibm.icu.util.Calendar getCalendar() { + return fCalendar; + } + + public Locale getCalendarLocale() { + return fCalendarLocale; + } + + public Locale getDisplayLocale() { + return fDisplayLocale; + } + + + public Date firstOfMonth() { + return fStartOfMonth; + } + + private Date startOfMonth(Date dateInMonth) + { + synchronized(fCalendar) { + fCalendar.setTime(dateInMonth); // TODO: synchronization + + int era = fCalendar.get(Calendar.ERA); + int year = fCalendar.get(Calendar.YEAR); + int month = fCalendar.get(Calendar.MONTH); + + fCalendar.clear(); + fCalendar.set(Calendar.ERA, era); + fCalendar.set(Calendar.YEAR, year); + fCalendar.set(Calendar.MONTH, month); + fCalendar.set(Calendar.DATE, 1); + + return fCalendar.getTime(); + } + } + + private void calculate() + { + // + // As a workaround for JDK 1.1.3 and below, where Calendars and time + // zones are a bit goofy, always set my calendar's time zone to UTC. + // You would think I would want to do this in the "set" function above, + // but if I do that, the program hangs when this class is loaded, + // perhaps due to some sort of static initialization ordering problem. + // So I do it here instead. + // + fCalendar.setTimeZone(new SimpleTimeZone(0, "UTC")); + + Calendar c = (Calendar)fCalendar.clone(); // Temporary copy + + fStartOfMonth = startOfMonth(fStartOfMonth); + + // Stash away a few useful constants for this calendar and display + minDay = c.getMinimum(Calendar.DAY_OF_WEEK); + daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1; + + firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek(); + + // Stash away a Date for the start of this month + + // Find the day of week of the first day in this month + c.setTime(fStartOfMonth); + firstDayInMonth = c.get(Calendar.DAY_OF_WEEK); + + // Now find the # of days in the month + c.roll(Calendar.DATE, false); + daysInMonth = c.get(Calendar.DATE); + + // Finally, find the end of the month, i.e. the start of the next one + c.roll(Calendar.DATE, true); + c.add(Calendar.MONTH, 1); + c.getTime(); // JDK 1.1.2 bug workaround + c.add(Calendar.SECOND, -1); + Date endOfMonth = c.getTime(); + + // + // Calculate the number of full or partial weeks in this month. + // To do this I can just reuse the code that calculates which + // calendar cell contains a given date. + // + numWeeks = dateToCell(daysInMonth).y - dateToCell(1).y + 1; + + // Remember which holidays fall on which days in this month, + // to save the trouble of having to do it later + fHolidays.setSize(0); + + for (int h = 0; h < fAllHolidays.length; h++) + { + Date d = fStartOfMonth; + while ( (d = fAllHolidays[h].firstBetween(d, endOfMonth) ) != null) + { + c.setTime(d); + fHolidays.addElement( new HolidayInfo(c.get(Calendar.DATE), + fAllHolidays[h], + fAllHolidays[h].getDisplayName(fDisplayLocale) )); + + d.setTime( d.getTime() + 1000 ); // "d++" + } + } + dirty = false; + } + + static final int INSET = 2; + + /* + * Convert from the day number within a month (1-based) + * to the cell coordinates on the calendar (0-based) + */ + private void dateToCell(int date, Point pos) + { + int cell = (date + firstDayInMonth - firstDayOfWeek - minDay); + if (firstDayInMonth < firstDayOfWeek) { + cell += daysInWeek; + } + + pos.x = cell % daysInWeek; + pos.y = cell / daysInWeek; + } + private Point dateToCell(int date) { + Point p = new Point(0,0); + dateToCell(date, p); + return p; + } + + public void paint(Graphics g) { + + if (dirty) { + calculate(); + } + + Point cellPos = new Point(0,0); // Temporary variable + Dimension d = getSize(); + + g.setColor(DemoUtility.bgColor); + g.fillRect(0,0,d.width,d.height); + + // Draw the day names at the top + g.setColor(Color.black); + g.setFont(DemoUtility.labelFont); + FontMetrics fm = g.getFontMetrics(); + int labelHeight = fm.getHeight() + INSET * 2; + + int v = fm.getAscent() + INSET; + for (int i = 0; i < daysInWeek; i++) { + int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1; + String dayName = fSymbols.getWeekdays()[dayNum]; + + int h = (int) (d.width * (i + 0.5)) / daysInWeek; + h -= fm.stringWidth(dayName) / 2; + + g.drawString(dayName, h, v); + } + + double cellHeight = (d.height - labelHeight - 1) / numWeeks; + double cellWidth = (double)(d.width - 1) / daysInWeek; + + // Draw a white background in the part of the calendar + // that displays this month. + // First figure out how much of the first week should be shaded. + { + g.setColor(Color.white); + dateToCell(1, cellPos); + int width = (int)(cellPos.x*cellWidth); // Width of unshaded area + + g.fillRect((int)(width), labelHeight , + (int)(d.width - width), (int)cellHeight); + + // All of the intermediate weeks get shaded completely + g.fillRect(0, (int)(labelHeight + cellHeight), + d.width, (int)(cellHeight * (numWeeks - 2))); + + // Now figure out the last week. + dateToCell(daysInMonth, cellPos); + width = (int)((cellPos.x+1)*cellWidth); // Width of shaded area + + g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight), + width, (int)(cellHeight)); + + } + // Draw the X/Y grid lines + g.setColor(Color.black); + for (int i = 0; i <= numWeeks; i++) { + int y = (int)(labelHeight + i * cellHeight); + g.drawLine(0, y, d.width - 1, y); + } + for (int i = 0; i <= daysInWeek; i++) { + int x = (int)(i * cellWidth); + g.drawLine(x, labelHeight, x, d.height - 1); + } + + // Now loop through all of the days in the month, figure out where + // they go in the grid, and draw the day # for each one + Font numberFont = new Font("Helvetica",Font.PLAIN,12); + // not used Font holidayFont = DemoUtility.creditFont; + + Calendar c = (Calendar)fCalendar.clone(); + c.setTime(fStartOfMonth); + + for (int i = 1, h = 0; i <= daysInMonth; i++) { + g.setFont(numberFont); + g.setColor(Color.black); + fm = g.getFontMetrics(); + + dateToCell(i, cellPos); + int x = (int)((cellPos.x + 1) * cellWidth); + int y = (int)(cellPos.y * cellHeight + labelHeight); + + StringBuffer buffer = new StringBuffer(); + buffer.append(i); + String dayNum = buffer.toString(); + + x = x - INSET - fm.stringWidth(dayNum); + y = y + fm.getAscent() + INSET; + + g.drawString(dayNum, x, y); + + // See if any of the holidays land on this day.... + HolidayInfo info = null; + int count = 0; + + // Coordinates of lower-left corner of cell. + x = (int)((cellPos.x) * cellWidth); + y = (int)((cellPos.y+1) * cellHeight) + labelHeight; + + while (h < fHolidays.size() && + (info = (HolidayInfo)fHolidays.elementAt(h)).date <= i) + { + if (info.date == i) { + // Draw the holiday here. + g.setFont(numberFont); + g.setColor(Color.red); + + DemoTextBox box = new DemoTextBox(g, info.name, (int)(cellWidth - INSET)); + box.draw(g, x + INSET, y - INSET - box.getHeight()); + + y -= (box.getHeight() + INSET); + count++; + } + h++; + } + } + } + + // Important state variables + private Locale fCalendarLocale; // Whose calendar + private Calendar fCalendar; // Calendar for calculations + + private Locale fDisplayLocale; // How to display it + private DateFormatSymbols fSymbols; // Symbols for drawing + + private Date fStartOfMonth; // 00:00:00 on first day of month + + // Cached calculations to make drawing faster. + private transient int minDay; // Minimum legal day # + private transient int daysInWeek; // # of days in a week + private transient int firstDayOfWeek; // First day to display in week + private transient int numWeeks; // # full or partial weeks in month + private transient int daysInMonth; // # days in this month + private transient int firstDayInMonth; // Day of week of first day in month + + private transient Holiday[] fAllHolidays; + private transient Vector fHolidays = new Vector(5,5); + + private transient boolean dirty = true; + } + + private static class HolidayInfo { + public HolidayInfo(int date, Holiday holiday, String name) { + this.date = date; + this.holiday = holiday; + this.name = name; + } + + public Holiday holiday; + public int date; + public String name; + } +} + diff --git a/demos/src/com/ibm/icu/dev/demo/holiday/package.html b/demos/src/com/ibm/icu/dev/demo/holiday/package.html new file mode 100644 index 00000000000..d05e2f55ccf --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/holiday/package.html @@ -0,0 +1,12 @@ + + + + + + +Holiday demo application. + + \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java new file mode 100644 index 00000000000..d4089367562 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java @@ -0,0 +1,149 @@ +/* + ******************************************************************************* + * Copyright (C) 1996-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.impl; +import java.applet.Applet; +import java.applet.AppletContext; +import java.applet.AppletStub; +import java.applet.AudioClip; +import java.awt.Frame; +import java.awt.Image; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Enumeration; +import java.util.Iterator; + +/** + *

A Frame that runs an Applet within itself, making it possible + * for an applet to run as an application. Usage: + * + *

+ * public class MyApplet extends Applet {
+ *     public static void main(String args[]) {
+ *         MyApplet applet = new MyApplet();
+ *         new AppletFrame("My Applet Running As An App", applet, 640, 480);
+ *     }
+ *     ...
+ * }
+ * 
+ *
+ * @author Alan Liu
+ */
+public class AppletFrame extends Frame implements AppletStub, AppletContext {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 818828281190757725L;
+    Applet applet;
+
+    /**
+     * Construct a Frame running the given Applet with the default size
+     * of 640 by 480.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     */
+    public AppletFrame(String name, Applet applet) {
+        this(name, applet, 640, 480);
+    }
+
+    /**
+     * Construct a Frame running the given Applet with the given size.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     * @param width width of the Frame
+     * @param height height of the Frame
+     */
+    public AppletFrame(String name, Applet applet, int width, int height) {
+        super(name);
+        this.applet = applet;
+        applet.setStub(this);
+
+        setSize(width, height);
+        add("Center", applet);
+        show();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                AppletFrame.this.applet.stop();
+                dispose();
+                System.exit(0);
+            }
+        });
+
+        applet.init();
+        applet.start();
+    }
+
+    // AppletStub API
+    public void appletResize(int width, int height) {
+        setSize(width, height);
+    }
+
+    public AppletContext getAppletContext() {
+        return this;
+    }
+
+    public URL getCodeBase() {
+        return null;
+    }
+
+    public URL getDocumentBase() {
+        return null;
+    }
+    
+    public String getParameter(String name) {
+        return "PARAMETER";
+    }
+
+    public boolean isActive() {
+        return true;
+    }
+    
+    
+    // AppletContext API
+    public Applet getApplet(String name) {
+        return applet;
+    }
+
+    public Enumeration getApplets() {
+        return null;
+    }
+
+    public AudioClip getAudioClip(URL url) {
+        return null;
+    }
+
+    public Image getImage(URL url) {
+        return null;
+    }
+
+    public void showDocument(URL url) {}
+    public void showDocument(URL url, String target) {}
+
+    public void showStatus(String status) {
+        System.out.println(status);
+    }
+    
+    public void setStream(String key, InputStream stream) throws IOException {
+    }
+    
+    public InputStream getStream(String key) {
+        return null;
+    }
+    
+    public Iterator getStreamKeys() {
+        return null;
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
new file mode 100644
index 00000000000..339e6a76160
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
@@ -0,0 +1,80 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public abstract class DemoApplet extends java.applet.Applet {
+    private static final long serialVersionUID = -8983602961925702071L;
+    private Button   demoButton;
+    private Frame    demoFrame;
+    private static int demoFrameCount = 0;
+
+    protected abstract Frame createDemoFrame(DemoApplet applet);
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+        return new Dimension(700, 550);
+    }
+
+    //Create a button that will display the demo
+    public void init()
+    {
+        setBackground(Color.white);
+        demoButton = new Button("Demo");
+        demoButton.setBackground(Color.yellow);
+        add( demoButton );
+
+        demoButton.addActionListener( new ActionListener() {
+             public void actionPerformed(ActionEvent e) {
+                if (e.getID() == ActionEvent.ACTION_PERFORMED) {
+                    demoButton.setLabel("loading");
+
+                    if (demoFrame == null) {
+                       demoFrame = createDemoFrame(DemoApplet.this);
+                       showDemo();
+                    }
+
+                    demoButton.setLabel("Demo");
+                }
+             }
+        } );
+    }
+
+    public void showDemo()
+    {
+        demoFrame = createDemoFrame(this);
+        demoFrame.doLayout();
+        Dimension d = getDefaultFrameSize(this, demoFrame);
+        demoFrame.setSize(d.width, d.height);
+        demoFrame.show();
+        demoFrameOpened();
+    }
+
+    public void demoClosed()
+    {
+        demoFrame = null;
+        demoFrameClosed();
+    }
+
+    public static void demoFrameOpened() {
+        demoFrameCount++;
+        System.err.println("DemoFrameOpened, now at:"+demoFrameCount);
+    }
+    public static void demoFrameClosed() {
+        if (--demoFrameCount == 0) {
+            System.err.println("DemoFrameClosed, now at:"+demoFrameCount + " - quitting");
+            System.exit(0);
+        }
+        System.err.println("DemoFrameClosed, now at:"+demoFrameCount);
+    }
+}
+
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
new file mode 100644
index 00000000000..a3d83499421
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
@@ -0,0 +1,96 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.text.BreakIterator;
+
+public class DemoTextBox {
+
+    public DemoTextBox(Graphics g, String text, int width)
+    {
+        this.text = text;
+        this.chars = new char[text.length()];
+        text.getChars(0, text.length(), chars, 0);
+
+        this.width = width;
+//        this.port = g;
+        this.metrics = g.getFontMetrics();
+
+        breakText();
+    }
+
+    public  int getHeight() {
+        return (nbreaks + 1) * metrics.getHeight();
+    }
+
+    public  void draw(Graphics g, int x, int y)
+    {
+        int index = 0;
+
+        y += metrics.getAscent();
+
+        for (int i = 0; i < nbreaks; i++)
+        {
+            g.drawChars(chars, index, breakPos[i] - index, x, y);
+            index = breakPos[i];
+            y += metrics.getHeight();
+        }
+
+        g.drawChars(chars, index, chars.length - index, x, y);
+    }
+
+
+    private void breakText()
+    {
+        if (metrics.charsWidth(chars, 0, chars.length) > width)
+        {
+            BreakIterator iter = BreakIterator.getWordInstance();
+            iter.setText(text);
+
+            int start = iter.first();
+            int end = start;
+            int pos;
+
+            while ( (pos = iter.next()) != BreakIterator.DONE )
+            {
+                int w = metrics.charsWidth(chars, start, pos - start);
+                if (w > width)
+                {
+                    // We've gone past the maximum width, so break the line
+                    if (end > start) {
+                        // There was at least one break position before this point
+                        breakPos[nbreaks++] = end;
+                        start = end;
+                        end = pos;
+                    } else {
+                        // There weren't any break positions before this one, so
+                        // let this word overflow the margin (yuck)
+                        breakPos[nbreaks++] = pos;
+                        start = end = pos;
+                    }
+                } else {
+                    // the current position still fits on the line; it's the best
+                    // tentative break position we have so far.
+                    end = pos;
+                }
+
+            }
+        }
+    }
+
+    private String          text;
+    private char[]          chars;
+//    private Graphics        port;
+    private FontMetrics     metrics;
+    private int             width;
+
+    private int[]           breakPos = new int[10]; // TODO: get real
+    private int             nbreaks = 0;
+}
\ No newline at end of file
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
new file mode 100644
index 00000000000..c838a13ea2b
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
@@ -0,0 +1,136 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.TextComponent;
+import java.util.Locale;
+
+public class DemoUtility
+{
+    public static final Font titleFont = new Font("TimesRoman",Font.BOLD,18);
+    public static final Font labelFont = new Font("TimesRoman",Font.BOLD,14);
+    public static final Font choiceFont = new Font("Helvetica",Font.BOLD,12);
+    public static final Font editFont = new Font("Helvetica",Font.PLAIN,14);
+    public static final Font creditFont = new Font("Helvetica",Font.PLAIN,10);
+    public static final Font numberFont = new Font("sansserif", Font.PLAIN, 14);
+
+    public static final Color bgColor = Color.lightGray;
+    public static final Color choiceColor = Color.white;
+
+    public static final String copyright1 =
+        "Copyright (C) IBM Corp and others. 1997 - 2002 All Rights Reserved";
+
+    /**
+    Provides easy way to use basic functions of GridBagLayout, without
+    the complications. After building a panel, and inserting all the
+    * subcomponents, call this to lay it out in the desired number of columns.
+    */
+    public static void fixGrid(Container cont, int columns) {
+        GridBagLayout gridbag = new GridBagLayout();
+        cont.setLayout(gridbag);
+
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.VERTICAL;
+        c.weightx = 1.0;
+        c.insets = new Insets(2,2,2,2);
+
+        Component[] components = cont.getComponents();
+        for (int i = 0; i < components.length; ++i) {
+            // not used int colNumber = i%columns;
+            c.gridwidth = 1;    // default
+            if ((i%columns) == columns - 1)
+                c.gridwidth = GridBagConstraints.REMAINDER;    // last in grid
+            if (components[i] instanceof Label) {
+                switch (((Label)components[i]).getAlignment()) {
+                case Label.CENTER: c.anchor = GridBagConstraints.CENTER; break;
+                case Label.LEFT: c.anchor = GridBagConstraints.WEST; break;
+                case Label.RIGHT: c.anchor = GridBagConstraints.EAST; break;
+                }
+            }
+            gridbag.setConstraints(components[i], c);
+        }
+
+    }
+
+    /**
+    Provides easy way to change the spacing around an object in a GridBagLayout.
+    Call AFTER fixGridBag, passing in the container, the component, and the
+    new insets.
+    */
+    public static void setInsets(Container cont, Component comp, Insets insets) {
+        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
+        GridBagConstraints g = gbl.getConstraints(comp);
+        g.insets = insets;
+        gbl.setConstraints(comp,g);
+    }
+
+    public static Panel createSpacer() {
+        Panel spacer = new Panel();
+        spacer.setLayout(null);
+        spacer.setSize(1000, 1);
+        return spacer;
+    }
+
+    // to avoid goofy updates and misplaced cursors
+    public static void setText(TextComponent area, String newText) {
+        String foo = area.getText();
+        if (foo.equals(newText)) return;
+        area.setText(newText);
+    }
+    
+    /**
+     * Compares two locals. Return value is negative
+     * if they're different, and more positive the more
+     * fields that match.
+     */
+     
+    public static int compareLocales(Locale l1, Locale l2)
+    {
+        int result = -1;
+        
+        if (l1.getLanguage().equals(l2.getLanguage())) {
+            result += 1;
+            
+            if (l1.getCountry().equals(l2.getCountry())) {
+                result += 1;
+                
+                if (l1.getVariant().equals(l2.getVariant())) {
+                    result += 1;
+                }
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Get the G7 locale list for demos.
+     */
+    public static Locale[] getG7Locales() {
+        return localeList;
+    }
+    private static Locale[] localeList = {
+        new Locale("DA", "DK", ""),
+        new Locale("EN", "US", ""),
+        new Locale("EN", "GB", ""),
+        new Locale("EN", "CA", ""),
+        new Locale("FR", "FR", ""),
+        new Locale("FR", "CA", ""),
+        new Locale("DE", "DE", ""),
+        new Locale("IT", "IT", ""),
+    //new Locale("JA", "JP", ""),
+    };
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
new file mode 100644
index 00000000000..e6147be986e
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
@@ -0,0 +1,827 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.awt.AWTEventMulticaster;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.TextEvent;
+import java.awt.event.TextListener;
+import java.text.BreakIterator;
+
+// LIU: Changed from final to non-final
+public class DumbTextComponent extends Canvas
+  implements KeyListener, MouseListener, MouseMotionListener, FocusListener
+{
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8265547730738652151L;
+
+//    private transient static final String copyright =
+//      "Copyright \u00A9 1998, Mark Davis. All Rights Reserved.";
+    private transient static boolean DEBUG = false;
+
+    private String contents = "";
+    private Selection selection = new Selection();
+    private int activeStart = -1;
+    private boolean editable = true;
+
+    private transient Selection tempSelection = new Selection();
+    private transient boolean focus;
+    private transient BreakIterator lineBreaker = BreakIterator.getLineInstance();
+    private transient BreakIterator wordBreaker = BreakIterator.getWordInstance();
+    private transient BreakIterator charBreaker = BreakIterator.getCharacterInstance();
+    private transient int lineAscent;
+    private transient int lineHeight;
+    private transient int lineLeading;
+    private transient int lastHeight = 10;
+    private transient int lastWidth = 50;
+    private static final int MAX_LINES = 200; // LIU: Use symbolic name
+    private transient int[] lineStarts = new int[MAX_LINES]; // LIU
+    private transient int lineCount = 1;
+
+    private transient boolean valid = false;
+    private transient FontMetrics fm;
+    private transient boolean redoLines = true;
+    private transient boolean doubleClick = false;
+    private transient TextListener textListener;
+    private transient ActionListener selectionListener;
+    private transient Image cacheImage;
+    private transient Dimension mySize;
+    private transient int xInset = 5;
+    private transient int yInset = 5;
+    private transient Point startPoint = new Point();
+    private transient Point endPoint = new Point();
+    private transient Point caretPoint = new Point();
+    private transient Point activePoint = new Point();
+    
+    //private transient static String clipBoard;
+
+    private static final char CR = '\015'; // LIU
+
+    // ============================================
+
+    public DumbTextComponent() {
+        addMouseListener(this);
+        addMouseMotionListener(this);
+        addKeyListener(this);
+        addFocusListener(this);
+        setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
+
+    }
+
+// ================ Events ====================
+
+    // public boolean isFocusTraversable() { return true; }
+
+    public void addActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.add(selectionListener, l);
+    }
+
+    public void removeActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.remove(selectionListener, l);
+    }
+
+    public void addTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.add(textListener, l);
+    }
+
+    public void removeTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.remove(textListener, l);
+    }
+
+    private transient boolean pressed;
+
+    public void mousePressed(MouseEvent e) {
+        if (DEBUG) System.out.println("mousePressed");
+        if (pressed) {
+            select(e,false);
+        } else {
+            doubleClick = e.getClickCount() > 1;
+            requestFocus();
+            select(e, true);
+            pressed = true;
+        }
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseDragged");
+        select(e, false);
+    }
+
+    public void mouseReleased(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseReleased");
+        pressed = false;
+    }
+
+    public void mouseEntered(MouseEvent e) {
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseExited(MouseEvent e){
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseClicked(MouseEvent e) {}
+    public void mouseMoved(MouseEvent e) {}
+
+
+    public void focusGained(FocusEvent e) {
+        if (DEBUG) System.out.println("focusGained");
+        focus = true;
+        valid = false;
+        repaint(16);
+    }
+    public void focusLost(FocusEvent e) {
+        if (DEBUG) System.out.println("focusLost");
+        focus = false;
+        valid = false;
+        repaint(16);
+    }
+
+    public void select(MouseEvent e, boolean first) {
+        setKeyStart(-1);
+        point2Offset(e.getPoint(), tempSelection);
+        if (first) {
+            if ((e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+        }
+        // fix words
+        if (doubleClick) {
+            tempSelection.expand(wordBreaker);
+        }
+        select(tempSelection);
+    }
+    
+    public void keyPressed(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyPressed "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+        int start = selection.getStart();
+        int end = selection.getEnd();
+        boolean shift = (e.getModifiers() & InputEvent.SHIFT_MASK) != 0;
+        boolean ctrl = (e.getModifiers() & InputEvent.CTRL_MASK) != 0;
+                
+        switch (code) {
+        case KeyEvent.VK_Q:
+            if (!ctrl || !editable) break;
+            setKeyStart(-1);
+            fixHex();
+            break;
+        case KeyEvent.VK_V:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                paste();
+            }
+            break;
+        case KeyEvent.VK_C:
+            if (!ctrl) break;
+            copy();
+            break;
+        case KeyEvent.VK_X:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                copy();
+                insertText("");
+            }
+            break;
+        case KeyEvent.VK_A:
+            if (!ctrl) break;
+            setKeyStart(-1);
+            select(Integer.MAX_VALUE, 0, false);
+            break;
+        case KeyEvent.VK_RIGHT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, +1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_LEFT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, -1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_UP: // LIU: Add support for up arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, -1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DOWN: // LIU: Add support for down arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, +1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DELETE: // LIU: Add delete key support
+            if (!editable) break;
+            setKeyStart(-1);
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep();
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;            
+        }
+    }
+
+    void copy() {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        StringSelection ss = new StringSelection(
+            contents.substring(selection.getStart(), selection.getEnd()));
+        cb.setContents(ss, ss);
+    }
+    
+    void paste () {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        Transferable t = cb.getContents(this);
+        if (t == null) {
+            this.getToolkit().beep();
+            return;
+        }
+        try {
+            String temp = (String) t.getTransferData(DataFlavor.stringFlavor);
+            insertText(temp);
+        } catch (Exception e) {
+            this.getToolkit().beep();
+        }            
+    }
+
+    /**
+     * LIU: Given an offset into contents, moves up or down by lines,
+     * according to lineStarts[].
+     * @param off the offset into contents
+     * @param delta how many lines to move up (< 0) or down (> 0)
+     * @return the new offset into contents
+     */
+    private int lineDelta(int off, int delta) {
+        int line = findLine(off, false);
+        int posInLine = off - lineStarts[line];
+        // System.out.println("off=" + off + " at " + line + ":" + posInLine);
+        line += delta;
+        if (line < 0) {
+            line = posInLine = 0;
+        } else if (line >= lineCount) {
+            return contents.length();
+        }
+        off = lineStarts[line] + posInLine;
+        if (off >= lineStarts[line+1]) {
+            off = lineStarts[line+1] - 1;
+        }
+        return off;
+    }
+      
+    public void keyReleased(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyReleased "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+    }
+
+    public void keyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        if (DEBUG) System.out.println("keyTyped "
+          + hex((char)ch) + ", " + hex((char)e.getModifiers()));
+        if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) return;
+        int start, end;
+        switch (ch) {
+        case KeyEvent.CHAR_UNDEFINED:
+            break;
+        case KeyEvent.VK_BACK_SPACE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                --start;
+                if (start < 0) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;        
+        case KeyEvent.VK_DELETE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;
+        default:
+            if (!editable) break;
+            // LIU: Dispatch to subclass API
+            handleKeyTyped(e);
+            break;
+        }
+    }
+
+    // LIU: Subclass API for handling of key typing
+    protected void handleKeyTyped(KeyEvent e) {
+        insertText(String.valueOf(e.getKeyChar()));
+    }
+    
+    protected void setKeyStart(int keyStart) {
+        if (activeStart != keyStart) {
+            activeStart = keyStart;
+            repaint(10);
+        }
+    }
+    
+    protected void validateKeyStart() {
+        if (activeStart > selection.getStart()) {
+            activeStart = selection.getStart();
+            repaint(10);
+        }
+    }
+    
+    protected int getKeyStart() {
+        return activeStart;
+    }
+
+// ===================== Control ======================
+
+    public synchronized void setEditable(boolean b) {
+        editable = b;
+    }
+
+    public boolean isEditable() {
+        return editable;
+    }
+
+    public void select(Selection newSelection) {
+        newSelection.pin(contents);
+        if (!selection.equals(newSelection)) {
+            selection.set(newSelection);
+            if (selectionListener != null) {
+                selectionListener.actionPerformed(
+                  new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+                    "Selection Changed", 0));
+            }
+            repaint(10);
+            valid = false;
+        }
+    }
+
+    public void select(int start, int end) {
+        select(start, end, false);
+    }
+
+    public void select(int start, int end, boolean clickAfter) {
+        tempSelection.set(start, end, clickAfter);
+        select(tempSelection);
+    }
+
+    public int getSelectionStart() {
+        return selection.getStart();
+    }
+
+    public int getSelectionEnd() {
+        return selection.getEnd();
+    }
+
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x,y,w,h);
+        redoLines = true;
+    }
+
+    public Dimension getPreferredSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMaximumSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMinimumSize() {
+        return new Dimension(lastHeight,lastHeight);
+    }
+
+    public void setText(String text) {
+        setText2(text);
+        select(tempSelection.set(selection).pin(contents));
+    }
+
+    public void setText2(String text) {
+        contents = text;
+        charBreaker.setText(text);
+        wordBreaker.setText(text);
+        lineBreaker.setText(text);
+        redoLines = true;
+        if (textListener != null)
+            textListener.textValueChanged(
+              new TextEvent(this, TextEvent.TEXT_VALUE_CHANGED));
+        repaint(16);
+    }
+
+    public void insertText(String text) {
+        if (activeStart == -1) activeStart = selection.getStart();
+        replaceRange(text, selection.getStart(), selection.getEnd());
+    }
+
+    public void replaceRange(String s, int start, int end) {
+        setText2(contents.substring(0,start) + s
+          + contents.substring(end));
+        select(tempSelection.set(selection).
+          fixAfterReplace(start, end, s.length()));
+        validateKeyStart();
+    }
+
+    public String getText() {
+        return contents;
+    }
+
+    public void setFont(Font font) {
+        super.setFont(font);
+        redoLines = true;
+        repaint(16);
+    }
+
+    // ================== Graphics ======================
+
+    public void update(Graphics g) {
+        if (DEBUG) System.out.println("update");
+        paint(g);
+    }
+
+    public void paint(Graphics g) {
+        mySize = getSize();
+        if (cacheImage == null
+          || cacheImage.getHeight(this) != mySize.height
+          || cacheImage.getWidth(this) != mySize.width) {
+            cacheImage = createImage(mySize.width, mySize.height);
+            valid = false;
+        }
+        if (!valid || redoLines) {
+            if (DEBUG) System.out.println("painting");
+            paint2(cacheImage.getGraphics());
+            valid = true;
+        }
+        //getToolkit().sync();
+        if (DEBUG) System.out.println("copying");
+        g.drawImage(cacheImage,
+          0, 0, mySize.width, mySize.height,
+          0, 0, mySize.width, mySize.height,
+          this);
+    }
+
+    public void paint2(Graphics g) {
+        g.clearRect(0, 0, mySize.width, mySize.height);
+        if (DEBUG) System.out.println("print");
+        if (focus) g.setColor(Color.black);
+        else g.setColor(Color.gray);
+        g.drawRect(0,0,mySize.width-1,mySize.height-1);
+        g.setClip(1,1,
+          mySize.width-2,mySize.height-2);
+        g.setColor(Color.black);
+        g.setFont(getFont());
+        fm = g.getFontMetrics();
+        lineAscent = fm.getAscent();
+        lineLeading = fm.getLeading();
+        lineHeight = lineAscent + fm.getDescent() + lineLeading;
+        int y = yInset + lineAscent;
+        String lastSubstring = "";
+        if (redoLines) fixLineStarts(mySize.width-xInset-xInset);
+        for (int i = 0; i < lineCount; y += lineHeight, ++i) {
+            // LIU: Don't display terminating ^M characters
+            int lim = lineStarts[i+1];
+            if (lim > 0 && contents.length() > 0 &&
+                contents.charAt(lim-1) == CR) --lim;
+            lastSubstring = contents.substring(lineStarts[i],lim);
+            g.drawString(lastSubstring, xInset, y);
+        }
+        drawSelection(g, lastSubstring);
+        lastHeight = y + yInset - lineHeight + yInset;
+        lastWidth = mySize.width-xInset-xInset;
+    }
+
+    void paintRect(Graphics g, int x, int y, int w, int h) {
+        if (focus) {
+            g.fillRect(x, y, w, h);
+        } else {
+            g.drawRect(x, y, w-1, h-1);
+        }
+    }
+
+    public void drawSelection(Graphics g, String lastSubstring) {
+        g.setXORMode(Color.black);
+        if (activeStart != -1) {
+            offset2Point(activeStart, false, activePoint);
+            g.setColor(Color.magenta);
+            int line = activePoint.x - 1;
+            g.fillRect(line, activePoint.y, 1, lineHeight);
+        }
+        if (selection.isCaret()) {
+            offset2Point(selection.caret, selection.clickAfter, caretPoint);
+        } else {
+            if (focus) g.setColor(Color.blue);
+            else g.setColor(Color.yellow);
+            offset2Point(selection.getStart(), true, startPoint);
+            offset2Point(selection.getEnd(), false, endPoint);
+            if (selection.getStart() == selection.caret)
+                caretPoint.setLocation(startPoint);
+            else caretPoint.setLocation(endPoint);
+            if (startPoint.y == endPoint.y) {
+                paintRect(g, startPoint.x, startPoint.y,
+                  Math.max(1,endPoint.x-startPoint.x), lineHeight);
+            } else {
+                paintRect(g, startPoint.x, startPoint.y,
+                  (mySize.width-xInset)-startPoint.x, lineHeight);
+                if (startPoint.y + lineHeight < endPoint.y)
+                  paintRect(g, xInset, startPoint.y + lineHeight,
+                  (mySize.width-xInset)-xInset, endPoint.y - startPoint.y - lineHeight);
+                paintRect(g, xInset, endPoint.y, endPoint.x-xInset, lineHeight);
+            }
+        }
+        if (focus || selection.isCaret()) {
+            if (focus) g.setColor(Color.green);
+            else g.setColor(Color.red);
+            int line = caretPoint.x - (selection.clickAfter ? 0 : 1);
+            g.fillRect(line, caretPoint.y, 1, lineHeight);
+            int w = lineHeight/12 + 1;
+            int braces = line - (selection.clickAfter ? -1 : w);
+            g.fillRect(braces, caretPoint.y, w, 1);
+            g.fillRect(braces, caretPoint.y + lineHeight - 1, w, 1);
+        }
+    }
+
+    public Point offset2Point(int off, boolean start, Point p) {
+        int line = findLine(off, start);
+        int width = 0;
+        try {
+            width = fm.stringWidth(
+              contents.substring(lineStarts[line], off));
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+        p.x = width + xInset;
+        if (p.x > mySize.width - xInset)
+            p.x = mySize.width - xInset;
+        p.y = lineHeight * line + yInset;
+        return p;
+    }
+
+    private int findLine(int off, boolean start) {
+        // if it is start, then go to the next line!
+        if (start) ++off;
+        for (int i = 1; i < lineCount; ++i) {
+            // LIU: This was <= ; changed to < to make caret after
+            // final CR in line appear at START of next line.
+            if (off < lineStarts[i]) return i-1;
+        }
+        // LIU: Check for special case; after CR at end of the last line
+        if (off == lineStarts[lineCount] &&
+            off > 0 && contents.length() > 0 && contents.charAt(off-1) == CR) {
+            return lineCount;
+        }
+        return lineCount-1;
+    }
+
+    // offsets on any line will go from start,true to end,false
+    // excluding start,false and end,true
+    public Selection point2Offset(Point p, Selection o) {
+        if (p.y < yInset) {
+            o.caret = 0;
+            o.clickAfter = true;
+            return o;
+        }
+        int line = (p.y - yInset)/lineHeight;
+        if (line >= lineCount) {
+            o.caret = contents.length();
+            o.clickAfter = false;
+            return o;
+        }
+        int target = p.x - xInset;
+        if (target <= 0) {
+            o.caret = lineStarts[line];
+            o.clickAfter = true;
+            return o;
+        }
+        int lowGuess = lineStarts[line];
+        int lowWidth = 0;
+        int highGuess = lineStarts[line+1];
+        int highWidth = fm.stringWidth(contents.substring(lineStarts[line],highGuess));
+        if (target >= highWidth) {
+            o.caret = lineStarts[line+1];
+            o.clickAfter = false;
+            return o;
+        }
+        while (lowGuess < highGuess - 1) {
+            int guess = (lowGuess + highGuess)/2;
+            int width = fm.stringWidth(contents.substring(lineStarts[line],guess));
+            if (width <= target) {
+                lowGuess = guess;
+                lowWidth = width;
+                if (width == target) break;
+            } else {
+                highGuess = guess;
+                highWidth = width;
+            }
+        }
+        // at end, either lowWidth < target < width(low+1), or lowWidth = target
+        int highBound = charBreaker.following(lowGuess);
+        int lowBound = charBreaker.previous();
+        // we are now at character boundaries
+        if (lowBound != lowGuess)
+            lowWidth = fm.stringWidth(contents.substring(lineStarts[line],lowBound));
+        if (highBound != highGuess)
+            highWidth = fm.stringWidth(contents.substring(lineStarts[line],highBound));
+        // we now have the right widths
+        if (target - lowWidth < highWidth - target) {
+            o.caret = lowBound;
+            o.clickAfter = true;
+        } else {
+            o.caret = highBound;
+            o.clickAfter = false;
+        }
+        // we now have the closest!
+        return o;
+    }
+
+    private void fixLineStarts(int width) {
+        lineCount = 1;
+        lineStarts[0] = 0;
+        if (contents.length() == 0) {
+            lineStarts[1] = 0;
+            return;
+        }
+        int end = 0;
+        // LIU: Add check for MAX_LINES
+        for (int start = 0; start < contents.length() && lineCount < MAX_LINES;
+             start = end) {
+            end = nextLine(fm, start, width);
+            lineStarts[lineCount++] = end;
+            if (end == start) { // LIU: Assertion
+                throw new RuntimeException("nextLine broken");
+            }
+        }
+        --lineCount;
+        redoLines = false;
+    }
+
+    // LIU: Enhanced to wrap long lines.  Bug with return of start fixed.
+    public int nextLine(FontMetrics fMtr, int start, int width) {
+        int len = contents.length();
+        for (int i = start; i < len; ++i) {
+            // check for line separator
+            char ch = (contents.charAt(i));
+            if (ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029) {
+                len = i + 1;
+                if (ch == 0x000D && i+1 < len && contents.charAt(i+1) == 0x000A) // crlf
+                    ++len; // grab extra char
+                break;
+            }
+        }
+        String subject = contents.substring(start,len);
+        if (visibleWidth(fMtr, subject) <= width)
+          return len;
+
+        // LIU: Remainder of this method rewritten to accomodate lines
+        // longer than the component width by first trying to break
+        // into lines; then words; finally chars.
+        int n = findFittingBreak(fMtr, subject, width, lineBreaker);
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, wordBreaker);
+        }
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, charBreaker);
+        }
+        return n > 0 ? start + n : len;
+    }
+
+    /**
+     * LIU: Finds the longest substring that fits a given width
+     * composed of subunits returned by a BreakIterator.  If the smallest
+     * subunit is too long, returns 0.
+     * @param fMtr metrics to use
+     * @param line the string to be fix into width
+     * @param width line.substring(0, result) must be <= width
+     * @param breaker the BreakIterator that will be used to find subunits
+     * @return maximum characters, at boundaries returned by breaker,
+     * that fit into width, or zero on failure
+     */
+    private int findFittingBreak(FontMetrics fMtr, String line, int width,
+                                 BreakIterator breaker) {
+        breaker.setText(line);
+        int last = breaker.first();
+        int end = breaker.next();
+        while (end != BreakIterator.DONE &&
+               visibleWidth(fMtr, line.substring(0, end)) <= width) {
+            last = end;
+            end = breaker.next();
+        }
+        return last;
+    }
+
+    public int visibleWidth(FontMetrics fMtr, String s) {
+        int i;
+        for (i = s.length()-1; i >= 0; --i) {
+            char ch = s.charAt(i);
+            if (!(ch == ' ' || ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029))
+                return fMtr.stringWidth(s.substring(0,i+1));
+        }
+        return 0;
+    }
+
+// =============== Utility ====================
+
+    private void fixHex() {
+        if (selection.getEnd() == 0) return;
+        int store = 0;
+        int places = 1;
+        int count = 0;
+        int min = Math.min(8,selection.getEnd());
+        for (int i = 0; i < min; ++i) {
+            char ch = contents.charAt(selection.getEnd()-1-i);
+            int value = Character.getNumericValue(ch);
+            if (value < 0 || value > 15) break;
+            store += places * value;
+            ++count;
+            places *= 16;
+        }
+        String add = "";
+        int bottom = store & 0xFFFF;
+        if (store >= 0xD8000000 && store < 0xDC000000
+          && bottom >= 0xDC00 && bottom < 0xE000) { // surrogates
+            add = "" + (char)(store >> 16) + (char)bottom;
+        } else if (store > 0xFFFF && store <= 0x10FFFF) {
+            store -= 0x10000;
+            add = "" + (char)(((store >> 10) & 0x3FF) + 0xD800)
+              + (char)((store & 0x3FF) + 0xDC00);
+              
+        } else if (count >= 4) {
+            count = 4;
+            add = ""+(char)(store & 0xFFFF);
+        } else {
+            count = 1;
+            char ch = contents.charAt(selection.getEnd()-1);
+            add = hex(ch);
+            if (ch >= 0xDC00 && ch <= 0xDFFF && selection.getEnd() > 1) {
+                ch = contents.charAt(selection.getEnd()-2);
+                if (ch >= 0xD800 && ch <= 0xDBFF) {
+                    count = 2;
+                    add = hex(ch) + add;
+                }
+            }
+        }
+        replaceRange(add, selection.getEnd()-count, selection.getEnd());
+    }
+
+    public static String hex(char ch) {
+        String result = Integer.toString(ch,16).toUpperCase();
+        result = "0000".substring(result.length(),4) + result;
+        return result;
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/Selection.java b/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
new file mode 100644
index 00000000000..c07b7704489
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
@@ -0,0 +1,161 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.text.BreakIterator;
+
+public final class Selection {
+
+    public int anchor;
+    public int caret;
+    public boolean clickAfter;
+
+    public int getStart() {
+        return anchor < caret ? anchor : caret;
+    }
+
+    public int getEnd() {
+        return anchor > caret ? anchor : caret;
+    }
+
+    public boolean isCaret() {
+        return anchor == caret;
+    }
+
+    public Selection set(Selection other) {
+        anchor = other.anchor;
+        caret = other.caret;
+        clickAfter = other.clickAfter;
+        return this;
+    }
+
+    public Selection set(int anchor, int caret, boolean clickAfter) {
+        this.anchor = anchor;
+        this.caret = caret;
+        this.clickAfter = clickAfter;
+        return this;
+    }
+
+    public boolean equals(Object other) {
+        Selection other2 = (Selection)other;
+        return anchor == other2.anchor
+          && caret == other2.caret
+          && clickAfter == other2.clickAfter;
+    }
+
+    public boolean isLessThan(Selection other) {
+        return getStart() < other.getEnd();
+    }
+
+    public Selection pin(String text) {
+        if (anchor > text.length()) {
+            anchor = text.length();
+        } else if (anchor < 0) {
+            anchor = 0;
+        }
+        if (caret > text.length()) {
+            caret = text.length();
+            clickAfter = true;
+        } else if (caret < 0) {
+            caret = 0;
+            clickAfter = false;
+        }
+        return this;
+    }
+
+    public Selection swap(Selection after) {
+        int temp = anchor;
+        anchor = after.anchor;
+        after.anchor = temp;
+        temp = caret;
+        caret = after.caret;
+        after.caret = temp;
+        boolean b = clickAfter;
+        clickAfter = after.clickAfter;
+        after.clickAfter = b;
+        return this;
+    }
+
+    public Selection fixAfterReplace(int start, int end, int len) {
+        if (anchor >= start) {
+            if (anchor < end) anchor = end;
+            anchor = start + len + anchor - end;
+        }
+        if (caret >= start) {
+            if (caret < end) caret = end;
+            caret = start + len + caret - end;
+        }
+        return this;
+    }
+
+        // Mac & Windows considerably different
+        // Mac: end++. If start!=end, start=end
+        //  SHIFT: move end right
+        //  CTL: no different
+        // Windows:
+        //  UNSHIFTED: if start!=end, start = end, else start=end=end+1;
+        //       anchor = tip = start
+        //  SHIFT: tip++
+        //  CTL: if start!=end, start = end = nextbound(end-1),
+        //   else start=end=nextbound(end)
+        //       anchor = tip = start
+        //  CTL/SHIFT: tip = nextbound(tip)
+
+    public Selection nextBound(BreakIterator breaker,
+      int direction, boolean extend) {
+        if (!extend && anchor != caret) caret -= direction;
+        caret = next(caret, breaker, direction, true);
+        if (!extend) anchor = caret;
+        clickAfter = false;
+        return this;
+    }
+
+    // expand start and end to word breaks--if they are not already on one
+    public void expand(BreakIterator breaker) {
+        if (anchor <= caret) {
+            anchor = next(anchor,breaker,-1,false);
+            caret = next(caret,breaker,1,false);
+            /*
+            try {
+                breaker.following(anchor);
+                anchor = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                caret = breaker.following(caret-1);
+            } catch (Exception e) {}
+            */
+        } else {
+            anchor = next(anchor,breaker,1,false);
+            caret = next(caret,breaker,-1,false);
+            /*
+            try {
+                breaker.following(caret);
+                caret = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                anchor = breaker.following(anchor-1);
+            } catch (Exception e) {}
+            */
+        }
+    }
+
+    // different = false - move to next boundary, unless on one
+    // true - move to next boundary, even if on one
+    public static int next(int position, BreakIterator breaker,
+      int direction, boolean different) {
+        if (!different) position -= direction;
+        try {
+            if (direction > 0) {
+                position = breaker.following(position);
+            } else {
+                breaker.following(position-1);
+                position = breaker.previous();
+            }
+        } catch (Exception e) {}
+        return position;
+    }
+}
+
diff --git a/demos/src/com/ibm/icu/dev/demo/impl/package.html b/demos/src/com/ibm/icu/dev/demo/impl/package.html
new file mode 100644
index 00000000000..a7e8d35a2ac
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/impl/package.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+Shared utilities for demo applications and Applets.
+
+
\ No newline at end of file
diff --git a/demos/src/com/ibm/icu/dev/demo/messagepattern/MessagePatternDemo.java b/demos/src/com/ibm/icu/dev/demo/messagepattern/MessagePatternDemo.java
new file mode 100644
index 00000000000..4b8e75efb55
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/messagepattern/MessagePatternDemo.java
@@ -0,0 +1,123 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2010-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*   created on: 2010aug21
+*   created by: Markus W. Scherer
+*/
+
+package com.ibm.icu.dev.demo.messagepattern;
+
+import com.ibm.icu.text.MessagePattern;
+
+/**
+ * Demo code for MessagePattern class.
+ * Pretty-prints the list of MessagePattern Parts and uses the MiniMessageFormatter
+ * with a few patterns.
+ * @author Markus Scherer
+ * @since 2010-aug-21
+ */
+public final class MessagePatternDemo {
+    private static final String manySpaces="                    ";
+
+    private static final void printParts(MessagePattern msg) {
+        String autoQA=msg.autoQuoteApostropheDeep();
+        if(!autoQA.equals(msg.getPatternString())) {
+            System.out.println("autoQA:   "+autoQA);
+        }
+        String indent="";
+        StringBuilder explanation=new StringBuilder();
+        MessagePattern.Part prevPart=null;
+        int count=msg.countParts();
+        for(int i=0; i0) {
+                explanation.append("=\"").append(msg.getSubstring(part)).append('"');
+            }
+            if(type.hasNumericValue()) {
+                explanation.append('=').append(msg.getNumericValue(part));
+            }
+            System.out.format("%2d: %s%s%s\n", i, indent, partString, explanation);
+            if(type==MessagePattern.Part.Type.MSG_LIMIT) {
+                int nestingLevel=part.getValue();
+                if(nestingLevel>1) {
+                    indent=manySpaces.substring(0, (nestingLevel-1)*2);  // outdent
+                } else {
+                    indent="";
+                }
+            }
+            prevPart=part;
+        }
+    }
+
+    private static final MessagePattern print(String s) {
+        System.out.println("message:  "+s);
+        try {
+            MessagePattern msg=new MessagePattern(s);
+            printParts(msg);
+            return msg;
+        } catch(Exception e) {
+            System.out.println("Exception: "+e.getMessage());
+            return null;
+        }
+    }
+
+    private static final void printFormat(String s, Object... args) {
+        MessagePattern msg=print(s);
+        if(msg!=null) {
+            System.out.println(new MiniMessageFormatter(msg).format(new StringBuilder(), args));
+        }
+    }
+
+    private static final void printFormatWithNamedArgs(String s, Object... args) {
+        MessagePattern msg=print(s);
+        if(msg!=null) {
+            System.out.println(new MiniMessageFormatter(msg).format(
+                new StringBuilder(), MiniMessageFormatter.mapFromNameValuePairs(args)));
+        }
+    }
+
+    public static void main(String[] argv) {
+        print("Hello!");
+        print("Hel'lo!");
+        print("Hel'{o");
+        print("Hel'{'o");
+        // double apostrophe inside quoted literal text still encodes a single apostrophe
+        printFormat("a'{bc''de'f");
+        print("a'{bc''de'f{0,number,g'hi''jk'l#}");
+        print("abc{0}def");
+        print("abc{ arg }def");
+        print("abc{1}def{arg}ghi");
+        print("abc{2, number}ghi{3, select, xx {xxx} other {ooo}} xyz");
+        print("abc{gender,select,"+
+                  "other{His name is {person,XML,{$PERSON}}.}}xyz");
+        print("abc{num_people, plural, offset:17 few{fff} other {oooo}}xyz");
+        print("abc{ num , plural , offset: 2 =1 {1} =-1 {-1} =3.14 {3.14} other {oo} }xyz");
+        print("I don't {a,plural,other{w'{'on't #'#'}} and "+
+              "{b,select,other{shan't'}'}} '{'''know'''}' and "+
+              "{c,choice,0#can't'|'}"+
+              "{z,number,#'#'###.00'}'}.");
+        print("a_{0,choice,-∞ #-inf|  5≤ five | 99 # ninety'|'nine  }_z");
+        print("a_{0,plural,other{num=#'#'=#'#'={1,number,##}!}}_z");
+        print("}}}{0}}");  // yes, unmatched '}' are ok in ICU MessageFormat
+        printFormat("Hello {0}!", "Alice");
+        String msg="++{0, select, female{{1} calls you her friend}"+
+                                 "other{{1} calls you '{their}' friend}"+
+                                 "male{{1} calls you his friend}}--";
+        printFormat(msg, "female", "Alice");
+        printFormat(msg, "male", "Bob");
+        printFormat(msg, "unknown", "sushifan3");
+        msg="_'__{gender, select, female{Her n'ame is {person_name}.}"+
+                                "other{His n'ame is {person_name}.}}__'_";
+        printFormatWithNamedArgs(msg, "gender", "female", "person_name", "Alice");
+        printFormatWithNamedArgs(msg, "gender", "male", "person_name", "Bob");
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/messagepattern/MiniMessageFormatter.java b/demos/src/com/ibm/icu/dev/demo/messagepattern/MiniMessageFormatter.java
new file mode 100644
index 00000000000..2c4bb41c4d6
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/messagepattern/MiniMessageFormatter.java
@@ -0,0 +1,186 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2010-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*   created on: 2010aug21
+*   created by: Markus W. Scherer
+*/
+
+package com.ibm.icu.dev.demo.messagepattern;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.ibm.icu.text.MessagePattern;
+import com.ibm.icu.text.MessagePattern.ArgType;
+import com.ibm.icu.text.MessagePattern.Part;
+import com.ibm.icu.util.Freezable;
+
+/**
+ * Mini message formatter for a small subset of the ICU MessageFormat syntax.
+ * Supports only string substitution and select formatting.
+ * @author Markus Scherer
+ * @since 2010-aug-21
+ */
+public final class MiniMessageFormatter implements Freezable {
+    public MiniMessageFormatter() {
+        this.msg=new MessagePattern();
+    }
+
+    public MiniMessageFormatter(MessagePattern msg) {
+        this.msg=(MessagePattern)msg.clone();
+    }
+
+    public MiniMessageFormatter(String msg) {
+        this.msg=new MessagePattern(msg);
+    }
+
+    public MiniMessageFormatter applyPattern(String msg) {
+        this.msg.parse(msg);
+        return this;
+    }
+
+    public String getPatternString() {
+        return msg.getPatternString();
+    }
+
+    public boolean hasNamedArguments() {
+        return msg.hasNamedArguments();
+    }
+
+    public boolean hasNumberedArguments() {
+        return msg.hasNumberedArguments();
+    }
+
+    /**
+     * Formats the parsed message with positional arguments.
+     * Supports only string substitution (e.g., {3}) and select format.
+     * @param dest gets the formatted message appended
+     * @param args positional arguments
+     * @return dest
+     */
+    public Appendable format(Appendable dest, Object... args) {
+        if(msg.hasNamedArguments()) {
+            throw new IllegalArgumentException(
+                "Formatting message with named arguments using positional argument values.");
+        }
+        format(0, dest, args, null);
+        return dest;
+    }
+
+    public static final String format(String msg, Object... args) {
+        return new MiniMessageFormatter(msg).format(new StringBuilder(2*msg.length()), args).toString();
+    }
+
+    public Appendable format(Appendable dest, Map argsMap) {
+        if(msg.hasNumberedArguments()) {
+            throw new IllegalArgumentException(
+                "Formatting message with numbered arguments using named argument values.");
+        }
+        format(0, dest, null, argsMap);
+        return dest;
+    }
+
+    public static final String format(String msg, Map argsMap) {
+        return new MiniMessageFormatter(msg).format(new StringBuilder(2*msg.length()), argsMap).toString();
+    }
+
+    private int format(int msgStart, Appendable dest, Object[] args, Map argsMap) {
+        try {
+            String msgString=msg.getPatternString();
+            int prevIndex=msg.getPart(msgStart).getLimit();
+            for(int i=msgStart+1;; ++i) {
+                Part part=msg.getPart(i);
+                Part.Type type=part.getType();
+                int index=part.getIndex();
+                dest.append(msgString, prevIndex, index);
+                if(type==Part.Type.MSG_LIMIT) {
+                    return i;
+                }
+                if(type==Part.Type.SKIP_SYNTAX || type==Part.Type.INSERT_CHAR) {
+                    prevIndex=part.getLimit();
+                    continue;
+                }
+                assert type==Part.Type.ARG_START : "Unexpected Part "+part+" in parsed message.";
+                int argLimit=msg.getLimitPartIndex(i);
+                ArgType argType=part.getArgType();
+                part=msg.getPart(++i);
+                Object arg;
+                if(args!=null) {
+                    try {
+                        arg=args[part.getValue()];  // args[ARG_NUMBER]
+                    } catch(IndexOutOfBoundsException e) {
+                        throw new IndexOutOfBoundsException(
+                            "No argument at index "+part.getValue());
+                    }
+                } else {
+                    arg=argsMap.get(msg.getSubstring(part));  // args[ARG_NAME]
+                    if(arg==null) {
+                        throw new IndexOutOfBoundsException(
+                            "No argument for name "+msg.getSubstring(part));
+                    }
+                }
+                String argValue=arg.toString();
+                ++i;
+                if(argType==ArgType.NONE) {
+                    dest.append(argValue);
+                } else if(argType==ArgType.SELECT) {
+                    // Similar to SelectFormat.findSubMessage().
+                    int subMsgStart=0;
+                    for(;; ++i) {  // (ARG_SELECTOR, message) pairs until ARG_LIMIT
+                        part=msg.getPart(i++);
+                        if(part.getType()==Part.Type.ARG_LIMIT) {
+                            assert subMsgStart!=0;  // The parser made sure this is the case.
+                            break;
+                        // else: part is an ARG_SELECTOR followed by a message
+                        } else if(msg.partSubstringMatches(part, argValue)) {
+                            // keyword matches
+                            subMsgStart=i;
+                            break;
+                        } else if(subMsgStart==0 && msg.partSubstringMatches(part, "other")) {
+                            subMsgStart=i;
+                        }
+                        i=msg.getLimitPartIndex(i);
+                    }
+                    format(subMsgStart, dest, args, argsMap);
+                } else {
+                    throw new UnsupportedOperationException("Unsupported argument type "+argType);
+                }
+                prevIndex=msg.getPart(argLimit).getLimit();
+                i=argLimit;
+            }
+        } catch(IOException e) {  // Appendable throws IOException
+            throw new RuntimeException(e);  // We do not want a throws clause.
+        }
+    }
+
+    /**
+     * Presents an array of (String, Object) pairs as a Map.
+     * Only for temporary use for formatting with named arguments.
+     */
+    public static Map mapFromNameValuePairs(Object[] args) {
+        HashMap argsMap = new HashMap();
+        for(int i=0; i");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber /= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-1);
+            }
+        } );
+        panel2.add(button);
+        panel.add(panel2, "East");
+        leftPanel.add(panel, "North");
+        leftPanel.add(textField, "Center");
+
+        Panel rightPanel = new Panel();
+        rightPanel.setLayout(new BorderLayout());
+        formatterMenu = new Choice();
+        for (int i = 0; i < RbnfSampleRuleSets.sampleRuleSetNames.length; i++)
+            formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
+        formatterMenu.addItem("Custom");
+        formatterMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                Choice source = (Choice)(e.getSource());
+                int item = source.getSelectedIndex();
+                Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+
+                commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[item]);
+
+                if (locale != null && (locale.getLanguage().equals("iw")
+                        || locale.getLanguage().equals("ru") || locale.getLanguage().equals("ja")
+                        || locale.getLanguage().equals("el")
+                        || locale.getLanguage().equals("zh"))) {
+                    textField.togglePanes(false);
+                    rulesField.togglePanes(false);
+                }
+                else {
+                    textField.togglePanes(true);
+                    rulesField.togglePanes(true);
+                }
+
+                makeNewSpelloutFormatter();
+                redisplay();
+            }
+        } );
+
+        ruleSetMenu = new Choice();
+        populateRuleSetMenu();
+
+        ruleSetMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                ruleSetName = ruleSetMenu.getSelectedItem();
+                redisplay();
+            }
+        } );
+
+        Panel menuPanel = new Panel();
+        menuPanel.setLayout(new GridLayout(1, 2));
+        menuPanel.add(formatterMenu);
+        menuPanel.add(ruleSetMenu);
+        rightPanel.add(menuPanel, "North");
+
+        rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()]);
+        rightPanel.add(rulesField, "Center");
+
+        mainPanel.add(leftPanel);
+        mainPanel.add(rightPanel);
+
+        window.add(mainPanel, "Center");
+        window.add(commentaryField, "South");
+
+        window.doLayout();
+        window.show();
+        final DemoApplet theApplet = applet;
+        window.addWindowListener(
+                new WindowAdapter() {
+                    public void windowClosing(WindowEvent e) {
+                        setVisible(false);
+                        window.dispose();
+
+                        if (theApplet != null) {
+                            theApplet.demoClosed();
+                        } else System.exit(0);
+                    }
+                } );
+        return window;
+    }
+
+    void roll(int delta) {
+        theNumber += delta;
+        redisplay();
+    }
+
+    void redisplay() {
+        numberField.setText(numberFormatter.format(theNumber));
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+    }
+
+    void makeNewSpelloutFormatter() {
+        int item = formatterMenu.getSelectedIndex();
+        String formatterMenuItem = formatterMenu.getSelectedItem();
+
+        if (formatterMenuItem.equals("Custom")) {
+            rulesField.setText(customRuleSet);
+            spelloutFormatter = new RuleBasedNumberFormat(customRuleSet);
+        }
+        else {
+            rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[item]);
+
+            Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.
+                            sampleRuleSets[item], locale);
+        }
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+    }
+
+    void populateRuleSetMenu() {
+        String[] ruleSetNames = spelloutFormatter.getRuleSetNames();
+
+        if (ruleSetMenu != null) {
+            ruleSetMenu.removeAll();
+            for (int i = 0; i < ruleSetNames.length; i++)
+                ruleSetMenu.addItem(ruleSetNames[i]);
+
+            ruleSetName = ruleSetMenu.getSelectedItem();
+        }
+        else
+            ruleSetName = ruleSetNames[0];
+    }
+
+//    private Frame demoWindow = null;
+
+    private TextComponent numberField;
+    private DemoTextFieldHolder textField;
+    private DemoTextFieldHolder rulesField;
+    private TextComponent commentaryField;
+    private Checkbox lenientParseButton;
+
+    private boolean numberFieldHasFocus = true;
+
+    private RuleBasedNumberFormat spelloutFormatter;
+    private DecimalFormat numberFormatter;
+    private ParsePosition parsePosition;
+
+    private boolean lenientParse = true;
+
+    private double theNumber = 0;
+//    private boolean canEdit = true;
+
+    private Choice formatterMenu;
+    private Choice ruleSetMenu;
+    private String ruleSetName;
+
+    private String customRuleSet = "NO RULES!";
+}
+
+class DemoTextField extends Component {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -7947090021239472658L;
+    public DemoTextField() {
+    }
+
+    public void setText(String text) {
+        this.text = text;
+        this.repaint();
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void paint(Graphics g) {
+        Font font = getFont();
+        FontMetrics fm = g.getFontMetrics();
+        g.setFont(font);
+        String txt = getText();
+        BreakIterator bi = BreakIterator.getLineInstance();
+        bi.setText(txt);
+        int lineHeight = fm.getHeight();
+        int width = getSize().width;
+        int penY = fm.getAscent();
+        int lineStart = 0;
+        int tempLineEnd = bi.first();
+        int lineEnd = 0;
+        int maxLineEnd = 0;
+        totalHeight = 0;
+
+        while (lineStart < txt.length()) {
+            maxLineEnd = txt.indexOf('\n', lineStart);
+            if (maxLineEnd == -1)
+                maxLineEnd = Integer.MAX_VALUE;
+            while (tempLineEnd != BreakIterator.DONE && fm.stringWidth(txt.substring(
+                            lineStart, tempLineEnd)) < width) {
+                lineEnd = tempLineEnd;
+                tempLineEnd = bi.next();
+            }
+            if (lineStart >= lineEnd) {
+                if (tempLineEnd == BreakIterator.DONE)
+                    lineEnd = txt.length();
+                else
+                    lineEnd = tempLineEnd;
+            }
+            if (lineEnd > maxLineEnd)
+                lineEnd = maxLineEnd;
+            g.drawString(txt.substring(lineStart, lineEnd), 0, penY);
+            penY += lineHeight;
+            totalHeight += lineHeight;
+            lineStart = lineEnd;
+            if (lineStart < txt.length() && txt.charAt(lineStart) == '\n')
+                ++lineStart;
+        }
+    }
+
+/*
+    public Dimension getPreferredSize() {
+        Dimension size = getParent().getSize();
+        return new Dimension(size.width, totalHeight);
+    }
+*/
+
+    private String text;
+    private int totalHeight;
+}
+
+class DemoTextFieldHolder extends Panel {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 7514498764062569858L;
+    public DemoTextFieldHolder() {
+        tf1 = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        tf2 = new DemoTextField();
+        sp = new ScrollPane();
+
+        setLayout(new CardLayout());
+
+        sp.add(tf2, "TextField1");
+        sp.setVisible(false);
+        add(tf1, "TestField2");
+        add(sp, "ScrollPane");
+    }
+
+    public void addFocusListener(FocusListener l) {
+        tf1.addFocusListener(l);
+    }
+
+    public void addKeyListener(KeyListener l) {
+        tf1.addKeyListener(l);
+    }
+
+    public void setText(String text) {
+        tf1.setText(text);
+        tf2.setText(text);
+    }
+
+    public String getText() {
+        return tf1.getText();
+    }
+
+    public void select(int start, int end) {
+        tf1.select(start, end);
+    }
+
+    public void selectAll() {
+        tf1.selectAll();
+    }
+
+    public void togglePanes(boolean canShowRealTextField) {
+        if (canShowRealTextField != showingRealTextField) {
+            CardLayout layout = (CardLayout)(getLayout());
+            layout.next(this);
+            showingRealTextField = canShowRealTextField;
+        }
+    }
+
+    private TextArea tf1 = null;
+    private DemoTextField tf2 = null;
+    private ScrollPane sp = null;
+    private boolean showingRealTextField = true;
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100644
index 00000000000..c03ed71a186
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -0,0 +1,1941 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import java.util.Locale;
+
+/**
+ * A collection of example rule sets for use with RuleBasedNumberFormat.
+ * These examples are intended to serve both as demonstrations of what can
+ * be done with this framework, and as starting points for designing new
+ * rule sets.
+ *
+ * For those that claim to represent number-spellout rules for languages
+ * other than U.S. English, we make no claims of either accuracy or
+ * completeness.  In fact, we know them to be incomplete, and suspect
+ * most have mistakes in them.  If you see something that you know is wrong,
+ * please tell us!
+ *
+ * @author Richard Gillam
+ */
+public class RbnfSampleRuleSets {
+    /**
+     * Puts a copyright in the .class file
+     */
+//    private static final String copyrightNotice
+//        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //========================================================================
+    // Spellout rules for various languages
+    //
+    // The following RuleBasedNumberFormat descriptions show the rules for
+    // spelling out numeric values in various languages.  As mentioned
+    // before, we cannot vouch for the accuracy or completeness of this
+    // data, although we believe it's pretty close.  Basically, this
+    // represents one day's worth of Web-surfing.  If you can supply the
+    // missing information in any of these rule sets, or if you find errors,
+    // or if you can supply spellout rules for languages that aren't shown
+    // here, we want to hear from you!
+    //========================================================================
+
+    /**
+     * Spellout rules for U.S. English.  This demonstration version of the
+     * U.S. English spellout rules has four variants: 1) %simplified is a
+     * set of rules showing the simple method of spelling out numbers in
+     * English: 289 is formatted as "two hundred eighty-nine".  2) %alt-teens
+     * is the same as %simplified, except that values between 1,000 and 9,999
+     * whose hundreds place isn't zero are formatted in hundreds.  For example,
+     * 1,983 is formatted as "nineteen hundred eighty-three," and 2,183 is
+     * formatted as "twenty-one hundred eighty-three," but 2,083 is still
+     * formatted as "two thousand eighty-three."  3) %ordinal formats the
+     * values as ordinal numbers in English (e.g., 289 is "two hundred eighty-
+     * ninth").  4) %default uses a more complicated algorithm to format
+     * numbers in a more natural way: 289 is formatted as "two hundred AND
+     * eighty-nine" and commas are inserted between the thousands groups for
+     * values above 100,000.
+     */
+    public static final String usEnglish =
+        // This rule set shows the normal simple formatting rules for English
+        "%simplified:\n"
+               // negative number rule.  This rule is used to format negative
+               // numbers.  The result of formatting the number's absolute
+               // value is placed where the >> is.
+        + "    -x: minus >>;\n"
+               // faction rule.  This rule is used for formatting numbers
+               // with fractional parts.  The result of formatting the
+               // number's integral part is substituted for the <<, and
+               // the result of formatting the number's fractional part
+               // (one digit at a time, e.g., 0.123 is "zero point one two
+               // three") replaces the >>.
+        + "    x.x: << point >>;\n"
+               // the rules for the values from 0 to 19 are simply the
+               // words for those numbers
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+               // beginning at 20, we use the >> to mark the position where
+               // the result of formatting the number's ones digit.  Thus,
+               // we only need a new rule at every multiple of 10.  Text in
+               // backets is omitted if the value being formatted is an
+               // even multiple of 10.
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+               // beginning at 100, we can use << to mark the position where
+               // the result of formatting the multiple of 100 is to be
+               // inserted.  Notice also that the meaning of >> has shifted:
+               // here, it refers to both the ones place and the tens place.
+               // The meanings of the << and >> tokens depend on the base value
+               // of the rule.  A rule's divisor is (usually) the highest
+               // power of 10 that is less than or equal to the rule's base
+               // value.  The value being formatted is divided by the rule's
+               // divisor, and the integral quotient is used to get the text
+               // for <<, while the remainder is used to produce the text
+               // for >>.  Again, text in brackets is omitted if the value
+               // being formatted is an even multiple of the rule's divisor
+               // (in this case, an even multiple of 100)
+        + "    100: << hundred[ >>];\n"
+               // The rules for the higher numbers work the same way as the
+               // rule for 100: Again, the << and >> tokens depend on the
+               // rule's divisor, which for all these rules is also the rule's
+               // base value.  To group by thousand, we simply don't have any
+               // rules between 1,000 and 1,000,000.
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+               // overflow rule.  This rule specifies that values of a
+               // quadrillion or more are shown in numerals rather than words.
+               // The == token means to format (with new rules) the value
+               // being formatted by this rule and place the result where
+               // the == is.  The #,##0 inside the == signs is a
+               // DecimalFormat pattern.  It specifies that the value should
+               // be formatted with a DecimalFormat object, and that it
+               // should be formatted with no decimal places, at least one
+               // digit, and a thousands separator.
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+
+        // This rule set formats numbers between 1,000 and 9,999 somewhat
+        // differently: If the hundreds digit is not zero, the first two
+        // digits are treated as a number of hundreds.  For example, 2,197
+        // would come out as "twenty-one hundred ninety-seven."
+        + "%alt-teens:\n"
+               // just use %simplified to format values below 1,000
+        + "    =%simplified=;\n"
+               // values between 1,000 and 9,999 are delegated to %%alt-hundreds
+               // for formatting.  The > after "1000" decreases the exponent
+               // of the rule's radix by one, causing the rule's divisor
+               // to be 100 instead of 1,000.  This causes the first TWO
+               // digits of the number, instead of just the first digit,
+               // to be sent to %%alt-hundreds
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+               // for values of 10,000 and more, we again just use %simplified
+        + "    10,000: =%simplified=;\n"
+        // This rule set uses some obscure voodoo of the description language
+        // to format the first two digits of a value in the thousands.
+        // The rule at 10 formats the first two digits as a multiple of 1,000
+        // and the rule at 11 formats the first two digits as a multiple of
+        // 100.  This works because of something known as the "rollback rule":
+        // if the rule applicable to the value being formatted has two
+        // substitutions, the value being formatted is an even multiple of
+        // the rule's divisor, and the rule's base value ISN'T an even multiple
+        // if the rule's divisor, then the rule that precedes this one in the
+        // list is used instead.  (The [] notation is implemented internally
+        // using this notation: a rule containing [] is split into two rules,
+        // and the right one is chosen using the rollback rule.) In this case,
+        // it means that if the first two digits are an even multiple of 10,
+        // they're formatted with the 10 rule (containing "thousand"), and if
+        // they're not, they're formatted with the 11 rule (containing
+        // "hundred").  %%empty is a hack to cause the rollback rule to be
+        // invoked: it makes the 11 rule have two substitutions, even though
+        // the second substitution (calling %%empty) doesn't actually do
+        // anything.
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+
+        // this rule set is the same as %simplified, except that it formats
+        // the value as an ordinal number: 234 is formatted as "two hundred
+        // thirty-fourth".  Notice the calls to ^simplified: we have to
+        // call %simplified to avoid getting "second hundred thirty-fourth."
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000: <%simplified< trillionth;\n"
+        + "        <%simplified< trillion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+
+        // %default is a more elaborate form of %simplified;  It is basically
+        // the same, except that it introduces "and" before the ones digit
+        // when appropriate (basically, between the tens and ones digits) and
+        // separates the thousands groups with commas in values over 100,000.
+        + "%default:\n"
+               // negative-number and fraction rules.  These are the same
+               // as those for %simplified, but ave to be stated here too
+               // because this is an entry point
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+               // just use %simplified for values below 100
+        + "    =%simplified=;\n"
+               // for values from 100 to 9,999 use %%and to decide whether or
+               // not to interpose the "and"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+               // for values of 100,000 and up, use %%commas to interpose the
+               // commas in the right places (and also to interpose the "and")
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // if the value passed to this rule set is greater than 100, don't
+        // add the "and"; if it's less than 100, add "and" before the last
+        // digits
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        // this rule set is used to place the commas
+        + "%%commas:\n"
+               // for values below 100, add "and" (the apostrophe at the
+               // beginning is ignored, but causes the space that follows it
+               // to be significant: this is necessary because the rules
+               // calling %%commas don't put a space before it)
+        + "    ' and =%default=;\n"
+               // put a comma after the thousands (or whatever preceded the
+               // hundreds)
+        + "    100: , =%default=;\n"
+               // put a comma after the millions (or whatever precedes the
+               // thousands)
+        + "    1000: , <%default< thousand, >%default>;\n"
+               // and so on...
+        + "    1,000,000: , =%default=;"
+        // %%lenient-parse isn't really a set of number formatting rules;
+        // it's a set of collation rules.  Lenient-parse mode uses a Collator
+        // object to compare fragments of the text being parsed to the text
+        // in the rules, allowing more leeway in the matching text.  This set
+        // of rules tells the formatter to ignore commas when parsing (it
+        // already ignores spaces, which is why we refer to the space; it also
+        // ignores hyphens, making "twenty one" and "twenty-one" parse
+        // identically)
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+    /**
+     * Spellout rules for U.K. English.  U.K. English has one significant
+     * difference from U.S. English: the names for values of 1,000,000,000
+     * and higher.  In American English, each successive "-illion" is 1,000
+     * times greater than the preceding one: 1,000,000,000 is "one billion"
+     * and 1,000,000,000,000 is "one trillion."  In British English, each
+     * successive "-illion" is one million times greater than the one before:
+     * "one billion" is 1,000,000,000,000 (or what Americans would call a
+     * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+     * 1,000,000,000 in British English is "one thousand million."  (This
+     * value is sometimes called a "milliard," but this word seems to have
+     * fallen into disuse.)
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+    // Could someone please correct me if I'm wrong about "milliard" falling
+    // into disuse, or have missed any other details of how large numbers
+    // are rendered.  Also, could someone please provide me with information
+    // on which other English-speaking countries use which system?  Right now,
+    // I'm assuming that the U.S. system is used in Canada and that all the
+    // other English-speaking countries follow the British system.  Can
+    // someone out there confirm this?
+
+    /**
+     * Spellout rules for Spanish.  The Spanish rules are quite similar to
+     * the English rules, but there are some important differences:
+     * First, we have to provide separate rules for most of the twenties
+     * because the ones digit frequently picks up an accent mark that it
+     * doesn't have when standing alone.  Second, each multiple of 100 has
+     * to be specified separately because the multiplier on 100 very often
+     * changes form in the contraction: 500 is "quinientos," not
+     * "cincocientos."  In addition, the word for 100 is "cien" when
+     * standing alone, but changes to "ciento" when followed by more digits.
+     * There also some other differences.
+     */
+    public static final String spanish =
+        // negative-number and fraction rules
+        "-x: menos >>;\n"
+        + "x.x: << punto >>;\n"
+        // words for values from 0 to 19
+        + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+        + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+        + "    diecisiete; dieciocho; diecinueve;\n"
+        // words for values from 20 to 29 (necessary because the ones digit
+        // often picks up an accent mark it doesn't have when standing alone)
+        + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+        + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+        + "    veintinueve;\n"
+        // words for multiples of 10 (notice that the tens digit is separated
+        // from the ones digit by the word "y".)
+        + "30: treinta[ y >>];\n"
+        + "40: cuarenta[ y >>];\n"
+        + "50: cincuenta[ y >>];\n"
+        + "60: sesenta[ y >>];\n"
+        + "70: setenta[ y >>];\n"
+        + "80: ochenta[ y >>];\n"
+        + "90: noventa[ y >>];\n"
+        // 100 by itself is "cien," but 100 followed by something is "cineto"
+        + "100: cien;\n"
+        + "101: ciento >>;\n"
+        // words for multiples of 100 (must be stated because they're
+        // rarely simple concatenations)
+        + "200: doscientos[ >>];\n"
+        + "300: trescientos[ >>];\n"
+        + "400: cuatrocientos[ >>];\n"
+        + "500: quinientos[ >>];\n"
+        + "600: seiscientos[ >>];\n"
+        + "700: setecientos[ >>];\n"
+        + "800: ochocientos[ >>];\n"
+        + "900: novecientos[ >>];\n"
+        // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+        // but 1,000 is just "mil."
+        + "1000: mil[ >>];\n"
+        + "2000: << mil[ >>];\n"
+        // 1,000,000 is "un millon," not "uno millon"
+        + "1,000,000: un mill\u00f3n[ >>];\n"
+        + "2,000,000: << mill\u00f3n[ >>];\n"
+        // overflow rule
+        + "1,000,000,000: =#,##0= (incomplete data);";
+    // The Spanish rules are incomplete.  I'm missing information on negative
+    // numbers and numbers with fractional parts.  I also don't have
+    // information on numbers higher than the millions
+
+    /**
+     * Spellout rules for French.  French adds some interesting quirks of its
+     * own: 1) The word "et" is interposed between the tens and ones digits,
+     * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+     * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+     * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+     * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+     * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+     * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+     * "mille cent" ("one thousand one hundred")
+     */
+    public static final String french =
+        // the main rule set
+        "%main:\n"
+               // negative-number and fraction rules
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+               // words for numbers from 0 to 10
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+               // ords for the multiples of 10: %%alt-ones inserts "et"
+               // when needed
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+               // rule for 60.  The /20 causes this rule's multiplier to be
+               // 20 rather than 10, allowinhg us to recurse for all values
+               // from 60 to 79...
+        + "    60/20: soixante[->%%alt-ones>];\n"
+               // ...except for 71, which must be special-cased
+        + "    71: soixante et onze;\n"
+               // at 72, we have to repeat the rule for 60 to get us to 79
+        + "    72/20: soixante->%%alt-ones>;\n"
+               // at 80, we state a new rule with the phrase for 80.  Since
+               // it changes form when there's a ones digit, we need a second
+               // rule at 81.  This rule also includes "/20," allowing it to
+               // be used correctly for all values up to 99
+        + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+               // "cent" becomes plural when preceded by a multiplier, and
+               // the multiplier is omitted from the singular form
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+               // values from 1,100 to 1,199 are rendered as "onze cents..."
+               // instead of "mille cent..."  The > after "1000" decreases
+               // the rule's exponent, causing its multiplier to be 100 instead
+               // of 1,000.  This prevents us from getting "onze cents cent
+               // vingt-deux" ("eleven hundred one hundred twenty-two").
+        + "    1100>: onze cents[ >>];\n"
+               // at 1,200, we go back to formating in thousands, so we
+               // repeat the rule for 1,000
+        + "    1200: mille >>;\n"
+               // at 2,000, the multiplier is added
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // %%alt-ones is used to insert "et" when the ones digit is 1
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+
+    /**
+     * Spellout rules for Swiss French.  Swiss French differs from French French
+     * in that it does have words for 70, 80, and 90.  This rule set shows them,
+     * and is simpler as a result.
+     */
+    public static final String swissFrench =
+        "%main:\n"
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+        + "    60: soixante[->%%alt-ones>];\n"
+               // notice new words for 70, 80, and 90
+        + "    70: septante[->%%alt-ones>];\n"
+        + "    80: octante[->%%alt-ones>];\n"
+        + "    90: nonante[->%%alt-ones>];\n"
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+        + "    1100>: onze cents[ >>];\n"
+        + "    1200: mille >>;\n"
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+    // I'm not 100% sure about Swiss French.  Is
+    // this correct?  Is "onze cents" commonly used for 1,100 in both France
+    // and Switzerland?  Can someone fill me in on the rules for the other
+    // French-speaking countries?  I've heard conflicting opinions on which
+    // version is used in Canada, and I understand there's an alternate set
+    // of words for 70, 80, and 90 that is used somewhere, but I don't know
+    // what those words are or where they're used.
+
+    /**
+     * Spellout rules for German.  German also adds some interesting
+     * characteristics.  For values below 1,000,000, numbers are customarily
+     * written out as a single word.  And the ones digit PRECEDES the tens
+     * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+     */
+    public static final String german =
+        // 1 is "eins" when by itself, but turns into "ein" in most
+        // combinations
+        "%alt-ones:\n"
+        + "    null; eins; =%%main=;\n"
+        + "%%main:\n"
+               // words for numbers from 0 to 12.  Notice that the values
+               // from 13 to 19 can derived algorithmically, unlike in most
+               // other languages
+        + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+        + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+               // rules for the multiples of 10.  Notice that the ones digit
+               // goes on the front
+        + "    20: [>>und]zwanzig;\n"
+        + "    30: [>>und]drei\u00dfig;\n"
+        + "    40: [>>und]vierzig;\n"
+        + "    50: [>>und]f\u00fcnfzig;\n"
+        + "    60: [>>und]sechzig;\n"
+        + "    70: [>>und]siebzig;\n"
+        + "    80: [>>und]achtzig;\n"
+        + "    90: [>>und]neunzig;\n"
+        + "    100: hundert[>%alt-ones>];\n"
+        + "    200: <%alt-ones>];\n"
+        + "    1000: tausend[>%alt-ones>];\n"
+        + "    2000: <%alt-ones>];\n"
+        + "    1,000,000: eine Million[ >%alt-ones>];\n"
+        + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+        + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+        + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+        + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+        + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;";
+    // again, I'm not 100% sure of these rules.  I think both "hundert" and
+    // "einhundert" are correct or 100, but I'm not sure which is preferable
+    // in situations where this framework is likely to be used.  Also, is it
+    // really true that numbers are run together into compound words all the
+    // time?  And again, I'm missing information on negative numbers and
+    // decimals.
+
+    /**
+     * Spellout rules for Italian.  Like German, most Italian numbers are
+     * written as single words.  What makes these rules complicated is the rule
+     * that says that when a word ending in a vowel and a word beginning with
+     * a vowel are combined into a compound, the vowel is dropped from the
+     * end of the first word: 180 is "centottanta," not "centoottanta."
+     * The complexity of this rule set is to produce this behavior.
+     */
+    public static final String italian =
+        // main rule set.  Follows the patterns of the preceding rule sets,
+        // except that the final vowel is omitted from words ending in
+        // vowels when they are followed by another word; instead, we have
+        // separate rule sets that are identical to this one, except that
+        // all the words that don't begin with a vowel have a vowel tacked
+        // onto them at the front.  A word ending in a vowel calls a
+        // substitution that will supply that vowel, unless that vowel is to
+        // be elided.
+        "%main:\n"
+        + "    -x: meno >>;\n"
+        + "    x.x: << virgola >>;\n"
+        + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+        + "        nove;\n"
+        + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+        + "        diciasette; diciotto; diciannove;\n"
+        + "    20: venti; vent>%%with-i>;\n"
+        + "    30: trenta; trent>%%with-i>;\n"
+        + "    40: quaranta; quarant>%%with-a>;\n"
+        + "    50: cinquanta; cinquant>%%with-a>;\n"
+        + "    60: sessanta; sessant>%%with-a>;\n"
+        + "    70: settanta; settant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: novanta; novant>%%with-a>;\n"
+        + "    100: cento; cent[>%%with-o>];\n"
+        + "    200: <%%with-o>];\n"
+        + "    1000: mille; mill[>%%with-i>];\n"
+        + "    2000: <%%with-a>];\n"
+        + "    100,000>>: <>];\n"
+        + "    1,000,000: =#,##0= (incomplete data);\n"
+        + "%%with-a:\n"
+        + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+        + "        anove;\n"
+        + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+        + "        adiciasette; adiciotto; adiciannove;\n"
+        + "    20: aventi; avent>%%with-i>;\n"
+        + "    30: atrenta; atrent>%%with-i>;\n"
+        + "    40: aquaranta; aquarant>%%with-a>;\n"
+        + "    50: acinquanta; acinquant>%%with-a>;\n"
+        + "    60: asessanta; asessant>%%with-a>;\n"
+        + "    70: asettanta; asettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: anovanta; anovant>%%with-a>;\n"
+        + "    100: acento; acent[>%%with-o>];\n"
+        + "    200: <%%with-a%%with-o>];\n"
+        + "    1000: amille; amill[>%%with-i>];\n"
+        + "    2000: <%%with-a%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-i:\n"
+        + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+        + "        inove;\n"
+        + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+        + "        idiciasette; idiciotto; idiciannove;\n"
+        + "    20: iventi; ivent>%%with-i>;\n"
+        + "    30: itrenta; itrent>%%with-i>;\n"
+        + "    40: iquaranta; iquarant>%%with-a>;\n"
+        + "    50: icinquanta; icinquant>%%with-a>;\n"
+        + "    60: isessanta; isessant>%%with-a>;\n"
+        + "    70: isettanta; isettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: inovanta; inovant>%%with-a>;\n"
+        + "    100: icento; icent[>%%with-o>];\n"
+        + "    200: <%%with-i%%with-o>];\n"
+        + "    1000: imille; imill[>%%with-i>];\n"
+        + "    2000: <%%with-i%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-o:\n"
+        + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+        + "        onove;\n"
+        + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+        + "        odiciasette; odiciotto; odiciannove;\n"
+        + "    20: oventi; ovent>%%with-i>;\n"
+        + "    30: otrenta; otrent>%%with-i>;\n"
+        + "    40: oquaranta; oquarant>%%with-a>;\n"
+        + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+        + "    60: osessanta; osessant>%%with-a>;\n"
+        + "    70: osettanta; osettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: onovanta; onovant>%%with-a>;\n"
+        + "    100: ocento; ocent[>%%with-o>];\n"
+        + "    200: <%%with-o%%with-o>];\n"
+        + "    1000: omille; omill[>%%with-i>];\n"
+        + "    2000: <%%with-o%%with-a>];\n"
+        + "    100,000: =%main=;\n";
+    // Can someone confirm that I did the vowel-eliding thing right?  I'm
+    // not 100% sure I'm doing it in all the right places, or completely
+    // correctly.  Also, I don't have information for negatives and decimals,
+    // and I lack words fror values from 1,000,000 on up.
+
+    /**
+     * Spellout rules for Swedish.
+     */
+    public static final String swedish =
+        "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+        + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+        + "20: tjugo[>>];\n"
+        + "30: trettio[>>];\n"
+        + "40: fyrtio[>>];\n"
+        + "50: femtio[>>];\n"
+        + "60: sextio[>>];\n"
+        + "70: sjuttio[>>];\n"
+        + "80: \u00e5ttio[>>];\n"
+        + "90: nittio[>>];\n"
+        + "100: hundra[>>];\n"
+        + "200: <>];\n"
+        + "1000: tusen[ >>];\n"
+        + "2000: << tusen[ >>];\n"
+        + "1,000,000: en miljon[ >>];\n"
+        + "2,000,000: << miljon[ >>];\n"
+        + "1,000,000,000: en miljard[ >>];\n"
+        + "2,000,000,000: << miljard[ >>];\n"
+        + "1,000,000,000,000: en biljon[ >>];\n"
+        + "2,000,000,000,000: << biljon[ >>];\n"
+        + "1,000,000,000,000,000: =#,##0=";
+    // can someone supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Dutch.  Notice that in Dutch, as in German,
+     * the ones digit precedes the tens digit.
+     */
+    public static final String dutch =
+        " -x: min >>;\n"
+        + "x.x: << komma >>;\n"
+        + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+        + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+        + "zeventien; achtien; negentien;\n"
+        + "20: [>> en ]twintig;\n"
+        + "30: [>> en ]dertig;\n"
+        + "40: [>> en ]veertig;\n"
+        + "50: [>> en ]vijftig;\n"
+        + "60: [>> en ]zestig;\n"
+        + "70: [>> en ]zeventig;\n"
+        + "80: [>> en ]tachtig;\n"
+        + "90: [>> en ]negentig;\n"
+        + "100: << honderd[ >>];\n"
+        + "1000: << duizend[ >>];\n"
+        + "1,000,000: << miljoen[ >>];\n"
+        + "1,000,000,000: << biljoen[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+
+    /**
+     * Spellout rules for Japanese.  In Japanese, there really isn't any
+     * distinction between a number written out in digits and a number
+     * written out in words: the ideographic characters are both digits
+     * and words.  This rule set provides two variants:  %traditional
+     * uses the traditional CJK numerals (which are also used in China
+     * and Korea).  %financial uses alternate ideographs for many numbers
+     * that are harder to alter than the traditional numerals (one could
+     * fairly easily change a one to
+     * a three just by adding two strokes, for example).  This is also done in
+     * the other countries using Chinese idographs, but different ideographs
+     * are used in those places.
+     */
+    public static final String japanese =
+        "%financial:\n"
+        + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u62fe[>>];\n"
+        + "    20: <<\u62fe[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;\n"
+        + "%traditional:\n"
+        + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u5341[>>];\n"
+        + "    20: <<\u5341[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;";
+    // Can someone supply me with the right fraud-proof ideographs for
+    // Simplified and Traditional Chinese, and for Korean?  Can someone
+    // supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Greek.  Again in Greek we have to supply the words
+     * for the multiples of 100 because they can't be derived algorithmically.
+     * Also, the tens dgit changes form when followed by a ones digit: an
+     * accent mark disappears from the tens digit and moves to the ones digit.
+     * Therefore, instead of using the [] notation, we actually have to use
+     * two separate rules for each multiple of 10 to show the two forms of
+     * the word.
+     */
+    public static final String greek =
+        "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+        + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+        + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+        + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+        + "10: \u03b4\u03ad\u03ba\u03b1; "
+        + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+        + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+        + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+        + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+        + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+        + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+    // Can someone supply me with information on negatives and decimals?
+    // I'm also missing the word for zero.  Can someone clue me in?
+
+    /**
+     * Spellout rules for Russian.
+     */
+    public static final String russian =
+        "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+        + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+        + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+        + "10: \u0434\u0435\u0441\u044f\u0442; "
+        + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+        + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+        + "100: \u0441\u0442\u043e[ >>];\n"
+        + "200: << \u0441\u0442\u043e[ >>];\n"
+        + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "1,000,000,000: =#,##0=;";
+    // Can someone supply me with information on negatives and decimals?
+    // How about words for billions and trillions?
+
+    /**
+     * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+     * most of the lower-order numbers.  The masculine forms are shown
+     * here.
+     */
+    public static final String hebrew =
+        "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+        + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+        + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+        + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+        + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+        + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+        + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+        + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+        + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+        + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+        + "100: \u05de\u05d0\u05d4[ >>];\n"
+        + "200: << \u05de\u05d0\u05d4[ >>];\n"
+        + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+        + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+        + "1,000,000: =#,##0= (incomplete data);";
+    // This data is woefully incomplete.  Can someone fill me in on the
+    // various inflected forms of the numbers, which seem to be necessary
+    // to do Hebrew correctly?  Can somone supply me with data for values
+    // from 1,000,000 on up?  What about the word for zero?  What about
+    // information on negatives and decimals?
+
+    //========================================================================
+    // Simple examples
+    //========================================================================
+
+    /**
+     * This rule set adds an English ordinal abbreviation to the end of a
+     * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+     * this rule set.  To parse, use DecimalFormat on the numeral.
+     */
+    public static final String ordinal =
+        // this rule set formats the numeral and calls %%abbrev to
+        // supply the abbreviation
+        "%main:\n"
+        + "    =#,##0==%%abbrev=;\n"
+        // this rule set supplies the abbreviation
+        + "%%abbrev:\n"
+               // the abbreviations.  Everything from 4 to 19 ends in "th"
+        + "    th; st; nd; rd; th;\n"
+               // at 20, we begin repeating the cycle every 10 (13 is "13th",
+               // but 23 and 33 are "23rd" and "33rd")  We do this by
+               // ignoring all bug the ones digit in selecting the abbreviation
+        + "    20: >>;\n"
+               // at 100, we repeat the whole cycle by considering only the
+               // tens and ones digits in picking an abbreviation
+        + "    100: >>;\n";
+
+    /**
+     * This is a simple message-formatting example.  Normally one would
+     * use ChoiceFormat and MessageFormat to do something this simple,
+     * but this shows it could be done with RuleBasedNumberFormat too.
+     * A message-formatting example that might work better with
+     * RuleBasedNumberFormat appears later.
+     */
+    public static final String message1 =
+        // this rule surrounds whatever the other rules produce with the
+        // rest of the sentence
+        "x.0: The search found <<.;\n"
+        // use words for values below 10 (and change to "file" for 1)
+        + "no files; one file; two files; three files; four files; five files;\n"
+        + "    six files; seven files; eight files; nine files;\n"
+        // use numerals for values higher than 10
+        + "=#,##0= files;";
+
+    //========================================================================
+    // Fraction handling
+    //
+    // The next few examples show how RuleBasedNumberFormat can be used for
+    // more flexible handling of fractions
+    //========================================================================
+
+    /**
+     * This example formats a number in one of the two styles often used
+     * on checks.  %dollars-and-hundredths formats cents as hundredths of
+     * a dollar (23.40 comes out as "twenty-three and 40/100 dollars").
+     * %dollars-and-cents formats in dollars and cents (23.40 comes out as
+     * "twenty-three dollars and forty cents")
+     */
+    public static final String dollarsAndCents =
+        // this rule set formats numbers as dollars and cents
+        "%dollars-and-cents:\n"
+               // if the value is 1 or more, put "xx dollars and yy cents".
+               // the "and y cents" part is suppressed if the value is an
+               // even number of dollars
+        + "    x.0: << [and >%%cents>];\n"
+               // if the value is between 0 and 1, put "xx cents"
+        + "    0.x: >%%cents>;\n"
+               // these three rules take care of the singular and plural
+               // forms of "dollar" and use %%main to format the number
+        + "    0: zero dollars; one dollar; =%%main= dollars;\n"
+        // these are the regular U.S. English number spellout rules
+        + "%%main:\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // this rule takes care of the fractional part of the value.  It
+        // multiplies the fractional part of the number being formatted by
+        // 100, formats it with %%main, and then addes the word "cent" or
+        // "cents" to the end.  (The text in brackets is omitted if the
+        // numerator of the fraction is 1.)
+        + "%%cents:\n"
+        + "    100: <%%main< cent[s];\n"
+
+        // this rule set formats numbers as dollars and hundredths of dollars
+        + "%dollars-and-hundredths:\n"
+               // this rule takes care of the general shell of the output
+               // string.  We always show the cents, even when there aren't
+               // any.  Because of this, the word is always "dollars"--
+               // we don't have to worry about the singular form.  We use
+               // %%main to format the number of dollars and %%hundredths to
+               // format the number of cents
+        + "    x.0: <%%main< and >%%hundredths>/100 dollars;\n"
+        // this rule set formats the cents for %dollars-and-hundredths.
+        // It multiplies the fractional part of the number by 100 and formats
+        // the result using a DecimalFormat ("00" tells the DecimalFormat to
+        // always use two digits, even for numbers under 10)
+        + "%%hundredths:\n"
+        + "    100: <00<;\n";
+
+    /**
+     * This rule set shows the fractional part of the number as a fraction
+     * with a power of 10 as the denominator.  Some languages don't spell
+     * out the fractional part of a number as "point one two three," but
+     * always render it as a fraction.  If we still want to treat the fractional
+     * part of the number as a decimal, then the fraction's denominator
+     * is always a power of 10.  This example does that: 23.125 is formatted
+     * as "twenty-three and one hundred twenty-five thousandths" (as opposed
+     * to "twenty-three point one two five" or "twenty-three and one eighth").
+     */
+    public static final String decimalAsFraction =
+        // the regular U.S. English spellout rules, with one difference
+        "%main:\n"
+        + "    -x: minus >>;\n"
+               // the difference.  This rule uses %%frac to show the fractional
+               // part of the number.  Text in brackets is omitted when the
+               // value is between 0 and 1 (causing 0.3 to come out as "three
+               // tenths" instead of "zero and three tenths").
+        + "    x.x: [<< and ]>%%frac>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // the rule set that formats the fractional part of the number.
+        // The rule that is used is the one that, when its baase value is
+        // multiplied by the fractional part of the number being formatted,
+        // produces the result closest to zero.  Thus, the base values are
+        // prospective denominators of the fraction.  The << marks the place
+        // where the numerator of the fraction (the result of multiplying the
+        // fractional part of the number by the rule's base value) is
+        // placed.  Text in brackets is omitted when the numerator is 1, giving
+        // us the singular and plural forms of the words.
+        // [In languages where the singular and plural are completely different
+        // words, the rule can just be stated twice: the second time with
+        // the plural form.]
+        + "%%frac:\n"
+        + "    10: << tenth[s];\n"
+        + "    100: << hundredth[s];\n"
+        + "    1000: << thousandth[s];\n"
+        + "    10,000: << ten-thousandth[s];\n"
+        + "    100,000: << hundred-thousandth[s];\n"
+        + "    1,000,000: << millionth[s];";
+
+    /**
+     * Number with closest fraction.  This example formats a value using
+     * numerals, but shows the fractional part as a ratio (fraction) rather
+     * than a decimal.  The fraction always has a denominator between 2 and 10.
+     */
+    public static final String closestFraction =
+        "%main:\n"
+               // this rule formats the number if it's 1 or more.  It formats
+               // the integral part using a DecimalFormat ("#,##0" puts
+               // thousands separators in the right places) and the fractional
+               // part using %%frac.  If there is no fractional part, it
+               // just shows the integral part.
+        + "    x.0: <#,##0<[ >%%frac>];\n"
+               // this rule formats the number if it's between 0 and 1.  It
+               // shows only the fractional part (0.5 shows up as "1/2," not
+               // "0 1/2")
+        + "    0.x: >%%frac>;\n"
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        + "%%frac:\n"
+        + "    2: 1/2;\n"
+        + "    3: <0%%frac1>];\n"
+               // this rule is used for values between 0 and 1 and omits the
+               // integral part
+        + "    0.x: >%%frac2>;\n"
+        // this rule set is used to format the fractional part of the number when
+        // there's an integral part before it (again, we try all denominators
+        // and use the "best" one)
+        + "%%frac1:\n"
+               // for even multiples of 1/4, format the fraction using the
+               // typographer's fractions
+        + "    4: <%%quarters<;\n"
+               // format the value as a number of eighths, sixteenths, or
+               // thirty-seconds, whichever produces the most accurate value.
+               // The apostrophe at the front of these rules is ignored, but
+               // it makes the space that follows it significant.  This puts a
+               // space between the value's integral and fractional parts so
+               // you can read it
+        + "    8: ' <0%%small>;\n"
+               // otherwise, show between 3 and 6 significant digits of the value
+               // along with the most appropriate unit
+        + "    0: =##0.###= m;\n"
+        + "    1,000: <##0.###< km;\n"
+        + "    1,000,000: <##0.###< Mm;\n"
+        + "    1,000,000,000: <##0.###< Gm;\n"
+        + "    1,000,000,000,000: <#,##0.###< Tm;\n"
+        // %%small formats the number when it's less then 1.  It multiplies the
+        // value by one billion, and then uses %%small2 to actually do the
+        // formatting.
+        + "%%small:\n"
+        + "    1,000,000,000,000: <%%small2<;\n"
+        // this rule set actually formats small values.  %%small passes this
+        // rule set a number of picometers, and it takes care of scaling up as
+        // appropriate in exactly the same way %main does (we can't normally
+        // handle fractional values this way: here, we're concerned about
+        // magnitude; most of the time, we're concerned about precsion)
+        + "%%small2:\n"
+        + "    0: =##0= pm;\n"
+        + "    1,000: <##0.###< nm;\n"
+        + "    1,000,000: <##0.###< \u00b5m;\n"
+        + "    1,000,000,000: <##0.###< mm;\n";
+
+    /**
+     * A more complicated message-formatting example.  Here, in addition to
+     * handling the singular and plural versions of the word, the value is
+     * denominated in bytes, kilobytes, or megabytes depending on its magnitude.
+     * Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000),
+     * and a megabyte as 1,024 kilobytes (not 1,000).
+     */
+    public static final String message2 =
+        // this rule supplies the shell of the sentence
+        "x.0: There << free space on the disk.;\n"
+        // handle singular and plural forms of "byte" (and format 0 as
+        // "There is no free space...")
+        + "0: is no;\n"
+        + "is one byte of;\n"
+        + "are =0= bytes of;\n"
+        // for values above 1,024, format the number in K (since "K" is usually
+        // promounced "K" regardless of whether it's singular or plural, we
+        // don't worry about the plural form).  The "/1024" here causes us to
+        // treat a K as 1,024 bytes rather than 1,000 bytes.
+        + "1024/1024: is <0>];\n"
+        // format values over 144 in gross
+        + "144/12: << gross[, >>];\n"
+        // format values over 1,000 in thousands
+        + "1000: << thousand[, >>];\n"
+        // overflow rule.  Format values over 10,000 in numerals
+        + "10,000: =#,##0=;\n";
+
+    //========================================================================
+    // Major and minor units
+    //
+    // These examples show how a single value can be divided up into major
+    // and minor units that don't relate to each other by a factor of 10.
+    //========================================================================
+
+    /**
+     * This example formats a number of seconds in sexagesimal notation
+     * (i.e., hours, minutes, and seconds).  %with-words formats it with
+     * words (3740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+     * formats it entirely in numerals (3740 is "1:02:20").
+     */
+    public static final String durationInSeconds =
+        // main rule set for formatting with words
+        "%with-words:\n"
+               // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+               // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+               // use %%hr to format values greater than 3,600 seconds
+               // (the ">>>" below causes us to see the number of minutes
+               // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+               // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+               // higher values are shown with colons: %%min-sec is used for
+               // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+               // ...and %%hr-min-sec is used for values of 3,600 seconds
+               // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This example formats a number of hours in sexagesimal notation (i.e.,
+     * hours, minutes, and seconds).  %with-words formats the value using
+     * words for the units, and %in-numerals formats the value using only
+     * numerals.
+     */
+    public static final String durationInHours =
+        // main entry point for formatting with words
+        "%with-words:\n"
+               // this rule omits minutes and seconds when the value is
+               // an even number of hours
+        + "    x.0: <<[, >%%min-sec>];\n"
+               // these rules take care of the singular and plural forms
+               // of hours
+        + "    0 hours; 1 hour; =#,##0= hours;\n"
+        // this rule set takes the fractional part of the number and multiplies
+        // it by 3,600 (turning it into a number of seconds).  Then it delegates
+        // to %%min-sec-implementation to format the resulting value
+        + "%%min-sec:\n"
+        + "    3600: =%%min-sec-implementation=;\n"
+        // this rule set formats the seconds as either seconds or minutes and
+        // seconds, and takes care of the singular and plural forms of
+        // "minute" and "second"
+        + "%%min-sec-implementation:\n"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        + "    60/60: 1 minute[, >>];\n"
+        + "    120/60: <0< minutes[, >>];\n"
+
+        // main entry point for formatting in numerals
+        + "%in-numerals:\n"
+               // show minutes even for even numbers of hours
+        + "    x.0: <#,##0<:00;\n"
+               // delegate to %%min-sec2 to format minutes and seconds
+        + "    x.x: <#,##0<:>%%min-sec2>;\n"
+        // this rule set formats minutes when there is an even number of
+        // minutes, and delegates to %%min-sec2-implementation when there
+        // are seconds
+        + "%%min-sec2:\n"
+        + "    60: <00<;\n"
+        + "    3600: <%%min-sec2-implementation<;\n"
+        // these two rule sets are used to format the minutes and seconds
+        + "%%min-sec2-implementation:\n"
+               // if there are fewer than 60 seconds, show the minutes anyway
+        + "    0: 00:=00=;\n"
+               // if there are minutes, format them too, and always use 2 digits
+               // for both minutes and seconds
+        + "    60: =%%min-sec3=;\n"
+        + "%%min-sec3:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        // the lenient-parse rules allow the user to use any of several
+        // characters as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This rule set formats a number of pounds as pounds, shillings, and
+     * pence in the old English system of currency.
+     */
+    public static final String poundsShillingsAndPence =
+        // for values of 1 or more, format the integral part with a pound
+        // sign in front, and show shillings and pence if necessary
+        "%main:\n"
+        + "    x.0: \u00a3<#,##0<[ >%%shillings-and-pence>];\n"
+        // for values between 0 and 1, omit the number of pounds
+        + "    0.x: >%%pence-alone>;\n"
+        // this rule set is used to show shillings and pence.  It multiplies
+        // the fractional part of the number by 240 (the number of pence in a
+        // pound) and uses %%shillings-and-pence-implementation to format
+        // the result
+        + "%%shillings-and-pence:\n"
+        + "    240: <%%shillings-and-pence-implementation<;\n"
+        // this rule set is used to show shillings and pence when there are
+        // no pounds.  It also multiplies the value by 240, and then it uses
+        // %%pence-alone-implementation to format the result.
+        + "%%pence-alone:\n"
+        + "    240: <%%pence-alone-implementation<;\n"
+        // this rule set formats a number of pence when we know we also
+        // have pounds.  We always show shillings (with a 0 if necessary),
+        // but only show pence if the value isn't an even number of shillings
+        + "%%shillings-and-pence-implementation:\n"
+        + "    0/; 0/=0=;\n"
+        + "    12/12: <00>];\n"
+        // this rule set formats a number of pence when we know there are
+        // no pounds.  Values less than a shilling are shown with "d." (the
+        // abbreviation for pence), and values greater than a shilling are
+        // shown with a shilling bar (and without pence when the value is
+        // an even number of shillings)
+        + "%%pence-alone-implementation:\n"
+        + "    =0= d.;\n"
+        + "    12/12: <00>];\n";
+
+    //========================================================================
+    // Alternate numeration systems
+    //
+    // These examples show how RuleBasedNumberFormat can be used to format
+    // numbers using non-positional numeration systems.
+    //========================================================================
+
+    /**
+     * Arabic digits.  This example formats numbers in Arabic numerals.
+     * Normally, you'd do this with DecimalFormat, but this shows that
+     * RuleBasedNumberFormat can handle it too.
+     */
+    public static final String arabicNumerals =
+        "0; 1; 2; 3; 4; 5; 6; 7; 8; 9;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<,>>>;\n"
+        + "1,000,000: <<,>>>;\n"
+        + "1,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n"
+        + "-x: ->>;\n"
+        + "x.x: <<.>>;";
+
+    /**
+     * Words for digits.  Follows the same pattern as the Arabic-numerals
+     * example above, but uses words for the various digits (e.g., 123 comes
+     * out as "one two three").
+     */
+    public static final String wordsForDigits =
+        "-x: minus >>;\n"
+        + "x.x: << point >>;\n"
+        + "zero; one; two; three; four; five; six;\n"
+        + "    seven; eight; nine;\n"
+        + "10: << >>;\n"
+        + "100: << >>>;\n"
+        + "1000: <<, >>>;\n"
+        + "1,000,000: <<, >>>;\n"
+        + "1,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * This example formats numbers using Chinese characters in the Arabic
+     * place-value method.  This was used historically in China for a while.
+     */
+    public static final String chinesePlaceValue =
+        "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<>>>;\n"
+        + "1,000,000: <<>>>;\n"
+        + "1,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * Roman numerals.  This example has two variants: %modern shows how large
+     * numbers are usually handled today; %historical ses the older symbols for
+     * thousands.
+     */
+    public static final String romanNumerals =
+        "%historical:\n"
+        + "    =%modern=;\n"
+               // in early Roman numerals, 1,000 was shown with a circle
+               // bisected by a vertical line.  Additional thousands were
+               // shown by adding more concentric circles, and fives were
+               // shown by cutting the symbol for next-higher power of 10
+               // in half (the letter D for 500 evolved from this).
+               // We could go beyond 40,000, but Unicode doesn't encode
+               // the symbols for higher numbers/
+        + "    1000: \u2180[>>]; 2000: \u2180\u2180[>>]; 3000: \u2180\u2180\u2180[>>]; 4000: \u2180\u2181[>>];\n"
+        + "    5000: \u2181[>>]; 6000: \u2181\u2180[>>]; 7000: \u2181\u2180\u2180[>>];\n"
+        + "    8000: \u2181\u2180\u2180\u2180[>>]; 9000: \u2180\u2182[>>];\n"
+        + "    10,000: \u2182[>>]; 20,000: \u2182\u2182[>>]; 30,000: \u2182\u2182\u2182[>>];\n"
+        + "    40,000: =#,##0=;\n"
+        + "%modern:\n"
+        + "    ; I; II; III; IV; V; VI; VII; VIII; IX;\n"
+        + "    10: X[>>]; 20: XX[>>]; 30: XXX[>>]; 40: XL[>>]; 50: L[>>];\n"
+        + "    60: LX[>>]; 70: LXX[>>]; 80: LXXX[>>]; 90: XC[>>];\n"
+        + "    100: C[>>]; 200: CC[>>]; 300: CCC[>>]; 400: CD[>>]; 500: D[>>];\n"
+        + "    600: DC[>>]; 700: DCC[>>]; 800: DCCC[>>]; 900: CM[>>];\n"
+               // in modern Roman numerals, high numbers are generally shown
+               // by placing a bar over the letters for the lower numbers:
+               // the bar multiplied a letter's value by 1,000
+        + "    1000: M[>>]; 2000: MM[>>]; 3000: MMM[>>]; 4000: MV\u0306[>>];\n"
+        + "    5000: V\u0306[>>]; 6000: V\u0306M[>>]; 7000: V\u0306MM[>>];\n"
+        + "    8000: V\u0306MMM[>>]; 9000: MX\u0306[>>];\n"
+        + "    10,000: X\u0306[>>]; 20,000: X\u0306X\u0306[>>]; 30,000: X\u0306X\u0306X\u0306[>>];\n"
+        + "    40,000: X\u0306L\u0306[>>]; 50,000: L\u0306[>>]; 60,000: L\u0306X\u0306[>>];\n"
+        + "    70,000: L\u0306X\u0306X\u0306[>>]; 80,000: L\u0306X\u0306X\u0306X\u0306[>>];\n"
+        + "    90,000: X\u0306C\u0306[>>];\n"
+        + "    100,000: C\u0306[>>]; 200,000: C\u0306C\u0306[>>]; 300,000: C\u0306C\u0306[>>];\n"
+        + "    400,000: C\u0306D\u0306[>>]; 500,000: D\u0306[>>]; 600,000: D\u0306C\u0306[>>];\n"
+        + "    700,000: D\u0306C\u0306C\u0306[>>]; 800,000: D\u0306C\u0306C\u0306C\u0306[>>];\n"
+        + "    900,000: =#,##0=;\n";
+
+    /**
+     * Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers
+     * used the letter of their alphabet as numerals.  The first nine letters of
+     * the alphabet repesented the values from 1 to 9, the second nine letters the
+     * multiples of 10, and the remaining letters the multiples of 100.  Since they
+     * ran out of letters at 400, the remaining multiples of 100 were represented
+     * using combinations of the existing letters for the hundreds.  Numbers were
+     * distinguished from words in a number of different ways: the way shown here
+     * uses a single mark after a number consisting of one letter, and a double
+     * mark between the last two letters of a number consisting of two or more
+     * letters.  Two dots over a letter multiplied its value by 1,000.  Also, since
+     * the letter for 10 is the first letter of God's name and the letters for 5 and 6
+     * are letters in God's name, which wasn't supposed to be written or spoken, 15 and
+     * 16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.
+     */
+    public static final String hebrewAlphabetic =
+        // letters for the ones
+        "%%ones:\n"
+        + "    (no zero); \u05d0; \u05d1; \u05d2; \u05d3; \u05d4; \u05d5; \u05d6; \u05d7; \u05d8;\n"
+        // letters for the tens
+        + "%%tens:\n"
+        + "    ; \u05d9; \u05db; \u05dc; \u05de; \u05e0; \u05e1; \u05e2; \u05e4; \u05e6;\n"
+        // letters for the first four hundreds
+        + "%%hundreds:\n"
+        + "    ; \u05e7; \u05e8; \u05e9; \u05ea;\n"
+        // this rule set is used to write the combination of the tens and ones digits
+        // when we know that no other digits precede them: they put the numeral marks
+        // in the right place and properly handle 15 and 16 (I'm using the mathematical
+        // prime characters for the numeral marks because my Unicode font doesn't
+        // include the real Hebrew characters, which look just like the prime marks)
+        + "%%tens-and-ones:\n"
+               // for values less than 10, just use %%ones and put the numeral mark
+               // afterward
+        + "    =%%ones=\u2032;\n"
+               // put the numeral mark at the end for 10, but in the middle for
+               // 11 through 14
+        + "    10: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+               // special-case 15 and 16
+        + "    15: \u05d8\u2033\u05d5; 16: \u05d8\u2033\u05d6;\n"
+               // go back to the normal method at 17
+        + "    17: <%%tens<\u2033>%%ones>;\n"
+               // repeat the rules for 10 and 11 to cover the values from 20 to 99
+        + "    20: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+        // this rule set is used to format numbers below 1,000.  It relies on
+        // %%tens-and-ones to format the tens and ones places, and adds logic
+        // to handle the high hundreds and the numeral marks when there is no
+        // tens digit.  Notice how the rules are paired: all of these pairs of
+        // rules take advantage of the rollback rule: if the value (between 100
+        // and 499) is an even multiple of 100, the rule for 100 is used; otherwise,
+        // the rule for 101 (the following rule) is used.  The first rule in each
+        // pair (the one for the even multiple) places the numeral mark in a different
+        // spot than the second rule in each pair (which knows there are more digits
+        // and relies on the rule supplying them to also supply the numeral mark).
+        // The call to %%null in line 10 is there simply to invoke the rollback
+        // rule.
+        + "%%low-order:\n"
+               // this rule is only called when there are other characters before.
+               // It places the numeral mark before the last digit
+        + "    \u2033=%%ones=;\n"
+               // the rule for 10 places the numeral mark before the 10 character
+               // (because we know it's the last character); the rule for 11 relies
+               // on %%tens-and-ones to place the numeral mark
+        + "    10: \u2033<%%tens<; =%%tens-and-ones=>%%null>;\n"
+               // the rule for 100 places the numeral mark before the 100 character
+               // (we know it's the last character); the rule for 101 recurses to
+               // fill in the remaining digits and the numeral mark
+        + "    100: <%%hundreds<\u2032; <%%hundreds<>>;\n"
+               // special-case the hundreds from 500 to 900 because they consist of
+               // more than one character
+        + "    500: \u05ea\u2033\u05e7; \u05ea\u05e7>>;\n"
+        + "    600: \u05ea\u2033\u05e8; \u05ea\u05e8>>;\n"
+        + "    700: \u05ea\u2033\u05e9; \u05ea\u05e9>>;\n"
+        + "    800: \u05ea\u2033\u05ea; \u05ea\u05ea>>;\n"
+        + "    900: \u05ea\u05ea\u2033\u05e7; \u05ea\u05ea\u05e7>>;\n"
+        // this rule set is used to format values of 1,000 or more.  Here, we don't
+        // worry about the numeral mark, and we add two dots (the Unicode combining
+        // diaeresis character) to ever letter
+        + "%%high-order:\n"
+               // put the ones digit, followed by the diaeresis
+        + "    =%%ones=\u0308;\n"
+               // the tens can be handled with recursion
+        + "    10: <%%tens<\u0308[>>];\n"
+               // still have to special-case 15 and 16
+        + "    15: \u05d8\u0308\u05d5\u0308; 16: \u05d8\u003078\u05d6\u0308;\n"
+               // back to the regular rules at 17
+        + "    17: <%%tens<\u0308[>>];\n"
+               // the hundreds with the dots added (and without worrying about
+               // placing the numeral mark)
+        + "    100: <%%hundreds<\u0308[>>];\n"
+        + "    500: \u05ea\u0308\u05e7\u0308[>>];\n"
+        + "    600: \u05ea\u0308\u05e8\u0308[>>];\n"
+        + "    700: \u05ea\u0308\u05e9\u0308[>>];\n"
+        + "    800: \u05ea\u0308\u05ea\u0308[>>];\n"
+        + "    900: \u05ea\u0308\u05ea\u0308\u05e7\u0308[>>];\n"
+        // this rule set doesn't do anything; it's used by some other rules to
+        // invoke the rollback rule
+        + " %%null:\n"
+        + "    ;\n"
+        // the main rule set.
+        + "%main:\n"
+               // for values below 10, just output the letter and the numeral mark
+        + "    =%%ones=\u2032;\n"
+               // for values from 10 to 99, use %%tens-and-ones to do the formatting
+        + "    10: =%%tens-and-ones=;\n"
+               // for values from 100 to 999, use %%low-order to do the formatting
+        + "    100: =%%low-order=;\n"
+               // for values of 1,000 and over, use %%high-order to do the formatting
+        + "    1000: <%%high-order<[>%%low-order>];\n";
+
+    /**
+     * Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals,
+     * also used the letters of their alphabet as numerals.  There are three now-
+     * obsolete Greek letters that are used as numerals; many fonts don't have them.
+     * Large numbers were handled many different ways; the way shown here divides
+     * large numbers into groups of four letters (factors of 10,000), and separates
+     * the groups with the capital letter mu (for myriad).  Capital letters are used
+     * for values below 10,000; small letters for higher numbers (to make the capital
+     * mu stand out).
+     */
+    public static final String greekAlphabetic =
+        // this rule set is used for formatting numbers below 10,000.  It uses
+        // capital letters.
+        "%%low-order:\n"
+        + "    (no zero); \u0391; \u0392; \u0393; \u0394; \u0395; \u03dc; \u0396; \u0397; \u0398;\n"
+        + "    10: \u0399[>>]; 20: \u039a[>>]; 30: \u039b[>>]; 40: \u039c[>>]; 50: \u039d[>>];\n"
+        + "    60: \u039e[>>]; 70: \u039f[>>]; 80: \u03a0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03a1[>>]; 200: \u03a3[>>]; 300: \u03a4[>>]; 400: \u03a5[>>];\n"
+        + "    500: \u03a6[>>]; 600: \u03a7[>>]; 700: \u03a8[>>]; 800: \u03a9[>>];\n"
+        + "    900: \u03e0[>>];\n"
+               // the thousands are represented by the same numbers as the ones, but
+               // with a comma-like mark added to their left shoulder
+        + "    1000: \u0391\u0313[>>]; 2000: \u0392\u0313[>>]; 3000: \u0393\u0313[>>];\n"
+        + "    4000: \u0394\u0313[>>]; 5000: \u0395\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u0396\u0313[>>]; 8000: \u0397\u0313[>>]; 9000: \u0398\u0313[>>];\n"
+        // this rule set is the same as above, but uses lowercase letters.  It is used
+        // for formatting the groups in numbers above 10,000.
+        + "%%high-order:\n"
+        + "    (no zero); \u03b1; \u03b2; \u03b3; \u03b4; \u03b5; \u03dc; \u03b6; \u03b7; \u03b8;\n"
+        + "    10: \u03b9[>>]; 20: \u03ba[>>]; 30: \u03bb[>>]; 40: \u03bc[>>]; 50: \u03bd[>>];\n"
+        + "    60: \u03be[>>]; 70: \u03bf[>>]; 80: \u03c0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03c1[>>]; 200: \u03c3[>>]; 300: \u03c4[>>]; 400: \u03c5[>>];\n"
+        + "    500: \u03c6[>>]; 600: \u03c7[>>]; 700: \u03c8[>>]; 800: \u03c9[>>];\n"
+        + "    900: \u03c0[>>];\n"
+        + "    1000: \u03b1\u0313[>>]; 2000: \u03b2\u0313[>>]; 3000: \u03b3\u0313[>>];\n"
+        + "    4000: \u03b4\u0313[>>]; 5000: \u03b5\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u03b6\u0313[>>]; 8000: \u03b7\u0313[>>]; 9000: \u03b8\u0313[>>];\n"
+        // the main rule set
+        + "%main:\n"
+               // for values below 10,000, just use %%low-order
+        + "    =%%low-order=;\n"
+               // for values above 10,000, split into two groups of four digits
+               // and format each with %%high-order (putting an M in betwen)
+        + "    10,000: <%%high-order<\u039c>%%high-order>;\n"
+               // for values above 100,000,000, add another group onto the front
+               // and another M
+        + "    100,000,000: <%%high-order<\u039c>>\n";
+
+    /**
+     * A list of all the sample rule sets, used by the demo program.
+     */
+    public static final String[] sampleRuleSets =
+        { usEnglish,
+          ukEnglish,
+          spanish,
+          french,
+          swissFrench,
+          german,
+          italian,
+          swedish,
+          dutch,
+          japanese,
+          greek,
+          russian,
+          hebrew,
+          ordinal,
+          message1,
+          dollarsAndCents,
+          decimalAsFraction,
+          closestFraction,
+          stock,
+          abbEnglish,
+          units,
+          message2,
+          dozens,
+          durationInSeconds,
+          durationInHours,
+          poundsShillingsAndPence,
+          arabicNumerals,
+          wordsForDigits,
+          chinesePlaceValue,
+          romanNumerals,
+          hebrewAlphabetic,
+          greekAlphabetic };
+
+    /**
+     * The displayable names for all the sample rule sets, in the same order as
+     * the preceding array.
+     */
+    public static final String[] sampleRuleSetNames =
+        { "English (US)",
+          "English (UK)",
+          "Spanish",
+          "French (France)",
+          "French (Switzerland)",
+          "German",
+          "Italian",
+          "Swedish",
+          "Dutch",
+          "Japanese",
+          "Greek",
+          "Russian",
+          "Hebrew",
+          "English ordinal abbreviations",
+          "Simple message formatting",
+          "Dollars and cents",
+          "Decimals as fractions",
+          "Closest fraction",
+          "Stock prices",
+          "Abbreviated US English",
+          "Changing dimensions",
+          "Complex message formatting",
+          "Dozens",
+          "Duration (value in seconds)",
+          "Duration (value in hours)",
+          "Pounds, shillings, and pence",
+          "Arabic numerals",
+          "Words for digits",
+          "Chinese place-value notation",
+          "Roman numerals",
+          "Hebrew ahlphabetic numerals",
+          "Greek alphabetic numerals" };
+
+    /**
+     * The base locale for each of the sample rule sets.  The locale is used to
+     * determine DecimalFormat behavior, lenient-parse behavior, and text-display
+     * selection (we have a hack in here to allow display of non-Latin scripts).
+     * Null means the locale setting is irrelevant and the default can be used.
+     */
+    public static final Locale[] sampleRuleSetLocales =
+        { Locale.US,
+          Locale.UK,
+          new Locale("es", "", ""),
+          Locale.FRANCE,
+          new Locale("fr", "CH", ""),
+          Locale.GERMAN,
+          Locale.ITALIAN,
+          new Locale("sv", "", ""),
+          new Locale("nl", "", ""),
+          Locale.JAPANESE,
+          new Locale("el", "", ""),
+          new Locale("ru", "", ""),
+          new Locale("iw", "", ""),
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          Locale.US,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.ENGLISH,
+          null,
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.UK,
+          null,
+          Locale.ENGLISH,
+          new Locale("zh", "", ""),
+          null,
+          new Locale("iw", "", ""),
+          new Locale("el", "", ""),
+          null };
+
+        public static final String[] sampleRuleSetCommentary = {
+            "This demonstration version of the "
+            + "U.S. English spellout rules has four variants: 1) %simplified is a "
+            + "set of rules showing the simple method of spelling out numbers in "
+            + "English: 289 is formatted as \"two hundred eighty-nine\".  2) %alt-teens "
+            + "is the same as %simplified, except that values between 1,000 and 9,999 "
+            + "whose hundreds place isn't zero are formatted in hundreds.  For example, "
+            + "1,983 is formatted as \"nineteen hundred eighty-three,\" and 2,183 is "
+            + "formatted as \"twenty-one hundred eighty-three,\" but 2,083 is still "
+            + "formatted as \"two thousand eighty-three.\"  3) %ordinal formats the "
+            + "values as ordinal numbers in English (e.g., 289 is \"two hundred eighty-"
+            + "ninth\").  4) %default uses a more complicated algorithm to format "
+            + "numbers in a more natural way: 289 is formatted as \"two hundred AND "
+            + "eighty-nine\" and commas are inserted between the thousands groups for "
+            + "values above 100,000.",
+
+            "U.K. English has one significant "
+            + "difference from U.S. English: the names for values of 1,000,000,000 "
+            + "and higher.  In American English, each successive \"-illion\" is 1,000 "
+            + "times greater than the preceding one: 1,000,000,000 is \"one billion\" "
+            + "and 1,000,000,000,000 is \"one trillion.\"  In British English, each "
+            + "successive \"-illion\" is one million times greater than the one before: "
+            + "\"one billion\" is 1,000,000,000,000 (or what Americans would call a "
+            + "\"trillion\"), and \"one trillion\" is 1,000,000,000,000,000,000.  "
+            + "1,000,000,000 in British English is \"one thousand million.\"  (This "
+            + "value is sometimes called a \"milliard,\" but this word seems to have "
+            + "fallen into disuse.)",
+
+            "The Spanish rules are quite similar to "
+            + "the English rules, but there are some important differences: "
+            + "First, we have to provide separate rules for most of the twenties "
+            + "because the ones digit frequently picks up an accent mark that it "
+            + "doesn't have when standing alone.  Second, each multiple of 100 has "
+            + "to be specified separately because the multiplier on 100 very often "
+            + "changes form in the contraction: 500 is \"quinientos,\" not "
+            + "\"cincocientos.\"  In addition, the word for 100 is \"cien\" when "
+            + "standing alone, but changes to \"ciento\" when followed by more digits.  "
+            + "There also some other differences.",
+
+            "French adds some interesting quirks of its "
+            + "own: 1) The word \"et\" is interposed between the tens and ones digits, "
+            + "but only if the ones digit if 1: 20 is \"vingt,\" and 2 is \"vingt-deux,\" "
+            + "but 21 is \"vingt-et-un.\"  2)  There are no words for 70, 80, or 90.  "
+            + "\"quatre-vingts\" (\"four twenties\") is used for 80, and values proceed "
+            + "by score from 60 to 99 (e.g., 73 is \"soixante-treize\" [\"sixty-thirteen\"]).  "
+            + "Numbers from 1,100 to 1,199 are rendered as hundreds rather than "
+            + "thousands: 1,100 is \"onze cents\" (\"eleven hundred\"), rather than "
+            + "\"mille cent\" (\"one thousand one hundred\")",
+
+            "Swiss French differs from French French "
+            + "in that it does have words for 70, 80, and 90.  This rule set shows them, "
+            + "and is simpler as a result.",
+
+            "German also adds some interesting "
+            + "characteristics.  For values below 1,000,000, numbers are customarily "
+            + "written out as a single word.  And the ones digit PRECEDES the tens "
+            + "digit (e.g., 23 is \"dreiundzwanzig,\" not \"zwanzigunddrei\").",
+
+            "Like German, most Italian numbers are "
+            + "written as single words.  What makes these rules complicated is the rule "
+            + "that says that when a word ending in a vowel and a word beginning with "
+            + "a vowel are combined into a compound, the vowel is dropped from the "
+            + "end of the first word: 180 is \"centottanta,\" not \"centoottanta.\"  "
+            + "The complexity of this rule set is to produce this behavior.",
+
+            "Spellout rules for Swedish.",
+
+            "Spellout rules for Dutch.  Notice that in Dutch, as in German,"
+            + "the ones digit precedes the tens digit.",
+
+            "In Japanese, there really isn't any "
+            + "distinction between a number written out in digits and a number "
+            + "written out in words: the ideographic characters are both digits "
+            + "and words.  This rule set provides two variants:  %traditional "
+            + "uses the traditional CJK numerals (which are also used in China "
+            + "and Korea).  %financial uses alternate ideographs for many numbers "
+            + "that are harder to alter than the traditional numerals (one could "
+            + "fairly easily change a one to "
+            + "a three just by adding two strokes, for example).  This is also done in "
+            + "the other countries using Chinese idographs, but different ideographs "
+            + "are used in those places.",
+
+            "Again in Greek we have to supply the words "
+            + "for the multiples of 100 because they can't be derived algorithmically.  "
+            + "Also, the tens dgit changes form when followed by a ones digit: an "
+            + "accent mark disappears from the tens digit and moves to the ones digit.  "
+            + "Therefore, instead of using the [] notation, we actually have to use "
+            + "two separate rules for each multiple of 10 to show the two forms of "
+            + "the word.",
+
+            "Spellout rules for Russian.",
+
+            "Spellout rules for Hebrew.  Hebrew actually has inflected forms for "
+            + "most of the lower-order numbers.  The masculine forms are shown "
+            + "here.",
+
+            "This rule set adds an English ordinal abbreviation to the end of a "
+            + "number.  For example, 2 is formatted as \"2nd\".  Parsing doesn't work with "
+            + "this rule set.  To parse, use DecimalFormat on the numeral.",
+
+            "This is a simple message-formatting example.  Normally one would "
+            + "use ChoiceFormat and MessageFormat to do something this simple, "
+            + "but this shows it could be done with RuleBasedNumberFormat too.  "
+            + "A message-formatting example that might work better with "
+            + "RuleBasedNumberFormat appears later.",
+
+            "The next few examples demonstrate fraction handling.  "
+            + "This example formats a number in one of the two styles often used "
+            + "on checks.  %dollars-and-hundredths formats cents as hundredths of "
+            + "a dollar (23.40 comes out as \"twenty-three and 40/100 dollars\").  "
+            + "%dollars-and-cents formats in dollars and cents (23.40 comes out as "
+            + "\"twenty-three dollars and forty cents\")",
+
+            "This rule set shows the fractional part of the number as a fraction "
+            + "with a power of 10 as the denominator.  Some languages don't spell "
+            + "out the fractional part of a number as \"point one two three,\" but "
+            + "always render it as a fraction.  If we still want to treat the fractional "
+            + "part of the number as a decimal, then the fraction's denominator "
+            + "is always a power of 10.  This example does that: 23.125 is formatted "
+            + "as \"twenty-three and one hundred twenty-five thousandths\" (as opposed "
+            + "to \"twenty-three point one two five\" or \"twenty-three and one eighth\").",
+
+            "Number with closest fraction.  This example formats a value using "
+            + "numerals, but shows the fractional part as a ratio (fraction) rather "
+            + "than a decimal.  The fraction always has a denominator between 2 and 10.",
+
+            "American stock-price formatting.  Non-integral stock prices are still "
+            + "generally shown in eighths or sixteenths of dollars instead of dollars "
+            + "and cents.  This example formats stock prices in this way if possible, "
+            + "and in dollars and cents if not.",
+
+            "The next few examples demonstrate using a RuleBasedNumberFormat to "
+            + "change the units a value is denominated in depending on its magnitude.  "
+            + "The example shows large numbers the way they often appear is nwespapers: "
+            + "1,200,000 is formatted as \"1.2 million\".",
+
+            "This example takes a number of meters and formats it in whatever unit "
+            + "will produce a number with from one to three digits before the decimal "
+            + "point.  For example, 230,000 is formatted as \"230 km\".",
+
+            "A more complicated message-formatting example.  Here, in addition to "
+            + "handling the singular and plural versions of the word, the value is "
+            + "denominated in bytes, kilobytes, or megabytes depending on its magnitude.  "
+            + "Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000), "
+            + "and a megabyte as 1,024 kilobytes (not 1,000).",
+
+            "This example formats a number in dozens and gross.  This is intended to "
+            + "demonstrate how this rule set can be used to format numbers in systems "
+            + "other than base 10.  The \"/12\" after the rules' base values controls this.  "
+            + "Also notice that the base doesn't have to be consistent throughout the "
+            + "whole rule set: we go back to base 10 for values over 1,000.",
+
+            "The next few examples show how a single value can be divided up into major "
+            + "and minor units that don't relate to each other by a factor of 10.  "
+            + "This example formats a number of seconds in sexagesimal notation "
+            + "(i.e., hours, minutes, and seconds).  %with-words formats it with "
+            + "words (3740 is \"1 hour, 2 minutes, 20 seconds\") and %in-numerals "
+            + "formats it entirely in numerals (3740 is \"1:02:20\").",
+
+            "This example formats a number of hours in sexagesimal notation (i.e., "
+            + "hours, minutes, and seconds).  %with-words formats the value using "
+            + "words for the units, and %in-numerals formats the value using only "
+            + "numerals.",
+
+            "This rule set formats a number of pounds as pounds, shillings, and "
+            + "pence in the old English system of currency.",
+
+            "These examples show how RuleBasedNumberFormat can be used to format "
+            + "numbers using non-positional numeration systems.  "
+            + "This example formats numbers in Arabic numerals.  "
+            + "Normally, you'd do this with DecimalFormat, but this shows that "
+            + "RuleBasedNumberFormat can handle it too.",
+
+            "This example follows the same pattern as the Arabic-numerals "
+            + "example, but uses words for the various digits (e.g., 123 comes "
+            + "out as \"one two three\").",
+
+            "This example formats numbers using Chinese characters in the Arabic "
+            + "place-value method.  This was used historically in China for a while.",
+
+            "Roman numerals.  This example has two variants: %modern shows how large "
+            + "numbers are usually handled today; %historical ses the older symbols for "
+            + "thousands.  Not all of the characters are displayable with most fonts.",
+
+            "Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers "
+            + "used the letter of their alphabet as numerals.  The first nine letters of "
+            + "the alphabet repesented the values from 1 to 9, the second nine letters the "
+            + "multiples of 10, and the remaining letters the multiples of 100.  Since they "
+            + "ran out of letters at 400, the remaining multiples of 100 were represented "
+            + "using combinations of the existing letters for the hundreds.  Numbers were "
+            + "distinguished from words in a number of different ways: the way shown here "
+            + "uses a single mark after a number consisting of one letter, and a double "
+            + "mark between the last two letters of a number consisting of two or more "
+            + "letters.  Two dots over a letter multiplied its value by 1,000.  Also, since "
+            + "the letter for 10 is the first letter of God's name and the letters for 5 and 6 "
+            + "are letters in God's name, which wasn't supposed to be written or spoken, 15 and "
+            + "16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.",
+
+            "Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals, "
+            + "also used the letters of their alphabet as numerals.  There are three now-"
+            + "obsolete Greek letters that are used as numerals; many fonts don't have them.  "
+            + "Large numbers were handled many different ways; the way shown here divides "
+            + "large numbers into groups of four letters (factors of 10,000), and separates "
+            + "the groups with the capital letter mu (for myriad).  Capital letters are used "
+            + "for values below 10,000; small letters for higher numbers (to make the capital "
+            + "mu stand out).",
+
+            "This is a custom (user-defined) rule set."
+        };
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/rbnf/package.html b/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
new file mode 100644
index 00000000000..8a0507f1ff3
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+RuleBasedNumberFormat demo appliation.
+
+
\ No newline at end of file
diff --git a/demos/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java b/demos/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
new file mode 100644
index 00000000000..72d83048a99
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
@@ -0,0 +1,78 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.demo.timescale;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class demonstrates how to use UniversalTimeScale to
+ * convert from one local time scale to another.
+ * 
+ * @see UniversalTimeScale
+ */
+public class PivotDemo {
+
+    /**
+     * The default constructor.
+     */
+    public PivotDemo()
+    {
+    }
+
+    /**
+     * The main() method uses UniversalTimeScale to
+     * convert from the Java and Unix time scales to the ICU time scale. It uses
+     * a Calendar object to display the ICU time values.
+     * 
+     * @param args the command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        TimeZone utc = new SimpleTimeZone(0, "UTC");
+        Calendar cal = Calendar.getInstance(utc, Locale.ENGLISH);
+        MessageFormat fmt = new MessageFormat("{1} = {0, date, full} {0, time, full}");
+        Object arguments[] = {cal, null};
+        
+        arguments[0] = cal;
+        
+        System.out.println("\nJava test:");
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = " 000000000000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62164684800000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62164684800000L";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62135769600000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62135769600000L";
+        System.out.println(fmt.format(arguments));
+        
+        System.out.println("\nUnix test:");
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x80000000, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x80000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x00000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x7FFFFFFF, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x7FFFFFFF";
+        System.out.println(fmt.format(arguments));
+        
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
new file mode 100644
index 00000000000..3f458d8199a
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
@@ -0,0 +1,308 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeFilter;
+
+public class AnyTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+    private String targetName;
+    private RunIterator it;
+    private Position run;
+    
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter, RunIterator it){
+        super("Any-" + targetName, filter);
+        this.targetName = targetName;
+        this.it = it;
+        run = new Position();
+    }
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter){
+        this(targetName, filter, new ScriptRunIterator());
+    }
+    
+    static private Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        if (DEBUG) {
+            System.out.println("- handleTransliterate " + hex.transliterate(text.toString())
+                + ", " + toString(offsets));
+        }
+        it.reset(text, offsets);
+        
+        while (it.next(run)) {
+            if (targetName.equalsIgnoreCase(it.getName())) {
+                if (DEBUG) System.out.println("Skipping identical: " + targetName);
+                run.start = run.limit; // show we processed
+                continue; // skip if same
+            }
+            
+            Transliterator t;
+            String id = it.getName() + '-' + targetName;
+            try {
+                t = Transliterator.getInstance(id);
+            } catch (IllegalArgumentException ex) {
+                if (DEBUG) System.out.println("Couldn't find: " + id + ", Trying Latin as Pivot");
+                id = it.getName() + "-Latin; Latin-" + targetName;
+                try {
+                    t = Transliterator.getInstance(id);
+                } catch (IllegalArgumentException ex2) {
+                    if (DEBUG) System.out.println("Couldn't find: " + id);
+                    continue;
+                }
+            }
+            // TODO catch error later!!
+                
+            if (DEBUG) {
+                System.out.println(t.getID());
+                System.out.println("input: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+            
+            if (isIncremental && it.atEnd()) {
+                t.transliterate(text, run);
+            } else {
+                t.finishTransliteration(text, run);
+            }
+            // adjust the offsets in line with the changes
+            it.adjust(run.limit);
+            
+            if (DEBUG) {
+                System.out.println("output: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+        }
+
+        // show how far we got!
+        it.getExpanse(offsets);
+        if (run.start == run.limit) offsets.start = offsets.limit;
+        else offsets.start = run.start;
+        if (DEBUG) {
+            System.out.println("+ handleTransliterate: " + ", " + toString(offsets));
+            System.out.println();
+        }
+    }
+    
+    // should be method on Position
+    public static String toString(Position offsets) {
+        return "[cs: " + offsets.contextStart
+                + ", s: " + offsets.start
+                + ", l: " + offsets.limit
+                + ", cl: " + offsets.contextLimit
+                + "]";
+    }
+    
+    public interface RunIterator {
+        public void reset(Replaceable text, Position expanse);
+        public void getExpanse(Position run);
+        public void reset();
+        public boolean next(Position run);
+        public void getCurrent(Position run);
+        public String getName();
+        public void adjust(int newCurrentLimit);
+        public boolean atEnd();
+    }
+    
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be of the form:
+     * ccccSScSSccccTTcTcccc    - where c is common, S is the first script and T is the second
+     *|            |            - first run
+     *         |            |    - second run
+     * That is, the runs will overlap. The reason for this is so that a transliterator can
+     * consider common characters both before and after the scripts.
+     * The only time that contextStart != start is for the first run 
+     *    (the context is the start context of the entire expanse)
+     * The only time that contextLimit != limit is for the last run 
+     *    (the context is the end context of the entire expanse)
+     */
+    public static class ScriptRunIterator implements RunIterator {
+        private Replaceable text;
+        private Position expanse = new Position();
+        private Position current = new Position();
+        private int script;
+        private boolean done = true;
+        
+
+        public void reset(Replaceable repText, Position expansePos) {
+            set(this.expanse, expansePos);
+            this.text = repText;
+            reset();
+        }
+            
+        public void reset() {
+            done = false;
+            //this.expanse = expanse;
+            script = UScript.INVALID_CODE;
+            // set up first range to be empty, at beginning
+            current.contextStart = expanse.contextStart;
+            current.start = current.limit = current.contextLimit = expanse.start;            
+        }
+            
+        public boolean next(Position run) {
+            if (done) return false;
+            if (DEBUG) {
+                System.out.println("+cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            // reset start context run to the last end
+            current.start = current.limit;
+            
+            // Phase 1. Backup the START value through COMMON until we get to expanse.start or a real script.
+            int i, cp;
+            int limit = expanse.start;
+            for (i = current.start; i > limit; i -= UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt != UScript.COMMON && scrpt != UScript.INHERITED) break;
+            }
+            current.start = i;
+            current.contextStart = (i == limit) ? expanse.contextStart : i; // extend at start
+            
+            // PHASE 2. Move up the LIMIT value through COMMON or single script until we get to expanse.limit
+            int lastScript = UScript.COMMON;
+            //int veryLastScript = UScript.COMMON;
+            limit = expanse.limit; 
+            for (i = current.limit; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt == UScript.INHERITED) scrpt = UScript.COMMON;
+                if (scrpt != UScript.COMMON) {
+                    // if we find a real script:
+                    //   if we already had a script, bail
+                    //   otherwise set our script
+                    if (lastScript == UScript.COMMON) lastScript = scrpt;
+                    else if (lastScript != scrpt) break;
+                }
+            }
+            current.limit = i;
+            current.contextLimit = (i == limit) ? expanse.contextLimit : i; // extend at end
+            done = (i == limit);
+            script = lastScript;
+            
+            if (DEBUG) {
+                System.out.println("-cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            
+            set(run, current);
+            return true;
+        }
+        
+        // SHOULD BE METHOD ON POSITION
+        public static void set(Position run, Position current) {
+            run.contextStart = current.contextStart;
+            run.start = current.start;
+            run.limit = current.limit;
+            run.contextLimit = current.contextLimit;
+        }
+        
+        public boolean atEnd() {
+            return current.limit == expanse.limit;
+        }
+        
+        public void getCurrent(Position run) {
+            set(run, current);
+        }
+        
+        public void getExpanse(Position run) {
+            set(run, expanse);
+        }
+        
+        public String getName() {
+            return UScript.getName(script);
+        }
+        
+        public void adjust(int newCurrentLimit) {
+            if (expanse == null) {
+                throw new IllegalArgumentException("Must reset() before calling");
+            }
+            int delta = newCurrentLimit - current.limit;
+            current.limit += delta;
+            current.contextLimit += delta;
+            expanse.limit += delta;
+            expanse.contextLimit += delta;
+        }
+        
+        // register Any-Script for every script.
+        
+        private static Set scriptList = new HashSet();
+        
+        public static void registerAnyToScript() {
+            synchronized (scriptList) {
+                Enumeration sources = Transliterator.getAvailableSources();
+                while(sources.hasMoreElements()) {
+                    String source = (String) sources.nextElement();
+                    if (source.equals("Any")) continue; // to keep from looping
+                    
+                    Enumeration targets = Transliterator.getAvailableTargets(source);
+                    while(targets.hasMoreElements()) {
+                        String target = (String) targets.nextElement();
+                        if (UScript.getCode(target) == null) continue; // SKIP unless we have a script (or locale)
+                        if (scriptList.contains(target)) continue; // already encountered
+                        scriptList.add(target); // otherwise add for later testing
+                        
+                        Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                        if (variantSet.size() < 2) {
+                            AnyTransliterator at = new AnyTransliterator(target, null);
+                            DummyFactory.add(at.getID(), at);
+                        } else {
+                            Iterator variants = variantSet.iterator();
+                            while(variants.hasNext()) {
+                                String variant = (String) variants.next();
+                                AnyTransliterator at = new AnyTransliterator(
+                                    (variant.length() > 0) ? target + "/" + variant : target, null);
+                                DummyFactory.add(at.getID(), at);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        
+        static class DummyFactory implements Transliterator.Factory {
+            static DummyFactory singleton = new DummyFactory();
+            static HashMap m = new HashMap();
+
+            // Since Transliterators are immutable, we don't have to clone on set & get
+            static void add(String ID, Transliterator t) {
+                m.put(ID, t);
+                System.out.println("Registering: " + ID + ", " + t.toRules(true));
+                Transliterator.registerFactory(ID, singleton);
+            }
+            public Transliterator getInstance(String ID) {
+                return (Transliterator) m.get(ID);
+            }
+        }
+        
+        // Nice little Utility for converting Enumeration to collection
+        static Set add(Set s, Enumeration enumeration) {
+            while(enumeration.hasMoreElements()) {
+                s.add(enumeration.nextElement());
+            }
+            return s;
+        }
+        
+        
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java b/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
new file mode 100644
index 00000000000..b2b477ab42e
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
@@ -0,0 +1,560 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2010, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Incrementally returns the set of all strings that case-fold to the same value.
+ */
+public class CaseIterator {
+    
+    // testing stuff
+    static Transliterator toName = Transliterator.getInstance("[:^ascii:] Any-Name");
+    static Transliterator toHex = Transliterator.getInstance("[:^ascii:] Any-Hex");
+    static Transliterator toHex2 = Transliterator.getInstance("[[^\u0021-\u007F]-[,]] Any-Hex");
+    
+    // global tables (could be precompiled)
+    private static Map fromCaseFold = new HashMap();
+    private static Map toCaseFold = new HashMap();
+    private static int maxLength = 0;
+    
+    // This exception list is generated on the console by turning on the GENERATED flag, 
+    // which MUST be false for normal operation.
+    // Once the list is generated, it is pasted in here.
+    // A bit of a cludge, but this bootstrapping is the easiest way 
+    // to get around certain complications in the data.
+    
+    private static final boolean GENERATE = false;
+
+    private static final boolean DUMP = false;
+    
+    private static String[][] exceptionList = {
+        // a\N{MODIFIER LETTER RIGHT HALF RING}
+        {"a\u02BE","A\u02BE","a\u02BE",},
+        // ff
+        {"ff","FF","Ff","fF","ff",},
+        // ffi
+        {"ffi","FFI","FFi","FfI","Ffi","F\uFB01","fFI","fFi","ffI","ffi","f\uFB01","\uFB00I","\uFB00i",},
+        // ffl
+        {"ffl","FFL","FFl","FfL","Ffl","F\uFB02","fFL","fFl","ffL","ffl","f\uFB02","\uFB00L","\uFB00l",},
+        // fi
+        {"fi","FI","Fi","fI","fi",},
+        // fl
+        {"fl","FL","Fl","fL","fl",},
+        // h\N{COMBINING MACRON BELOW}
+        {"h\u0331","H\u0331","h\u0331",},
+        // i\N{COMBINING DOT ABOVE}
+        {"i\u0307","I\u0307","i\u0307",},
+        // j\N{COMBINING CARON}
+        {"j\u030C","J\u030C","j\u030C",},
+        // ss
+        {"ss","SS","Ss","S\u017F","sS","ss","s\u017F","\u017FS","\u017Fs","\u017F\u017F",},
+        // st
+        {"st","ST","St","sT","st","\u017FT","\u017Ft",},
+        // t\N{COMBINING DIAERESIS}
+        {"t\u0308","T\u0308","t\u0308",},
+        // w\N{COMBINING RING ABOVE}
+        {"w\u030A","W\u030A","w\u030A",},
+        // y\N{COMBINING RING ABOVE}
+        {"y\u030A","Y\u030A","y\u030A",},
+        // \N{MODIFIER LETTER APOSTROPHE}n
+        {"\u02BCn","\u02BCN","\u02BCn",},
+        // \N{GREEK SMALL LETTER ALPHA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AC\u03B9","\u0386\u0345","\u0386\u0399","\u0386\u03B9","\u0386\u1FBE","\u03AC\u0345","\u03AC\u0399","\u03AC\u03B9","\u03AC\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AE\u03B9","\u0389\u0345","\u0389\u0399","\u0389\u03B9","\u0389\u1FBE","\u03AE\u0345","\u03AE\u0399","\u03AE\u03B9","\u03AE\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B1\u0342","\u0391\u0342","\u03B1\u0342",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u0342\u03B9","\u0391\u0342\u0345","\u0391\u0342\u0399","\u0391\u0342\u03B9","\u0391\u0342\u1FBE",
+            "\u03B1\u0342\u0345","\u03B1\u0342\u0399","\u03B1\u0342\u03B9","\u03B1\u0342\u1FBE","\u1FB6\u0345",
+            "\u1FB6\u0399","\u1FB6\u03B9","\u1FB6\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u03B9","\u0391\u0345","\u0391\u0399","\u0391\u03B9","\u0391\u1FBE","\u03B1\u0345","\u03B1\u0399","\u03B1\u03B9","\u03B1\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B7\u0342","\u0397\u0342","\u03B7\u0342",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u0342\u03B9","\u0397\u0342\u0345","\u0397\u0342\u0399","\u0397\u0342\u03B9","\u0397\u0342\u1FBE",
+            "\u03B7\u0342\u0345","\u03B7\u0342\u0399","\u03B7\u0342\u03B9","\u03B7\u0342\u1FBE","\u1FC6\u0345","\u1FC6\u0399",
+            "\u1FC6\u03B9","\u1FC6\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u03B9","\u0397\u0345","\u0397\u0399","\u0397\u03B9","\u0397\u1FBE","\u03B7\u0345","\u03B7\u0399","\u03B7\u03B9","\u03B7\u1FBE",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03B9\u0308\u0300","\u0345\u0308\u0300","\u0399\u0308\u0300","\u03B9\u0308\u0300","\u1FBE\u0308\u0300",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03B9\u0308\u0301","\u0345\u0308\u0301","\u0399\u0308\u0301","\u03B9\u0308\u0301","\u1FBE\u0308\u0301",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0308\u0342","\u0345\u0308\u0342","\u0399\u0308\u0342","\u03B9\u0308\u0342","\u1FBE\u0308\u0342",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0342","\u0345\u0342","\u0399\u0342","\u03B9\u0342","\u1FBE\u0342",},
+        // \N{GREEK SMALL LETTER RHO}\N{COMBINING COMMA ABOVE}
+        {"\u03C1\u0313","\u03A1\u0313","\u03C1\u0313","\u03F1\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0308\u0300","\u03A5\u0308\u0300","\u03C5\u0308\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0308\u0301","\u03A5\u0308\u0301","\u03C5\u0308\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0308\u0342","\u03A5\u0308\u0342","\u03C5\u0308\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}
+        {"\u03C5\u0313","\u03A5\u0313","\u03C5\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0313\u0300","\u03A5\u0313\u0300","\u03C5\u0313\u0300","\u1F50\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0313\u0301","\u03A5\u0313\u0301","\u03C5\u0313\u0301","\u1F50\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0313\u0342","\u03A5\u0313\u0342","\u03C5\u0313\u0342","\u1F50\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0342","\u03A5\u0342","\u03C5\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C9\u0342","\u03A9\u0342","\u03C9\u0342","\u2126\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u0342\u03B9","\u03A9\u0342\u0345","\u03A9\u0342\u0399","\u03A9\u0342\u03B9","\u03A9\u0342\u1FBE","\u03C9\u0342\u0345","\u03C9\u0342\u0399","\u03C9\u0342\u03B9","\u03C9\u0342\u1FBE","\u1FF6\u0345",
+            "\u1FF6\u0399","\u1FF6\u03B9","\u1FF6\u1FBE","\u2126\u0342\u0345","\u2126\u0342\u0399","\u2126\u0342\u03B9","\u2126\u0342\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u03B9","\u03A9\u0345","\u03A9\u0399","\u03A9\u03B9","\u03A9\u1FBE","\u03C9\u0345","\u03C9\u0399","\u03C9\u03B9","\u03C9\u1FBE","\u2126\u0345","\u2126\u0399","\u2126\u03B9","\u2126\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03CE\u03B9","\u038F\u0345","\u038F\u0399","\u038F\u03B9","\u038F\u1FBE","\u03CE\u0345","\u03CE\u0399","\u03CE\u03B9","\u03CE\u1FBE",},
+        // \N{ARMENIAN SMALL LETTER ECH}\N{ARMENIAN SMALL LETTER YIWN}
+        {"\u0565\u0582","\u0535\u0552","\u0535\u0582","\u0565\u0552","\u0565\u0582",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER ECH}
+        {"\u0574\u0565","\u0544\u0535","\u0544\u0565","\u0574\u0535","\u0574\u0565",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER INI}
+        {"\u0574\u056B","\u0544\u053B","\u0544\u056B","\u0574\u053B","\u0574\u056B",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER XEH}
+        {"\u0574\u056D","\u0544\u053D","\u0544\u056D","\u0574\u053D","\u0574\u056D",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u0574\u0576","\u0544\u0546","\u0544\u0576","\u0574\u0546","\u0574\u0576",},
+        // \N{ARMENIAN SMALL LETTER VEW}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u057E\u0576","\u054E\u0546","\u054E\u0576","\u057E\u0546","\u057E\u0576",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F00\u03B9","\u1F00\u0345","\u1F00\u0399","\u1F00\u03B9","\u1F00\u1FBE","\u1F08\u0345","\u1F08\u0399","\u1F08\u03B9","\u1F08\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F01\u03B9","\u1F01\u0345","\u1F01\u0399","\u1F01\u03B9","\u1F01\u1FBE","\u1F09\u0345","\u1F09\u0399","\u1F09\u03B9","\u1F09\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F02\u03B9","\u1F02\u0345","\u1F02\u0399","\u1F02\u03B9","\u1F02\u1FBE","\u1F0A\u0345","\u1F0A\u0399","\u1F0A\u03B9","\u1F0A\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F03\u03B9","\u1F03\u0345","\u1F03\u0399","\u1F03\u03B9","\u1F03\u1FBE","\u1F0B\u0345","\u1F0B\u0399","\u1F0B\u03B9","\u1F0B\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F04\u03B9","\u1F04\u0345","\u1F04\u0399","\u1F04\u03B9","\u1F04\u1FBE","\u1F0C\u0345","\u1F0C\u0399","\u1F0C\u03B9","\u1F0C\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F05\u03B9","\u1F05\u0345","\u1F05\u0399","\u1F05\u03B9","\u1F05\u1FBE","\u1F0D\u0345","\u1F0D\u0399","\u1F0D\u03B9","\u1F0D\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F06\u03B9","\u1F06\u0345","\u1F06\u0399","\u1F06\u03B9","\u1F06\u1FBE","\u1F0E\u0345","\u1F0E\u0399","\u1F0E\u03B9","\u1F0E\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F07\u03B9","\u1F07\u0345","\u1F07\u0399","\u1F07\u03B9","\u1F07\u1FBE","\u1F0F\u0345","\u1F0F\u0399","\u1F0F\u03B9","\u1F0F\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F20\u03B9","\u1F20\u0345","\u1F20\u0399","\u1F20\u03B9","\u1F20\u1FBE","\u1F28\u0345","\u1F28\u0399","\u1F28\u03B9","\u1F28\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F21\u03B9","\u1F21\u0345","\u1F21\u0399","\u1F21\u03B9","\u1F21\u1FBE","\u1F29\u0345","\u1F29\u0399","\u1F29\u03B9","\u1F29\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F22\u03B9","\u1F22\u0345","\u1F22\u0399","\u1F22\u03B9","\u1F22\u1FBE","\u1F2A\u0345","\u1F2A\u0399","\u1F2A\u03B9","\u1F2A\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F23\u03B9","\u1F23\u0345","\u1F23\u0399","\u1F23\u03B9","\u1F23\u1FBE","\u1F2B\u0345","\u1F2B\u0399","\u1F2B\u03B9","\u1F2B\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F24\u03B9","\u1F24\u0345","\u1F24\u0399","\u1F24\u03B9","\u1F24\u1FBE","\u1F2C\u0345","\u1F2C\u0399","\u1F2C\u03B9","\u1F2C\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F25\u03B9","\u1F25\u0345","\u1F25\u0399","\u1F25\u03B9","\u1F25\u1FBE","\u1F2D\u0345","\u1F2D\u0399","\u1F2D\u03B9","\u1F2D\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F26\u03B9","\u1F26\u0345","\u1F26\u0399","\u1F26\u03B9","\u1F26\u1FBE","\u1F2E\u0345","\u1F2E\u0399","\u1F2E\u03B9","\u1F2E\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F27\u03B9","\u1F27\u0345","\u1F27\u0399","\u1F27\u03B9","\u1F27\u1FBE","\u1F2F\u0345","\u1F2F\u0399","\u1F2F\u03B9","\u1F2F\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F60\u03B9","\u1F60\u0345","\u1F60\u0399","\u1F60\u03B9","\u1F60\u1FBE","\u1F68\u0345","\u1F68\u0399","\u1F68\u03B9","\u1F68\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F61\u03B9","\u1F61\u0345","\u1F61\u0399","\u1F61\u03B9","\u1F61\u1FBE","\u1F69\u0345","\u1F69\u0399","\u1F69\u03B9","\u1F69\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F62\u03B9","\u1F62\u0345","\u1F62\u0399","\u1F62\u03B9","\u1F62\u1FBE","\u1F6A\u0345","\u1F6A\u0399","\u1F6A\u03B9","\u1F6A\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F63\u03B9","\u1F63\u0345","\u1F63\u0399","\u1F63\u03B9","\u1F63\u1FBE","\u1F6B\u0345","\u1F6B\u0399","\u1F6B\u03B9","\u1F6B\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F64\u03B9","\u1F64\u0345","\u1F64\u0399","\u1F64\u03B9","\u1F64\u1FBE","\u1F6C\u0345","\u1F6C\u0399","\u1F6C\u03B9","\u1F6C\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F65\u03B9","\u1F65\u0345","\u1F65\u0399","\u1F65\u03B9","\u1F65\u1FBE","\u1F6D\u0345","\u1F6D\u0399","\u1F6D\u03B9","\u1F6D\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F66\u03B9","\u1F66\u0345","\u1F66\u0399","\u1F66\u03B9","\u1F66\u1FBE","\u1F6E\u0345","\u1F6E\u0399","\u1F6E\u03B9","\u1F6E\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F67\u03B9","\u1F67\u0345","\u1F67\u0399","\u1F67\u03B9","\u1F67\u1FBE","\u1F6F\u0345","\u1F6F\u0399","\u1F6F\u03B9","\u1F6F\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F70\u03B9","\u1F70\u0345","\u1F70\u0399","\u1F70\u03B9","\u1F70\u1FBE","\u1FBA\u0345","\u1FBA\u0399","\u1FBA\u03B9","\u1FBA\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F74\u03B9","\u1F74\u0345","\u1F74\u0399","\u1F74\u03B9","\u1F74\u1FBE","\u1FCA\u0345","\u1FCA\u0399","\u1FCA\u03B9","\u1FCA\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F7C\u03B9","\u1F7C\u0345","\u1F7C\u0399","\u1F7C\u03B9","\u1F7C\u1FBE","\u1FFA\u0345","\u1FFA\u0399","\u1FFA\u03B9","\u1FFA\u1FBE",},
+    };
+    
+    // this initializes the data used to generated the case-equivalents
+
+    static {
+        
+        // Gather up the exceptions in a form we can use
+        
+        if (!GENERATE) {
+            for (int i = 0; i < exceptionList.length; ++i) {
+                String[] exception = exceptionList[i];
+                Set s = new HashSet();
+                // there has to be some method to do the following, but I can't find it in the collections
+                for (int j = 0; j < exception.length; ++j) {
+                    s.add(exception[j]);
+                }
+                fromCaseFold.put(exception[0], s);
+            }
+        }
+        
+        // walk through all the characters, and at every case fold result,
+        // put a set of all the characters that map to that result
+
+        boolean defaultmapping = true; // false for turkish
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE) continue;
+            
+            String cp = UTF16.valueOf(i);
+            String mapped = UCharacter.foldCase(cp, defaultmapping);
+            if (mapped.equals(cp)) continue;
+            
+            if (maxLength < mapped.length()) maxLength = mapped.length();
+            
+            // at this point, have different case folding
+            
+            Set s = (Set) fromCaseFold.get(mapped);
+            if (s == null) {
+                s = new HashSet();
+                s.add(mapped); // add the case fold result itself
+                fromCaseFold.put(mapped, s);
+            }
+            s.add(cp);
+            toCaseFold.put(cp, mapped);
+            toCaseFold.put(mapped, mapped); // add mapping to self
+        }
+        
+        // Emit the final data
+
+        if (DUMP) {
+            System.out.println("maxLength = " + maxLength);
+
+            System.out.println("\nfromCaseFold:");
+            Iterator it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                Object key = it.next();
+                System.out.print(" " + toHex2.transliterate((String)key) + ": ");
+                Set s = (Set) fromCaseFold.get(key);
+                Iterator it2 = s.iterator();
+                boolean first = true;
+                while (it2.hasNext()) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        System.out.print(", ");
+                    }
+                    System.out.print(toHex2.transliterate((String)it2.next()));
+                }
+                System.out.println("");
+            }
+
+            System.out.println("\ntoCaseFold:");
+            it = toCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                String value = (String) toCaseFold.get(key);
+                System.out.println(" " + toHex2.transliterate(key) + ": " + toHex2.transliterate(value));
+            }            
+        }
+        
+        // Now convert all those sets into linear arrays
+        // We can't do this in place in Java, so make a temporary target array
+        
+        // Note: This could be transformed into a single array, with offsets into it.
+        // Might be best choice in C.
+        
+        
+        Map fromCaseFold2 = new HashMap();
+        Iterator it = fromCaseFold.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+            Set s = (Set) fromCaseFold.get(key);
+            String[] temp = new String[s.size()];
+            s.toArray(temp);
+            fromCaseFold2.put(key, temp);
+        }
+        fromCaseFold = fromCaseFold2;
+
+        // We have processed everything, so the iterator will now work
+        // The following is normally OFF. 
+        // It is here to generate (under the GENERATE flag) the static exception list.
+        // It must be at the very end of initialization, so that the iterator is functional.
+        // (easiest to do it that way)
+            
+        if (GENERATE) {
+
+            // first get small set of items that have multiple characters
+            
+            Set multichars = new TreeSet();
+            it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                if (UTF16.countCodePoint(key) < 2) continue;
+                multichars.add(key);
+            }            
+            
+            // now we will go through each of them.
+            
+            CaseIterator ci = new CaseIterator();
+            it = multichars.iterator();
+            
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                
+                // here is a nasty complication. Take 'ffi' ligature. We
+                // can't just close it, since we would miss the combination
+                // that includes the 'fi' => "fi" ligature
+                // so first do a pass through, and add substring combinations
+                // we call this a 'partial closure'
+                
+                Set partialClosure = new TreeSet();
+                partialClosure.add(key);
+                
+                if (UTF16.countCodePoint(key) > 2) {
+                    Iterator multiIt2 = multichars.iterator();
+                    while (multiIt2.hasNext()) {
+                        String otherKey = (String) multiIt2.next();
+                        if (otherKey.length() >= key.length()) continue;
+                        int pos = -1;
+                        while (true) {
+                            // The following is not completely general
+                            // but works for the actual cased stuff,
+                            // and should work for future characters, since we won't have
+                            // more ligatures & other oddities.
+                            pos = key.indexOf(otherKey, pos+1);
+                            if (pos < 0) break;
+                            int endPos = pos + otherKey.length();
+                            // we know we have a proper substring,
+                            // so get the combinations
+                            String[] choices = (String[]) fromCaseFold.get(otherKey);
+                            for (int ii = 0; ii < choices.length; ++ii) {
+                                String patchwork = key.substring(0, pos)
+                                    + choices[ii]
+                                    + key.substring(endPos);
+                                partialClosure.add(patchwork);
+                            }
+                        }
+                    }
+                }
+                
+                // now, for each thing in the partial closure, get its
+                // case closure and add it to the final result.
+                
+                Set closure = new TreeSet(); // this will be the real closure
+                Iterator partialIt = partialClosure.iterator();
+                while (partialIt.hasNext()) {
+                    String key2 = (String) partialIt.next();
+                    ci.reset(key2);
+                    for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                        closure.add(temp);
+                    }
+                    // form closure
+                    /*String[] choices = (String[]) fromCaseFold.get(key2);
+                    for (int i = 0; i < choices.length; ++i) {
+                        ci.reset(choices[i]);
+                        String temp;
+                        while (null != (temp = ci.next())) {
+                            closure.add(temp);
+                        }
+                    }
+                    */
+                }
+                
+                // print it out, so that it can be cut and pasted back into this document.
+                
+                Iterator it2 = closure.iterator();
+                System.out.println("\t// " + toName.transliterate(key));
+                System.out.print("\t{\"" + toHex.transliterate(key) + "\",");
+                while (it2.hasNext()) {
+                    String item = (String)it2.next();
+                    System.out.print("\"" + toHex.transliterate(item) + "\",");
+                }
+                System.out.println("},");
+            }
+        }
+    }
+    
+    // ============ PRIVATE CLASS DATA ============ 
+    
+    // pieces that we will put together
+    // is not changed during iteration
+    private int count = 0;
+    private String[][] variants;
+    
+    // state information, changes during iteration
+    private boolean done = false;
+    private int[] counts;
+    
+    // internal buffer for efficiency
+    private StringBuffer nextBuffer = new StringBuffer();
+    
+    // ========================  
+
+    /**
+     * Reset to different source. Once reset, the iteration starts from the beginning.
+     * @param source The string to get case variants for
+     */
+    public void reset(String source) {
+        
+        // allocate arrays to store pieces
+        // using length might be slightly too long, but we don't care much
+        
+        counts = new int[source.length()];
+        variants = new String[source.length()][];
+        
+        // walk through the source, and break up into pieces
+        // each piece becomes an array of equivalent values
+        // TODO: could optimized this later to coalesce all single string pieces
+        
+        String piece = null;
+        count = 0;
+        for (int i = 0; i < source.length(); i += piece.length()) {
+            
+            // find *longest* matching piece
+            String caseFold = null;
+            
+            if (GENERATE) {
+                // do exactly one CP
+                piece = UTF16.valueOf(source, i);
+                caseFold = (String) toCaseFold.get(piece);
+            } else {               
+                int max = i + maxLength;
+                if (max > source.length()) max = source.length();
+                for (int j = max; j > i; --j) {
+                    piece = source.substring(i, j);
+                    caseFold = (String) toCaseFold.get(piece);
+                    if (caseFold != null) break;
+                }
+            }
+            
+            // if we fail, pick one code point
+            if (caseFold == null) {
+                piece = UTF16.valueOf(source, i);
+                variants[count++] = new String[] {piece}; // single item string
+            } else {
+                variants[count++] = (String[])fromCaseFold.get(caseFold);
+            }
+        }
+        reset();
+    }
+    
+    /**
+     * Restart the iteration from the beginning, but with same source
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < count; ++i) {
+            counts[i] = 0;
+        }
+    }
+    
+    /**
+     * Iterates through the case variants.
+     * @return next case variant. Each variant will case-fold to the same value as the source will.
+     * When the iteration is done, null is returned.
+     */
+    public String next() {
+        
+        if (done) return null;
+        int i;
+        
+        // TODO Optimize so we keep the piece before and after the current position
+        // so we don't have so much concatenation
+        
+        // get the result, a concatenation
+        
+        nextBuffer.setLength(0);
+        for (i = 0; i < count; ++i) {
+            nextBuffer.append(variants[i][counts[i]]);
+        }
+        
+        // find the next right set of pieces to concatenate
+        
+        for (i = count-1; i >= 0; --i) {
+            counts[i]++;
+            if (counts[i] < variants[i].length) break;
+            counts[i] = 0;
+        }
+        
+        // if we go too far, bail
+        
+        if (i < 0) {
+            done = true;
+        }
+        
+        return nextBuffer.toString();            
+    }
+        
+        
+    /**
+     * Temporary test, just to see how the stuff works.
+     */
+    static public void main(String[] args) {
+        String[] testCases = {"fiss", "h\u03a3"};
+        CaseIterator ci = new CaseIterator();
+        
+        for (int i = 0; i < testCases.length; ++i) {
+            String item = testCases[i];
+            System.out.println();
+            System.out.println("Testing: " + toName.transliterate(item));
+            System.out.println();
+            ci.reset(item);
+            int count = 0;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                System.out.println(toName.transliterate(temp));
+                count++;
+            }
+            System.out.println("Total: " + count);
+        }
+
+        // generate a list of all caseless characters -- characters whose
+        // case closure is themselves.
+
+        UnicodeSet caseless = new UnicodeSet();
+
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            String cp = UTF16.valueOf(i);
+            ci.reset(cp);
+            int count = 0;
+            String fold = null;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                fold = temp;
+                if (++count > 1) break;
+            }
+            if (count==1 && fold.equals(cp)) {
+                caseless.add(i);
+            }
+        }
+
+        System.out.println("caseless = " + caseless.toPattern(true));
+
+        UnicodeSet not_lc = new UnicodeSet("[:^lc:]");
+        
+        UnicodeSet a = new UnicodeSet();
+        a.set(not_lc);
+        a.removeAll(caseless);
+        System.out.println("[:^lc:] - caseless = " + a.toPattern(true));
+
+        a.set(caseless);
+        a.removeAll(not_lc);
+        System.out.println("caseless - [:^lc:] = " + a.toPattern(true));
+    }
+}
diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Demo.java b/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
new file mode 100644
index 00000000000..87882f9027b
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -0,0 +1,1417 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2010, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.Button;
+import java.awt.CheckboxMenuItem;
+import java.awt.FileDialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.GraphicsEnvironment;
+import java.awt.Label;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+import java.awt.TextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.text.CharacterIterator;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.impl.Differ;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.CanonicalIterator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * A frame that allows the user to experiment with keyboard
+ * transliteration.  This class has a main() method so it can be run
+ * as an application.  The frame contains an editable text component
+ * and uses keyboard transliteration to process keyboard events.
+ *
+ * 

Copyright (c) IBM Corporation 1999. All rights reserved. + * + * @author Alan Liu + */ +public class Demo extends Frame { + + /** + * For serialization + */ + private static final long serialVersionUID = 1L; + static final boolean DEBUG = false; + static final String START_TEXT = "(cut,\u03BA\u03C5\u03C4,\u05D0,\u30AF\u30C8,\u4E80,\u091A\u0941\u0924\u094D)"; + + Transliterator translit = null; + String fontName = "Arial Unicode MS"; + int fontSize = 18; + + + + /* + boolean compound = false; + Transliterator[] compoundTranslit = new Transliterator[MAX_COMPOUND]; + static final int MAX_COMPOUND = 128; + int compoundCount = 0; + */ + + TransliteratingTextComponent text = null; + + Menu translitMenu; + CheckboxMenuItem translitItem; + CheckboxMenuItem noTranslitItem; + + static final String NO_TRANSLITERATOR = "None"; + + //private static final String COPYRIGHT = + // "\u00A9 IBM Corporation 1999. All rights reserved."; + + public static void main(String[] args) { + Frame f = new Demo(600, 200); + f.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameClosed(); +// System.exit(0); + } + }); + f.setVisible(true); + com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameOpened(); + } + + public Demo(int width, int height) { + super("Transliteration Demo"); + + initMenus(); + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + handleClose(); + } + }); + + text = new TransliteratingTextComponent(); + Font font = new Font(fontName, Font.PLAIN, fontSize); + text.setFont(font); + text.setSize(width, height); + text.setVisible(true); + text.setText(START_TEXT); + add(text); + + setSize(width, height); + setTransliterator("Latin-Greek", null); + } + + private void initMenus() { + MenuBar mbar; + Menu menu; + MenuItem mitem; + //CheckboxMenuItem citem; + + setMenuBar(mbar = new MenuBar()); + mbar.add(menu = new Menu("File")); + menu.add(mitem = new MenuItem("Quit")); + mitem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + handleClose(); + } + }); +/* + final ItemListener setTransliteratorListener = new ItemListener() { + public void itemStateChanged(ItemEvent e) { + CheckboxMenuItem item = (CheckboxMenuItem) e.getSource(); + if (e.getStateChange() == ItemEvent.DESELECTED) { + // Don't let the current transliterator be deselected. + // Just reselect it. + item.setState(true); + } else if (compound) { + // Adding an item to a compound transliterator + handleAddToCompound(item.getLabel()); + } else if (item != translitItem) { + // Deselect previous choice. Don't need to call + // setState(true) on new choice. + translitItem.setState(false); + translitItem = item; + handleSetTransliterator(item.getLabel()); + } + } + }; +*/ + /* + translitMenu.add(translitItem = noTranslitItem = + new CheckboxMenuItem(NO_TRANSLITERATOR, true)); + noTranslitItem.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + // Can't uncheck None -- any action here sets None to true + setNoTransliterator(); + } + }); + + translitMenu.addSeparator(); + */ + +/* + translitMenu.add(citem = new CheckboxMenuItem("Compound")); + citem.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + CheckboxMenuItem item = (CheckboxMenuItem) e.getSource(); + if (e.getStateChange() == ItemEvent.DESELECTED) { + // If compound gets deselected, then select NONE + setNoTransliterator(); + } else if (!compound) { + // Switching from non-compound to compound + translitItem.setState(false); + translitItem = item; + translit = null; + compound = true; + compoundCount = 0; + for (int i=0; i &Hex($1) &Name($1);\r\n" + + "&Hex-Any($1) < ('\\' [uU] [a-fA-F0-9]*);\r\n" + + "&Name-Any($1) < ('{' [^\\}]* '}');" + ); + button = new Button("Set"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String compound = ""; + try { + compound = rulesDialog.getArea().getText(); + String id = ruleId.getText(); + setTransliterator(compound, id); + } catch (RuntimeException ex) { + rulesDialog.getArea().setText(compound + "\n#" + ex.getMessage()); + } + } + }); + rulesDialog.getBottom().add(button); + ruleId = new TextField("test1", 20); + Label temp = new Label(" Name:"); + rulesDialog.getBottom().add(temp); + rulesDialog.getBottom().add(ruleId); + + + translitMenu.add(mitem = new MenuItem("From Rules...", + new MenuShortcut(KeyEvent.VK_R))); + mitem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + rulesDialog.show(); + } + }); + + + translitMenu.add(mitem = new MenuItem("From File...", + new MenuShortcut(KeyEvent.VK_F))); + mitem.addActionListener(new FileListener(this, RULE_FILE)); + + translitMenu.add(mitem = new MenuItem("Test File...")); + mitem.addActionListener(new FileListener(this, TEST_FILE)); + + // Flesh out the menu with the installed transliterators + + translitMenu.addSeparator(); + + Iterator sources = add(new TreeSet(), Transliterator.getAvailableSources()).iterator(); + while(sources.hasNext()) { + String source = (String) sources.next(); + Iterator targets = add(new TreeSet(), Transliterator.getAvailableTargets(source)).iterator(); + Menu targetMenu = new Menu(source); + while(targets.hasNext()) { + String target = (String) targets.next(); + Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target)); + if (variantSet.size() < 2) { + mitem = new MenuItem(target); + mitem.addActionListener(new TransliterationListener(source + "-" + target)); + targetMenu.add(mitem); + } else { + Iterator variants = variantSet.iterator(); + Menu variantMenu = new Menu(target); + while(variants.hasNext()) { + String variant = (String) variants.next(); + String menuName = variant.length() == 0 ? "" : variant; + //System.out.println("<" + source + "-" + target + "/" + variant + ">, <" + menuName + ">"); + mitem = new MenuItem(menuName); + mitem.addActionListener(new TransliterationListener(source + "-" + target + "/" + variant)); + variantMenu.add(mitem); + } + targetMenu.add(variantMenu); + } + } + translitMenu.add(targetMenu); + } + + + } + + static final int RULE_FILE = 0, TEST_FILE = 1; + // + static class FileListener implements ActionListener { + Demo frame; + int choice; + + FileListener(Demo frame, int choice) { + this.frame = frame; + this.choice = choice; + } + + public void actionPerformed(ActionEvent e) { + String id = frame.translit.getID(); + int slashPos = id.indexOf('/'); + String variant = ""; + if (slashPos >= 0) { + variant = "_" + id.substring(slashPos+1); + id = id.substring(0, slashPos); + } + + FileDialog fileDialog = new FileDialog(frame, "Input File"); + fileDialog.setFile("Test_" + id + ".txt"); + fileDialog.show(); + String fileName = fileDialog.getFile(); + String fileDirectory = fileDialog.getDirectory(); + if (fileName != null) { + try { + File f = new File(fileDirectory, fileName); + if (choice == RULE_FILE) { + + // read stuff into buffer + + StringBuffer buffer = new StringBuffer(); + FileInputStream fis = new FileInputStream(f); + InputStreamReader isr = new InputStreamReader(fis, "UTF8"); + BufferedReader br = new BufferedReader(isr, 32*1024); + while (true) { + String line = br.readLine(); + if (line == null) break; + if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1); // strip BOM + buffer.append('\n'); + buffer.append(line); + } + br.close(); + + // Transform file name into id + if (fileName.startsWith("Transliterator_")) { + fileName = fileName.substring("Transliterator_".length()); + } + int pos = fileName.indexOf('_'); + if (pos < 0) { + id = fileName; + } else { + id = fileName.substring(0, pos) + "-"; + int pos2 = fileName.indexOf('_', pos+1); + if (pos2 < 0) { + id += fileName.substring(pos+1); + } else { + id += fileName.substring(pos+1, pos2) + "/" + fileName.substring(pos2 + 1); + } + } + pos = id.lastIndexOf('.'); + if (pos >= 0) id = id.substring(0, pos); + + // Now set + + frame.setTransliterator(buffer.toString(), id); + } else if (choice == TEST_FILE) { + genTestFile(f, frame.translit, variant); + } + } catch (Exception e2) { + e2.printStackTrace(); + System.out.println("Problem opening/reading: " + fileDirectory + ", " + fileName); + } + } + fileDialog.dispose(); + } + } + + + boolean transliterateTyping = true; + Transliterator fromHex = Transliterator.getInstance("Hex-Any"); + InfoDialog helpDialog; + InfoDialog hexDialog; + InfoDialog compoundDialog; + InfoDialog rulesDialog; + TextField ruleId; + MenuItem convertSelectionItem = null; + MenuItem swapSelectionItem = null; + MenuItem convertTypingItem = null; + Menu historyMenu; + Map historyMap = new HashMap(); + Set historySet = new TreeSet(new Comparator() { + public int compare(Object a, Object b) { + MenuItem aa = (MenuItem)a; + MenuItem bb = (MenuItem)b; + return aa.getLabel().compareTo(bb.getLabel()); + } + }); + + // ADD Factory since otherwise getInverse blows out + static class DummyFactory implements Transliterator.Factory { + static DummyFactory singleton = new DummyFactory(); + static HashMap m = new HashMap(); + + // Since Transliterators are immutable, we don't have to clone on set & get + static void add(String ID, Transliterator t) { + m.put(ID, t); + System.out.println("Registering: " + ID + ", " + t.toRules(true)); + Transliterator.registerFactory(ID, singleton); + } + public Transliterator getInstance(String ID) { + return (Transliterator) m.get(ID); + } + } + + static void printBreaks(int num, String testSource, BreakIterator brkItr) { + String result = ""; + int lastPos = 0; + while (true) { + int pos = brkItr.next(); + if (pos == BreakIterator.DONE) break; + result += testSource.substring(lastPos, pos) + "&"; + lastPos = pos; + System.out.println(pos); + } + System.out.println("Test" + num + ": " + result); + } + + static void printIteration(int num, String testSource, CharacterIterator ci) { + String result = ""; + while (true) { + char ch = ci.next(); + if (ch == CharacterIterator.DONE) break; + result += ch + "(" + ci.getIndex() + ")"; + } + System.out.println("Test" + num + ": " + result); + } + + static void printSources() { + String[] list = {"Latin-ThaiLogical", "ThaiLogical-Latin", "Thai-ThaiLogical", "ThaiLogical-Thai"}; + UnicodeSet all = new UnicodeSet(); + for (int i = 0; i < list.length; ++i) { + Transliterator tr = Transliterator.getInstance(list[i]); + UnicodeSet src = tr.getSourceSet(); + System.out.println(list[i] + ": " + src.toPattern(true)); + all.addAll(src); + } + System.out.println("All: " + all.toPattern(true)); + UnicodeSet rem = new UnicodeSet("[[:latin:][:thai:]]"); + System.out.println("missing from [:latin:][:thai:]: " + all.removeAll(rem).toPattern(true)); + } + + // 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; + + static Transliterator title = Transliterator.getInstance("title"); + static String hexAndNameRules = " ([:c:]) > \\u200E &hex/unicode($1) ' ( ) ' &name($1) \\u200E ' ';" + + "([:mark:]) > \\u200E &hex/unicode($1) ' ( ' \\u200E \u25CC $1 \\u200E ' ) ' &name($1) \\u200E ' ';" + + "(.) > \\u200E &hex/unicode($1) ' ( ' \\u200E $1 \\u200E ' ) ' &name($1) ' ' \\u200E;"; + + static Transliterator hexAndName = Transliterator.createFromRules("any-hexAndName", + hexAndNameRules, Transliterator.FORWARD); + + + + //static Transliterator upper = Transliterator.getInstance("upper"); + + static final byte NONE = 0, TITLEWORD = 1, TITLELINE = 2; + + static void genTestFile(File sourceFile, Transliterator translit, String variant) { + try { + + System.out.println("Reading: " + sourceFile.getCanonicalPath()); + BufferedReader in = new BufferedReader( + new InputStreamReader( + new FileInputStream(sourceFile), "UTF-8")); + String targetFile = sourceFile.getCanonicalPath(); + int dotPos = targetFile.lastIndexOf('.'); + if (dotPos >= 0) targetFile = targetFile.substring(0,dotPos); + targetFile += variant; + + File outFile = new File(targetFile + ".html"); + System.out.println("Writing: " + outFile.getCanonicalPath()); + + PrintWriter out = new PrintWriter( + new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(outFile), "UTF-8"))); + + String direction = ""; + String id = translit.getID(); + if (id.indexOf("Arabic") >= 0 || id.indexOf("Hebrew") >= 0) { + direction = " direction: rtl;"; + } + boolean testRoundTrip = true; + boolean generateSets = true; + if (id.startsWith("Han-") || id.startsWith("ja-")) { + testRoundTrip = false; + generateSets = false; + } + out.println(""); + out.println(""); + out.println("" + id + " Transliteration Check"); + out.println("

See Test_Instructions.html for details.

"); + out.println(""); + + //out.println(""); + + Transliterator tl = translit; + Transliterator lt = tl.getInverse(); + + Transliterator ltFilter = tl.getInverse(); + ltFilter.setFilter(new UnicodeSet("[:^Lu:]")); + Transliterator tlFilter = lt.getInverse(); + tlFilter.setFilter(new UnicodeSet("[:^Lu:]")); + + //Transliterator.getInstance("[:^Lu:]" + lt.getID()); + + BreakIterator sentenceBreak = BreakIterator.getSentenceInstance(); + + byte titleSetting = TITLELINE; + //boolean upperfilter = false; + boolean first = true; + while (true) { + String line = in.readLine(); + if (line == null) break; + line = line.trim(); + if (line.length() == 0) continue; + if (line.charAt(0) == '\uFEFF') line = line.substring(1); // remove BOM + + if (line.charAt(0) == '#') continue; // comments + + if (line.equals("@TITLECASE@")) { + titleSetting = TITLEWORD; + out.println(""); + continue; + } else if (line.equals("@UPPERFILTER@")) { + //upperfilter = true; + continue; + } else if (line.startsWith("@SET")) { + UnicodeSet s = new UnicodeSet(line.substring(4).trim()); + out.println(""); + UnicodeSetIterator it = new UnicodeSetIterator(s); + while (it.next()) { + addSentenceToTable(out, it.codepoint != UnicodeSetIterator.IS_STRING + ? UTF16.valueOf(it.codepoint) + : it.string, + NONE, true, testRoundTrip, first, tl, lt); + } + continue; + } + + sentenceBreak.setText(line); + int start = 0; + while (true) { + int end = sentenceBreak.next(); + if (end == BreakIterator.DONE) break; + String coreSentence = line.substring(start, end); + //System.out.println("Core: " + hex.transliterate(coreSentence)); + end = start; + + int oldPos = 0; + while (oldPos < coreSentence.length()) { + // hack, because sentence doesn't seem to be working right + int pos = coreSentence.indexOf(". ", oldPos); + if (pos < 0) pos = coreSentence.length(); else pos = pos+2; + int pos2 = coreSentence.indexOf('\u3002', oldPos); + if (pos2 < 0) pos2 = coreSentence.length(); else pos2 = pos2 + 1; + if (pos > pos2) pos = pos2; + String sentence = coreSentence.substring(oldPos, pos).trim(); + //System.out.println("Sentence: " + hex.transliterate(coreSentence)); + oldPos = pos; + + addSentenceToTable(out, sentence, + titleSetting, false, testRoundTrip, first, tl, lt); + + first = false; + } + } + } + out.println("
ThaiLatinThai
Names
Characters
"); + out.close(); + + // Now write the source/target sets + if (generateSets) { + outFile = new File(targetFile + "_Sets.html"); + System.out.println("Writing: " + outFile.getCanonicalPath()); + + out = new PrintWriter( + new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(outFile), "UTF-8"))); + out.println(""); + out.println(""); + out.println("" + id + " Transliteration Sets"); + out.println(""); + + int dashPos = id.indexOf('-'); + int slashPos = id.indexOf('/'); + if (slashPos < 0) slashPos = id.length(); + UnicodeSet sourceSuper = null; + try { + String temp = id.substring(0,dashPos); + if (temp.equals("ja")) sourceSuper = new UnicodeSet("[[:Han:][:hiragana:][:katakana:]]"); + else sourceSuper = new UnicodeSet("[[:" + temp + ":][:Mn:][:Me:]]"); + } catch (Exception e) {} + + UnicodeSet targetSuper = null; + try { + targetSuper = new UnicodeSet("[[:" + id.substring(dashPos+1, slashPos) + ":][:Mn:][:Me:]]"); + } catch (Exception e) {} + + int nfdStyle = CLOSE_CASE | CLOSE_FLATTEN | CLOSE_CANONICAL; + int nfkdStyle = nfdStyle | CLOSE_COMPATIBILITY; + out.println("
    "); + out.println("

    None

    "); + showSets(out, translit, lt, null, null, 0); + out.println("

    NFD

    "); + showSets(out, translit, lt, sourceSuper, targetSuper, nfdStyle); + out.println("

    NFKD

    "); + showSets(out, translit, lt, sourceSuper, targetSuper, nfkdStyle); + out.println("
"); + out.close(); + } + System.out.println("Done Writing"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + static void addSentenceToTable(PrintWriter out, String sentence, + byte titleSetting, boolean addName, boolean testRoundTrip, boolean first, + Transliterator tl, Transliterator lt) { + if (sentence.length() == 0) return; // skip empty lines + + String originalShow = sentence; + String latin; + latin = tl.transliterate(saveAscii.transliterate(sentence)); + + String latinShow = latin; + if (titleSetting == TITLEWORD) { + latinShow = title.transliterate(latin); + } else if (titleSetting == TITLELINE) { + latinShow = titlecaseFirstWord(latinShow); + } + latinShow = restoreAscii.transliterate(latinShow); + + String reverse; + reverse = restoreAscii.transliterate(lt.transliterate(latin)); + + String NFKDSentence = Normalizer.normalize(sentence, Normalizer.NFKD); + String NFKDLatin = Normalizer.normalize(latin, Normalizer.NFKD); + String NFKDReverse = Normalizer.normalize(reverse, Normalizer.NFKD); + + if (latinShow.length() == 0) { + latinShow = "empty"; + } else if (NFKDSentence.equals(NFKDLatin)) { + latinShow = "" + latinShow + ""; + } + String reverseShow = reverse; + + if (testRoundTrip && !NFKDReverse.equals(NFKDSentence)) { + int minLen = reverse.length(); + if (minLen > sentence.length()) minLen = sentence.length(); + int i; + for (i = 0; i < minLen; ++i) { + if (reverse.charAt(i) != sentence.charAt(i)) break; + } + //originalShow = sentence.substring(0,i) + "" + sentence.substring(i) + ""; + reverseShow = reverseShow.length() == 0 + ? "empty" + //: reverse.substring(0,i) + "" + reverse.substring(i) + ""; + : showDifference(sentence, reverse); + out.println("" : ">") + originalShow + + "" + latinShow + + "" + reverseShow + + ""); + } else { + out.println("" : ">") + originalShow + + "" + latinShow + + ""); + } + if (addName) { + latinShow = hexAndName.transliterate(latin); + if (latinShow.length() == 0) latinShow = "empty"; + originalShow = hexAndName.transliterate(sentence); + if (originalShow.length() == 0) originalShow = "empty"; + + out.println("" + originalShow + + "" + latinShow + + ""); + } + out.println(""); + + } + + static String showDifference(String as, String bs) { + Differ differ = new Differ(300, 3); + StringBuffer out = new StringBuffer(); + int max = as.length(); + if (max < bs.length()) max = bs.length(); + for (int j = 0; j <= max; ++j) { + if (j < as.length()) differ.addA(as.substring(j, j+1)); + if (j < bs.length()) differ.addB(bs.substring(j, j+1)); + differ.checkMatch(j == max); + + if (differ.getACount() != 0 || differ.getBCount() != 0) { + out.append("..."); + if (differ.getACount() != 0) { + out.append(""); + for (int i = 0; i < differ.getACount(); ++i) { + out.append(differ.getA(i)); + } + out.append(""); + } + if (differ.getBCount() != 0) { + out.append(""); + for (int i = 0; i < differ.getBCount(); ++i) { + out.append(differ.getB(i)); + } + out.append(""); + } + out.append("..."); + } + } + return out.toString(); + } + + static void showSets(PrintWriter out, Transliterator translit, Transliterator inverse, + UnicodeSet sourceSuper, UnicodeSet targetSuper, int options) { + out.println("
  • Source Set:
    • " + toPattern(closeUnicodeSet(translit.getSourceSet(), options), sourceSuper) + "
  • "); + out.println("
  • Reverse Target Set:
    • " + toPattern(closeUnicodeSet(inverse.getTargetSet(), options), sourceSuper) + "
  • "); + out.println("
  • Target Set:
    • " + toPattern(closeUnicodeSet(translit.getTargetSet(), options), targetSuper) + "
  • "); + out.println("
  • Reverse Source Set:
    • " + toPattern(closeUnicodeSet(inverse.getSourceSet(), options), targetSuper) + "
  • "); + } + + static final int CLOSE_CASE = 1, CLOSE_FLATTEN = 2, CLOSE_CANONICAL = 4, CLOSE_COMPATIBILITY = 8; + + static UnicodeSet closeUnicodeSet(UnicodeSet source, int options) { + if (options == 0) return source; + + UnicodeSetIterator it = new UnicodeSetIterator(source); + UnicodeSet additions = new UnicodeSet(); // to avoid messing up iterator + UnicodeSet removals = new UnicodeSet(); // to avoid messing up iterator + String base; + int cp; + + // Add all case equivalents + if ((options & CLOSE_CASE) != 0) { + while (it.next()) { + cp = it.codepoint; + if (cp == UnicodeSetIterator.IS_STRING) continue; + int type = UCharacter.getType(cp); + if (type == Character.UPPERCASE_LETTER || type == Character.LOWERCASE_LETTER || type == Character.TITLECASE_LETTER) { + additions.add(UCharacter.toLowerCase(UTF16.valueOf(cp))); + additions.add(UCharacter.toUpperCase(UTF16.valueOf(cp))); + } + } + source.addAll(additions); + } + + // Add the canonical closure of all strings and characters in source + if ((options & CLOSE_CANONICAL) != 0) { + it.reset(); + additions.clear(); + CanonicalIterator ci = new CanonicalIterator("."); + while (it.next()) { + if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string; + else base = UTF16.valueOf(it.codepoint); + ci.setSource(base); + while (true) { + String trial = ci.next(); + if (trial == null) break; + if (trial.equals(base)) continue; + additions.add(trial); + } + } + source.addAll(additions); + } + + // flatten strings + if ((options & CLOSE_FLATTEN) != 0) { + it.reset(); + additions.clear(); + while (it.next()) { + if (it.codepoint != UnicodeSetIterator.IS_STRING) continue; + additions.addAll(it.string); + removals.add(it.string); + //System.out.println("flattening '" + hex.transliterate(it.string) + "'"); + } + source.addAll(additions); + source.removeAll(removals); + } + + // Now add decompositions of characters in source + if ((options & CLOSE_COMPATIBILITY) != 0) { + it.reset(source); + additions.clear(); + while (it.next()) { + if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string; + else base = UTF16.valueOf(it.codepoint); + if (Normalizer.isNormalized(base, Normalizer.NFKD,0)) continue; + String decomp = Normalizer.normalize(base, Normalizer.NFKD); + additions.add(decomp); + } + source.addAll(additions); + + // Now add any other character that decomposes to a character in source + for (cp = 0; cp < 0x10FFFF; ++cp) { + if (!UCharacter.isDefined(cp)) continue; + if (Normalizer.isNormalized(cp, Normalizer.NFKD,0)) continue; + if (source.contains(cp)) continue; + + String decomp = Normalizer.normalize(cp, Normalizer.NFKD); + if (source.containsAll(decomp)) { + // System.out.println("Adding: " + Integer.toString(cp,16) + " " + UCharacter.getName(cp)); + source.add(cp); + } + } + } + + return source; + } + + static String toPattern(UnicodeSet source, UnicodeSet superset) { + if (superset != null) { + source.removeAll(superset); + return "[" + superset.toPattern(true) + " " + source.toPattern(true) + "]"; + } + return source.toPattern(true); + } + + static BreakIterator bi = BreakIterator.getWordInstance(); + + static String titlecaseFirstWord(String line) { + // search for first word with letters. If the first letter is lower, then titlecase it. + bi.setText(line); + int start = 0; + while (true) { + int end = bi.next(); + if (end == BreakIterator.DONE) break; + int firstLetterType = getFirstLetterType(line, start, end); + if (firstLetterType != Character.UNASSIGNED) { + if (firstLetterType != Character.LOWERCASE_LETTER) break; + line = line.substring(0, start) + + UCharacter.toTitleCase(line.substring(start, end), bi) + + line.substring(end); + break; + } + end = start; + } + return line; + } + + static final int LETTER_MASK = + (1< XXX # " + UCharacter.getName(it.codepoint)); + main.add(it.codepoint); + } + + if (others.size() != 0) { + out.println("Decomposed characters found above: "); + others.removeAll(main); + it.reset(others); + while (it.next()) { + out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint)); + } + } + + out.close(); + System.out.println("Done Writing"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + static Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex"); + static final String saveRules = + "A <> \uEA41; B <> \uEA42; C <> \uEA43; D <> \uEA44; E <> \uEA45; F <> \uEA46; G <> \uEA47; H <> \uEA48; I <> \uEA49; " + + "J <> \uEA4A; K <> \uEA4B; L <> \uEA4C; M <> \uEA4D; N <> \uEA4E; O <> \uEA4F; P <> \uEA50; Q <> \uEA51; R <> \uEA52; " + + "S <> \uEA53; T <> \uEA54; U <> \uEA55; V <> \uEA56; W <> \uEA57; X <> \uEA58; Y <> \uEA59; Z <> \uEA5A; " + + "a <> \uEA61; b <> \uEA62; c <> \uEA63; d <> \uEA64; e <> \uEA65; f <> \uEA66; g <> \uEA67; h <> \uEA68; i <> \uEA69; " + + "j <> \uEA6A; k <> \uEA6B; l <> \uEA6C; m <> \uEA6D; n <> \uEA6E; o <> \uEA6F; p <> \uEA70; q <> \uEA71; r <> \uEA72; " + + "s <> \uEA73; t <> \uEA74; u <> \uEA75; v <> \uEA76; w <> \uEA77; x <> \uEA78; y <> \uEA79; z <> \uEA7A;"; + + static Transliterator saveAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.FORWARD); + static Transliterator restoreAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.REVERSE); + + static { + + if (false) { + + for (char i = 'A'; i <= 'z'; ++i) { + System.out.print(i + " <> " + hex.transliterate(String.valueOf((char)(0xEA00 + i))) + "; "); + } + + UnicodeSet x = new UnicodeSet("[[:^ccc=0:]&[:^ccc=230:]]"); + x = x.complement(); + x = x.complement(); + System.out.println("Test: " + x.toPattern(true)); + + Transliterator y = Transliterator.createFromRules("xxx", "$notAbove = [[:^ccc=0:]&[:^ccc=230:]]; u ($notAbove*) \u0308 > XXX | $1; ", Transliterator.FORWARD); + + String[] testList = {"u\u0308", "u\u0316\u0308", "u\u0308\u0316", "u\u0301\u0308", "u\u0308\u0301"}; + for (int i = 0; i < testList.length; ++i) { + String yy = y.transliterate(testList[i]); + System.out.println(hex.transliterate(testList[i]) + " => " + hex.transliterate(yy)); + } + + //printNames(new UnicodeSet("[\u0600-\u06FF]"), "Arabic-Latin.txt"); + + + /* + BreakTransliterator.register(); + + BreakTransliterator testTrans = new BreakTransliterator("Any-XXX", null, null, "$"); + String testSource = "The Quick: Brown fox--jumped."; + BreakIterator bi = testTrans.getBreakIterator(); + bi.setText(new StringCharacterIterator(testSource)); + printBreaks(0, testSource, bi); + //bi.setText(UCharacterIterator.getInstance(testSource)); + //printBreaks(1, testSource, bi); + + printIteration(2, testSource, new StringCharacterIterator(testSource)); + //printIteration(3, testSource, UCharacterIterator.getInstance(testSource)); + + + + String test = testTrans.transliterate(testSource); + System.out.println("Test3: " + test); + DummyFactory.add(testTrans.getID(), testTrans); + */ + + // AnyTransliterator.ScriptRunIterator.registerAnyToScript(); + + AnyTransliterator at = new AnyTransliterator("Greek", null); + at.transliterate("(cat,\u03b1,\u0915)"); + DummyFactory.add(at.getID(), at); + + at = new AnyTransliterator("Devanagari", null); + at.transliterate("(cat,\u03b1,\u0915)"); + DummyFactory.add(at.getID(), at); + + at = new AnyTransliterator("Latin", null); + at.transliterate("(cat,\u03b1,\u0915)"); + DummyFactory.add(at.getID(), at); + + DummyFactory.add("Any-gif", Transliterator.createFromRules("gif", "'\\'u(..)(..) > '';", Transliterator.FORWARD)); + DummyFactory.add("gif-Any", Transliterator.getInstance("Any-Null")); + + DummyFactory.add("Any-RemoveCurly", Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ;", Transliterator.FORWARD)); + DummyFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null")); + + System.out.println("Trying &hex"); + Transliterator t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD); + System.out.println("Registering"); + DummyFactory.add("Any-hex2", t); + + System.out.println("Trying &gif"); + t = Transliterator.createFromRules("gif2", "(.) > &any-gif($1);", Transliterator.FORWARD); + System.out.println("Registering"); + DummyFactory.add("Any-gif2", t); + } + } + + + void setTransliterator(String name, String id) { + if (DEBUG) System.out.println("Got: " + name); + if (id == null) { + translit = Transliterator.getInstance(name); + } else { + String reverseId = ""; + int pos = id.indexOf('-'); + if (pos < 0) { + reverseId = id + "-Any"; + id = "Any-" + id; + } else { + int pos2 = id.indexOf("/", pos); + if (pos2 < 0) { + reverseId = id.substring(pos+1) + "-" + id.substring(0,pos); + } else { + reverseId = id.substring(pos+1, pos2) + "-" + id.substring(0,pos) + id.substring(pos2); + } + } + + + translit = Transliterator.createFromRules(id, name, Transliterator.FORWARD); + if (DEBUG) { + System.out.println("***Forward Rules"); + System.out.println(translit.toRules(true)); + System.out.println("***Source Set"); + System.out.println(translit.getSourceSet().toPattern(true)); + } + System.out.println("***Target Set"); + UnicodeSet target = translit.getTargetSet(); + System.out.println(target.toPattern(true)); + UnicodeSet rest = new UnicodeSet("[a-z]").removeAll(target); + System.out.println("***ASCII - Target Set"); + System.out.println(rest.toPattern(true)); + + DummyFactory.add(id, translit); + + Transliterator translit2 = Transliterator.createFromRules(reverseId, name, Transliterator.REVERSE); + if (DEBUG) { + System.out.println("***Backward Rules"); + System.out.println(translit2.toRules(true)); + } + DummyFactory.add(reverseId, translit2); + + Transliterator rev = translit.getInverse(); + if (DEBUG) System.out.println("***Inverse Rules"); + if (DEBUG) System.out.println(rev.toRules(true)); + + } + text.flush(); + text.setTransliterator(translit); + convertSelectionItem.setLabel(Transliterator.getDisplayName(translit.getID())); + + addHistory(translit); + + Transliterator inv; + try { + inv = translit.getInverse(); + } catch (Exception ex) { + inv = null; + } + if (inv != null) { + addHistory(inv); + swapSelectionItem.setEnabled(true); + } else { + swapSelectionItem.setEnabled(false); + } + System.out.println("Set transliterator: " + translit.getID() + + (inv != null ? " and " + inv.getID() : "")); + } + + void addHistory(Transliterator trans) { + String name = trans.getID(); + MenuItem cmi = (MenuItem) historyMap.get(name); + if (cmi == null) { + cmi = new MenuItem(Transliterator.getDisplayName(name)); + cmi.addActionListener(new TransliterationListener(name)); + historyMap.put(name, cmi); + historySet.add(cmi); + historyMenu.removeAll(); + Iterator it = historySet.iterator(); + while (it.hasNext()) { + historyMenu.add((MenuItem)it.next()); + } + } + } + + class TransliterationListener implements ActionListener, ItemListener { + String name; + public TransliterationListener(String name) { + this.name = name; + } + public void actionPerformed(ActionEvent e) { + setTransliterator(name, null); + } + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + setTransliterator(name, null); + } else { + setTransliterator("Any-Null", null); + } + } + } + + class FontActionListener implements ActionListener { + String name; + public FontActionListener(String name) { + this.name = name; + } + public void actionPerformed(ActionEvent e) { + if (DEBUG) System.out.println("Font: " + name); + fontName = name; + text.setFont(new Font(fontName, Font.PLAIN, fontSize)); + } + } + + class SizeActionListener implements ActionListener { + int size; + public SizeActionListener(int size) { + this.size = size; + } + public void actionPerformed(ActionEvent e) { + if (DEBUG) System.out.println("Size: " + size); + fontSize = size; + text.setFont(new Font(fontName, Font.PLAIN, fontSize)); + } + } + + Set add(Set s, Enumeration enumeration) { + while(enumeration.hasMoreElements()) { + s.add(enumeration.nextElement()); + } + return s; + } + + /** + * Get a sorted list of the system transliterators. + */ + /* + private static Vector getSystemTransliteratorNames() { + Vector v = new Vector(); + for (Enumeration e=Transliterator.getAvailableIDs(); + e.hasMoreElements(); ) { + v.addElement(e.nextElement()); + } + // Insertion sort, O(n^2) acceptable for small n + for (int i=0; i<(v.size()-1); ++i) { + String a = (String) v.elementAt(i); + for (int j=i+1; j 0) { + v.setElementAt(b, i); + v.setElementAt(a, j); + a = b; + } + } + } + return v; + } + */ + +/* + private void setNoTransliterator() { + translitItem = noTranslitItem; + noTranslitItem.setState(true); + handleSetTransliterator(noTranslitItem.getLabel()); + compound = false; + for (int i=0; i. + */ + /* + private static Transliterator decodeTranslitItem(String name) { + return (name.equals(NO_TRANSLITERATOR)) + ? null : Transliterator.getInstance(name); + } + */ + + private void handleBatchTransliterate(Transliterator trans) { + if (trans == null) { + return; + } + + int start = text.getSelectionStart(); + int end = text.getSelectionEnd(); + ReplaceableString s = + new ReplaceableString(text.getText().substring(start, end)); + + StringBuffer log = null; + if (DEBUG) { + log = new StringBuffer(); + log.append('"' + s.toString() + "\" (start " + start + + ", end " + end + ") -> \""); + } + + trans.transliterate(s); + String str = s.toString(); + + if (DEBUG) { + log.append(str + "\""); + System.out.println("Batch " + trans.getID() + ": " + log.toString()); + } + + text.replaceRange(str, start, end); + text.select(start, start + str.length()); + } + + private void handleClose() { + helpDialog.dispose(); + dispose(); + } + + /* + class InfoDialog extends Dialog { + protected Button button; + protected TextArea area; + protected Dialog me; + protected Panel bottom; + + public TextArea getArea() { + return area; + } + + public Panel getBottom() { + return bottom; + } + + InfoDialog(Frame parent, String title, String label, String message) { + super(parent, title, false); + me = this; + this.setLayout(new BorderLayout()); + if (label.length() != 0) { + this.add("North", new Label(label)); + } + + area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY); + this.add("Center", area); + + button = new Button("Hide"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + me.hide(); + } + }); + bottom = new Panel(); + bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + bottom.add(button); + this.add("South", bottom); + this.pack(); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + me.hide(); + } + }); + } + } + */ +} diff --git a/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java new file mode 100644 index 00000000000..99820e0611d --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java @@ -0,0 +1,73 @@ +/* + ******************************************************************************* + * Copyright (C) 1996-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.translit; +import java.applet.Applet; +import java.awt.Button; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import com.ibm.icu.dev.demo.impl.AppletFrame; + +/** + * A simple Applet that shows a button. When pressed, the button + * shows the DemoAppletFrame. This Applet is meant to be embedded + * in a web page. + * + *

    Copyright (c) IBM Corporation 1999. All rights reserved. + * + * @author Alan Liu + */ +public class DemoApplet extends Applet { + + /** + * For serialization + */ + private static final long serialVersionUID = 8214879807740061678L; + Demo frame = null; + + public static void main(String args[]) { + final DemoApplet applet = new DemoApplet(); + new AppletFrame("Transliteration Demo", applet, 640, 480); + } + + public void init() { + + Button button = new Button("Transliteration Demo"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (frame == null) { + frame = new Demo(600, 200); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent we) { + frame = null; + } + }); + } + frame.setVisible(true); + frame.toFront(); + } + }); + + add(button); + + Dimension size = button.getPreferredSize(); + size.width += 10; + size.height += 10; + + resize(size); + } + + public void stop() { + if (frame != null) { + frame.dispose(); + } + frame = null; + } +} diff --git a/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java new file mode 100644 index 00000000000..4ea16e3b9a4 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java @@ -0,0 +1,66 @@ +/** + ******************************************************************************* + * Copyright (C) 2001-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.translit; +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Dialog; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Label; +import java.awt.Panel; +import java.awt.TextArea; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +public class InfoDialog extends Dialog { + /** + * For serialization + */ + private static final long serialVersionUID = -3086665546137919018L; + protected Button button; + protected TextArea area; + protected Dialog me; + protected Panel bottom; + + public TextArea getArea() { + return area; + } + + public Panel getBottom() { + return bottom; + } + + InfoDialog(Frame parent, String title, String label, String message) { + super(parent, title, false); + me = this; + this.setLayout(new BorderLayout()); + if (label.length() != 0) { + this.add("North", new Label(label)); + } + + area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY); + this.add("Center", area); + + button = new Button("Hide"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + me.hide(); + } + }); + bottom = new Panel(); + bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + bottom.add(button); + this.add("South", bottom); + this.pack(); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + me.hide(); + } + }); + } +} diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt new file mode 100644 index 00000000000..146c659ac3c --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt @@ -0,0 +1,24 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +@UPPERFILTER@ +ما هي الشفرة الموحدة "يونِكود" ؟ + +أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال. + + + +وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات. + + + +"يونِكود" تغير هذا كليا ! + +تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تم تبني مواصفة "يونِكود" من قبل قادة الصانعين لأنظمة الحواسيب في العالم، مثل شركات آي.بي.إم. (IBM)، أبل (APPLE)، هِيْولِت باكرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطريقة الرسمية لتطبيق المقياس العالمي إيزو ١٠٦٤٦ (ISO 10646) . + + + +إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات. + +@SET [[[:Arabic:] & [\u0600-\u06FF]] [‎\u060C\u061B\u061F\u0640\u064B-\u0655\u0660-\u066C\u06F0-\u06F9]] \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt new file mode 100644 index 00000000000..63800742530 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt @@ -0,0 +1,73 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- + +Τι είναι το Unicode? + +Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. + +Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης. + +Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν. + +Το Unicode αλλάζει αυτή την κατάσταση! +Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών. + +Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης. + +Σχετικά με το Κονσόρτιουμ Unicode +Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της. + +Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών. + +(ANCIENT) + +ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ +πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν: +πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω, +πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν, +ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων. +ἀλλ’ οὐδ’ ὣς ἑτάρους ἐρρύσατο, ἱέμενός περ: +αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο, +νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο +ἤσθιον: αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ. +τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν. +* +ἔνθ’ ἄλλοι μὲν πάντες, ὅσοι φύγον αἰπὺν ὄλεθρον, +οἴκοι ἔσαν, πόλεμόν τε πεφευγότες ἠδὲ θάλασσαν: +τὸν δ’ οἶον νόστου κεχρημένον ἠδὲ γυναικὸς +νύμφη πότνι’ ἔρυκε Καλυψὼ δῖα θεάων +ἐν σπέσσι γλαφυροῖσι, λιλαιομένη πόσιν εἶναι. +ἀλλ’ ὅτε δὴ ἔτος ἦλθε περιπλομένων ἐνιαυτῶν, +τῷ οἱ ἐπεκλώσαντο θεοὶ οἶκόνδε νέεσθαι +εἰς Ἰθάκην, οὐδ’ ἔνθα πεφυγμένος ἦεν ἀέθλων +καὶ μετὰ οἷσι φίλοισι. θεοὶ δ’ ἐλέαιρον ἅπαντες +νόσφι Ποσειδάωνος: ὁ δ’ ἀσπερχὲς μενέαινεν +ἀντιθέῳ Ὀδυσῆι πάρος ἣν γαῖαν ἱκέσθαι. +* +ἀλλ’ ὁ μὲν Αἰθίοπας μετεκίαθε τηλόθ’ ἐόντας, +Αἰθίοπας τοὶ διχθὰ δεδαίαται, ἔσχατοι ἀνδρῶν, +οἱ μὲν δυσομένου Ὑπερίονος οἱ δ’ ἀνιόντος, +ἀντιόων ταύρων τε καὶ ἀρνειῶν ἑκατόμβης. +ἔνθ’ ὅ γ’ ἐτέρπετο δαιτὶ παρήμενος: οἱ δὲ δὴ ἄλλοι +Ζηνὸς ἐνὶ μεγάροισιν Ὀλυμπίου ἁθρόοι ἦσαν. +τοῖσι δὲ μύθων ἦρχε πατὴρ ἀνδρῶν τε θεῶν τε: +μνήσατο γὰρ κατὰ θυμὸν ἀμύμονος Αἰγίσθοιο, +τόν ῥ’ Ἀγαμεμνονίδης τηλεκλυτὸς ἔκταν’ Ὀρέστης: +τοῦ ὅ γ’ ἐπιμνησθεὶς ἔπε’ ἀθανάτοισι μετηύδα: +* +“ὢ πόποι, οἷον δή νυ θεοὺς βροτοὶ αἰτιόωνται: +ἐξ ἡμέων γάρ φασι κάκ’ ἔμμεναι, οἱ δὲ καὶ αὐτοὶ +σφῇσιν ἀτασθαλίῃσιν ὑπὲρ μόρον ἄλγε’ ἔχουσιν, +ὡς καὶ νῦν Αἴγισθος ὑπὲρ μόρον Ἀτρεί̈δαο +γῆμ’ ἄλοχον μνηστήν, τὸν δ’ ἔκτανε νοστήσαντα, +εἰδὼς αἰπὺν ὄλεθρον, ἐπεὶ πρό οἱ εἴπομεν ἡμεῖς, +Ἑρμείαν πέμψαντες, ἐύσκοπον ἀργεϊφόντην, +μήτ’ αὐτὸν κτείνειν μήτε μνάασθαι ἄκοιτιν: +ἐκ γὰρ Ὀρέσταο τίσις ἔσσεται Ἀτρεί̈δαο, +ὁππότ’ ἂν ἡβήσῃ τε καὶ ἧς ἱμείρεται αἴης. +ὣς ἔφαθ’ Ἑρμείας, ἀλλ’ οὐ φρένας Αἰγίσθοιο +πεῖθ’ ἀγαθὰ φρονέων: νῦν δ’ ἁθρόα πάντ’ ἀπέτισεν.” + +@SET [[[:Greek:]&[\u0370-\u03E1 \u03F0-\u03FF]] [\:-;?\u00B7\u037E\u0387]] \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt new file mode 100644 index 00000000000..8603663c655 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt @@ -0,0 +1,26 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +@UPPERFILTER@ +什么是Unicode(统一码)? +Unicode给每个字符提供了一个唯一的数字, +不论是什么平台, +不论是什么程序, +不论是什么语言。 + +基本上,计算机只是处理数字。它们指定一个数字,来储存字母或其他字符。在创造Unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符:例如,单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言,例如英语,也没有哪一个编码可以适用于所有的字母,标点符号,和常用的技术符号。 + +这些编码系统也会互相冲突。也就是说,两种编码可能使用相同的数字代表两个不同的字符,或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码,但是,不论什么时候数据通过不同的编码或平台之间,那些数据总会有损坏的危险。 + +Unicode正在改变所有这一切! +Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。Unicode标准已经被这些工业界的领导们所采用,例如:Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode,例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等,并且,Unicode是实现ISO/IEC 10646的正规方式。许多操作系统,所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在,是近来全球软件技术最重要的发展趋势。 + +将Unicode与客户服务器或多层应用程序和网站结合,比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台,语言和国家,而不需要重建。它可将数据传输到许多不同的系统,而无损坏。 + +关于Unicode学术学会 +Unicode学术学会是一个非盈利的组织,是为发展,扩展和推广使用Unicode标准而建立的,Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。 + +欲知更多信息,请参阅术语词汇表,Unicode产品样本,技术简介和参考资料。 + +Chinese translation by 黎國珍, Xerox \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt new file mode 100644 index 00000000000..9d26745a874 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt @@ -0,0 +1,26 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +@UPPERFILTER@ +מה זה יוניקוד (Unicode)? +יוניקוד מקצה מספר ייחודי לכל תו, +לא משנה על איזו פלטפורמה, +לא משנה באיזו תוכנית, +ולא משנה באיזו שפה. + +באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף. + +מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו. + +יוניקוד משנה את כל זה! +יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה. + +שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו. + +פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium) +הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו. + +למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית]. + +@SET [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138]] \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html new file mode 100644 index 00000000000..026394a11e4 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html @@ -0,0 +1,154 @@ + + + + + + +New Transliteration Test Files + + + + +

    New Transliteration Test Files

    +

    The Test_*.html files show the transliteration of characters for given +languages. The sample for each language consists of "What Is Unicode" +in Thai, followed by other available text. The text is broken apart into +sentences for ease of viewing (note: we know of some problems with the sentence +rules for Japanese and Chinese). The left column is the original, and the right +is the romanization. The program also converts back to the original script. If +there is a discrepancy between the source and the reverse transformation, that +is indicated by making the background red +from that point on.

    +
    +

    Note: If you have some more text that you would like added to the + sample, just let me know. I am particularly interested in name lists, since + they are the typical source.

    +
    +

    Standards

    +

    The goal is to follow a given standard, such as ISO* or UNGEGN wherever +possible. We also need to round-trip, so in some cases, that means adding some +additional accent marks to disambiguate characters. And often the source +standards are missing some characters, such as characters with combining Hamzas +in Arabic. Remember that the goal for these is transliteration (unambiguously +representing all the letters in the original), not transcription (representing +the best pronunciation).

    +
      +
    • Thai: ISO 11940 < http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf + > plus a few items: +
        +
      • Accents may be added to the Latin for disambiguation.
      • +
      • In the next release, we'd like to do the UNGEGN version < http://www.eki.ee/wgrs/rom1_th.pdf + > which is probably more useful (and readable), and follows more + closely the Thai standard.
      • +
      • Spaces are provided at word-breaks, using the Thai BreakIterator.
      • +
      • An inherent vowel (ọ) is added, as in UNGEGN. The dot is for + disambiguation. +
          +
        • Note: if the inherent vowel positions cannot be algorithmically + determined, let me know and I will remove them.
        • +
        +
      • +
      +
    • +
    • Arabic: Generally follows + UNGEGN < http://www.eki.ee/wgrs/rom1_ar.pdf + > +
        +
      • Accents may be added to the Latin for disambiguation.
      • +
      • Occasionally deviates in the direction of ISO 233 < http://homepage.mac.com/sirbinks/pdf/Arabic.pdf + > +
          +
        • with underdot instead of cedilla for letter like SAD, since those + are explicitly in Unicode for transliteration of Arabic
        • +
        • adding extra non-Arabic-language letters, like PEH. Note: not all + extended Arabic characters are handled yet.
        • +
        +
      • +
      • Does not do assimilation of "al", nor hyphenation of + it. +
          +
        • While it could be done, we need to determine whether a prefix + "al" could occur other than as the definite article (since + no space is used).
        • +
        +
      • +
      • This is transliteration. For transcription one would want an + engine that added points appropriately to the Hebrew.
      • +
      +
    • +
    • Hebrew: Generally + follows UNGEGN < http://www.eki.ee/wgrs/rom1_he.pdf + >, with some exceptions: +
        +
      • Accents may be added to the Latin for disambiguation.
      • +
      • Combinations of dagesh, shin/sin dot that would produce different + letters are not yet called out.
      • +
      • Note that the final forms are not preserved. Thus, when going from + Latin to Hebrew, a character is given final form depending on its + position. +
          +
        • E.g. מםמם => mmmm => + מממם
        • +
        +
      • +
      • This is transliteration. For transcription one would want an + engine that added points appropriately to the Hebrew.
      • +
      • See also < http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf + > for the ISO version. The Chicago Manual of Style has a clear table + of mappings for the vowel marks.
      • +
      +
    • +
    • Han: Uses the CEDICT + data plus Unicode Unihan kMandarin values for pinyin. Doesn't + roundtrip! +
        +
      • Note: the Chinese pronunciation of Han characters varies by + context and grammar, though nowhere near as much a Japanese. +
          +
        • Ideally we'd have an underlying engine for this. In 2.4 we will + have a plug-in interface so that people could add one, such as the + IBM engine.
        • +
        • The data from CEDICT and Unihan don't list the most frequent + choice first, so we will be updating that.
        • +
        +
      • +
      +
    • +
    • Greek/UNGEGN: Uses a + modern Greek transliteration, based on the UNGEGN rules at < http://www.eki.ee/wgrs/rom1_el.pdf + >. This version will not roundtrip ancient Greek.
    • +
    • Greek: Uses a classic Greek + transliteration. This version will not roundtrip modern Greek.
    • +
    +

    Notes

    +
      +
    1. For readability, the files have a few other things besides just the + transliteration: +
        +
      • The first word of the sentences are titlecased, as are names (where we + have a name-list, such as in Thai).
      • +
      • The Latin in the original is mapped to the private-use zone before + conversion, and then again after conversion. This does have the downside + that any rules (such as in Han) that need to know the context (e.g. for + inserting spaces or capitalization) will gum up a little bit. This is + just an artifact of the test display.
      • +
      +
    2. +
    3. I don't think that ISO 11940 is a particularly good way to romanize, but + it is at least complete and a standard. So what I am interested in just for + now is whether the samples in the file follow it (with the above + exceptions).
    4. +
    5. Some of the files also have a set of characters at the end, one character + per row, with a following row listing the hex and name.
    6. +
    7. The source rules for all of these is in the following URL. So if you want + to know the details of how the characters are handled, that is the place to + look. + +
    8. +
    + + + + diff --git a/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt new file mode 100644 index 00000000000..631f191529a --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt @@ -0,0 +1,69 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +@UPPERFILTER@ +Unicode คืออะไร? +Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ +โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด +ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด +และไม่ว่าจะเป็นภาษาใด + +โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. + +ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย. + +Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด! +Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด. + +การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย. + +เกี่ยวกับ Unicode Consortium +Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. + +สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources. + +เป็นมนุษย์สุดประเสริฐเลิศคุณค่า +กว่าบรรดาฝูงสัตว์เดรัจฉาน +จงฝ่าฟันพัฒนาวิชาการ +อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร +ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า +หัดอภัยเหมือนกีฬาอัชฌาสัย +ปฏิบัติประพฤติกฎกำหนดใจ +พูดจาให้จ๊ะ ๆ จ๋า ๆ น่าฟังเอยฯ + +แหล่งที่มา : สมาคมคอมพิวเตอร์แห่งประเทศไทย + +ฅนฃวด kho khuat and kho khon +@TITLECASE@ +ก๊กเฮง แซ่แต้ +กชกร ศราทธทัต +กติกา อังคสุภณ +กนก ธรรมประทีป +กนก วงศ์ทองศรี +กนกกร ช้างเย็นฉ่ำ +กนกฉัตร์ ถาวรนันท์ +กนกนวล โปษยะนันทน์ +กนกพร คมคาย +กนกพร ตีรเลิศพานิช +กนกพร พันทร +กนกพร ศรีบัณฑิต +กนกพร อติวรรณาพัฒน์ +กนกพรรณ ศรีวนาภิรมย์ +กนกรัตน์ เกียรติยิ่งอังศุลี +กนกรัตน์ สุธรรมพิทักษ์ +กนกวรรณ คงคาประเสริฐ +กนกวรรณ แซ่เตียว +กนกวรรณ บุญประเสริฐ +กนกวรรณ รักทรัพย์ +กนกวรรณ สัจจพงษ์ +กนกวรรณ อุ้ยวงศ์ไพศาล +กนกศักดิ์ ยิ่งยง +กนกแก้ว กรสมิต +กนิษฐา ทนุถนอมราษฎร์ +กนิษฐา หวังวิบูลย์กิจ +กมล กาญจนโรจน์ +กมล คัมภีร์ +กมล เจตน์มงคลรัตน์ +กมล ชูตระกูลธรรม +@SET [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B] \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java new file mode 100644 index 00000000000..597721ca3ec --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java @@ -0,0 +1,257 @@ +/* + ******************************************************************************* + * Copyright (C) 1996-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.translit; + +import java.awt.event.KeyEvent; + +import com.ibm.icu.dev.demo.impl.DumbTextComponent; +import com.ibm.icu.text.ReplaceableString; +import com.ibm.icu.text.Transliterator; + +/** + * A subclass of {@link DumbTextComponent} that passes key events through + * a {@link com.ibm.icu.text.Transliterator}. + * + * @author Alan Liu + */ +public class TransliteratingTextComponent extends DumbTextComponent { + + /** + * For serialization + */ + private static final long serialVersionUID = -8672128213174154047L; + + private static boolean DEBUG = false; + + private Transliterator translit = null; + + // NOTE: DISABLE THE START AND CURSOR UNTIL WE CAN GET IT TO WORK AT ALL + + // Index into getText() where the start of transliteration is. + // As we commit text during transliteration, we advance + // this. + //private int start = 0; + + // Index into getText() where the cursor is; cursor >= start + //private int cursor = 0; + +// private static final String COPYRIGHT = +// "\u00A9 IBM Corporation 1999. All rights reserved."; + + /** + * Constructor. + */ + public TransliteratingTextComponent() { + super(); + /* + addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + // We get an ActionEvent only when the selection changes + resetTransliterationStart(); + } + }); + */ + } + + /** + * {@link DumbTextComponent} API. Framework method that is called + * when a KeyEvent is received. This implementation + * runs the new character through the current + * Transliterator, if one is set, and inserts the + * transliterated text into the buffer. + */ + protected void handleKeyTyped(KeyEvent e) { + char ch = e.getKeyChar(); + + if (translit == null) { + setKeyStart(-1); + super.handleKeyTyped(e); + return; + } + + transliterate(ch, false); + } + + public void flush() { + if (translit != null) transliterate('\uFFFF', true); + } + + + protected void transliterate(char ch, boolean flush) { + + // ------------------------------------------------------------ + // The following case motivates the two lines that recompute + // start and cursor below. + + // " " + // a b c q r|s t u m m + // 0 1 2 3 4 5 6 7 8 9 + // 0 1 2 + + // start 3, cursor 5, sel 6 -> { 0, 3, 2 } + // : new int[] { 0, sel - start, cursor - start }; + + // sz>99|9 + + // " { " + // a b c q r 9 9|9 t u m m + // 0 1 2 3 4 5 6 7 8 9 a b + // 0 1 2 3 4 + + // { 3, 5, 4 } -> start 6, cursor 7, sel 8 + // : start += index[0]; + // : cursor = start + index[2] - index[0]; + // ------------------------------------------------------------ + + // Need to save start because calls to replaceRange will update + // start and cursor. + //int saveStart = start; + + int end = flush ? getSelectionEnd() : getSelectionStart(); + String sourceText = getText().substring(0,end); + ReplaceableString buf = new ReplaceableString(sourceText); + /*buf.replace(0, 1, getText().substring(start, + getSelectionStart()));*/ + + Transliterator.Position index = new Transliterator.Position(); + index.contextLimit = buf.length(); + index.contextStart = 0; + index.start = getKeyStart(); + if (index.start == -1) index.start = getSelectionStart(); + index.limit = buf.length(); + + // StringBuffer log = null; + if (DEBUG) { + System.out.println("Transliterator: " + translit.getID()); + System.out.println("From:\t" + '"' + buf.toString() + '"' + + "; {cs: " + index.contextStart + + ", s: " + index.start + + ", l: " + index.limit + + ", cl: " + index.contextLimit + + "}" + "; '" + ch + "'" + + " " + getKeyStart() + ); + } + + if (flush) { + translit.finishTransliteration(buf, index); + } else { + translit.transliterate(buf, index, ch); + } + + if (DEBUG) { + System.out.println("To:\t" + '"' + buf.toString() + '"' + + "; {cs: " + index.contextStart + + ", s: " + index.start + + ", l: " + index.limit + + ", cl: " + index.contextLimit + + "}" + ); + System.out.println(); + } + /* + buf.replace(buf.length(), buf.length(), String.valueOf(ch)); + translit.transliterate(buf); + */ + + String result = buf.toString(); + //if (result.equals(sourceText + ch)) return; + + replaceRange(result, 0, getSelectionEnd()); + setKeyStart(index.start); + + // At this point start has been changed by the callback to + // resetTransliteratorStart() via replaceRange() -- so use our + // local copy, saveStart. + + // The START index is zero-based. On entry to transliterate(), + // it was zero. We can therefore just add it to our original + // getText()-based index value of start (in saveStart) to get + // the new getText()-based start. +// start = saveStart + index.contextStart; + + // Make the cursor getText()-based. The CURSOR index is zero-based. +// cursor = start + index.start - index.contextStart; + +/* + if (DEBUG) { + String out = buf.toString(); + log.append(out.substring(0, index.contextStart)). + append('{'). + append(out.substring(index.contextStart, index.start)). + append('|'). + append(out.substring(index.start)). + append('"'); + log.append(", {" + index.contextStart + ", " + index.contextLimit + ", " + index.start + "}, "); +// log.append("start " + start + ", cursor " + cursor); + log.append(", sel " + getSelectionStart()); + System.out.println(escape(log.toString())); + } + */ + } + + /** + * Set the {@link com.ibm.icu.text.Transliterator} and direction to + * use to process incoming KeyEvents. + * @param t the {@link com.ibm.icu.text.Transliterator} to use + */ + public void setTransliterator(Transliterator t) { + /* + if (translit != t) { // [sic] pointer compare ok; singletons + resetTransliterationStart(); + } + */ + translit = t; + } + + public Transliterator getTransliterator() { + return translit; + } + + /** + * Reset the start point at which transliteration begins. This + * needs to be done when the user moves the cursor or when the + * current {@link com.ibm.icu.text.Transliterator} is changed. + */ + /* + private void resetTransliterationStart() { + start = getSelectionStart(); + cursor = start; + } + */ + + /** + * Escape non-ASCII characters as Unicode. + * JUST FOR DEBUGGING OUTPUT. + */ + public static final String escape(String s) { + StringBuffer buf = new StringBuffer(); + for (int i=0; i= ' ' && c <= 0x007F) { + if (c == '\\') { + buf.append("\\\\"); // That is, "\\" + } else { + buf.append(c); + } + } else { + buf.append("\\u"); + if (c < 0x1000) { + buf.append('0'); + if (c < 0x100) { + buf.append('0'); + if (c < 0x10) { + buf.append('0'); + } + } + } + buf.append(Integer.toHexString(c)); + } + } + return buf.toString(); + } +} diff --git a/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java b/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java new file mode 100644 index 00000000000..d0865c3bb96 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java @@ -0,0 +1,294 @@ +/** + ******************************************************************************* + * Copyright (C) 2001-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.demo.translit; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import com.ibm.icu.impl.Utility; +import com.ibm.icu.lang.UCharacter; +import com.ibm.icu.lang.UScript; +import com.ibm.icu.text.Normalizer; +import com.ibm.icu.text.Transliterator; +import com.ibm.icu.text.UTF16; +import com.ibm.icu.text.UnicodeSet; +import com.ibm.icu.text.UnicodeSetIterator; + +public class TransliterationChart { + public static void main(String[] args) throws IOException { + System.out.println("Start"); + UnicodeSet lengthMarks = new UnicodeSet("[\u09D7\u0B56-\u0B57\u0BD7\u0C56\u0CD5-\u0CD6\u0D57\u0C55\u0CD5]"); + int[] indicScripts = { + UScript.LATIN, + UScript.DEVANAGARI, + UScript.BENGALI, + UScript.GURMUKHI, + UScript.GUJARATI, + UScript.ORIYA, + UScript.TAMIL, + UScript.TELUGU, + UScript.KANNADA, + UScript.MALAYALAM, + }; + String[] names = new String[indicScripts.length]; + UnicodeSet[] sets = new UnicodeSet[indicScripts.length]; + Transliterator[] fallbacks = new Transliterator[indicScripts.length]; + for (int i = 0; i < indicScripts.length; ++i) { + names[i] = UScript.getName(indicScripts[i]); + sets[i] = new UnicodeSet("[[:" + names[i] + ":]&[[:L:][:M:]]&[:age=3.1:]]"); + fallbacks[i] = Transliterator.getInstance("any-" + names[i]); + } + EquivClass eq = new EquivClass(new ReverseComparator()); + PrintWriter pw = openPrintWriter("transChart.html"); + pw.println(""); + pw.println("Indic Transliteration Chart"); + + Transliterator anyToLatin = Transliterator.getInstance("any-latin"); + + String testString = "\u0946\u093E"; + + UnicodeSet failNorm = new UnicodeSet(); + Set latinFail = new TreeSet(); + + for (int i = 0; i < indicScripts.length; ++i) { + if (indicScripts[i] == UScript.LATIN) continue; + String source = names[i]; + System.out.println(source); + UnicodeSet sourceChars = sets[i]; + + for (int j = 0; j < indicScripts.length; ++j) { + if (i == j) continue; + String target = names[j]; + Transliterator forward = Transliterator.getInstance(source + '-' + target); + Transliterator backward = forward.getInverse(); + UnicodeSetIterator it = new UnicodeSetIterator(sourceChars); + while (it.next()) { + if (lengthMarks.contains(it.codepoint)) continue; + String s = Normalizer.normalize(it.codepoint,Normalizer.NFC,0); + //if (!Normalizer.isNormalized(s,Normalizer.NFC,0)) continue; + if (!s.equals(Normalizer.normalize(s,Normalizer.NFD,0))) { + failNorm.add(it.codepoint); + } + String t = fix(forward.transliterate(s)); + if (t.equals(testString)) { + System.out.println("debug"); + } + + String r = fix(backward.transliterate(t)); + if (Normalizer.compare(s,r,0) == 0) { + if (indicScripts[j] != UScript.LATIN) eq.add(s,t); + } else { + if (indicScripts[j] == UScript.LATIN) { + latinFail.add(s + " - " + t + " - " + r); + } + } + } + } + } + // collect equivalents + pw.println(""); + for (int i = 0; i < indicScripts.length; ++i) { + pw.print(""); + } + pw.println(""); + + Iterator rit = eq.getSetIterator(new MyComparator()); + while(rit.hasNext()) { + Set equivs = (Set)rit.next(); + pw.print(""); + Iterator sit = equivs.iterator(); + String source = (String)sit.next(); + String item = anyToLatin.transliterate(source); + if (item.equals("") || source.equals(item)) item = " "; + pw.print(""); + for (int i = 1; i < indicScripts.length; ++i) { + sit = equivs.iterator(); + item = ""; + while (sit.hasNext()) { + String trial = (String)sit.next(); + if (!sets[i].containsAll(trial)) continue; + item = trial; + break; + } + String classString = ""; + if (item.equals("")) { + classString = " class='miss'"; + String temp = fallbacks[i].transliterate(source); + if (!temp.equals("") && !temp.equals(source)) item = temp; + } + String backup = item.equals("") ? " " : item; + pw.print("" + + backup + "
    " + Utility.hex(item) + ""); + } + /* + Iterator sit = equivs.iterator(); + while (sit.hasNext()) { + String item = (String)sit.next(); + pw.print("
    "); + } + */ + pw.println(""); + } + pw.println("
    " + names[i].substring(0,3) + "
    " + item + "" + item + "
    "); + if (true) { + pw.println("

    Failed Normalization

    "); + + UnicodeSetIterator it = new UnicodeSetIterator(failNorm); + UnicodeSet pieces = new UnicodeSet(); + while (it.next()) { + String s = UTF16.valueOf(it.codepoint); + String d = Normalizer.normalize(s,Normalizer.NFD,0); + pw.println("Norm:" + s + ", " + Utility.hex(s) + " " + UCharacter.getName(it.codepoint) + + "; " + d + ", " + Utility.hex(d) + ", "); + pw.println(UCharacter.getName(d.charAt(1)) + "
    "); + if (UCharacter.getName(d.charAt(1)).indexOf("LENGTH") >= 0) pieces.add(d.charAt(1)); + } + pw.println(pieces); + + pw.println("

    Failed Round-Trip

    "); + Iterator cit = latinFail.iterator(); + while (cit.hasNext()) { + pw.println(cit.next() + "
    "); + } + } + + pw.println(""); + pw.close(); + System.out.println("Done"); + } + + public static String fix(String s) { + if (s.equals("\u0946\u093E")) return "\u094A"; + if (s.equals("\u0C46\u0C3E")) return "\u0C4A"; + if (s.equals("\u0CC6\u0CBE")) return "\u0CCA"; + + if (s.equals("\u0947\u093E")) return "\u094B"; + if (s.equals("\u0A47\u0A3E")) return "\u0A4B"; + if (s.equals("\u0AC7\u0ABE")) return "\u0ACB"; + if (s.equals("\u0C47\u0C3E")) return "\u0C4B"; + if (s.equals("\u0CC7\u0CBE")) return "\u0CCB"; + + //return Normalizer.normalize(s,Normalizer.NFD,0); + return s; + } + + public static PrintWriter openPrintWriter(String fileName) throws IOException { + File lf = new File(fileName); + System.out.println("Creating file: " + lf.getAbsoluteFile()); + + return new PrintWriter( + new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(fileName), "UTF8"), 4*1024)); + } + + + public static String getName(String s, String separator) { + int cp; + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) { + cp = UTF16.charAt(s,i); + if (i != 0) sb.append(separator); + sb.append(UCharacter.getName(cp)); + } + return sb.toString(); + } + + static class MyComparator implements Comparator { + public int compare(Object o1, Object o2) { + Iterator i1 = ((TreeSet) o1).iterator(); + Iterator i2 = ((TreeSet) o2).iterator(); + while (i1.hasNext() && i2.hasNext()) { + String a = (String)i1.next(); + String b = (String)i2.next(); + int result = a.compareTo(b); + if (result != 0) return result; + } + if (i1.hasNext()) return 1; + if (i2.hasNext()) return -1; + return 0; + } + + } + static class ReverseComparator implements Comparator { + public int compare(Object o1, Object o2) { + String a = o1.toString(); + char a1 = a.charAt(0); + String b = o2.toString(); + char b1 = b.charAt(0); + if (a1 < 0x900 && b1 > 0x900) return -1; + if (a1 > 0x900 && b1 < 0x900) return +1; + return a.compareTo(b); + } + } + + static class EquivClass { + EquivClass(Comparator c) { + comparator = c; + } + private HashMap itemToSet = new HashMap(); + private Comparator comparator; + + void add(Object a, Object b) { + Set sa = (Set)itemToSet.get(a); + Set sb = (Set)itemToSet.get(b); + if (sa == null && sb == null) { // new set! + Set s = new TreeSet(comparator); + s.add(a); + s.add(b); + itemToSet.put(a, s); + itemToSet.put(b, s); + } else if (sa == null) { + sb.add(a); + } else if (sb == null) { + sa.add(b); + } else { // merge sets, dumping sb + sa.addAll(sb); + Iterator it = sb.iterator(); + while (it.hasNext()) { + itemToSet.put(it.next(), sa); + } + } + } + + private class MyIterator implements Iterator { + private Iterator it; + MyIterator (Comparator comp) { + TreeSet values = new TreeSet(comp); + values.addAll(itemToSet.values()); + it = values.iterator(); + } + + public boolean hasNext() { + return it.hasNext(); + } + public Object next() { + return it.next(); + } + public void remove() { + throw new IllegalArgumentException("can't remove"); + } + } + + public Iterator getSetIterator (Comparator comp) { + return new MyIterator(comp); + } + + } +} \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/demo.bat b/demos/src/com/ibm/icu/dev/demo/translit/demo.bat new file mode 100755 index 00000000000..dd9c205fbaa --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/demo.bat @@ -0,0 +1,13 @@ +REM /* +REM ******************************************************************************* +REM * Copyright (C) 1996-2004, International Business Machines Corporation and * +REM * others. All Rights Reserved. * +REM ******************************************************************************* +REM */ +REM For best results, run the demo as an applet inside of Netscape +REM with Bitstream Cyberbit installed. + +REM setup your JDK 1.1.x path and classpath here: +call JDK11 +set CLASSPATH=../translit.jar;%CLASSPATH% +javaw Demo diff --git a/demos/src/com/ibm/icu/dev/demo/translit/demo.html b/demos/src/com/ibm/icu/dev/demo/translit/demo.html new file mode 100644 index 00000000000..2a7ee5bceec --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/demo.html @@ -0,0 +1,34 @@ + + + +Transliteration Demo + + + + +
    + +If you don't see a button above, then your browser is failing to +locate the necessary Java class files. + +

    + +One way to make this work is to copy this HTML file to +icu4j/src, and make sure the Java files in the directories +under icu4j/src/com are built. Then open this HTML file +using a browser or appletviewer. + +

    + +For best results, run this demo as an applet within Netscape with +Bitstream Cyberbit installed. + + + diff --git a/demos/src/com/ibm/icu/dev/demo/translit/package.html b/demos/src/com/ibm/icu/dev/demo/translit/package.html new file mode 100644 index 00000000000..8355d1f03f7 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/package.html @@ -0,0 +1,12 @@ + + + + + + +Transliterator demo appliation. + + \ No newline at end of file diff --git a/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt new file mode 100644 index 00000000000..8f7c21d3a62 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt @@ -0,0 +1,20365 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2001, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +# Generated: Fri Jan 26 15:14:48 2001 +# Tool: ..\..\tools\translit\hanpinyin.pl +#-------------------------------------------------------------------- + +# Han-Pinyin + +# Mechanically derived from \desk\Unihan.txt (ftp.unicode.org), version: +# +# Name: Unihan database +# Unicode version: 3.0b1 +# Table version: 1.1 +# Date: 2 July 1999 +# +# Copyright (c) 1996-1999 Unicode, Inc. All Rights reserved. + +丁 > dīng; #4E01 +丂 > kăo; #4E02 +七 > qī; #4E03 +丄 > shàng; #4E04 +丅 > xià; #4E05 +万 > mò; #4E07 +丈 > zhàng; #4E08 +三 > sān; #4E09 +上 > shàng; #4E0A +下 > xià; #4E0B +丌 > jī; #4E0C +不 > bù; #4E0D +与 > yŭ; #4E0E +丏 > miăn; #4E0F +丐 > gài; #4E10 +丑 > chŏu; #4E11 +丒 > chŏu; #4E12 +专 > zhuān; #4E13 +且 > qiĕ; #4E14 +丕 > pī; #4E15 +世 > shì; #4E16 +丗 > shì; #4E17 +丘 > qīu; #4E18 +丙 > bĭng; #4E19 +业 > yè; #4E1A +丛 > cóng; #4E1B +东 > dōng; #4E1C +丝 > sī; #4E1D +丞 > chéng; #4E1E +丟 > dīu; #4E1F +丠 > qīu; #4E20 +両 > liăng; #4E21 +丢 > dīu; #4E22 +丣 > yŏu; #4E23 +两 > liăng; #4E24 +严 > yán; #4E25 +並 > bìng; #4E26 +丧 > sāng; #4E27 +丨 > gŭn; #4E28 +丩 > jīu; #4E29 +个 > gè; #4E2A +丫 > yā; #4E2B +丬 > qiáng; #4E2C +中 > zhōng; #4E2D +丮 > jĭ; #4E2E +丯 > jiè; #4E2F +丰 > fēng; #4E30 +丱 > guàn; #4E31 +串 > chuàn; #4E32 +丳 > chăn; #4E33 +临 > lín; #4E34 +丵 > zhŭo; #4E35 +丶 > zhŭ; #4E36 +丸 > wán; #4E38 +丹 > dān; #4E39 +为 > wèi; #4E3A +主 > zhŭ; #4E3B +丼 > jĭng; #4E3C +丽 > lì; #4E3D +举 > jŭ; #4E3E +丿 > piĕ; #4E3F +乀 > fú; #4E40 +乁 > yí; #4E41 +乂 > yì; #4E42 +乃 > năi; #4E43 +久 > jĭu; #4E45 +乆 > jĭu; #4E46 +乇 > zhé; #4E47 +么 > yāo; #4E48 +义 > yì; #4E49 +之 > zhī; #4E4B +乌 > wū; #4E4C +乍 > zhà; #4E4D +乎 > hū; #4E4E +乏 > fá; #4E4F +乐 > lè; #4E50 +乑 > zhòng; #4E51 +乒 > pīng; #4E52 +乓 > pang; #4E53 +乔 > qiáo; #4E54 +乕 > hŭ; #4E55 +乖 > guāi; #4E56 +乗 > chéng; #4E57 +乘 > chéng; #4E58 +乙 > yĭ; #4E59 +乚 > yĭn; #4E5A +乜 > miē; #4E5C +九 > jĭu; #4E5D +乞 > qĭ; #4E5E +也 > yĕ; #4E5F +习 > xí; #4E60 +乡 > xiāng; #4E61 +乢 > gài; #4E62 +乣 > dīu; #4E63 +书 > shū; #4E66 +乨 > shĭ; #4E68 +乩 > jī; #4E69 +乪 > nāng; #4E6A +乫 > jiā; #4E6B +乭 > shí; #4E6D +买 > măi; #4E70 +乱 > luàn; #4E71 +乳 > rŭ; #4E73 +乴 > xué; #4E74 +乵 > yăn; #4E75 +乶 > fŭ; #4E76 +乷 > shā; #4E77 +乸 > nă; #4E78 +乹 > gān; #4E79 +乾 > gān; #4E7E +乿 > chì; #4E7F +亀 > gūi; #4E80 +亁 > gān; #4E81 +亂 > luàn; #4E82 +亃 > lín; #4E83 +亄 > yì; #4E84 +亅 > jué; #4E85 +了 > liăo; #4E86 +予 > yú; #4E88 +争 > zhēng; #4E89 +亊 > shì; #4E8A +事 > shì; #4E8B +二 > èr; #4E8C +亍 > chù; #4E8D +于 > yú; #4E8E +亏 > yú; #4E8F +亐 > yú; #4E90 +云 > yún; #4E91 +互 > hù; #4E92 +亓 > qí; #4E93 +五 > wŭ; #4E94 +井 > jĭng; #4E95 +亖 > sì; #4E96 +亗 > sùi; #4E97 +亘 > gèn; #4E98 +亙 > gèn; #4E99 +亚 > yà; #4E9A +些 > xiē; #4E9B +亜 > yà; #4E9C +亝 > qí; #4E9D +亞 > yà; #4E9E +亟 > jí; #4E9F +亠 > tóu; #4EA0 +亡 > wáng; #4EA1 +亢 > kàng; #4EA2 +亣 > tà; #4EA3 +交 > jiāo; #4EA4 +亥 > hài; #4EA5 +亦 > yì; #4EA6 +产 > chăn; #4EA7 +亨 > hēng; #4EA8 +亩 > mŭ; #4EA9 +享 > xiăng; #4EAB +京 > jīng; #4EAC +亭 > tíng; #4EAD +亮 > liàng; #4EAE +亯 > xiăng; #4EAF +亰 > jīng; #4EB0 +亱 > yè; #4EB1 +亲 > qīn; #4EB2 +亳 > bó; #4EB3 +亴 > yòu; #4EB4 +亵 > xiè; #4EB5 +亶 > dăn; #4EB6 +亷 > lián; #4EB7 +亸 > dŭo; #4EB8 +亹 > wĕi; #4EB9 +人 > rén; #4EBA +亻 > rén; #4EBB +亼 > jí; #4EBC +亾 > wáng; #4EBE +亿 > yì; #4EBF +什 > shí; #4EC0 +仁 > rén; #4EC1 +仂 > lè; #4EC2 +仃 > dīng; #4EC3 +仄 > zè; #4EC4 +仅 > jĭn; #4EC5 +仆 > pū; #4EC6 +仇 > chóu; #4EC7 +仈 > bā; #4EC8 +仉 > zhăng; #4EC9 +今 > jīn; #4ECA +介 > jiè; #4ECB +仌 > bīng; #4ECC +仍 > réng; #4ECD +从 > cóng; #4ECE +仏 > fó; #4ECF +仐 > săn; #4ED0 +仑 > lún; #4ED1 +仓 > cāng; #4ED3 +仔 > zĭ; #4ED4 +仕 > shì; #4ED5 +他 > tā; #4ED6 +仗 > zhàng; #4ED7 +付 > fù; #4ED8 +仙 > xiān; #4ED9 +仚 > xiān; #4EDA +仛 > tūo; #4EDB +仜 > hóng; #4EDC +仝 > tóng; #4EDD +仞 > rèn; #4EDE +仟 > qiān; #4EDF +仠 > gán; #4EE0 +仡 > yì; #4EE1 +仢 > dí; #4EE2 +代 > dài; #4EE3 +令 > lìng; #4EE4 +以 > yĭ; #4EE5 +仦 > chào; #4EE6 +仧 > cháng; #4EE7 +仨 > sā; #4EE8 +仪 > yí; #4EEA +仫 > mù; #4EEB +们 > men; #4EEC +仭 > rèn; #4EED +仮 > jiă; #4EEE +仯 > chào; #4EEF +仰 > yăng; #4EF0 +仱 > qián; #4EF1 +仲 > zhòng; #4EF2 +仳 > pĭ; #4EF3 +仴 > wàn; #4EF4 +仵 > wŭ; #4EF5 +件 > jiàn; #4EF6 +价 > jiè; #4EF7 +仸 > yăo; #4EF8 +仹 > fēng; #4EF9 +仺 > cāng; #4EFA +任 > rèn; #4EFB +仼 > wáng; #4EFC +份 > fèn; #4EFD +仾 > dī; #4EFE +仿 > făng; #4EFF +伀 > zhōng; #4F00 +企 > qĭ; #4F01 +伂 > pèi; #4F02 +伃 > yú; #4F03 +伄 > diào; #4F04 +伅 > dùn; #4F05 +伆 > wèn; #4F06 +伇 > yì; #4F07 +伈 > xĭn; #4F08 +伉 > kàng; #4F09 +伊 > yī; #4F0A +伋 > jí; #4F0B +伌 > ài; #4F0C +伍 > wŭ; #4F0D +伎 > jì; #4F0E +伏 > fú; #4F0F +伐 > fá; #4F10 +休 > xīu; #4F11 +伒 > jìn; #4F12 +伓 > bēi; #4F13 +伔 > dăn; #4F14 +伕 > fū; #4F15 +伖 > tăng; #4F16 +众 > zhòng; #4F17 +优 > yōu; #4F18 +伙 > hŭo; #4F19 +会 > hùi; #4F1A +伛 > yŭ; #4F1B +伜 > cùi; #4F1C +伝 > chuán; #4F1D +伞 > săn; #4F1E +伟 > wĕi; #4F1F +传 > chuán; #4F20 +伡 > chē; #4F21 +伢 > yá; #4F22 +伣 > xiàn; #4F23 +伤 > shāng; #4F24 +伥 > chāng; #4F25 +伦 > lún; #4F26 +伧 > cāng; #4F27 +伨 > xùn; #4F28 +伩 > xìn; #4F29 +伪 > wĕi; #4F2A +伫 > zhù; #4F2B +伭 > xuán; #4F2D +伮 > nú; #4F2E +伯 > bó; #4F2F +估 > gū; #4F30 +伱 > nĭ; #4F31 +伲 > nĭ; #4F32 +伳 > xiè; #4F33 +伴 > bàn; #4F34 +伵 > xù; #4F35 +伶 > líng; #4F36 +伷 > zhòu; #4F37 +伸 > shēn; #4F38 +伹 > qū; #4F39 +伺 > sì; #4F3A +伻 > bēng; #4F3B +似 > sì; #4F3C +伽 > jiā; #4F3D +伾 > pī; #4F3E +伿 > yì; #4F3F +佀 > sì; #4F40 +佁 > ăi; #4F41 +佂 > zhēng; #4F42 +佃 > diàn; #4F43 +佄 > hán; #4F44 +佅 > mài; #4F45 +但 > dàn; #4F46 +佇 > zhù; #4F47 +佈 > bù; #4F48 +佉 > qū; #4F49 +佊 > bĭ; #4F4A +佋 > shào; #4F4B +佌 > cĭ; #4F4C +位 > wèi; #4F4D +低 > dī; #4F4E +住 > zhù; #4F4F +佐 > zŭo; #4F50 +佑 > yòu; #4F51 +佒 > yāng; #4F52 +体 > tĭ; #4F53 +佔 > zhàn; #4F54 +何 > hé; #4F55 +佖 > bì; #4F56 +佗 > tūo; #4F57 +佘 > shé; #4F58 +余 > yú; #4F59 +佚 > yì; #4F5A +佛 > fó; #4F5B +作 > zùo; #4F5C +佝 > kòu; #4F5D +佞 > nìng; #4F5E +佟 > tóng; #4F5F +你 > nĭ; #4F60 +佡 > xuān; #4F61 +佢 > qú; #4F62 +佣 > yòng; #4F63 +佤 > wă; #4F64 +佥 > qiān; #4F65 +佧 > kă; #4F67 +佩 > pèi; #4F69 +佪 > huái; #4F6A +佫 > hè; #4F6B +佬 > lăo; #4F6C +佭 > xiáng; #4F6D +佮 > gé; #4F6E +佯 > yáng; #4F6F +佰 > băi; #4F70 +佱 > fă; #4F71 +佲 > míng; #4F72 +佳 > jia; #4F73 +佴 > èr; #4F74 +併 > bìng; #4F75 +佶 > jí; #4F76 +佷 > hĕn; #4F77 +佸 > húo; #4F78 +佹 > gŭi; #4F79 +佺 > quán; #4F7A +佻 > tiāo; #4F7B +佼 > jiăo; #4F7C +佽 > cì; #4F7D +佾 > yì; #4F7E +使 > shĭ; #4F7F +侀 > xíng; #4F80 +侁 > shēn; #4F81 +侂 > tūo; #4F82 +侃 > kăn; #4F83 +侄 > zhí; #4F84 +侅 > gāi; #4F85 +來 > lái; #4F86 +侇 > yí; #4F87 +侈 > chĭ; #4F88 +侉 > kuā; #4F89 +侊 > guāng; #4F8A +例 > lì; #4F8B +侌 > yīn; #4F8C +侍 > shì; #4F8D +侎 > mĭ; #4F8E +侏 > zhū; #4F8F +侐 > xù; #4F90 +侑 > yòu; #4F91 +侒 > ān; #4F92 +侓 > lù; #4F93 +侔 > móu; #4F94 +侕 > ér; #4F95 +侖 > lún; #4F96 +侗 > tóng; #4F97 +侘 > chà; #4F98 +侙 > chì; #4F99 +侚 > xùn; #4F9A +供 > gōng; #4F9B +侜 > zhōu; #4F9C +依 > yī; #4F9D +侞 > rŭ; #4F9E +侟 > jiàn; #4F9F +侠 > xiá; #4FA0 +価 > jià; #4FA1 +侢 > zài; #4FA2 +侣 > lǚ; #4FA3 +侥 > jiăo; #4FA5 +侦 > zhēn; #4FA6 +侧 > cè; #4FA7 +侨 > qiáo; #4FA8 +侩 > kuài; #4FA9 +侪 > chái; #4FAA +侫 > nìng; #4FAB +侬 > nóng; #4FAC +侭 > jĭn; #4FAD +侮 > wŭ; #4FAE +侯 > hóu; #4FAF +侰 > jĭong; #4FB0 +侱 > chĕng; #4FB1 +侲 > zhèn; #4FB2 +侳 > zùo; #4FB3 +侴 > chŏu; #4FB4 +侵 > qīn; #4FB5 +侶 > lǚ; #4FB6 +侷 > jú; #4FB7 +侸 > shù; #4FB8 +侹 > tĭng; #4FB9 +侺 > shèn; #4FBA +侻 > tūo; #4FBB +侼 > bó; #4FBC +侽 > nán; #4FBD +侾 > hāo; #4FBE +便 > biàn; #4FBF +俀 > tŭi; #4FC0 +俁 > yŭ; #4FC1 +係 > xì; #4FC2 +促 > cù; #4FC3 +俄 > é; #4FC4 +俅 > qíu; #4FC5 +俆 > xú; #4FC6 +俇 > kuăng; #4FC7 +俈 > kù; #4FC8 +俉 > wù; #4FC9 +俊 > jùn; #4FCA +俋 > yì; #4FCB +俌 > fŭ; #4FCC +俍 > láng; #4FCD +俎 > zŭ; #4FCE +俏 > qiào; #4FCF +俐 > lì; #4FD0 +俑 > yŏng; #4FD1 +俒 > hùn; #4FD2 +俓 > jìng; #4FD3 +俔 > xiàn; #4FD4 +俕 > sàn; #4FD5 +俖 > păi; #4FD6 +俗 > sú; #4FD7 +俘 > fú; #4FD8 +俙 > xī; #4FD9 +俚 > lĭ; #4FDA +俛 > fŭ; #4FDB +俜 > pīng; #4FDC +保 > băo; #4FDD +俞 > yú; #4FDE +俟 > sì; #4FDF +俠 > xiá; #4FE0 +信 > xìn; #4FE1 +俢 > xīu; #4FE2 +俣 > yŭ; #4FE3 +俤 > tì; #4FE4 +俥 > chē; #4FE5 +俦 > chóu; #4FE6 +俨 > yăn; #4FE8 +俩 > liă; #4FE9 +俪 > lì; #4FEA +俫 > lái; #4FEB +俭 > jiăn; #4FED +修 > xīu; #4FEE +俯 > fŭ; #4FEF +俰 > hè; #4FF0 +俱 > jù; #4FF1 +俲 > xiào; #4FF2 +俳 > pái; #4FF3 +俴 > jiàn; #4FF4 +俵 > biào; #4FF5 +俶 > chù; #4FF6 +俷 > fèi; #4FF7 +俸 > fèng; #4FF8 +俹 > yà; #4FF9 +俺 > ăn; #4FFA +俻 > bèi; #4FFB +俼 > yù; #4FFC +俽 > xīn; #4FFD +俾 > bĭ; #4FFE +俿 > jiàn; #4FFF +倀 > chāng; #5000 +倁 > chí; #5001 +倂 > bìng; #5002 +倃 > zán; #5003 +倄 > yáo; #5004 +倅 > cùi; #5005 +倆 > liă; #5006 +倇 > wăn; #5007 +倈 > lái; #5008 +倉 > cāng; #5009 +倊 > zòng; #500A +個 > gè; #500B +倌 > guān; #500C +倍 > bèi; #500D +倎 > tiān; #500E +倏 > shū; #500F +倐 > shū; #5010 +們 > men; #5011 +倒 > dăo; #5012 +倓 > tán; #5013 +倔 > jué; #5014 +倕 > chúi; #5015 +倖 > xìng; #5016 +倗 > péng; #5017 +倘 > tăng; #5018 +候 > hòu; #5019 +倚 > yĭ; #501A +倛 > qī; #501B +倜 > tì; #501C +倝 > gàn; #501D +倞 > jìng; #501E +借 > jiè; #501F +倠 > sūi; #5020 +倡 > chàng; #5021 +倢 > jié; #5022 +倣 > făng; #5023 +値 > zhí; #5024 +倥 > kōng; #5025 +倦 > juàn; #5026 +倧 > zōng; #5027 +倨 > jù; #5028 +倩 > qiàn; #5029 +倪 > ní; #502A +倫 > lún; #502B +倬 > zhūo; #502C +倭 > wēi; #502D +倮 > lŭo; #502E +倯 > sōng; #502F +倰 > léng; #5030 +倱 > hùn; #5031 +倲 > dōng; #5032 +倳 > zì; #5033 +倴 > bèn; #5034 +倵 > wŭ; #5035 +倶 > jù; #5036 +倷 > nài; #5037 +倸 > căi; #5038 +倹 > jiăn; #5039 +债 > zhài; #503A +倻 > yē; #503B +值 > zhí; #503C +倽 > shà; #503D +倾 > qīng; #503E +偀 > yīng; #5040 +偁 > chēng; #5041 +偂 > jiān; #5042 +偃 > yăn; #5043 +偄 > nuàn; #5044 +偅 > zhòng; #5045 +偆 > chŭn; #5046 +假 > jiă; #5047 +偈 > jié; #5048 +偉 > wĕi; #5049 +偊 > yŭ; #504A +偋 > bĭng; #504B +偌 > rùo; #504C +偍 > tí; #504D +偎 > wēi; #504E +偏 > piān; #504F +偐 > yàn; #5050 +偑 > fēng; #5051 +偒 > tăng; #5052 +偓 > wò; #5053 +偔 > è; #5054 +偕 > xié; #5055 +偖 > chĕ; #5056 +偗 > shĕng; #5057 +偘 > kăn; #5058 +偙 > dì; #5059 +做 > zùo; #505A +偛 > chā; #505B +停 > tíng; #505C +偝 > bèi; #505D +偞 > yè; #505E +偟 > huáng; #505F +偠 > yăo; #5060 +偡 > zhàn; #5061 +偢 > chŏu; #5062 +偣 > yān; #5063 +偤 > yŏu; #5064 +健 > jiàn; #5065 +偦 > xū; #5066 +偧 > zhā; #5067 +偨 > cī; #5068 +偩 > fù; #5069 +偪 > bī; #506A +偫 > zhì; #506B +偬 > zŏng; #506C +偭 > miăn; #506D +偮 > jí; #506E +偯 > yĭ; #506F +偰 > xiè; #5070 +偱 > xún; #5071 +偲 > sī; #5072 +偳 > duān; #5073 +側 > cè; #5074 +偵 > zhēn; #5075 +偶 > ŏu; #5076 +偷 > tōu; #5077 +偸 > tōu; #5078 +偹 > bèi; #5079 +偺 > zá; #507A +偻 > lǚ; #507B +偼 > jié; #507C +偽 > wĕi; #507D +偾 > fèn; #507E +偿 > cháng; #507F +傀 > gūi; #5080 +傁 > sŏu; #5081 +傂 > zhì; #5082 +傃 > sù; #5083 +傄 > xiā; #5084 +傅 > fù; #5085 +傆 > yuàn; #5086 +傇 > rŏng; #5087 +傈 > lì; #5088 +傉 > rù; #5089 +傊 > yŭn; #508A +傋 > gòu; #508B +傌 > mà; #508C +傍 > bàng; #508D +傎 > diān; #508E +傏 > táng; #508F +傐 > hào; #5090 +傑 > jié; #5091 +傒 > xī; #5092 +傓 > shàn; #5093 +傔 > qiàn; #5094 +傕 > jué; #5095 +傖 > cāng; #5096 +傗 > chù; #5097 +傘 > săn; #5098 +備 > bèi; #5099 +傚 > xiào; #509A +傛 > yŏng; #509B +傜 > yáo; #509C +傝 > tàn; #509D +傞 > sūo; #509E +傟 > yăng; #509F +傠 > fā; #50A0 +傡 > bìng; #50A1 +傢 > jiā; #50A2 +傣 > dăi; #50A3 +傤 > zài; #50A4 +傥 > tăng; #50A5 +傧 > bìn; #50A7 +储 > chŭ; #50A8 +傩 > núo; #50A9 +傪 > cān; #50AA +傫 > lĕi; #50AB +催 > cūi; #50AC +傭 > yōng; #50AD +傮 > zāo; #50AE +傯 > zŏng; #50AF +傰 > péng; #50B0 +傱 > sŏng; #50B1 +傲 > ào; #50B2 +傳 > chuán; #50B3 +傴 > yŭ; #50B4 +債 > zhài; #50B5 +傶 > còu; #50B6 +傷 > shāng; #50B7 +傸 > qiăng; #50B8 +傹 > jìng; #50B9 +傺 > chì; #50BA +傻 > shă; #50BB +傼 > hàn; #50BC +傽 > zhāng; #50BD +傾 > qīng; #50BE +傿 > yàn; #50BF +僀 > dì; #50C0 +僁 > xī; #50C1 +僂 > lǚ; #50C2 +僃 > bèi; #50C3 +僄 > piào; #50C4 +僅 > jĭn; #50C5 +僆 > lián; #50C6 +僇 > lù; #50C7 +僈 > màn; #50C8 +僉 > qiān; #50C9 +僊 > xiān; #50CA +僋 > tàn; #50CB +僌 > yíng; #50CC +働 > dòng; #50CD +僎 > zhuàn; #50CE +像 > xiàng; #50CF +僐 > shàn; #50D0 +僑 > qiáo; #50D1 +僒 > jĭong; #50D2 +僓 > tŭi; #50D3 +僔 > zŭn; #50D4 +僕 > pú; #50D5 +僖 > xī; #50D6 +僗 > láo; #50D7 +僘 > chăng; #50D8 +僙 > guāng; #50D9 +僚 > liáo; #50DA +僛 > qī; #50DB +僜 > dèng; #50DC +僝 > chán; #50DD +僞 > wĕi; #50DE +僟 > jī; #50DF +僠 > fān; #50E0 +僡 > hùi; #50E1 +僢 > chuăn; #50E2 +僣 > jiàn; #50E3 +僤 > dàn; #50E4 +僥 > jiăo; #50E5 +僦 > jìu; #50E6 +僧 > sēng; #50E7 +僨 > fèn; #50E8 +僩 > xiàn; #50E9 +僪 > jué; #50EA +僫 > è; #50EB +僬 > jiāo; #50EC +僭 > jiàn; #50ED +僮 > tóng; #50EE +僯 > lĭn; #50EF +僰 > bó; #50F0 +僱 > gù; #50F1 +僳 > sù; #50F3 +僴 > xiàn; #50F4 +僵 > jiāng; #50F5 +僶 > mĭn; #50F6 +僷 > yè; #50F7 +僸 > jìn; #50F8 +價 > jià; #50F9 +僺 > qiào; #50FA +僻 > pì; #50FB +僼 > fēng; #50FC +僽 > zhòu; #50FD +僾 > ài; #50FE +僿 > sài; #50FF +儀 > yí; #5100 +儁 > jùn; #5101 +儂 > nóng; #5102 +儃 > chán; #5103 +億 > yì; #5104 +儅 > dāng; #5105 +儆 > jĭng; #5106 +儇 > xuān; #5107 +儈 > kuài; #5108 +儉 > jiăn; #5109 +儊 > chù; #510A +儋 > dān; #510B +儌 > jiăo; #510C +儍 > shă; #510D +儎 > zài; #510E +儐 > bìn; #5110 +儑 > àn; #5111 +儒 > rú; #5112 +儓 > tái; #5113 +儔 > chóu; #5114 +儕 > chái; #5115 +儖 > lán; #5116 +儗 > nĭ; #5117 +儘 > jĭn; #5118 +儙 > qiàn; #5119 +儚 > méng; #511A +儛 > wŭ; #511B +儜 > níng; #511C +儝 > qíong; #511D +儞 > nĭ; #511E +償 > cháng; #511F +儠 > liè; #5120 +儡 > lĕi; #5121 +儢 > lǚ; #5122 +儣 > kuàng; #5123 +儤 > bào; #5124 +儥 > dú; #5125 +儦 > biāo; #5126 +儧 > zăn; #5127 +儨 > zhí; #5128 +儩 > sì; #5129 +優 > yōu; #512A +儫 > háo; #512B +儬 > chèn; #512C +儭 > chèn; #512D +儮 > lì; #512E +儯 > téng; #512F +儰 > wĕi; #5130 +儱 > lŏng; #5131 +儲 > chŭ; #5132 +儳 > chàn; #5133 +儴 > ráng; #5134 +儵 > shū; #5135 +儶 > hùi; #5136 +儷 > lì; #5137 +儸 > lúo; #5138 +儹 > zăn; #5139 +儺 > núo; #513A +儻 > tăng; #513B +儼 > yăn; #513C +儽 > lĕi; #513D +儾 > nàng; #513E +儿 > ér; #513F +兀 > wù; #5140 +允 > yŭn; #5141 +兂 > zān; #5142 +元 > yuán; #5143 +兄 > xīong; #5144 +充 > chōng; #5145 +兆 > zhào; #5146 +兇 > xīong; #5147 +先 > xiān; #5148 +光 > guāng; #5149 +兊 > dùi; #514A +克 > kè; #514B +兌 > dùi; #514C +免 > miăn; #514D +兎 > tù; #514E +兏 > cháng; #514F +児 > ér; #5150 +兑 > dùi; #5151 +兒 > ér; #5152 +兓 > xīn; #5153 +兔 > tù; #5154 +兕 > sì; #5155 +兖 > yăn; #5156 +兗 > yăn; #5157 +兘 > shĭ; #5158 +兙 > shí' 'kè; #5159 +党 > dăng; #515A +兛 > qiān; #515B +兜 > dōu; #515C +兝 > fēn; #515D +兞 > máo; #515E +兟 > shēn; #515F +兠 > dōu; #5160 +兡 > băi' 'kè; #5161 +兢 > jīng; #5162 +兣 > lĭ; #5163 +兤 > huáng; #5164 +入 > rù; #5165 +兦 > wáng; #5166 +內 > nèi; #5167 +全 > quán; #5168 +兩 > liăng; #5169 +兪 > yú; #516A +八 > bā; #516B +公 > gōng; #516C +六 > lìu; #516D +兮 > xī; #516E +兰 > lán; #5170 +共 > gòng; #5171 +兲 > tiān; #5172 +关 > guān; #5173 +兴 > xīng; #5174 +兵 > bīng; #5175 +其 > qí; #5176 +具 > jù; #5177 +典 > diăn; #5178 +兹 > zī; #5179 +养 > yăng; #517B +兼 > jiān; #517C +兽 > shòu; #517D +兾 > jì; #517E +兿 > yì; #517F +冀 > jì; #5180 +冁 > chăn; #5181 +冂 > jīong; #5182 +冃 > mao; #5183 +冄 > răn; #5184 +内 > nèi; #5185 +円 > yuan; #5186 +冇 > măo; #5187 +冈 > gāng; #5188 +冉 > răn; #5189 +冊 > cè; #518A +冋 > jīong; #518B +册 > cè; #518C +再 > zài; #518D +冎 > guă; #518E +冏 > jĭong; #518F +冐 > mào; #5190 +冑 > zhòu; #5191 +冒 > mòu; #5192 +冓 > gòu; #5193 +冔 > xŭ; #5194 +冕 > miăn; #5195 +冖 > mì; #5196 +冗 > rŏng; #5197 +冘 > yín; #5198 +写 > xiĕ; #5199 +冚 > kăn; #519A +军 > jūn; #519B +农 > nóng; #519C +冝 > yí; #519D +冞 > mí; #519E +冟 > shì; #519F +冠 > guān; #51A0 +冡 > méng; #51A1 +冢 > zhŏng; #51A2 +冣 > jù; #51A3 +冤 > yuān; #51A4 +冥 > míng; #51A5 +冦 > kòu; #51A6 +冨 > fù; #51A8 +冩 > xiĕ; #51A9 +冪 > mì; #51AA +冫 > bīng; #51AB +冬 > dōng; #51AC +冭 > tái; #51AD +冮 > gāng; #51AE +冯 > féng; #51AF +冰 > bīng; #51B0 +冱 > hù; #51B1 +冲 > chōng; #51B2 +决 > jué; #51B3 +冴 > hù; #51B4 +况 > kuàng; #51B5 +冶 > yĕ; #51B6 +冷 > lĕng; #51B7 +冸 > pàn; #51B8 +冹 > fú; #51B9 +冺 > mĭn; #51BA +冻 > dòng; #51BB +冼 > xiăn; #51BC +冽 > liè; #51BD +冾 > xiá; #51BE +冿 > jiān; #51BF +净 > jìng; #51C0 +凁 > shù; #51C1 +凂 > mĕi; #51C2 +凃 > tú; #51C3 +凄 > qī; #51C4 +凅 > gù; #51C5 +准 > zhŭn; #51C6 +凇 > sòng; #51C7 +凈 > jìng; #51C8 +凉 > liáng; #51C9 +凊 > qìng; #51CA +凋 > diāo; #51CB +凌 > líng; #51CC +凍 > dòng; #51CD +凎 > gàn; #51CE +减 > jiăn; #51CF +凐 > yīn; #51D0 +凑 > còu; #51D1 +凒 > yí; #51D2 +凓 > lì; #51D3 +凔 > cāng; #51D4 +凕 > mĭng; #51D5 +凖 > zhuĕn; #51D6 +凗 > cúi; #51D7 +凘 > sī; #51D8 +凙 > dúo; #51D9 +凚 > jìn; #51DA +凛 > lĭn; #51DB +凜 > lĭn; #51DC +凝 > níng; #51DD +凞 > xī; #51DE +凟 > dú; #51DF +几 > jī; #51E0 +凡 > fán; #51E1 +凢 > fán; #51E2 +凣 > fán; #51E3 +凤 > fèng; #51E4 +凥 > jū; #51E5 +処 > chŭ; #51E6 +凨 > fēng; #51E8 +凫 > fú; #51EB +凬 > fēng; #51EC +凭 > píng; #51ED +凮 > fēng; #51EE +凯 > kăi; #51EF +凰 > huáng; #51F0 +凱 > kăi; #51F1 +凲 > gān; #51F2 +凳 > dèng; #51F3 +凴 > píng; #51F4 +凵 > qū; #51F5 +凶 > xīong; #51F6 +凷 > kuài; #51F7 +凸 > tū; #51F8 +凹 > āo; #51F9 +出 > chū; #51FA +击 > jí; #51FB +凼 > dàng; #51FC +函 > hán; #51FD +凾 > hán; #51FE +凿 > záo; #51FF +刀 > dāo; #5200 +刁 > diāo; #5201 +刂 > dāo; #5202 +刃 > rèn; #5203 +刄 > rèn; #5204 +刅 > chuāng; #5205 +分 > fēn; #5206 +切 > qiē; #5207 +刈 > yì; #5208 +刉 > jī; #5209 +刊 > kān; #520A +刋 > qiàn; #520B +刌 > cŭn; #520C +刍 > chú; #520D +刎 > wĕn; #520E +刏 > jī; #520F +刐 > dăn; #5210 +刑 > xíng; #5211 +划 > huá; #5212 +刓 > wán; #5213 +刔 > jué; #5214 +刕 > lí; #5215 +刖 > yuè; #5216 +列 > liè; #5217 +刘 > líu; #5218 +则 > zé; #5219 +刚 > gāng; #521A +创 > chuàng; #521B +刜 > fú; #521C +初 > chū; #521D +刞 > qù; #521E +刟 > jū; #521F +删 > shān; #5220 +刡 > mĭn; #5221 +刢 > líng; #5222 +刣 > zhōng; #5223 +判 > pàn; #5224 +別 > bié; #5225 +刦 > jié; #5226 +刧 > jié; #5227 +刨 > bào; #5228 +利 > lì; #5229 +刪 > shān; #522A +别 > bié; #522B +刬 > chăn; #522C +刭 > jĭng; #522D +刮 > guā; #522E +刯 > gēn; #522F +到 > dào; #5230 +刱 > chuàng; #5231 +刲 > kūi; #5232 +刳 > kū; #5233 +刴 > dùo; #5234 +刵 > èr; #5235 +制 > zhì; #5236 +刷 > shuā; #5237 +券 > quàn; #5238 +刹 > chà; #5239 +刺 > cì; #523A +刻 > kè; #523B +刼 > jié; #523C +刽 > gùi; #523D +刾 > cì; #523E +刿 > gùi; #523F +剀 > kăi; #5240 +剁 > dùo; #5241 +剂 > jì; #5242 +剃 > tì; #5243 +剄 > jĭng; #5244 +剅 > lóu; #5245 +剆 > gēn; #5246 +則 > zé; #5247 +剈 > yuān; #5248 +剉 > cùo; #5249 +削 > xuē; #524A +剋 > kè; #524B +剌 > là; #524C +前 > qián; #524D +剎 > chà; #524E +剏 > chuàng; #524F +剐 > guă; #5250 +剑 > jiàn; #5251 +剒 > cùo; #5252 +剓 > lí; #5253 +剔 > tī; #5254 +剕 > fèi; #5255 +剖 > pōu; #5256 +剗 > chăn; #5257 +剘 > qí; #5258 +剙 > chuàng; #5259 +剚 > zì; #525A +剛 > gāng; #525B +剜 > wān; #525C +剝 > bō; #525D +剞 > jī; #525E +剟 > dūo; #525F +剠 > qíng; #5260 +剡 > yăn; #5261 +剢 > zhúo; #5262 +剣 > jiàn; #5263 +剤 > jì; #5264 +剥 > bō; #5265 +剦 > yān; #5266 +剧 > jù; #5267 +剨 > hùo; #5268 +剩 > shèng; #5269 +剪 > jiăn; #526A +剫 > dúo; #526B +剬 > duān; #526C +剭 > wū; #526D +剮 > guă; #526E +副 > fù; #526F +剰 > shèng; #5270 +剱 > jiàn; #5271 +割 > gē; #5272 +剳 > zhā; #5273 +剴 > kăi; #5274 +創 > chuàng; #5275 +剶 > juān; #5276 +剷 > chăn; #5277 +剸 > tuán; #5278 +剹 > lù; #5279 +剺 > lí; #527A +剻 > fóu; #527B +剼 > shān; #527C +剽 > piào; #527D +剾 > kōu; #527E +剿 > jiăo; #527F +劀 > guā; #5280 +劁 > qiāo; #5281 +劂 > jué; #5282 +劃 > huà; #5283 +劄 > zhá; #5284 +劅 > zhùo; #5285 +劆 > lián; #5286 +劇 > jù; #5287 +劈 > pī; #5288 +劉 > líu; #5289 +劊 > gùi; #528A +劋 > jiăo; #528B +劌 > gùi; #528C +劍 > jiàn; #528D +劎 > jiàn; #528E +劏 > tāng; #528F +劐 > hūo; #5290 +劑 > jì; #5291 +劒 > jiàn; #5292 +劓 > yì; #5293 +劔 > jiàn; #5294 +劕 > zhí; #5295 +劖 > chán; #5296 +劗 > cuán; #5297 +劘 > mó; #5298 +劙 > lí; #5299 +劚 > zhú; #529A +力 > lì; #529B +劜 > yā; #529C +劝 > quàn; #529D +办 > bàn; #529E +功 > gōng; #529F +加 > jiā; #52A0 +务 > wù; #52A1 +劢 > mài; #52A2 +劣 > liè; #52A3 +劤 > jìn; #52A4 +劥 > kēng; #52A5 +劦 > xié; #52A6 +劧 > zhĭ; #52A7 +动 > dòng; #52A8 +助 > zhù; #52A9 +努 > nŭ; #52AA +劫 > jié; #52AB +劬 > qú; #52AC +劭 > shào; #52AD +劮 > yì; #52AE +劯 > zhū; #52AF +劰 > miăo; #52B0 +励 > lì; #52B1 +劲 > jìng; #52B2 +劳 > láo; #52B3 +労 > láo; #52B4 +劵 > juàn; #52B5 +劶 > kŏu; #52B6 +劷 > yáng; #52B7 +劸 > wā; #52B8 +効 > xiào; #52B9 +劺 > móu; #52BA +劻 > kuāng; #52BB +劼 > jié; #52BC +劽 > liè; #52BD +劾 > hé; #52BE +势 > shì; #52BF +勀 > kè; #52C0 +勁 > jìng; #52C1 +勂 > háo; #52C2 +勃 > bó; #52C3 +勄 > mĭn; #52C4 +勅 > chì; #52C5 +勆 > láng; #52C6 +勇 > yŏng; #52C7 +勈 > yŏng; #52C8 +勉 > miăn; #52C9 +勊 > kè; #52CA +勋 > xūn; #52CB +勌 > juàn; #52CC +勍 > qíng; #52CD +勎 > lù; #52CE +勏 > pŏu; #52CF +勐 > mĕng; #52D0 +勑 > lài; #52D1 +勒 > lè; #52D2 +勓 > kài; #52D3 +勔 > miăn; #52D4 +動 > dòng; #52D5 +勖 > xù; #52D6 +勗 > xù; #52D7 +勘 > kān; #52D8 +務 > wù; #52D9 +勚 > yì; #52DA +勛 > xūn; #52DB +勜 > wĕng; #52DC +勝 > shèng; #52DD +勞 > láo; #52DE +募 > mù; #52DF +勠 > lù; #52E0 +勡 > piào; #52E1 +勢 > shì; #52E2 +勣 > jī; #52E3 +勤 > qín; #52E4 +勥 > qiăng; #52E5 +勦 > jiăo; #52E6 +勧 > quàn; #52E7 +勨 > yăng; #52E8 +勩 > yì; #52E9 +勪 > jué; #52EA +勫 > fán; #52EB +勬 > juàn; #52EC +勭 > tóng; #52ED +勮 > jù; #52EE +勯 > dān; #52EF +勰 > xié; #52F0 +勱 > mài; #52F1 +勲 > xūn; #52F2 +勳 > xūn; #52F3 +勴 > lǜ; #52F4 +勵 > lì; #52F5 +勶 > chè; #52F6 +勷 > ráng; #52F7 +勸 > quàn; #52F8 +勹 > bāo; #52F9 +勺 > sháo; #52FA +勻 > yún; #52FB +勼 > jīu; #52FC +勽 > bào; #52FD +勾 > gōu; #52FE +勿 > wù; #52FF +匀 > yún; #5300 +匃 > gài; #5303 +匄 > gài; #5304 +包 > bāo; #5305 +匆 > cōng; #5306 +匈 > xīong; #5308 +匉 > pēng; #5309 +匊 > jú; #530A +匋 > táo; #530B +匌 > gé; #530C +匍 > pú; #530D +匎 > àn; #530E +匏 > páo; #530F +匐 > fú; #5310 +匑 > gōng; #5311 +匒 > dá; #5312 +匓 > jìu; #5313 +匔 > qīong; #5314 +匕 > bĭ; #5315 +化 > huà; #5316 +北 > bĕi; #5317 +匘 > năo; #5318 +匙 > chí; #5319 +匚 > fāng; #531A +匛 > jìu; #531B +匜 > yí; #531C +匝 > zā; #531D +匞 > jiàng; #531E +匟 > kàng; #531F +匠 > jiàng; #5320 +匡 > kuāng; #5321 +匢 > hū; #5322 +匣 > xiá; #5323 +匤 > qū; #5324 +匥 > biàn; #5325 +匦 > gŭi; #5326 +匧 > qiè; #5327 +匨 > zāng; #5328 +匩 > kuāng; #5329 +匪 > fĕi; #532A +匫 > hū; #532B +匬 > tóu; #532C +匭 > gŭi; #532D +匮 > gùi; #532E +匯 > hùi; #532F +匰 > dān; #5330 +匱 > gùi; #5331 +匲 > lián; #5332 +匳 > lián; #5333 +匴 > suăn; #5334 +匵 > dú; #5335 +匶 > jìu; #5336 +匷 > qú; #5337 +匸 > xĭ; #5338 +匹 > pĭ; #5339 +区 > qū; #533A +医 > yì; #533B +匼 > qià; #533C +匽 > yăn; #533D +匾 > biăn; #533E +匿 > nì; #533F +區 > qū; #5340 +十 > shí; #5341 +卂 > xìn; #5342 +千 > qiān; #5343 +卄 > niàn; #5344 +卅 > sà; #5345 +卆 > zú; #5346 +升 > shēng; #5347 +午 > wŭ; #5348 +卉 > hùi; #5349 +半 > bàn; #534A +卋 > shì; #534B +卌 > xì; #534C +卍 > wàn; #534D +华 > huá; #534E +协 > xié; #534F +卐 > wàn; #5350 +卑 > bēi; #5351 +卒 > zú; #5352 +卓 > zhūo; #5353 +協 > xié; #5354 +单 > dān; #5355 +卖 > mài; #5356 +南 > nán; #5357 +単 > dān; #5358 +卙 > jí; #5359 +博 > bó; #535A +卛 > shuài; #535B +卜 > bŭ; #535C +卝 > kuàng; #535D +卞 > biàn; #535E +卟 > bŭ; #535F +占 > zhān; #5360 +卡 > qiă; #5361 +卢 > lú; #5362 +卣 > yŏu; #5363 +卤 > lŭ; #5364 +卥 > xī; #5365 +卦 > guà; #5366 +卧 > wò; #5367 +卨 > xiè; #5368 +卩 > jié; #5369 +卪 > jié; #536A +卫 > wèi; #536B +卬 > áng; #536C +卭 > qíong; #536D +卮 > zhī; #536E +卯 > măo; #536F +印 > yìn; #5370 +危 > wēi; #5371 +卲 > shào; #5372 +即 > jí; #5373 +却 > què; #5374 +卵 > luăn; #5375 +卶 > shì; #5376 +卷 > juàn; #5377 +卸 > xiè; #5378 +卹 > xù; #5379 +卺 > jĭn; #537A +卻 > què; #537B +卼 > wù; #537C +卽 > jí; #537D +卾 > è; #537E +卿 > qīng; #537F +厀 > xī; #5380 +厂 > hàn; #5382 +厃 > zhān; #5383 +厄 > è; #5384 +厅 > tīng; #5385 +历 > lì; #5386 +厇 > zhé; #5387 +厈 > hăn; #5388 +厉 > lì; #5389 +厊 > yă; #538A +压 > yā; #538B +厌 > yàn; #538C +厍 > shè; #538D +厎 > zhĭ; #538E +厏 > zhă; #538F +厐 > páng; #5390 +厒 > hé; #5392 +厓 > yá; #5393 +厔 > zhì; #5394 +厕 > cè; #5395 +厖 > páng; #5396 +厗 > tí; #5397 +厘 > lí; #5398 +厙 > shè; #5399 +厚 > hòu; #539A +厛 > tīng; #539B +厜 > zūi; #539C +厝 > cùo; #539D +厞 > fèi; #539E +原 > yuán; #539F +厠 > cè; #53A0 +厡 > yuán; #53A1 +厢 > xiāng; #53A2 +厣 > yăn; #53A3 +厤 > lì; #53A4 +厥 > jué; #53A5 +厦 > shà; #53A6 +厧 > diān; #53A7 +厨 > chú; #53A8 +厩 > jìu; #53A9 +厪 > qín; #53AA +厫 > áo; #53AB +厬 > gŭi; #53AC +厭 > yàn; #53AD +厮 > sī; #53AE +厯 > lì; #53AF +厰 > chăng; #53B0 +厱 > lán; #53B1 +厲 > lì; #53B2 +厳 > yán; #53B3 +厴 > yăn; #53B4 +厵 > yuán; #53B5 +厶 > sī; #53B6 +厷 > gōng; #53B7 +厸 > lín; #53B8 +厹 > qíu; #53B9 +厺 > qù; #53BA +去 > qù; #53BB +厽 > lĕi; #53BD +厾 > dū; #53BE +县 > xiàn; #53BF +叀 > zhuān; #53C0 +叁 > sān; #53C1 +参 > cān; #53C2 +參 > cān; #53C3 +叄 > cān; #53C4 +叅 > cān; #53C5 +叆 > ài; #53C6 +叇 > dài; #53C7 +又 > yòu; #53C8 +叉 > cha; #53C9 +及 > jí; #53CA +友 > yŏu; #53CB +双 > shuāng; #53CC +反 > făn; #53CD +収 > shōu; #53CE +叏 > guài; #53CF +叐 > bá; #53D0 +发 > fā; #53D1 +叒 > rùo; #53D2 +叓 > shì; #53D3 +叔 > shū; #53D4 +叕 > zhúo; #53D5 +取 > qū; #53D6 +受 > shòu; #53D7 +变 > biàn; #53D8 +叙 > xù; #53D9 +叚 > jiă; #53DA +叛 > pàn; #53DB +叜 > sŏu; #53DC +叝 > gào; #53DD +叞 > wèi; #53DE +叟 > sŏu; #53DF +叠 > dié; #53E0 +叡 > rùi; #53E1 +叢 > cóng; #53E2 +口 > kŏu; #53E3 +古 > gŭ; #53E4 +句 > jù; #53E5 +另 > lìng; #53E6 +叧 > guă; #53E7 +叨 > tāo; #53E8 +叩 > kòu; #53E9 +只 > zhĭ; #53EA +叫 > jiào; #53EB +召 > zhào; #53EC +叭 > bā; #53ED +叮 > dīng; #53EE +可 > kĕ; #53EF +台 > tái; #53F0 +叱 > chì; #53F1 +史 > shĭ; #53F2 +右 > yòu; #53F3 +叴 > qíu; #53F4 +叵 > pŏ; #53F5 +叶 > xié; #53F6 +号 > hào; #53F7 +司 > sī; #53F8 +叹 > tàn; #53F9 +叺 > chĭ; #53FA +叻 > lè; #53FB +叼 > diāo; #53FC +叽 > jī; #53FD +叿 > hōng; #53FF +吀 > miē; #5400 +吁 > xū; #5401 +吂 > máng; #5402 +吃 > chī; #5403 +各 > gè; #5404 +吅 > xuān; #5405 +吆 > yāo; #5406 +吇 > zĭ; #5407 +合 > hé; #5408 +吉 > jí; #5409 +吊 > diào; #540A +吋 > cùn; #540B +同 > tóng; #540C +名 > míng; #540D +后 > hòu; #540E +吏 > lì; #540F +吐 > tŭ; #5410 +向 > xiàng; #5411 +吒 > zhà; #5412 +吓 > xià; #5413 +吔 > yĕ; #5414 +吕 > lǚ; #5415 +吖 > ā; #5416 +吗 > ma; #5417 +吘 > ŏu; #5418 +吙 > xuē; #5419 +吚 > yī; #541A +君 > jūn; #541B +吜 > chŏu; #541C +吝 > lìn; #541D +吞 > tūn; #541E +吟 > yín; #541F +吠 > fèi; #5420 +吡 > bĭ; #5421 +吢 > qìn; #5422 +吣 > qìn; #5423 +吤 > jiè; #5424 +吥 > bù; #5425 +否 > fŏu; #5426 +吧 > ba; #5427 +吨 > dūn; #5428 +吩 > fēn; #5429 +吪 > é; #542A +含 > hán; #542B +听 > tīng; #542C +吭 > háng; #542D +吮 > shŭn; #542E +启 > qĭ; #542F +吰 > hóng; #5430 +吱 > zhī; #5431 +吲 > shĕn; #5432 +吳 > wú; #5433 +吴 > wú; #5434 +吵 > chăo; #5435 +吶 > nè; #5436 +吷 > xuè; #5437 +吸 > xī; #5438 +吹 > chūi; #5439 +吺 > dōu; #543A +吻 > wĕn; #543B +吼 > hŏu; #543C +吽 > óu; #543D +吾 > wú; #543E +吿 > gào; #543F +呀 > yā; #5440 +呁 > jùn; #5441 +呂 > lǚ; #5442 +呃 > è; #5443 +呄 > gé; #5444 +呅 > méi; #5445 +呆 > ái; #5446 +呇 > qĭ; #5447 +呈 > chéng; #5448 +呉 > wú; #5449 +告 > gào; #544A +呋 > fū; #544B +呌 > jiào; #544C +呍 > hōng; #544D +呎 > chĭ; #544E +呏 > shēng; #544F +呐 > nè; #5450 +呑 > tūn; #5451 +呒 > fŭ; #5452 +呓 > yì; #5453 +呔 > dāi; #5454 +呕 > ōu; #5455 +呖 > lì; #5456 +呗 > bài; #5457 +员 > yuán; #5458 +呙 > kuāi; #5459 +呛 > qiāng; #545B +呜 > wū; #545C +呝 > è; #545D +呞 > shī; #545E +呟 > quăn; #545F +呠 > pēn; #5460 +呡 > wĕn; #5461 +呢 > ní; #5462 +呣 > ḿ; #5463 +呤 > lĭng; #5464 +呥 > răn; #5465 +呦 > yōu; #5466 +呧 > dĭ; #5467 +周 > zhōu; #5468 +呩 > shì; #5469 +呪 > zhòu; #546A +呫 > tiē; #546B +呬 > xì; #546C +呭 > yì; #546D +呮 > qì; #546E +呯 > píng; #546F +呰 > zĭ; #5470 +呱 > gū; #5471 +呲 > zī; #5472 +味 > wèi; #5473 +呴 > xū; #5474 +呵 > hē; #5475 +呶 > náo; #5476 +呷 > xiā; #5477 +呸 > pēi; #5478 +呹 > yì; #5479 +呺 > xiāo; #547A +呻 > shēn; #547B +呼 > hū; #547C +命 > mìng; #547D +呾 > dá; #547E +呿 > qū; #547F +咀 > jŭ; #5480 +咁 > gèm; #5481 +咂 > zā; #5482 +咃 > tūo; #5483 +咄 > dūo; #5484 +咅 > pòu; #5485 +咆 > páo; #5486 +咇 > bì; #5487 +咈 > fú; #5488 +咉 > yāng; #5489 +咊 > hé; #548A +咋 > zhà; #548B +和 > hé; #548C +咍 > hāi; #548D +咎 > jìu; #548E +咏 > yŏng; #548F +咐 > fù; #5490 +咑 > què; #5491 +咒 > zhòu; #5492 +咓 > wă; #5493 +咔 > kă; #5494 +咕 > gū; #5495 +咖 > kā; #5496 +咗 > zŭo; #5497 +咘 > bù; #5498 +咙 > lóng; #5499 +咚 > dōng; #549A +咛 > níng; #549B +咝 > sī; #549D +咞 > xiàn; #549E +咟 > hùo; #549F +咠 > qì; #54A0 +咡 > èr; #54A1 +咢 > è; #54A2 +咣 > guāng; #54A3 +咤 > zhà; #54A4 +咥 > xì; #54A5 +咦 > yí; #54A6 +咧 > liĕ; #54A7 +咨 > zī; #54A8 +咩 > miē; #54A9 +咪 > mī; #54AA +咫 > zhĭ; #54AB +咬 > yăo; #54AC +咭 > jī; #54AD +咮 > zhòu; #54AE +咯 > gē; #54AF +咰 > shuài; #54B0 +咱 > zán; #54B1 +咲 > xiào; #54B2 +咳 > ké; #54B3 +咴 > hūi; #54B4 +咵 > kuā; #54B5 +咶 > huài; #54B6 +咷 > táo; #54B7 +咸 > xián; #54B8 +咹 > è; #54B9 +咺 > xuān; #54BA +咻 > xīu; #54BB +咼 > wāi; #54BC +咽 > yān; #54BD +咾 > lăo; #54BE +咿 > yī; #54BF +哀 > āi; #54C0 +品 > pĭn; #54C1 +哂 > shĕn; #54C2 +哃 > tóng; #54C3 +哄 > hōng; #54C4 +哅 > xīong; #54C5 +哆 > chĭ; #54C6 +哇 > wā; #54C7 +哈 > hā; #54C8 +哉 > zāi; #54C9 +哊 > yù; #54CA +哋 > dì; #54CB +哌 > pài; #54CC +响 > xiăng; #54CD +哎 > āi; #54CE +哏 > hĕn; #54CF +哐 > kuāng; #54D0 +哑 > yă; #54D1 +哒 > dā; #54D2 +哓 > xiāo; #54D3 +哔 > bì; #54D4 +哕 > yuĕ; #54D5 +哗 > huā; #54D7 +哙 > kuài; #54D9 +哚 > dŭo; #54DA +哜 > jì; #54DC +哝 > nóng; #54DD +哞 > mōu; #54DE +哟 > yo; #54DF +哠 > hào; #54E0 +員 > yuán; #54E1 +哢 > lòng; #54E2 +哣 > pŏu; #54E3 +哤 > máng; #54E4 +哥 > gē; #54E5 +哦 > é; #54E6 +哧 > chī; #54E7 +哨 > shào; #54E8 +哩 > lī; #54E9 +哪 > nă; #54EA +哫 > zú; #54EB +哬 > hé; #54EC +哭 > kū; #54ED +哮 > xiāo; #54EE +哯 > xiàn; #54EF +哰 > láo; #54F0 +哱 > bō; #54F1 +哲 > zhé; #54F2 +哳 > zhā; #54F3 +哴 > liàng; #54F4 +哵 > bā; #54F5 +哶 > miē; #54F6 +哷 > lè; #54F7 +哸 > sūi; #54F8 +哹 > fóu; #54F9 +哺 > bŭ; #54FA +哻 > hàn; #54FB +哼 > hēng; #54FC +哽 > gĕng; #54FD +哾 > shūo; #54FE +哿 > gĕ; #54FF +唀 > yŏu; #5500 +唁 > yàn; #5501 +唂 > gŭ; #5502 +唃 > gŭ; #5503 +唄 > bài; #5504 +唅 > hān; #5505 +唆 > sūo; #5506 +唇 > chún; #5507 +唈 > yì; #5508 +唉 > āi; #5509 +唊 > jiá; #550A +唋 > tŭ; #550B +唌 > xián; #550C +唍 > huăn; #550D +唎 > lī; #550E +唏 > xī; #550F +唐 > táng; #5510 +唑 > zùo; #5511 +唒 > qíu; #5512 +唓 > chē; #5513 +唔 > wú; #5514 +唕 > zào; #5515 +唖 > yă; #5516 +唗 > dōu; #5517 +唘 > qĭ; #5518 +唙 > dí; #5519 +唚 > qìn; #551A +唛 > mà; #551B +唝 > hŏng; #551D +唞 > dŏu; #551E +唠 > láo; #5520 +唡 > liăng; #5521 +唢 > sŭo; #5522 +唣 > zào; #5523 +唤 > huàn; #5524 +唦 > shā; #5526 +唧 > jī; #5527 +唨 > zŭo; #5528 +唩 > wō; #5529 +唪 > fĕng; #552A +唫 > yín; #552B +唬 > hŭ; #552C +唭 > qī; #552D +售 > shòu; #552E +唯 > wéi; #552F +唰 > shuā; #5530 +唱 > chàng; #5531 +唲 > ér; #5532 +唳 > lì; #5533 +唴 > qiàng; #5534 +唵 > ăn; #5535 +唶 > jiè; #5536 +唷 > yō; #5537 +唸 > niàn; #5538 +唹 > yū; #5539 +唺 > tiăn; #553A +唻 > lăi; #553B +唼 > shà; #553C +唽 > xī; #553D +唾 > tùo; #553E +唿 > hū; #553F +啀 > ái; #5540 +啁 > zhōu; #5541 +啂 > nòu; #5542 +啃 > kĕn; #5543 +啄 > zhúo; #5544 +啅 > zhúo; #5545 +商 > shāng; #5546 +啇 > dí; #5547 +啈 > hèng; #5548 +啉 > lán; #5549 +啊 > a; #554A +啋 > xiāo; #554B +啌 > xiāng; #554C +啍 > tūn; #554D +啎 > wŭ; #554E +問 > wèn; #554F +啐 > cùi; #5550 +啑 > shà; #5551 +啒 > hū; #5552 +啓 > qĭ; #5553 +啔 > qĭ; #5554 +啕 > táo; #5555 +啖 > dàn; #5556 +啗 > dàn; #5557 +啘 > yè; #5558 +啙 > zĭ; #5559 +啚 > bĭ; #555A +啛 > cùi; #555B +啜 > chùo; #555C +啝 > hé; #555D +啞 > yă; #555E +啟 > qĭ; #555F +啠 > zhé; #5560 +啡 > pēi; #5561 +啢 > liăng; #5562 +啣 > xián; #5563 +啤 > pí; #5564 +啥 > shà; #5565 +啦 > la; #5566 +啧 > zé; #5567 +啨 > qīng; #5568 +啩 > guà; #5569 +啪 > pā; #556A +啫 > zhĕ; #556B +啬 > sè; #556C +啭 > zhuàn; #556D +啮 > niè; #556E +啯 > guo; #556F +啰 > lūo; #5570 +啱 > yān; #5571 +啲 > dì; #5572 +啳 > quán; #5573 +啴 > tān; #5574 +啵 > bo; #5575 +啶 > dìng; #5576 +啷 > lāng; #5577 +啸 > xiào; #5578 +啺 > táng; #557A +啻 > chì; #557B +啼 > tí; #557C +啽 > án; #557D +啾 > jīu; #557E +啿 > dàn; #557F +喀 > kè; #5580 +喁 > yóng; #5581 +喂 > wèi; #5582 +喃 > nán; #5583 +善 > shàn; #5584 +喅 > yù; #5585 +喆 > zhé; #5586 +喇 > lă; #5587 +喈 > jiē; #5588 +喉 > hóu; #5589 +喊 > hăn; #558A +喋 > dié; #558B +喌 > zhōu; #558C +喍 > chái; #558D +喎 > wāi; #558E +喏 > rĕ; #558F +喐 > yù; #5590 +喑 > yīn; #5591 +喒 > zán; #5592 +喓 > yāo; #5593 +喔 > wō; #5594 +喕 > miăn; #5595 +喖 > hú; #5596 +喗 > yŭn; #5597 +喘 > chuăn; #5598 +喙 > hùi; #5599 +喚 > huàn; #559A +喛 > huàn; #559B +喜 > xĭ; #559C +喝 > hē; #559D +喞 > jī; #559E +喟 > kùi; #559F +喠 > zhŏng; #55A0 +喡 > wĕi; #55A1 +喢 > shà; #55A2 +喣 > xŭ; #55A3 +喤 > huáng; #55A4 +喥 > dù; #55A5 +喦 > niè; #55A6 +喧 > 1xuān; #55A7 +喨 > liàng; #55A8 +喩 > yù; #55A9 +喪 > sāng; #55AA +喫 > chī; #55AB +喬 > qiáo; #55AC +喭 > yàn; #55AD +單 > dān; #55AE +喯 > pēn; #55AF +喰 > cān; #55B0 +喱 > lí; #55B1 +喲 > yo; #55B2 +喳 > zhā; #55B3 +喴 > wēi; #55B4 +喵 > miāo; #55B5 +営 > yíng; #55B6 +喷 > pēn; #55B7 +喹 > kúi; #55B9 +喺 > xì; #55BA +喻 > yù; #55BB +喼 > jié; #55BC +喽 > lou; #55BD +喾 > kù; #55BE +喿 > sào; #55BF +嗀 > hùo; #55C0 +嗁 > tí; #55C1 +嗂 > yáo; #55C2 +嗃 > hè; #55C3 +嗄 > á; #55C4 +嗅 > xìu; #55C5 +嗆 > qiāng; #55C6 +嗇 > sè; #55C7 +嗈 > yōng; #55C8 +嗉 > sù; #55C9 +嗊 > hŏng; #55CA +嗋 > xié; #55CB +嗌 > yì; #55CC +嗍 > sūo; #55CD +嗎 > ma; #55CE +嗏 > chā; #55CF +嗐 > hài; #55D0 +嗑 > kè; #55D1 +嗒 > tà; #55D2 +嗓 > săng; #55D3 +嗔 > tián; #55D4 +嗕 > rù; #55D5 +嗖 > sōu; #55D6 +嗗 > wā; #55D7 +嗘 > jī; #55D8 +嗙 > păng; #55D9 +嗚 > wū; #55DA +嗛 > xián; #55DB +嗜 > shì; #55DC +嗝 > gé; #55DD +嗞 > zī; #55DE +嗟 > jiē; #55DF +嗠 > lùo; #55E0 +嗡 > wēng; #55E1 +嗢 > wà; #55E2 +嗣 > sì; #55E3 +嗤 > chī; #55E4 +嗥 > háo; #55E5 +嗦 > sūo; #55E6 +嗧 > jiā' 'lún; #55E7 +嗨 > hăi; #55E8 +嗩 > sŭo; #55E9 +嗪 > qín; #55EA +嗫 > niè; #55EB +嗬 > hē; #55EC +嗮 > sài; #55EE +嗯 > ǹg; #55EF +嗰 > gè; #55F0 +嗱 > ná; #55F1 +嗲 > diă; #55F2 +嗳 > ài; #55F3 +嗵 > tōng; #55F5 +嗶 > bì; #55F6 +嗷 > áo; #55F7 +嗸 > áo; #55F8 +嗹 > lián; #55F9 +嗺 > cūi; #55FA +嗻 > zhē; #55FB +嗼 > mò; #55FC +嗽 > sòu; #55FD +嗾 > sŏu; #55FE +嗿 > tăn; #55FF +嘀 > dí; #5600 +嘁 > qī; #5601 +嘂 > jiào; #5602 +嘃 > chōng; #5603 +嘄 > jiāo; #5604 +嘅 > kăi; #5605 +嘆 > tàn; #5606 +嘇 > sān; #5607 +嘈 > cáo; #5608 +嘉 > jiā; #5609 +嘊 > ái; #560A +嘋 > xiāo; #560B +嘌 > piāo; #560C +嘍 > lou; #560D +嘎 > gā; #560E +嘏 > gŭ; #560F +嘐 > xiāo; #5610 +嘑 > hū; #5611 +嘒 > hùi; #5612 +嘓 > guo; #5613 +嘔 > ōu; #5614 +嘕 > xiān; #5615 +嘖 > zé; #5616 +嘗 > cháng; #5617 +嘘 > xū; #5618 +嘙 > pó; #5619 +嘚 > dé; #561A +嘛 > ma; #561B +嘜 > mà; #561C +嘝 > hú; #561D +嘞 > lei; #561E +嘟 > dū; #561F +嘠 > gā; #5620 +嘡 > tāng; #5621 +嘢 > yĕ; #5622 +嘣 > bēng; #5623 +嘤 > yīng; #5624 +嘦 > jiào; #5626 +嘧 > mī; #5627 +嘨 > xiào; #5628 +嘩 > huā; #5629 +嘪 > măi; #562A +嘫 > rán; #562B +嘬 > zūo; #562C +嘭 > pēng; #562D +嘮 > láo; #562E +嘯 > xiào; #562F +嘰 > jī; #5630 +嘱 > zhŭ; #5631 +嘲 > cháo; #5632 +嘳 > kùi; #5633 +嘴 > zŭi; #5634 +嘵 > xiāo; #5635 +嘶 > sī; #5636 +嘷 > háo; #5637 +嘸 > fŭ; #5638 +嘹 > liáo; #5639 +嘺 > qiáo; #563A +嘻 > xī; #563B +嘼 > xìu; #563C +嘽 > tān; #563D +嘾 > tán; #563E +嘿 > mò; #563F +噀 > xùn; #5640 +噁 > ĕ; #5641 +噂 > zŭn; #5642 +噃 > fān; #5643 +噄 > chī; #5644 +噅 > hūi; #5645 +噆 > zăn; #5646 +噇 > chuáng; #5647 +噈 > cù; #5648 +噉 > dàn; #5649 +噊 > yù; #564A +噋 > tūn; #564B +噌 > chēng; #564C +噍 > jiào; #564D +噎 > yē; #564E +噏 > xī; #564F +噐 > qì; #5650 +噑 > háo; #5651 +噒 > lián; #5652 +噓 > xū; #5653 +噔 > dēng; #5654 +噕 > hūi; #5655 +噖 > yín; #5656 +噗 > pū; #5657 +噘 > juē; #5658 +噙 > qín; #5659 +噚 > xún; #565A +噛 > niè; #565B +噜 > lū; #565C +噝 > sī; #565D +噞 > yăn; #565E +噟 > yìng; #565F +噠 > dā; #5660 +噡 > dān; #5661 +噢 > yŭ; #5662 +噣 > zhòu; #5663 +噤 > jìn; #5664 +噥 > nóng; #5665 +噦 > yuĕ; #5666 +噧 > hùi; #5667 +器 > qì; #5668 +噩 > è; #5669 +噪 > zào; #566A +噫 > yī; #566B +噬 > shì; #566C +噭 > jiào; #566D +噮 > yuān; #566E +噯 > ài; #566F +噰 > yōng; #5670 +噱 > jué; #5671 +噲 > kuài; #5672 +噳 > yŭ; #5673 +噴 > pēn; #5674 +噵 > dào; #5675 +噶 > gé; #5676 +噷 > xīn; #5677 +噸 > dūn; #5678 +噹 > dāng; #5679 +噻 > sai; #567B +噼 > pī; #567C +噽 > pĭ; #567D +噾 > yīn; #567E +噿 > zŭi; #567F +嚀 > níng; #5680 +嚁 > dí; #5681 +嚂 > làn; #5682 +嚃 > tā; #5683 +嚄 > hùo; #5684 +嚅 > rú; #5685 +嚆 > hāo; #5686 +嚇 > xià; #5687 +嚈 > yà; #5688 +嚉 > dūo; #5689 +嚊 > xì; #568A +嚋 > chóu; #568B +嚌 > jì; #568C +嚍 > jìn; #568D +嚎 > háo; #568E +嚏 > tì; #568F +嚐 > cháng; #5690 +嚓 > cā; #5693 +嚔 > tì; #5694 +嚕 > lū; #5695 +嚖 > hùi; #5696 +嚗 > bó; #5697 +嚘 > yōu; #5698 +嚙 > niè; #5699 +嚚 > yín; #569A +嚛 > hù; #569B +嚜 > mò; #569C +嚝 > huāng; #569D +嚞 > zhé; #569E +嚟 > lí; #569F +嚠 > líu; #56A0 +嚢 > náng; #56A2 +嚣 > xiāo; #56A3 +嚤 > mó; #56A4 +嚥 > yàn; #56A5 +嚦 > lì; #56A6 +嚧 > lú; #56A7 +嚨 > lóng; #56A8 +嚩 > fú; #56A9 +嚪 > dàn; #56AA +嚫 > chèn; #56AB +嚬 > pín; #56AC +嚭 > pĭ; #56AD +嚮 > xiàng; #56AE +嚯 > hùo; #56AF +嚰 > mó; #56B0 +嚱 > xì; #56B1 +嚲 > dŭo; #56B2 +嚳 > kù; #56B3 +嚴 > yán; #56B4 +嚵 > chán; #56B5 +嚶 > yīng; #56B6 +嚷 > răng; #56B7 +嚸 > diăn; #56B8 +嚹 > lā; #56B9 +嚺 > tà; #56BA +嚻 > xiāo; #56BB +嚼 > jiáo; #56BC +嚽 > chùo; #56BD +嚾 > huān; #56BE +嚿 > hùo; #56BF +囀 > zhuàn; #56C0 +囁 > niè; #56C1 +囂 > xiāo; #56C2 +囃 > cà; #56C3 +囄 > lí; #56C4 +囅 > chăn; #56C5 +囆 > chài; #56C6 +囇 > lì; #56C7 +囈 > yì; #56C8 +囉 > lūo; #56C9 +囊 > náng; #56CA +囋 > zàn; #56CB +囌 > sū; #56CC +囍 > xĭ; #56CD +囏 > jiān; #56CF +囐 > zá; #56D0 +囑 > zhŭ; #56D1 +囒 > lán; #56D2 +囓 > niè; #56D3 +囔 > nāng; #56D4 +囗 > wéi; #56D7 +囘 > húi; #56D8 +囙 > yīn; #56D9 +囚 > qíu; #56DA +四 > sì; #56DB +囜 > nín; #56DC +囝 > jiăn; #56DD +回 > húi; #56DE +囟 > xìn; #56DF +因 > yīn; #56E0 +囡 > nān; #56E1 +团 > tuán; #56E2 +団 > tuán; #56E3 +囤 > dùn; #56E4 +囥 > kàng; #56E5 +囦 > yuān; #56E6 +囧 > jĭong; #56E7 +囨 > piān; #56E8 +囩 > yùn; #56E9 +囪 > cōng; #56EA +囫 > hú; #56EB +囬 > húi; #56EC +园 > yuán; #56ED +囮 > yóu; #56EE +囯 > gúo; #56EF +困 > kùn; #56F0 +囱 > cōng; #56F1 +囲 > wéi; #56F2 +図 > tú; #56F3 +围 > wéi; #56F4 +囵 > lún; #56F5 +囶 > gúo; #56F6 +囷 > qūn; #56F7 +囸 > rì; #56F8 +囹 > líng; #56F9 +固 > gù; #56FA +囻 > gúo; #56FB +囼 > tāi; #56FC +国 > gúo; #56FD +图 > tú; #56FE +囿 > yòu; #56FF +圀 > gúo; #5700 +圁 > yín; #5701 +圂 > hùn; #5702 +圃 > pŭ; #5703 +圄 > yŭ; #5704 +圅 > hán; #5705 +圆 > yuán; #5706 +圇 > lún; #5707 +圈 > quān; #5708 +圉 > yŭ; #5709 +圊 > qīng; #570A +國 > gúo; #570B +圌 > chuán; #570C +圍 > wéi; #570D +圎 > yuán; #570E +圏 > quān; #570F +圐 > kū; #5710 +圑 > fù; #5711 +園 > yuán; #5712 +圓 > yuán; #5713 +圔 > è; #5714 +圕 > tú' 'shū' 'guăn; #5715 +圖 > tú; #5716 +圗 > tú; #5717 +團 > tuán; #5718 +圙 > lǜe; #5719 +圚 > hùi; #571A +圛 > yì; #571B +圜 > yuán; #571C +圝 > luán; #571D +圞 > luán; #571E +土 > tŭ; #571F +圠 > yà; #5720 +圡 > tŭ; #5721 +圢 > tīng; #5722 +圣 > shèng; #5723 +圤 > pŭ; #5724 +圥 > lù; #5725 +圧 > yā; #5727 +在 > zài; #5728 +圩 > wéi; #5729 +圪 > gē; #572A +圫 > yù; #572B +圬 > wū; #572C +圭 > gūi; #572D +圮 > pĭ; #572E +圯 > yí; #572F +地 > dì; #5730 +圱 > qiān; #5731 +圲 > qiān; #5732 +圳 > zhèn; #5733 +圴 > zhúo; #5734 +圵 > dàng; #5735 +圶 > qià; #5736 +圹 > kuàng; #5739 +场 > cháng; #573A +圻 > qí; #573B +圼 > niè; #573C +圽 > mò; #573D +圾 > jí; #573E +圿 > jiá; #573F +址 > zhĭ; #5740 +坁 > zhĭ; #5741 +坂 > băn; #5742 +坃 > xūn; #5743 +坄 > tóu; #5744 +坅 > qĭn; #5745 +坆 > fén; #5746 +均 > jūn; #5747 +坈 > kēng; #5748 +坉 > tún; #5749 +坊 > fāng; #574A +坋 > fèn; #574B +坌 > bèn; #574C +坍 > tān; #574D +坎 > kăn; #574E +坏 > pī; #574F +坐 > zùo; #5750 +坑 > kēng; #5751 +坒 > bì; #5752 +坓 > xíng; #5753 +坔 > dì; #5754 +坕 > jīng; #5755 +坖 > jì; #5756 +块 > kuài; #5757 +坘 > dĭ; #5758 +坙 > jīng; #5759 +坚 > jiān; #575A +坛 > tán; #575B +坜 > lì; #575C +坝 > bà; #575D +坞 > wù; #575E +坟 > fén; #575F +坠 > zhùi; #5760 +坡 > pō; #5761 +坢 > păn; #5762 +坣 > tāng; #5763 +坤 > kūn; #5764 +坥 > qū; #5765 +坦 > tăn; #5766 +坧 > zhī; #5767 +坨 > túo; #5768 +坩 > gān; #5769 +坪 > píng; #576A +坫 > diàn; #576B +坬 > guà; #576C +坭 > ní; #576D +坮 > tái; #576E +坯 > pī; #576F +坰 > jīong; #5770 +坱 > yăng; #5771 +坲 > fó; #5772 +坳 > ào; #5773 +坴 > lìu; #5774 +坵 > qīu; #5775 +坶 > mù; #5776 +坷 > kĕ; #5777 +坸 > gòu; #5778 +坹 > xuè; #5779 +坺 > bá; #577A +坻 > chí; #577B +坼 > chè; #577C +坽 > líng; #577D +坾 > zhù; #577E +坿 > fù; #577F +垀 > hū; #5780 +垁 > zhì; #5781 +垂 > chúi; #5782 +垃 > lā; #5783 +垄 > lŏng; #5784 +垅 > lŏng; #5785 +垆 > lú; #5786 +垇 > ào; #5787 +垉 > páo; #5789 +型 > xíng; #578B +垌 > dòng; #578C +垍 > jì; #578D +垎 > kè; #578E +垏 > lù; #578F +垐 > cí; #5790 +垑 > chĭ; #5791 +垒 > lĕi; #5792 +垓 > gāi; #5793 +垔 > yīn; #5794 +垕 > hòu; #5795 +垖 > dūi; #5796 +垗 > zhào; #5797 +垘 > fú; #5798 +垙 > guāng; #5799 +垚 > yáo; #579A +垛 > dŭo; #579B +垜 > dŭo; #579C +垝 > gŭi; #579D +垞 > chá; #579E +垟 > yáng; #579F +垠 > yín; #57A0 +垡 > fá; #57A1 +垢 > gòu; #57A2 +垣 > yuán; #57A3 +垤 > dié; #57A4 +垥 > xié; #57A5 +垦 > kĕn; #57A6 +垧 > jīong; #57A7 +垨 > shŏu; #57A8 +垩 > è; #57A9 +垫 > diàn; #57AB +垬 > hóng; #57AC +垭 > wù; #57AD +垮 > kuă; #57AE +垱 > dàng; #57B1 +垲 > kăi; #57B2 +垴 > năo; #57B4 +垵 > ăn; #57B5 +垶 > xīng; #57B6 +垷 > xiàn; #57B7 +垸 > huàn; #57B8 +垹 > bāng; #57B9 +垺 > pēi; #57BA +垻 > bà; #57BB +垼 > yì; #57BC +垽 > yìn; #57BD +垾 > hàn; #57BE +垿 > xù; #57BF +埀 > chúi; #57C0 +埁 > cén; #57C1 +埂 > gĕng; #57C2 +埃 > āi; #57C3 +埄 > péng; #57C4 +埅 > fáng; #57C5 +埆 > què; #57C6 +埇 > yŏng; #57C7 +埈 > xùn; #57C8 +埉 > jiá; #57C9 +埊 > dì; #57CA +埋 > mái; #57CB +埌 > làng; #57CC +埍 > xuàn; #57CD +城 > chéng; #57CE +埏 > yán; #57CF +埐 > jīn; #57D0 +埑 > zhé; #57D1 +埒 > lèi; #57D2 +埓 > liè; #57D3 +埔 > bù; #57D4 +埕 > chéng; #57D5 +埗 > bù; #57D7 +埘 > shí; #57D8 +埙 > xūn; #57D9 +埚 > gūo; #57DA +埛 > jīong; #57DB +埜 > yĕ; #57DC +埝 > niàn; #57DD +埞 > dĭ; #57DE +域 > yù; #57DF +埠 > bù; #57E0 +埡 > yà; #57E1 +埢 > juăn; #57E2 +埣 > sùi; #57E3 +埤 > pí; #57E4 +埥 > chēng; #57E5 +埦 > wăn; #57E6 +埧 > jù; #57E7 +埨 > lŭn; #57E8 +埩 > zhēng; #57E9 +埪 > kōng; #57EA +埫 > chŏng; #57EB +埬 > dōng; #57EC +埭 > dài; #57ED +埮 > tàn; #57EE +埯 > ăn; #57EF +埰 > cài; #57F0 +埱 > shú; #57F1 +埲 > bĕng; #57F2 +埳 > kăn; #57F3 +埴 > zhí; #57F4 +埵 > dŭo; #57F5 +埶 > yì; #57F6 +執 > zhí; #57F7 +埸 > yì; #57F8 +培 > péi; #57F9 +基 > jī; #57FA +埻 > zhŭn; #57FB +埼 > qí; #57FC +埽 > sào; #57FD +埾 > jù; #57FE +埿 > ní; #57FF +堀 > kū; #5800 +堁 > kè; #5801 +堂 > táng; #5802 +堃 > kūn; #5803 +堄 > nì; #5804 +堅 > jiān; #5805 +堆 > dūi; #5806 +堇 > jĭn; #5807 +堈 > gāng; #5808 +堉 > yù; #5809 +堊 > è; #580A +堋 > péng; #580B +堌 > gù; #580C +堍 > tù; #580D +堎 > lèng; #580E +堐 > yá; #5810 +堑 > qiàn; #5811 +堓 > àn; #5813 +堕 > dùo; #5815 +堖 > năo; #5816 +堗 > tū; #5817 +堘 > chéng; #5818 +堙 > yīn; #5819 +堚 > hún; #581A +堛 > bì; #581B +堜 > liàn; #581C +堝 > gūo; #581D +堞 > dié; #581E +堟 > zhuàn; #581F +堠 > hòu; #5820 +堡 > băo; #5821 +堢 > băo; #5822 +堣 > yú; #5823 +堤 > dī; #5824 +堥 > máo; #5825 +堦 > jiē; #5826 +堧 > ruán; #5827 +堨 > è; #5828 +堩 > gèng; #5829 +堪 > kān; #582A +堫 > zōng; #582B +堬 > yú; #582C +堭 > huáng; #582D +堮 > è; #582E +堯 > yáo; #582F +堰 > yàn; #5830 +報 > bào; #5831 +堲 > jí; #5832 +堳 > méi; #5833 +場 > cháng; #5834 +堵 > dŭ; #5835 +堶 > túo; #5836 +堷 > yìn; #5837 +堸 > féng; #5838 +堹 > zhòng; #5839 +堺 > jiè; #583A +堻 > zhēn; #583B +堼 > fēng; #583C +堽 > gāng; #583D +堾 > chuăn; #583E +堿 > jiăn; #583F +塂 > xiàng; #5842 +塃 > huāng; #5843 +塄 > léng; #5844 +塅 > duàn; #5845 +塇 > xuān; #5847 +塈 > jì; #5848 +塉 > jí; #5849 +塊 > kuài; #584A +塋 > yíng; #584B +塌 > tā; #584C +塍 > chéng; #584D +塎 > yŏng; #584E +塏 > kăi; #584F +塐 > sù; #5850 +塑 > sù; #5851 +塒 > shí; #5852 +塓 > mì; #5853 +塔 > tă; #5854 +塕 > wĕng; #5855 +塖 > chéng; #5856 +塗 > tú; #5857 +塘 > táng; #5858 +塙 > què; #5859 +塚 > zhŏng; #585A +塛 > lì; #585B +塜 > péng; #585C +塝 > bàng; #585D +塞 > sāi; #585E +塟 > zàng; #585F +塠 > dūi; #5860 +塡 > tián; #5861 +塢 > wù; #5862 +塣 > chĕng; #5863 +塤 > xūn; #5864 +塥 > gé; #5865 +塦 > zhèn; #5866 +塧 > ài; #5867 +塨 > gōng; #5868 +塩 > yán; #5869 +塪 > kăn; #586A +填 > tián; #586B +塬 > yuán; #586C +塭 > wēn; #586D +塮 > xiè; #586E +塯 > lìu; #586F +塱 > lăng; #5871 +塲 > cháng; #5872 +塳 > péng; #5873 +塴 > bèng; #5874 +塵 > chén; #5875 +塶 > cù; #5876 +塷 > lŭ; #5877 +塸 > ŏu; #5878 +塹 > qiàn; #5879 +塺 > méi; #587A +塻 > mò; #587B +塼 > zhuān; #587C +塽 > shuăng; #587D +塾 > shú; #587E +塿 > lŏu; #587F +墀 > chí; #5880 +墁 > màn; #5881 +墂 > biāo; #5882 +境 > jìng; #5883 +墄 > qī; #5884 +墅 > shù; #5885 +墆 > dì; #5886 +墇 > zhāng; #5887 +墈 > kàn; #5888 +墉 > yōng; #5889 +墊 > diàn; #588A +墋 > chĕn; #588B +墌 > zhī; #588C +墍 > xì; #588D +墎 > gūo; #588E +墏 > qiăng; #588F +墐 > jìn; #5890 +墑 > dī; #5891 +墒 > shāng; #5892 +墓 > mù; #5893 +墔 > cūi; #5894 +墕 > yàn; #5895 +墖 > tă; #5896 +増 > zēng; #5897 +墘 > qí; #5898 +墙 > qiáng; #5899 +墚 > liáng; #589A +墜 > zhùi; #589C +墝 > qiāo; #589D +增 > zēng; #589E +墟 > xū; #589F +墠 > shàn; #58A0 +墡 > shàn; #58A1 +墢 > bá; #58A2 +墣 > pū; #58A3 +墤 > kuài; #58A4 +墥 > dŏng; #58A5 +墦 > fán; #58A6 +墧 > què; #58A7 +墨 > mò; #58A8 +墩 > dūn; #58A9 +墪 > dūn; #58AA +墫 > dūn; #58AB +墬 > dì; #58AC +墭 > shèng; #58AD +墮 > dùo; #58AE +墯 > dùo; #58AF +墰 > tán; #58B0 +墱 > dèng; #58B1 +墲 > wŭ; #58B2 +墳 > fén; #58B3 +墴 > huáng; #58B4 +墵 > tán; #58B5 +墶 > dā; #58B6 +墷 > yè; #58B7 +墺 > yù; #58BA +墻 > qiáng; #58BB +墼 > jī; #58BC +墽 > qiāo; #58BD +墾 > kĕn; #58BE +墿 > yì; #58BF +壀 > pí; #58C0 +壁 > bì; #58C1 +壂 > diàn; #58C2 +壃 > jiāng; #58C3 +壄 > yĕ; #58C4 +壅 > yōng; #58C5 +壆 > bó; #58C6 +壇 > tán; #58C7 +壈 > lăn; #58C8 +壉 > jù; #58C9 +壊 > huài; #58CA +壋 > dàng; #58CB +壌 > răng; #58CC +壍 > qiàn; #58CD +壎 > xūn; #58CE +壏 > làn; #58CF +壐 > xĭ; #58D0 +壑 > hè; #58D1 +壒 > ài; #58D2 +壓 > yā; #58D3 +壔 > dăo; #58D4 +壕 > háo; #58D5 +壖 > ruán; #58D6 +壘 > lĕi; #58D8 +壙 > kuàng; #58D9 +壚 > lú; #58DA +壛 > yán; #58DB +壜 > tán; #58DC +壝 > wéi; #58DD +壞 > huài; #58DE +壟 > lŏng; #58DF +壠 > lŏng; #58E0 +壡 > rùi; #58E1 +壢 > lì; #58E2 +壣 > lín; #58E3 +壤 > răng; #58E4 +壦 > xūn; #58E6 +壧 > yán; #58E7 +壨 > léi; #58E8 +壩 > bà; #58E9 +士 > shì; #58EB +壬 > rén; #58EC +壮 > zhuàng; #58EE +壯 > zhuàng; #58EF +声 > shēng; #58F0 +壱 > yī; #58F1 +売 > mài; #58F2 +壳 > ké; #58F3 +壴 > zhŭ; #58F4 +壵 > zhuàng; #58F5 +壶 > hú; #58F6 +壷 > hú; #58F7 +壸 > kŭn; #58F8 +壹 > yī; #58F9 +壺 > hú; #58FA +壻 > xù; #58FB +壼 > kŭn; #58FC +壽 > shòu; #58FD +壾 > măng; #58FE +壿 > zŭn; #58FF +夀 > shòu; #5900 +夁 > yī; #5901 +夂 > zhĭ; #5902 +夃 > gū; #5903 +处 > chù; #5904 +夅 > jiàng; #5905 +夆 > fēng; #5906 +备 > bèi; #5907 +変 > biàn; #5909 +夊 > sūi; #590A +夋 > qūn; #590B +夌 > líng; #590C +复 > fù; #590D +夎 > zùo; #590E +夏 > xià; #590F +夐 > xìong; #5910 +夒 > náo; #5912 +夓 > xià; #5913 +夔 > kúi; #5914 +夕 > xī; #5915 +外 > wài; #5916 +夗 > yuàn; #5917 +夘 > măo; #5918 +夙 > sù; #5919 +多 > dūo; #591A +夛 > dūo; #591B +夜 > yè; #591C +夝 > qíng; #591D +够 > gòu; #591F +夠 > gòu; #5920 +夡 > qì; #5921 +夢 > mèng; #5922 +夣 > mèng; #5923 +夤 > yín; #5924 +夥 > hŭo; #5925 +夦 > chèn; #5926 +大 > dà; #5927 +夨 > zè; #5928 +天 > tiān; #5929 +太 > tài; #592A +夫 > fū; #592B +夬 > guài; #592C +夭 > yăo; #592D +央 > yāng; #592E +夯 > hāng; #592F +夰 > găo; #5930 +失 > shī; #5931 +夲 > bĕn; #5932 +夳 > tài; #5933 +头 > tóu; #5934 +夵 > yăn; #5935 +夶 > bĭ; #5936 +夷 > yí; #5937 +夸 > kuā; #5938 +夹 > jiā; #5939 +夺 > dúo; #593A +夼 > kuăng; #593C +夽 > yùn; #593D +夾 > jiā; #593E +夿 > pā; #593F +奀 > ēn; #5940 +奁 > lián; #5941 +奂 > huàn; #5942 +奃 > dì; #5943 +奄 > yăn; #5944 +奅 > pào; #5945 +奆 > quăn; #5946 +奇 > qí; #5947 +奈 > nài; #5948 +奉 > fèng; #5949 +奊 > xié; #594A +奋 > fèn; #594B +奌 > diăn; #594C +奎 > kúi; #594E +奏 > zòu; #594F +奐 > huàn; #5950 +契 > qì; #5951 +奒 > kāi; #5952 +奓 > zhà; #5953 +奔 > bēn; #5954 +奕 > yì; #5955 +奖 > jiăng; #5956 +套 > tào; #5957 +奘 > zàng; #5958 +奙 > bĕn; #5959 +奚 > xī; #595A +奛 > xiăng; #595B +奜 > fĕi; #595C +奝 > diāo; #595D +奞 > xùn; #595E +奟 > kēng; #595F +奠 > diàn; #5960 +奡 > ào; #5961 +奢 > shē; #5962 +奣 > wĕng; #5963 +奤 > păn; #5964 +奥 > ào; #5965 +奦 > wù; #5966 +奧 > ào; #5967 +奨 > jiăng; #5968 +奩 > lián; #5969 +奪 > dúo; #596A +奫 > yūn; #596B +奬 > jiăng; #596C +奭 > shì; #596D +奮 > fèn; #596E +奯 > hùo; #596F +奰 > bì; #5970 +奱 > lián; #5971 +奲 > dŭo; #5972 +女 > nǚ; #5973 +奴 > nú; #5974 +奵 > dīng; #5975 +奶 > năi; #5976 +奷 > qiān; #5977 +奸 > jiān; #5978 +她 > tā; #5979 +奺 > jĭu; #597A +奻 > nán; #597B +奼 > chà; #597C +好 > hăo; #597D +奾 > xiān; #597E +奿 > fàn; #597F +妀 > jĭ; #5980 +妁 > shùo; #5981 +如 > rú; #5982 +妃 > fēi; #5983 +妄 > wàng; #5984 +妅 > hóng; #5985 +妆 > zhuāng; #5986 +妇 > fù; #5987 +妈 > mā; #5988 +妉 > dān; #5989 +妊 > rèn; #598A +妋 > fū; #598B +妌 > jìng; #598C +妍 > yán; #598D +妎 > xiè; #598E +妏 > wèn; #598F +妐 > zhōng; #5990 +妑 > pā; #5991 +妒 > dù; #5992 +妓 > jì; #5993 +妔 > kēng; #5994 +妕 > zhòng; #5995 +妖 > yāo; #5996 +妗 > jìn; #5997 +妘 > yún; #5998 +妙 > miào; #5999 +妚 > pēi; #599A +妜 > yuè; #599C +妝 > zhuāng; #599D +妞 > nīu; #599E +妟 > yàn; #599F +妠 > nà; #59A0 +妡 > xīn; #59A1 +妢 > fén; #59A2 +妣 > bĭ; #59A3 +妤 > yú; #59A4 +妥 > tŭo; #59A5 +妦 > fēng; #59A6 +妧 > yuán; #59A7 +妨 > fáng; #59A8 +妩 > wŭ; #59A9 +妪 > yù; #59AA +妫 > gūi; #59AB +妬 > dù; #59AC +妭 > bá; #59AD +妮 > nī; #59AE +妯 > zhóu; #59AF +妰 > zhúo; #59B0 +妱 > zhāo; #59B1 +妲 > dá; #59B2 +妳 > năi; #59B3 +妴 > yuăn; #59B4 +妵 > tŏu; #59B5 +妶 > xuán; #59B6 +妷 > zhí; #59B7 +妸 > ē; #59B8 +妹 > mèi; #59B9 +妺 > mò; #59BA +妻 > qī; #59BB +妼 > bì; #59BC +妽 > shēn; #59BD +妾 > qiè; #59BE +妿 > ē; #59BF +姀 > hé; #59C0 +姁 > xŭ; #59C1 +姂 > fá; #59C2 +姃 > zhēng; #59C3 +姄 > mín; #59C4 +姅 > bàn; #59C5 +姆 > mŭ; #59C6 +姇 > fū; #59C7 +姈 > líng; #59C8 +姉 > zĭ; #59C9 +姊 > zĭ; #59CA +始 > shĭ; #59CB +姌 > răn; #59CC +姍 > shān; #59CD +姎 > yāng; #59CE +姏 > mán; #59CF +姐 > jiĕ; #59D0 +姑 > gū; #59D1 +姒 > sì; #59D2 +姓 > xìng; #59D3 +委 > wĕi; #59D4 +姕 > zī; #59D5 +姖 > jù; #59D6 +姗 > shān; #59D7 +姘 > pīn; #59D8 +姙 > rèn; #59D9 +姚 > yáo; #59DA +姛 > tŏng; #59DB +姜 > jiāng; #59DC +姝 > shū; #59DD +姞 > jí; #59DE +姟 > gāi; #59DF +姠 > shàng; #59E0 +姡 > kùo; #59E1 +姢 > juān; #59E2 +姣 > jiāo; #59E3 +姤 > gòu; #59E4 +姥 > mŭ; #59E5 +姦 > jiān; #59E6 +姧 > jiān; #59E7 +姨 > yí; #59E8 +姩 > niàn; #59E9 +姪 > zhí; #59EA +姫 > jī; #59EB +姬 > jī; #59EC +姭 > xiàn; #59ED +姮 > héng; #59EE +姯 > guāng; #59EF +姰 > jūn; #59F0 +姱 > kuā; #59F1 +姲 > yàn; #59F2 +姳 > mĭng; #59F3 +姴 > liè; #59F4 +姵 > pèi; #59F5 +姶 > yăn; #59F6 +姷 > yòu; #59F7 +姸 > yán; #59F8 +姹 > chà; #59F9 +姺 > shēn; #59FA +姻 > yīn; #59FB +姼 > chĭ; #59FC +姽 > gŭi; #59FD +姾 > quān; #59FE +姿 > zī; #59FF +娀 > sōng; #5A00 +威 > wēi; #5A01 +娂 > hóng; #5A02 +娃 > wá; #5A03 +娄 > lóu; #5A04 +娅 > yà; #5A05 +娆 > răo; #5A06 +娇 > jiāo; #5A07 +娈 > luán; #5A08 +娉 > pīng; #5A09 +娊 > xiàn; #5A0A +娋 > shào; #5A0B +娌 > lĭ; #5A0C +娍 > chéng; #5A0D +娎 > xiào; #5A0E +娏 > máng; #5A0F +娐 > fu; #5A10 +娑 > sūo; #5A11 +娒 > wŭ; #5A12 +娓 > wĕi; #5A13 +娔 > kè; #5A14 +娕 > lài; #5A15 +娖 > chùo; #5A16 +娗 > dìng; #5A17 +娘 > niáng; #5A18 +娙 > xíng; #5A19 +娚 > nán; #5A1A +娛 > yú; #5A1B +娜 > núo; #5A1C +娝 > pēi; #5A1D +娞 > nĕi; #5A1E +娟 > juān; #5A1F +娠 > shēn; #5A20 +娡 > zhì; #5A21 +娢 > hán; #5A22 +娣 > dì; #5A23 +娤 > zhuāng; #5A24 +娥 > é; #5A25 +娦 > pín; #5A26 +娧 > tùi; #5A27 +娨 > hàn; #5A28 +娩 > miăn; #5A29 +娪 > wú; #5A2A +娫 > yán; #5A2B +娬 > wŭ; #5A2C +娭 > xī; #5A2D +娮 > yán; #5A2E +娯 > yú; #5A2F +娰 > sì; #5A30 +娱 > yú; #5A31 +娲 > wā; #5A32 +娴 > xián; #5A34 +娵 > jū; #5A35 +娶 > qŭ; #5A36 +娷 > shùi; #5A37 +娸 > qī; #5A38 +娹 > xián; #5A39 +娺 > zhūi; #5A3A +娻 > dōng; #5A3B +娼 > chāng; #5A3C +娽 > lù; #5A3D +娾 > ăi; #5A3E +娿 > ē; #5A3F +婀 > ē; #5A40 +婁 > lóu; #5A41 +婂 > mián; #5A42 +婃 > cóng; #5A43 +婄 > pŏu; #5A44 +婅 > jú; #5A45 +婆 > pó; #5A46 +婇 > căi; #5A47 +婈 > díng; #5A48 +婉 > wăn; #5A49 +婊 > biăo; #5A4A +婋 > xiāo; #5A4B +婌 > shŭ; #5A4C +婍 > qĭ; #5A4D +婎 > hūi; #5A4E +婏 > fù; #5A4F +婐 > ē; #5A50 +婑 > wŏ; #5A51 +婒 > tán; #5A52 +婓 > fēi; #5A53 +婔 > wei; #5A54 +婕 > jié; #5A55 +婖 > tiān; #5A56 +婗 > ní; #5A57 +婘 > quán; #5A58 +婙 > jìng; #5A59 +婚 > hūn; #5A5A +婛 > jīng; #5A5B +婜 > qiān; #5A5C +婝 > diàn; #5A5D +婞 > xìng; #5A5E +婟 > hù; #5A5F +婠 > wà; #5A60 +婡 > lái; #5A61 +婢 > bì; #5A62 +婣 > yīn; #5A63 +婤 > chōu; #5A64 +婥 > chùo; #5A65 +婦 > fù; #5A66 +婧 > jìng; #5A67 +婨 > lún; #5A68 +婩 > yàn; #5A69 +婪 > lán; #5A6A +婫 > kūn; #5A6B +婬 > yín; #5A6C +婭 > yà; #5A6D +婮 > ju; #5A6E +婯 > lì; #5A6F +婰 > diăn; #5A70 +婱 > xián; #5A71 +婳 > huà; #5A73 +婴 > yīng; #5A74 +婵 > chán; #5A75 +婶 > shĕn; #5A76 +婷 > tíng; #5A77 +婸 > dàng; #5A78 +婹 > yăo; #5A79 +婺 > wù; #5A7A +婻 > nàn; #5A7B +婼 > rùo; #5A7C +婽 > jiă; #5A7D +婾 > tōu; #5A7E +婿 > xù; #5A7F +媀 > yú; #5A80 +媁 > wēi; #5A81 +媂 > tí; #5A82 +媃 > róu; #5A83 +媄 > mĕi; #5A84 +媅 > dān; #5A85 +媆 > ruăn; #5A86 +媇 > qīn; #5A87 +媈 > hui; #5A88 +媉 > wū; #5A89 +媊 > qián; #5A8A +媋 > chūn; #5A8B +媌 > máo; #5A8C +媍 > fù; #5A8D +媎 > jiĕ; #5A8E +媏 > duān; #5A8F +媐 > xī; #5A90 +媑 > zhòng; #5A91 +媒 > méi; #5A92 +媓 > huáng; #5A93 +媔 > mián; #5A94 +媕 > ān; #5A95 +媖 > yīng; #5A96 +媗 > xuān; #5A97 +媘 > jie; #5A98 +媙 > wēi; #5A99 +媚 > mèi; #5A9A +媛 > yuàn; #5A9B +媜 > zhēn; #5A9C +媝 > qīu; #5A9D +媞 > tí; #5A9E +媟 > xiè; #5A9F +媠 > tŭo; #5AA0 +媡 > liàn; #5AA1 +媢 > mào; #5AA2 +媣 > răn; #5AA3 +媤 > sī; #5AA4 +媥 > piān; #5AA5 +媦 > wèi; #5AA6 +媧 > wā; #5AA7 +媨 > jìu; #5AA8 +媩 > hú; #5AA9 +媪 > ăo; #5AAA +媭 > xū; #5AAD +媮 > tōu; #5AAE +媯 > gūi; #5AAF +媰 > zōu; #5AB0 +媱 > yáo; #5AB1 +媲 > pì; #5AB2 +媳 > xí; #5AB3 +媴 > yuán; #5AB4 +媵 > yìng; #5AB5 +媶 > róng; #5AB6 +媷 > rù; #5AB7 +媸 > chī; #5AB8 +媹 > líu; #5AB9 +媺 > mĕi; #5ABA +媻 > pán; #5ABB +媼 > ăo; #5ABC +媽 > mā; #5ABD +媾 > gòu; #5ABE +媿 > kùi; #5ABF +嫀 > qín; #5AC0 +嫁 > jià; #5AC1 +嫂 > săo; #5AC2 +嫃 > zhēn; #5AC3 +嫄 > yuán; #5AC4 +嫅 > chā; #5AC5 +嫆 > yóng; #5AC6 +嫇 > míng; #5AC7 +嫈 > yīng; #5AC8 +嫉 > jí; #5AC9 +嫊 > sù; #5ACA +嫋 > niăo; #5ACB +嫌 > xián; #5ACC +嫍 > tāo; #5ACD +嫎 > páng; #5ACE +嫏 > láng; #5ACF +嫐 > năo; #5AD0 +嫑 > báo; #5AD1 +嫒 > ài; #5AD2 +嫓 > pì; #5AD3 +嫔 > pín; #5AD4 +嫕 > yì; #5AD5 +嫖 > piào; #5AD6 +嫗 > yù; #5AD7 +嫘 > léi; #5AD8 +嫙 > xuán; #5AD9 +嫚 > màn; #5ADA +嫛 > yī; #5ADB +嫜 > zhāng; #5ADC +嫝 > kāng; #5ADD +嫞 > yóng; #5ADE +嫟 > nì; #5ADF +嫠 > lí; #5AE0 +嫡 > dí; #5AE1 +嫢 > gūi; #5AE2 +嫣 > yān; #5AE3 +嫤 > jìn; #5AE4 +嫥 > zhuān; #5AE5 +嫦 > cháng; #5AE6 +嫧 > cè; #5AE7 +嫨 > hān; #5AE8 +嫩 > nèn; #5AE9 +嫪 > lào; #5AEA +嫫 > mó; #5AEB +嫬 > zhē; #5AEC +嫭 > hù; #5AED +嫮 > hù; #5AEE +嫯 > ào; #5AEF +嫰 > nèn; #5AF0 +嫱 > qiáng; #5AF1 +嫳 > piè; #5AF3 +嫴 > gū; #5AF4 +嫵 > wŭ; #5AF5 +嫶 > jiáo; #5AF6 +嫷 > tŭo; #5AF7 +嫸 > zhăn; #5AF8 +嫹 > máo; #5AF9 +嫺 > xián; #5AFA +嫻 > xián; #5AFB +嫼 > mò; #5AFC +嫽 > liáo; #5AFD +嫾 > lián; #5AFE +嫿 > huà; #5AFF +嬀 > gūi; #5B00 +嬁 > dēng; #5B01 +嬂 > zhī; #5B02 +嬃 > xū; #5B03 +嬄 > yi; #5B04 +嬅 > huá; #5B05 +嬆 > xī; #5B06 +嬇 > hùi; #5B07 +嬈 > răo; #5B08 +嬉 > xī; #5B09 +嬊 > yàn; #5B0A +嬋 > chán; #5B0B +嬌 > jiāo; #5B0C +嬍 > mĕi; #5B0D +嬎 > fàn; #5B0E +嬏 > fān; #5B0F +嬐 > xiān; #5B10 +嬑 > yì; #5B11 +嬒 > wèi; #5B12 +嬓 > jiào; #5B13 +嬔 > fù; #5B14 +嬕 > shì; #5B15 +嬖 > bì; #5B16 +嬗 > shàn; #5B17 +嬘 > sùi; #5B18 +嬙 > qiáng; #5B19 +嬚 > liăn; #5B1A +嬛 > huán; #5B1B +嬜 > xin; #5B1C +嬝 > niăo; #5B1D +嬞 > dŏng; #5B1E +嬟 > yì; #5B1F +嬠 > cán; #5B20 +嬡 > ài; #5B21 +嬢 > niáng; #5B22 +嬣 > néng; #5B23 +嬤 > mā; #5B24 +嬥 > tiăo; #5B25 +嬦 > chóu; #5B26 +嬧 > jìn; #5B27 +嬨 > cí; #5B28 +嬩 > yú; #5B29 +嬪 > pín; #5B2A +嬫 > yong; #5B2B +嬬 > xū; #5B2C +嬭 > năi; #5B2D +嬮 > yān; #5B2E +嬯 > tái; #5B2F +嬰 > yīng; #5B30 +嬱 > cán; #5B31 +嬲 > niăo; #5B32 +嬳 > wo; #5B33 +嬴 > yíng; #5B34 +嬵 > mián; #5B35 +嬷 > mā; #5B37 +嬸 > shĕn; #5B38 +嬹 > xìng; #5B39 +嬺 > nì; #5B3A +嬻 > dú; #5B3B +嬼 > lĭu; #5B3C +嬽 > yuān; #5B3D +嬾 > lăn; #5B3E +嬿 > yàn; #5B3F +孀 > shuāng; #5B40 +孁 > líng; #5B41 +孂 > jiăo; #5B42 +孃 > niáng; #5B43 +孄 > lăn; #5B44 +孅 > xiān; #5B45 +孆 > yīng; #5B46 +孇 > shuāng; #5B47 +孈 > shuāi; #5B48 +孉 > quán; #5B49 +孊 > mĭ; #5B4A +孋 > lí; #5B4B +孌 > luán; #5B4C +孍 > yán; #5B4D +孎 > zhŭ; #5B4E +孏 > lăn; #5B4F +子 > zĭ; #5B50 +孑 > jié; #5B51 +孒 > jué; #5B52 +孓 > jué; #5B53 +孔 > kŏng; #5B54 +孕 > yùn; #5B55 +孖 > zī; #5B56 +字 > zì; #5B57 +存 > cún; #5B58 +孙 > sūn; #5B59 +孚 > fú; #5B5A +孛 > bèi; #5B5B +孜 > zī; #5B5C +孝 > xiào; #5B5D +孞 > xìn; #5B5E +孟 > mèng; #5B5F +孠 > sì; #5B60 +孡 > tāi; #5B61 +孢 > bāo; #5B62 +季 > jì; #5B63 +孤 > gū; #5B64 +孥 > nú; #5B65 +学 > xué; #5B66 +孨 > zhuăn; #5B68 +孩 > hái; #5B69 +孪 > luán; #5B6A +孫 > sūn; #5B6B +孬 > huài; #5B6C +孭 > miē; #5B6D +孮 > cóng; #5B6E +孯 > qiān; #5B6F +孰 > shú; #5B70 +孱 > chán; #5B71 +孲 > yā; #5B72 +孳 > zī; #5B73 +孴 > nĭ; #5B74 +孵 > fū; #5B75 +孶 > zī; #5B76 +孷 > lí; #5B77 +學 > xué; #5B78 +孹 > bò; #5B79 +孺 > rú; #5B7A +孻 > lái; #5B7B +孼 > niè; #5B7C +孽 > niè; #5B7D +孾 > yīng; #5B7E +孿 > luán; #5B7F +宀 > mián; #5B80 +宁 > zhù; #5B81 +宂 > rŏng; #5B82 +它 > tā; #5B83 +宄 > gŭi; #5B84 +宅 > zhái; #5B85 +宆 > qíong; #5B86 +宇 > yŭ; #5B87 +守 > shŏu; #5B88 +安 > ān; #5B89 +宊 > tú; #5B8A +宋 > sòng; #5B8B +完 > wán; #5B8C +宍 > ròu; #5B8D +宎 > yăo; #5B8E +宏 > hóng; #5B8F +宐 > yí; #5B90 +宑 > jĭng; #5B91 +宒 > zhūn; #5B92 +宓 > mì; #5B93 +宔 > zhŭ; #5B94 +宕 > dàng; #5B95 +宖 > hóng; #5B96 +宗 > zōng; #5B97 +官 > guān; #5B98 +宙 > zhòu; #5B99 +定 > dìng; #5B9A +宛 > wăn; #5B9B +宜 > yí; #5B9C +宝 > băo; #5B9D +实 > shí; #5B9E +実 > shí; #5B9F +宠 > chŏng; #5BA0 +审 > shĕn; #5BA1 +客 > kè; #5BA2 +宣 > xuān; #5BA3 +室 > shì; #5BA4 +宥 > yòu; #5BA5 +宦 > huàn; #5BA6 +宧 > yí; #5BA7 +宨 > tiăo; #5BA8 +宩 > shĭ; #5BA9 +宪 > xiàn; #5BAA +宫 > gōng; #5BAB +宬 > chéng; #5BAC +宭 > qún; #5BAD +宮 > gōng; #5BAE +宯 > xiāo; #5BAF +宰 > zăi; #5BB0 +宱 > zhà; #5BB1 +宲 > băo; #5BB2 +害 > hài; #5BB3 +宴 > yàn; #5BB4 +宵 > xiāo; #5BB5 +家 > jiā; #5BB6 +宷 > shĕn; #5BB7 +宸 > chén; #5BB8 +容 > róng; #5BB9 +宺 > huăng; #5BBA +宻 > mì; #5BBB +宼 > kòu; #5BBC +宽 > kuān; #5BBD +宾 > bīn; #5BBE +宿 > sù; #5BBF +寀 > cài; #5BC0 +寁 > zăn; #5BC1 +寂 > jì; #5BC2 +寃 > yuān; #5BC3 +寄 > jì; #5BC4 +寅 > yín; #5BC5 +密 > mì; #5BC6 +寇 > kòu; #5BC7 +寈 > qīng; #5BC8 +寉 > què; #5BC9 +寊 > zhēn; #5BCA +寋 > jiăn; #5BCB +富 > fù; #5BCC +寍 > níng; #5BCD +寎 > bìng; #5BCE +寏 > huán; #5BCF +寐 > mèi; #5BD0 +寑 > qĭn; #5BD1 +寒 > hán; #5BD2 +寓 > yù; #5BD3 +寔 > shí; #5BD4 +寕 > níng; #5BD5 +寖 > qìn; #5BD6 +寗 > níng; #5BD7 +寘 > zhì; #5BD8 +寙 > yŭ; #5BD9 +寚 > băo; #5BDA +寛 > kuān; #5BDB +寜 > níng; #5BDC +寝 > qĭn; #5BDD +寞 > mò; #5BDE +察 > chá; #5BDF +寠 > jù; #5BE0 +寡 > guă; #5BE1 +寢 > qĭn; #5BE2 +寣 > hū; #5BE3 +寤 > wù; #5BE4 +寥 > liáo; #5BE5 +實 > shí; #5BE6 +寧 > zhù; #5BE7 +寨 > zhài; #5BE8 +審 > shĕn; #5BE9 +寪 > wĕi; #5BEA +寫 > xiĕ; #5BEB +寬 > kuān; #5BEC +寭 > hùi; #5BED +寮 > liáo; #5BEE +寯 > jùn; #5BEF +寰 > huán; #5BF0 +寱 > yì; #5BF1 +寲 > yí; #5BF2 +寳 > băo; #5BF3 +寴 > qìn; #5BF4 +寵 > chŏng; #5BF5 +寶 > băo; #5BF6 +寷 > fēng; #5BF7 +寸 > cùn; #5BF8 +对 > dùi; #5BF9 +寺 > sì; #5BFA +寻 > xún; #5BFB +导 > dăo; #5BFC +寽 > lǜ; #5BFD +対 > dùi; #5BFE +寿 > shòu; #5BFF +尀 > pŏ; #5C00 +封 > fēng; #5C01 +専 > zhuān; #5C02 +尃 > fū; #5C03 +射 > shè; #5C04 +尅 > kè; #5C05 +将 > jiāng; #5C06 +將 > jiāng; #5C07 +專 > zhuān; #5C08 +尉 > wèi; #5C09 +尊 > zūn; #5C0A +尋 > xún; #5C0B +尌 > shù; #5C0C +對 > dùi; #5C0D +導 > dăo; #5C0E +小 > xiăo; #5C0F +尐 > jī; #5C10 +少 > shăo; #5C11 +尒 > ĕr; #5C12 +尓 > ĕr; #5C13 +尔 > ĕr; #5C14 +尕 > gă; #5C15 +尖 > jiān; #5C16 +尗 > shú; #5C17 +尘 > chén; #5C18 +尙 > shàng; #5C19 +尚 > shàng; #5C1A +尛 > mo; #5C1B +尜 > gá; #5C1C +尝 > cháng; #5C1D +尞 > liào; #5C1E +尟 > xiăn; #5C1F +尠 > xiăn; #5C20 +尢 > wāng; #5C22 +尣 > wāng; #5C23 +尤 > yóu; #5C24 +尥 > liào; #5C25 +尦 > liào; #5C26 +尧 > yáo; #5C27 +尨 > máng; #5C28 +尩 > wāng; #5C29 +尪 > wāng; #5C2A +尫 > wāng; #5C2B +尬 > gà; #5C2C +尭 > yáo; #5C2D +尮 > dùo; #5C2E +尯 > kùi; #5C2F +尰 > zhŏng; #5C30 +就 > jìu; #5C31 +尲 > gān; #5C32 +尳 > gŭ; #5C33 +尴 > gān; #5C34 +尵 > túi; #5C35 +尶 > gān; #5C36 +尷 > gān; #5C37 +尸 > shī; #5C38 +尹 > yĭn; #5C39 +尺 > chĭ; #5C3A +尻 > kāo; #5C3B +尼 > ní; #5C3C +尽 > jĭn; #5C3D +尾 > wĕi; #5C3E +尿 > niào; #5C3F +局 > jú; #5C40 +屁 > pì; #5C41 +层 > céng; #5C42 +屃 > xì; #5C43 +屄 > bī; #5C44 +居 > jū; #5C45 +屆 > jiè; #5C46 +屇 > tián; #5C47 +屈 > qū; #5C48 +屉 > tì; #5C49 +届 > jiè; #5C4A +屋 > wū; #5C4B +屌 > diăo; #5C4C +屍 > shī; #5C4D +屎 > shĭ; #5C4E +屏 > píng; #5C4F +屐 > jī; #5C50 +屑 > xiè; #5C51 +屒 > chén; #5C52 +屓 > xì; #5C53 +屔 > ní; #5C54 +展 > zhăn; #5C55 +屖 > xī; #5C56 +屘 > măn; #5C58 +屙 > ē; #5C59 +屚 > lòu; #5C5A +屛 > píng; #5C5B +屜 > tì; #5C5C +屝 > fèi; #5C5D +属 > shŭ; #5C5E +屟 > xiè; #5C5F +屠 > tú; #5C60 +屡 > lǚ; #5C61 +屢 > lǚ; #5C62 +屣 > xĭ; #5C63 +層 > céng; #5C64 +履 > lǚ; #5C65 +屦 > jù; #5C66 +屧 > xiè; #5C67 +屨 > jù; #5C68 +屩 > juē; #5C69 +屪 > liáo; #5C6A +屫 > jué; #5C6B +屬 > shŭ; #5C6C +屭 > xì; #5C6D +屮 > chè; #5C6E +屯 > tún; #5C6F +屰 > nì; #5C70 +山 > shān; #5C71 +屳 > xiān; #5C73 +屴 > lì; #5C74 +屵 > xuē; #5C75 +屸 > lóng; #5C78 +屹 > yì; #5C79 +屺 > qĭ; #5C7A +屻 > rèn; #5C7B +屼 > wù; #5C7C +屽 > hàn; #5C7D +屾 > shēn; #5C7E +屿 > yŭ; #5C7F +岀 > chū; #5C80 +岁 > sùi; #5C81 +岂 > qĭ; #5C82 +岄 > yuè; #5C84 +岅 > băn; #5C85 +岆 > yăo; #5C86 +岇 > áng; #5C87 +岈 > yá; #5C88 +岉 > wù; #5C89 +岊 > jié; #5C8A +岋 > è; #5C8B +岌 > jí; #5C8C +岍 > qiān; #5C8D +岎 > fēn; #5C8E +岏 > yuán; #5C8F +岐 > qí; #5C90 +岑 > cén; #5C91 +岒 > qián; #5C92 +岓 > qí; #5C93 +岔 > chà; #5C94 +岕 > jiè; #5C95 +岖 > qū; #5C96 +岗 > găng; #5C97 +岘 > xiàn; #5C98 +岙 > ào; #5C99 +岚 > lán; #5C9A +岛 > dăo; #5C9B +岜 > bā; #5C9C +岝 > zùo; #5C9D +岞 > zùo; #5C9E +岟 > yăng; #5C9F +岠 > jù; #5CA0 +岡 > gāng; #5CA1 +岢 > kĕ; #5CA2 +岣 > gŏu; #5CA3 +岤 > xuè; #5CA4 +岥 > bēi; #5CA5 +岦 > lì; #5CA6 +岧 > tiáo; #5CA7 +岨 > jū; #5CA8 +岩 > yán; #5CA9 +岪 > fú; #5CAA +岫 > xìu; #5CAB +岬 > jiă; #5CAC +岭 > líng; #5CAD +岮 > túo; #5CAE +岯 > pēi; #5CAF +岰 > yŏu; #5CB0 +岱 > dài; #5CB1 +岲 > kuàng; #5CB2 +岳 > yuè; #5CB3 +岴 > qū; #5CB4 +岵 > hù; #5CB5 +岶 > pò; #5CB6 +岷 > mín; #5CB7 +岸 > àn; #5CB8 +岹 > tiáo; #5CB9 +岺 > líng; #5CBA +岻 > chí; #5CBB +岽 > dōng; #5CBD +岿 > kūi; #5CBF +峀 > xìu; #5CC0 +峁 > măo; #5CC1 +峂 > tóng; #5CC2 +峃 > xué; #5CC3 +峄 > yì; #5CC4 +峆 > hē; #5CC6 +峇 > kē; #5CC7 +峈 > lùo; #5CC8 +峉 > ē; #5CC9 +峊 > fù; #5CCA +峋 > xún; #5CCB +峌 > dié; #5CCC +峍 > lù; #5CCD +峎 > ān; #5CCE +峏 > ĕr; #5CCF +峐 > gāi; #5CD0 +峑 > quán; #5CD1 +峒 > tóng; #5CD2 +峓 > yí; #5CD3 +峔 > mŭ; #5CD4 +峕 > shí; #5CD5 +峖 > ān; #5CD6 +峗 > wéi; #5CD7 +峘 > hū; #5CD8 +峙 > zhì; #5CD9 +峚 > mì; #5CDA +峛 > lĭ; #5CDB +峜 > jī; #5CDC +峝 > tóng; #5CDD +峞 > wéi; #5CDE +峟 > yòu; #5CDF +峡 > xiá; #5CE1 +峢 > lĭ; #5CE2 +峣 > yáo; #5CE3 +峤 > jiào; #5CE4 +峥 > zhēng; #5CE5 +峦 > luán; #5CE6 +峧 > jiāo; #5CE7 +峨 > é; #5CE8 +峩 > é; #5CE9 +峪 > yù; #5CEA +峫 > yé; #5CEB +峬 > bū; #5CEC +峭 > qiào; #5CED +峮 > qūn; #5CEE +峯 > fēng; #5CEF +峰 > fēng; #5CF0 +峱 > náo; #5CF1 +峲 > lĭ; #5CF2 +峳 > yóu; #5CF3 +峴 > xiàn; #5CF4 +峵 > hóng; #5CF5 +島 > dăo; #5CF6 +峷 > shēn; #5CF7 +峸 > chéng; #5CF8 +峹 > tú; #5CF9 +峺 > gĕng; #5CFA +峻 > jùn; #5CFB +峼 > hào; #5CFC +峽 > xiá; #5CFD +峾 > yīn; #5CFE +峿 > yŭ; #5CFF +崀 > làng; #5D00 +崁 > kăn; #5D01 +崂 > láo; #5D02 +崃 > lái; #5D03 +崄 > xiăn; #5D04 +崅 > què; #5D05 +崆 > kōng; #5D06 +崇 > chóng; #5D07 +崈 > chóng; #5D08 +崉 > tà; #5D09 +崊 > lin; #5D0A +崋 > huá; #5D0B +崌 > jū; #5D0C +崍 > lái; #5D0D +崎 > qí; #5D0E +崏 > mín; #5D0F +崐 > kūn; #5D10 +崑 > kūn; #5D11 +崒 > zú; #5D12 +崓 > gù; #5D13 +崔 > cūi; #5D14 +崕 > yá; #5D15 +崖 > yá; #5D16 +崗 > găng; #5D17 +崘 > lún; #5D18 +崙 > lún; #5D19 +崚 > léng; #5D1A +崛 > jué; #5D1B +崜 > dūo; #5D1C +崝 > zhēng; #5D1D +崞 > gūo; #5D1E +崟 > yín; #5D1F +崠 > dōng; #5D20 +崡 > hán; #5D21 +崢 > zhēng; #5D22 +崣 > wĕi; #5D23 +崤 > yáo; #5D24 +崥 > pĭ; #5D25 +崦 > yān; #5D26 +崧 > sōng; #5D27 +崨 > jié; #5D28 +崩 > bēng; #5D29 +崪 > zú; #5D2A +崫 > jué; #5D2B +崬 > dōng; #5D2C +崭 > zhăn; #5D2D +崮 > gù; #5D2E +崯 > yín; #5D2F +崱 > zé; #5D31 +崲 > huáng; #5D32 +崳 > yú; #5D33 +崴 > wēi; #5D34 +崵 > yáng; #5D35 +崶 > fēng; #5D36 +崷 > qíu; #5D37 +崸 > dùn; #5D38 +崹 > tí; #5D39 +崺 > yĭ; #5D3A +崻 > zhì; #5D3B +崼 > shì; #5D3C +崽 > zăi; #5D3D +崾 > yăo; #5D3E +崿 > è; #5D3F +嵀 > zhù; #5D40 +嵁 > kān; #5D41 +嵂 > lǜ; #5D42 +嵃 > yăn; #5D43 +嵄 > mĕi; #5D44 +嵅 > gān; #5D45 +嵆 > jī; #5D46 +嵇 > jī; #5D47 +嵈 > huăn; #5D48 +嵉 > tíng; #5D49 +嵊 > shèng; #5D4A +嵋 > méi; #5D4B +嵌 > qiàn; #5D4C +嵍 > wù; #5D4D +嵎 > yú; #5D4E +嵏 > zōng; #5D4F +嵐 > lán; #5D50 +嵑 > jué; #5D51 +嵒 > yán; #5D52 +嵓 > yán; #5D53 +嵔 > wĕi; #5D54 +嵕 > zōng; #5D55 +嵖 > chá; #5D56 +嵗 > sùi; #5D57 +嵘 > róng; #5D58 +嵚 > qīn; #5D5A +嵛 > yú; #5D5B +嵝 > lŏu; #5D5D +嵞 > tú; #5D5E +嵟 > dūi; #5D5F +嵠 > xī; #5D60 +嵡 > wēng; #5D61 +嵢 > cāng; #5D62 +嵣 > dāng; #5D63 +嵤 > hóng; #5D64 +嵥 > jié; #5D65 +嵦 > ái; #5D66 +嵧 > líu; #5D67 +嵨 > wŭ; #5D68 +嵩 > sōng; #5D69 +嵪 > qiāo; #5D6A +嵫 > zī; #5D6B +嵬 > wéi; #5D6C +嵭 > bēng; #5D6D +嵮 > diān; #5D6E +嵯 > cúo; #5D6F +嵰 > qiăn; #5D70 +嵱 > yŏng; #5D71 +嵲 > niè; #5D72 +嵳 > cúo; #5D73 +嵴 > jí; #5D74 +嵷 > sŏng; #5D77 +嵸 > zōng; #5D78 +嵹 > jiàng; #5D79 +嵺 > liáo; #5D7A +嵻 > kang; #5D7B +嵼 > chăn; #5D7C +嵽 > dié; #5D7D +嵾 > cēn; #5D7E +嵿 > dĭng; #5D7F +嶀 > tū; #5D80 +嶁 > lŏu; #5D81 +嶂 > zhàng; #5D82 +嶃 > zhăn; #5D83 +嶄 > zhăn; #5D84 +嶅 > áo; #5D85 +嶆 > cáo; #5D86 +嶇 > qū; #5D87 +嶈 > qiāng; #5D88 +嶉 > zūi; #5D89 +嶊 > zŭi; #5D8A +嶋 > dăo; #5D8B +嶌 > dăo; #5D8C +嶍 > xí; #5D8D +嶎 > yù; #5D8E +嶏 > bó; #5D8F +嶐 > lóng; #5D90 +嶑 > xiăng; #5D91 +嶒 > céng; #5D92 +嶓 > bō; #5D93 +嶔 > qīn; #5D94 +嶕 > jiāo; #5D95 +嶖 > yăn; #5D96 +嶗 > láo; #5D97 +嶘 > zhàn; #5D98 +嶙 > lín; #5D99 +嶚 > liáo; #5D9A +嶛 > liáo; #5D9B +嶜 > jīn; #5D9C +嶝 > dèng; #5D9D +嶞 > dùo; #5D9E +嶟 > zūn; #5D9F +嶠 > jiào; #5DA0 +嶡 > gùi; #5DA1 +嶢 > yáo; #5DA2 +嶣 > qiáo; #5DA3 +嶤 > yáo; #5DA4 +嶥 > jué; #5DA5 +嶦 > zhān; #5DA6 +嶧 > yì; #5DA7 +嶨 > xué; #5DA8 +嶩 > náo; #5DA9 +嶪 > yè; #5DAA +嶫 > yè; #5DAB +嶬 > yí; #5DAC +嶭 > è; #5DAD +嶮 > xiăn; #5DAE +嶯 > jí; #5DAF +嶰 > xiè; #5DB0 +嶱 > kĕ; #5DB1 +嶲 > xī; #5DB2 +嶳 > dì; #5DB3 +嶴 > ào; #5DB4 +嶵 > zŭi; #5DB5 +嶷 > nì; #5DB7 +嶸 > róng; #5DB8 +嶹 > dăo; #5DB9 +嶺 > lĭng; #5DBA +嶻 > zá; #5DBB +嶼 > yŭ; #5DBC +嶽 > yuè; #5DBD +嶾 > yĭn; #5DBE +巀 > jiē; #5DC0 +巁 > lì; #5DC1 +巂 > sŭi; #5DC2 +巃 > lóng; #5DC3 +巄 > lóng; #5DC4 +巅 > diān; #5DC5 +巆 > yíng; #5DC6 +巇 > xī; #5DC7 +巈 > jú; #5DC8 +巉 > chán; #5DC9 +巊 > yĭng; #5DCA +巋 > kūi; #5DCB +巌 > yán; #5DCC +巍 > wēi; #5DCD +巎 > náo; #5DCE +巏 > quán; #5DCF +巐 > chăo; #5DD0 +巑 > cuán; #5DD1 +巒 > luán; #5DD2 +巓 > diān; #5DD3 +巔 > diān; #5DD4 +巖 > yán; #5DD6 +巗 > yán; #5DD7 +巘 > yăn; #5DD8 +巙 > náo; #5DD9 +巚 > yăn; #5DDA +巛 > chuān; #5DDB +巜 > gùi; #5DDC +川 > chuān; #5DDD +州 > zhōu; #5DDE +巟 > huāng; #5DDF +巠 > jīng; #5DE0 +巡 > xún; #5DE1 +巢 > cháo; #5DE2 +巣 > cháo; #5DE3 +巤 > liē; #5DE4 +工 > gōng; #5DE5 +左 > zŭo; #5DE6 +巧 > qiăo; #5DE7 +巨 > jù; #5DE8 +巩 > gŏng; #5DE9 +巫 > wū; #5DEB +差 > chāi; #5DEE +巯 > qíu; #5DEF +巰 > qíu; #5DF0 +己 > jĭ; #5DF1 +已 > yĭ; #5DF2 +巳 > sì; #5DF3 +巴 > bā; #5DF4 +巵 > zhī; #5DF5 +巶 > zhāo; #5DF6 +巷 > xiàng; #5DF7 +巸 > yí; #5DF8 +巹 > jĭn; #5DF9 +巺 > xùn; #5DFA +巻 > juàn; #5DFB +巽 > xùn; #5DFD +巾 > jīn; #5DFE +巿 > fú; #5DFF +帀 > zā; #5E00 +币 > bì; #5E01 +市 > shì; #5E02 +布 > bù; #5E03 +帄 > dīng; #5E04 +帅 > shuài; #5E05 +帆 > fān; #5E06 +帇 > niè; #5E07 +师 > shī; #5E08 +帉 > fēn; #5E09 +帊 > pà; #5E0A +帋 > zhĭ; #5E0B +希 > xī; #5E0C +帍 > hù; #5E0D +帎 > dàn; #5E0E +帏 > wéi; #5E0F +帐 > zhàng; #5E10 +帑 > tăng; #5E11 +帒 > dài; #5E12 +帓 > mà; #5E13 +帔 > pèi; #5E14 +帕 > pà; #5E15 +帖 > tiē; #5E16 +帗 > fú; #5E17 +帘 > lián; #5E18 +帙 > zhì; #5E19 +帚 > zhŏu; #5E1A +帛 > bó; #5E1B +帜 > zhì; #5E1C +帝 > dì; #5E1D +帞 > mò; #5E1E +帟 > yì; #5E1F +帠 > yì; #5E20 +帡 > píng; #5E21 +帢 > qià; #5E22 +帣 > juàn; #5E23 +帤 > rú; #5E24 +帥 > shuài; #5E25 +带 > dài; #5E26 +帧 > zhèng; #5E27 +帨 > shùi; #5E28 +帩 > qiào; #5E29 +帪 > zhēn; #5E2A +師 > shī; #5E2B +帬 > qún; #5E2C +席 > xí; #5E2D +帮 > bāng; #5E2E +帯 > dài; #5E2F +帰 > gūi; #5E30 +帱 > chóu; #5E31 +帲 > píng; #5E32 +帳 > zhàng; #5E33 +帴 > shā; #5E34 +帵 > wān; #5E35 +帶 > dài; #5E36 +帷 > wéi; #5E37 +常 > cháng; #5E38 +帹 > shà; #5E39 +帺 > qí; #5E3A +帻 > zé; #5E3B +帼 > gúo; #5E3C +帽 > mào; #5E3D +帾 > dŭ; #5E3E +帿 > hóu; #5E3F +幀 > zhèng; #5E40 +幁 > xū; #5E41 +幂 > mì; #5E42 +幃 > wéi; #5E43 +幄 > wò; #5E44 +幅 > fú; #5E45 +幆 > yì; #5E46 +幇 > bāng; #5E47 +幈 > píng; #5E48 +幊 > gōng; #5E4A +幋 > pán; #5E4B +幌 > huăng; #5E4C +幍 > dāo; #5E4D +幎 > mì; #5E4E +幏 > jiā; #5E4F +幐 > téng; #5E50 +幑 > hūi; #5E51 +幒 > zhōng; #5E52 +幓 > shān; #5E53 +幔 > màn; #5E54 +幕 > mù; #5E55 +幖 > biāo; #5E56 +幗 > gúo; #5E57 +幘 > zé; #5E58 +幙 > mù; #5E59 +幚 > bāng; #5E5A +幛 > zhàng; #5E5B +幜 > jĭong; #5E5C +幝 > chăn; #5E5D +幞 > fú; #5E5E +幟 > zhì; #5E5F +幠 > hū; #5E60 +幡 > fān; #5E61 +幢 > chuáng; #5E62 +幣 > bì; #5E63 +幦 > mì; #5E66 +幧 > qiāo; #5E67 +幨 > chān; #5E68 +幩 > fén; #5E69 +幪 > méng; #5E6A +幫 > bāng; #5E6B +幬 > chóu; #5E6C +幭 > miè; #5E6D +幮 > chú; #5E6E +幯 > jié; #5E6F +幰 > xiăn; #5E70 +幱 > lán; #5E71 +干 > gān; #5E72 +平 > píng; #5E73 +年 > nián; #5E74 +幵 > qiān; #5E75 +并 > bìng; #5E76 +幷 > bìng; #5E77 +幸 > xìng; #5E78 +幹 > gàn; #5E79 +幺 > yāo; #5E7A +幻 > huàn; #5E7B +幼 > yòu; #5E7C +幽 > yōu; #5E7D +幾 > jĭ; #5E7E +广 > yăn; #5E7F +庀 > pĭ; #5E80 +庁 > tīng; #5E81 +庂 > zè; #5E82 +広 > guăng; #5E83 +庄 > zhuāng; #5E84 +庅 > mo; #5E85 +庆 > qìng; #5E86 +庇 > bì; #5E87 +庈 > qín; #5E88 +庉 > dùn; #5E89 +床 > chuáng; #5E8A +庋 > gŭi; #5E8B +庌 > yă; #5E8C +庍 > bài; #5E8D +庎 > jiè; #5E8E +序 > xù; #5E8F +庐 > lú; #5E90 +庑 > wŭ; #5E91 +库 > kù; #5E93 +应 > yìng; #5E94 +底 > dĭ; #5E95 +庖 > páo; #5E96 +店 > diàn; #5E97 +庘 > yā; #5E98 +庙 > miào; #5E99 +庚 > gēng; #5E9A +庛 > cī; #5E9B +府 > fŭ; #5E9C +庝 > tóng; #5E9D +庞 > páng; #5E9E +废 > fèi; #5E9F +庠 > xiáng; #5EA0 +庡 > yĭ; #5EA1 +庢 > zhì; #5EA2 +庣 > tiāo; #5EA3 +庤 > zhì; #5EA4 +庥 > xīu; #5EA5 +度 > dù; #5EA6 +座 > zùo; #5EA7 +庨 > xiāo; #5EA8 +庩 > tú; #5EA9 +庪 > gŭi; #5EAA +庫 > kù; #5EAB +庬 > páng; #5EAC +庭 > tíng; #5EAD +庮 > yŏu; #5EAE +庯 > bū; #5EAF +庰 > dīng; #5EB0 +庱 > chĕng; #5EB1 +庲 > lái; #5EB2 +庳 > bēi; #5EB3 +庴 > jí; #5EB4 +庵 > ān; #5EB5 +庶 > shù; #5EB6 +康 > kāng; #5EB7 +庸 > yōng; #5EB8 +庹 > tŭo; #5EB9 +庺 > sōng; #5EBA +庻 > shù; #5EBB +庼 > qĭng; #5EBC +庽 > yù; #5EBD +庾 > yŭ; #5EBE +庿 > miào; #5EBF +廀 > sōu; #5EC0 +廁 > cè; #5EC1 +廂 > xiāng; #5EC2 +廃 > fèi; #5EC3 +廄 > jìu; #5EC4 +廅 > hé; #5EC5 +廆 > hùi; #5EC6 +廇 > lìu; #5EC7 +廈 > shà; #5EC8 +廉 > lián; #5EC9 +廊 > láng; #5ECA +廋 > sōu; #5ECB +廌 > jiàn; #5ECC +廍 > pŏu; #5ECD +廎 > qĭng; #5ECE +廏 > jìu; #5ECF +廐 > jìu; #5ED0 +廑 > qín; #5ED1 +廒 > áo; #5ED2 +廓 > kùo; #5ED3 +廔 > lóu; #5ED4 +廕 > yīn; #5ED5 +廖 > liào; #5ED6 +廗 > dài; #5ED7 +廘 > lù; #5ED8 +廙 > yì; #5ED9 +廚 > chú; #5EDA +廛 > chán; #5EDB +廜 > tū; #5EDC +廝 > sī; #5EDD +廞 > xīn; #5EDE +廟 > miào; #5EDF +廠 > chăng; #5EE0 +廡 > wŭ; #5EE1 +廢 > fèi; #5EE2 +廣 > guăng; #5EE3 +廥 > kuài; #5EE5 +廦 > bì; #5EE6 +廧 > qiáng; #5EE7 +廨 > xiè; #5EE8 +廩 > lĭn; #5EE9 +廪 > lĭn; #5EEA +廫 > liáo; #5EEB +廬 > lú; #5EEC +廮 > yíng; #5EEE +廯 > xiān; #5EEF +廰 > tīng; #5EF0 +廱 > yōng; #5EF1 +廲 > lí; #5EF2 +廳 > tīng; #5EF3 +廴 > yĭn; #5EF4 +廵 > xún; #5EF5 +延 > yán; #5EF6 +廷 > tíng; #5EF7 +廸 > dí; #5EF8 +廹 > pò; #5EF9 +建 > jiàn; #5EFA +廻 > húi; #5EFB +廼 > năi; #5EFC +廽 > húi; #5EFD +廾 > gòng; #5EFE +廿 > niàn; #5EFF +开 > kāi; #5F00 +弁 > biàn; #5F01 +异 > yì; #5F02 +弃 > qì; #5F03 +弄 > nòng; #5F04 +弅 > fén; #5F05 +弆 > jŭ; #5F06 +弇 > yăn; #5F07 +弈 > yì; #5F08 +弉 > zàng; #5F09 +弊 > bì; #5F0A +弋 > yì; #5F0B +弌 > yī; #5F0C +弍 > èr; #5F0D +弎 > sān; #5F0E +式 > shì; #5F0F +弐 > èr; #5F10 +弑 > shì; #5F11 +弒 > shì; #5F12 +弓 > gōng; #5F13 +弔 > diào; #5F14 +引 > yĭn; #5F15 +弖 > hù; #5F16 +弗 > fú; #5F17 +弘 > hóng; #5F18 +弙 > wū; #5F19 +弚 > túi; #5F1A +弛 > chí; #5F1B +弜 > jiàng; #5F1C +弝 > bà; #5F1D +弞 > shĕn; #5F1E +弟 > dì; #5F1F +张 > zhāng; #5F20 +弡 > jué; #5F21 +弢 > tāo; #5F22 +弣 > fŭ; #5F23 +弤 > dĭ; #5F24 +弥 > mí; #5F25 +弦 > xián; #5F26 +弧 > hú; #5F27 +弨 > chāo; #5F28 +弩 > nŭ; #5F29 +弪 > jìng; #5F2A +弫 > zhĕn; #5F2B +弬 > yí; #5F2C +弭 > mĭ; #5F2D +弮 > quān; #5F2E +弯 > wān; #5F2F +弰 > shāo; #5F30 +弱 > rùo; #5F31 +弲 > xuān; #5F32 +弳 > jìng; #5F33 +弴 > dūn; #5F34 +張 > zhāng; #5F35 +弶 > jiàng; #5F36 +強 > qiáng; #5F37 +弸 > péng; #5F38 +弹 > dàn; #5F39 +强 > qiáng; #5F3A +弻 > bì; #5F3B +弼 > bì; #5F3C +弽 > shè; #5F3D +弾 > dàn; #5F3E +弿 > jiăn; #5F3F +彀 > gòu; #5F40 +彂 > fā; #5F42 +彃 > bì; #5F43 +彄 > kōu; #5F44 +彆 > biè; #5F46 +彇 > xiāo; #5F47 +彈 > dàn; #5F48 +彉 > kùo; #5F49 +彊 > qiáng; #5F4A +彋 > hóng; #5F4B +彌 > mí; #5F4C +彍 > kùo; #5F4D +彎 > wān; #5F4E +彏 > jué; #5F4F +彐 > jì; #5F50 +彑 > jì; #5F51 +归 > gūi; #5F52 +当 > dāng; #5F53 +彔 > lù; #5F54 +录 > lù; #5F55 +彖 > tuàn; #5F56 +彗 > hùi; #5F57 +彘 > zhì; #5F58 +彙 > hùi; #5F59 +彚 > hùi; #5F5A +彛 > yí; #5F5B +彜 > yí; #5F5C +彝 > yí; #5F5D +彞 > yí; #5F5E +彟 > hùo; #5F5F +彠 > hùo; #5F60 +彡 > shān; #5F61 +形 > xíng; #5F62 +彣 > wén; #5F63 +彤 > tóng; #5F64 +彥 > yàn; #5F65 +彦 > yàn; #5F66 +彧 > yù; #5F67 +彨 > chī; #5F68 +彩 > căi; #5F69 +彪 > biāo; #5F6A +彫 > diāo; #5F6B +彬 > bīn; #5F6C +彭 > péng; #5F6D +彮 > yŏng; #5F6E +彯 > piāo; #5F6F +彰 > zhāng; #5F70 +影 > yĭng; #5F71 +彲 > chī; #5F72 +彳 > chì; #5F73 +彴 > zhúo; #5F74 +彵 > tŭo; #5F75 +彶 > jí; #5F76 +彷 > páng; #5F77 +彸 > zhōng; #5F78 +役 > yì; #5F79 +彺 > wáng; #5F7A +彻 > chè; #5F7B +彼 > bĭ; #5F7C +彽 > chí; #5F7D +彾 > lĭng; #5F7E +彿 > fú; #5F7F +往 > wăng; #5F80 +征 > zhēng; #5F81 +徂 > cú; #5F82 +徃 > wăng; #5F83 +径 > jìng; #5F84 +待 > dài; #5F85 +徆 > xī; #5F86 +徇 > xùn; #5F87 +很 > hĕn; #5F88 +徉 > yáng; #5F89 +徊 > huái; #5F8A +律 > lǜ; #5F8B +後 > hòu; #5F8C +徍 > wā; #5F8D +徎 > chĕng; #5F8E +徏 > zhì; #5F8F +徐 > xú; #5F90 +徑 > jìng; #5F91 +徒 > tú; #5F92 +従 > cóng; #5F93 +徕 > lái; #5F95 +徖 > cóng; #5F96 +得 > dé; #5F97 +徘 > pái; #5F98 +徙 > xĭ; #5F99 +徛 > qì; #5F9B +徜 > cháng; #5F9C +徝 > zhì; #5F9D +從 > cóng; #5F9E +徟 > zhōu; #5F9F +徠 > lái; #5FA0 +御 > yù; #5FA1 +徢 > xiè; #5FA2 +徣 > jiè; #5FA3 +徤 > jiàn; #5FA4 +徥 > chí; #5FA5 +徦 > jiă; #5FA6 +徧 > biàn; #5FA7 +徨 > huáng; #5FA8 +復 > fù; #5FA9 +循 > xún; #5FAA +徫 > wĕi; #5FAB +徬 > páng; #5FAC +徭 > yáo; #5FAD +微 > wēi; #5FAE +徯 > xī; #5FAF +徰 > zhēng; #5FB0 +徱 > piào; #5FB1 +徲 > chí; #5FB2 +徳 > dé; #5FB3 +徴 > zhēng; #5FB4 +徵 > zhēng; #5FB5 +徶 > biè; #5FB6 +德 > dé; #5FB7 +徸 > chōng; #5FB8 +徹 > chè; #5FB9 +徺 > jiăo; #5FBA +徻 > wèi; #5FBB +徼 > jiào; #5FBC +徽 > hūi; #5FBD +徾 > méi; #5FBE +徿 > lòng; #5FBF +忀 > xiāng; #5FC0 +忁 > bào; #5FC1 +忂 > qú; #5FC2 +心 > xīn; #5FC3 +忄 > shù' 'xīn' 'páng; #5FC4 +必 > bì; #5FC5 +忆 > yì; #5FC6 +忇 > lè; #5FC7 +忈 > rén; #5FC8 +忉 > dāo; #5FC9 +忊 > dìng; #5FCA +忋 > găi; #5FCB +忌 > jì; #5FCC +忍 > rĕn; #5FCD +忎 > rén; #5FCE +忏 > chàn; #5FCF +忐 > tăn; #5FD0 +忑 > tè; #5FD1 +忒 > tè; #5FD2 +忓 > gān; #5FD3 +忔 > qì; #5FD4 +忕 > shì; #5FD5 +忖 > cŭn; #5FD6 +志 > zhì; #5FD7 +忘 > wàng; #5FD8 +忙 > máng; #5FD9 +忚 > xī; #5FDA +忛 > fán; #5FDB +応 > yīng; #5FDC +忝 > tiăn; #5FDD +忞 > mín; #5FDE +忟 > mín; #5FDF +忠 > zhōng; #5FE0 +忡 > chōng; #5FE1 +忢 > wù; #5FE2 +忣 > jí; #5FE3 +忤 > wŭ; #5FE4 +忥 > xì; #5FE5 +忦 > yè; #5FE6 +忧 > yōu; #5FE7 +忨 > wàn; #5FE8 +忩 > cōng; #5FE9 +忪 > zhōng; #5FEA +快 > kuài; #5FEB +忬 > yù; #5FEC +忭 > biàn; #5FED +忮 > zhì; #5FEE +忯 > qí; #5FEF +忰 > cùi; #5FF0 +忱 > chén; #5FF1 +忲 > tài; #5FF2 +忳 > tún; #5FF3 +忴 > qián; #5FF4 +念 > niàn; #5FF5 +忶 > hún; #5FF6 +忷 > xīong; #5FF7 +忸 > nĭu; #5FF8 +忹 > wăng; #5FF9 +忺 > xiān; #5FFA +忻 > xīn; #5FFB +忼 > kāng; #5FFC +忽 > hū; #5FFD +忾 > kài; #5FFE +忿 > fèn; #5FFF +怀 > huái; #6000 +态 > tài; #6001 +怂 > sŏng; #6002 +怃 > wŭ; #6003 +怄 > òu; #6004 +怅 > chàng; #6005 +怆 > chuàng; #6006 +怇 > jù; #6007 +怈 > yì; #6008 +怉 > băo; #6009 +怊 > chāo; #600A +怋 > mín; #600B +怌 > pēi; #600C +怍 > zùo; #600D +怎 > zĕn; #600E +怏 > yàng; #600F +怐 > kòu; #6010 +怑 > bàn; #6011 +怒 > nù; #6012 +怓 > náo; #6013 +怔 > zhēng; #6014 +怕 > pà; #6015 +怖 > bù; #6016 +怗 > tiē; #6017 +怘 > gù; #6018 +怙 > hù; #6019 +怚 > jù; #601A +怛 > dá; #601B +怜 > lián; #601C +思 > sī; #601D +怞 > chōu; #601E +怟 > dì; #601F +怠 > dài; #6020 +怡 > yí; #6021 +怢 > tú; #6022 +怣 > yóu; #6023 +怤 > fū; #6024 +急 > jí; #6025 +怦 > pēng; #6026 +性 > xìng; #6027 +怨 > yuàn; #6028 +怩 > ní; #6029 +怪 > guài; #602A +怫 > fú; #602B +怬 > xì; #602C +怭 > bì; #602D +怮 > yōu; #602E +怯 > qiè; #602F +怰 > xuàn; #6030 +怱 > cōng; #6031 +怲 > bĭng; #6032 +怳 > huăng; #6033 +怴 > xù; #6034 +怵 > chù; #6035 +怶 > pī; #6036 +怷 > xī; #6037 +怸 > xī; #6038 +怹 > tān; #6039 +总 > zŏng; #603B +怼 > dùi; #603C +怿 > yì; #603F +恀 > chĭ; #6040 +恁 > rèn; #6041 +恂 > xún; #6042 +恃 > shì; #6043 +恄 > xì; #6044 +恅 > lăo; #6045 +恆 > héng; #6046 +恇 > kuāng; #6047 +恈 > mú; #6048 +恉 > zhĭ; #6049 +恊 > xié; #604A +恋 > liàn; #604B +恌 > tiāo; #604C +恍 > huăng; #604D +恎 > dié; #604E +恏 > hăo; #604F +恐 > kŏng; #6050 +恑 > gŭi; #6051 +恒 > héng; #6052 +恓 > xī; #6053 +恔 > xiào; #6054 +恕 > shù; #6055 +恖 > sī; #6056 +恗 > kuă; #6057 +恘 > qīu; #6058 +恙 > yàng; #6059 +恚 > hùi; #605A +恛 > húi; #605B +恜 > chì; #605C +恝 > jiá; #605D +恞 > yí; #605E +恟 > xīong; #605F +恠 > guài; #6060 +恡 > lìn; #6061 +恢 > hūi; #6062 +恣 > zì; #6063 +恤 > xù; #6064 +恥 > chĭ; #6065 +恦 > xiàng; #6066 +恧 > nǜ; #6067 +恨 > hèn; #6068 +恩 > ēn; #6069 +恪 > kè; #606A +恫 > tōng; #606B +恬 > tián; #606C +恭 > gōng; #606D +恮 > quán; #606E +息 > xī; #606F +恰 > qià; #6070 +恱 > yuè; #6071 +恲 > pēng; #6072 +恳 > kĕn; #6073 +恴 > dé; #6074 +恵 > hùi; #6075 +恶 > è; #6076 +恸 > tòng; #6078 +恹 > yàn; #6079 +恺 > kăi; #607A +恻 > cè; #607B +恼 > năo; #607C +恽 > yùn; #607D +恾 > máng; #607E +恿 > yŏng; #607F +悀 > yŏng; #6080 +悁 > yuān; #6081 +悂 > pī; #6082 +悃 > kŭn; #6083 +悄 > qiăo; #6084 +悅 > yuè; #6085 +悆 > yù; #6086 +悇 > yù; #6087 +悈 > jiè; #6088 +悉 > xī; #6089 +悊 > zhé; #608A +悋 > lìn; #608B +悌 > tì; #608C +悍 > hàn; #608D +悎 > hào; #608E +悏 > qiè; #608F +悐 > tì; #6090 +悑 > bù; #6091 +悒 > yì; #6092 +悓 > qiàn; #6093 +悔 > hŭi; #6094 +悕 > xī; #6095 +悖 > bèi; #6096 +悗 > mán; #6097 +悘 > yī; #6098 +悙 > hēng; #6099 +悚 > sŏng; #609A +悛 > quān; #609B +悜 > chĕng; #609C +悝 > hūi; #609D +悞 > wù; #609E +悟 > wù; #609F +悠 > yōu; #60A0 +悡 > lí; #60A1 +悢 > liàng; #60A2 +患 > huàn; #60A3 +悤 > cōng; #60A4 +悥 > yì; #60A5 +悦 > yuè; #60A6 +悧 > lì; #60A7 +您 > nín; #60A8 +悩 > năo; #60A9 +悪 > è; #60AA +悫 > què; #60AB +悬 > xuán; #60AC +悭 > qiān; #60AD +悮 > wù; #60AE +悯 > mĭn; #60AF +悰 > cóng; #60B0 +悱 > fĕi; #60B1 +悲 > bēi; #60B2 +悳 > dúo; #60B3 +悴 > cùi; #60B4 +悵 > chàng; #60B5 +悶 > mèn; #60B6 +悷 > lì; #60B7 +悸 > jì; #60B8 +悹 > guàn; #60B9 +悺 > guàn; #60BA +悻 > xìng; #60BB +悼 > dào; #60BC +悽 > qī; #60BD +悾 > kōng; #60BE +悿 > tiăn; #60BF +惀 > lún; #60C0 +惁 > xī; #60C1 +惂 > kăn; #60C2 +惃 > kūn; #60C3 +惄 > nì; #60C4 +情 > qíng; #60C5 +惆 > chóu; #60C6 +惇 > dūn; #60C7 +惈 > gŭo; #60C8 +惉 > chān; #60C9 +惊 > liáng; #60CA +惋 > wăn; #60CB +惌 > yuān; #60CC +惍 > jīn; #60CD +惎 > jì; #60CE +惏 > lín; #60CF +惐 > yù; #60D0 +惑 > hùo; #60D1 +惒 > hé; #60D2 +惓 > quán; #60D3 +惔 > tán; #60D4 +惕 > tì; #60D5 +惖 > tì; #60D6 +惗 > niē; #60D7 +惘 > wăng; #60D8 +惙 > chùo; #60D9 +惚 > bū; #60DA +惛 > hūn; #60DB +惜 > xī; #60DC +惝 > tăng; #60DD +惞 > xīn; #60DE +惟 > wéi; #60DF +惠 > hùi; #60E0 +惡 > è; #60E1 +惢 > rŭi; #60E2 +惣 > zŏng; #60E3 +惤 > jiān; #60E4 +惥 > yŏng; #60E5 +惦 > diàn; #60E6 +惧 > jù; #60E7 +惨 > căn; #60E8 +惩 > chéng; #60E9 +惪 > dé; #60EA +惫 > bèi; #60EB +惬 > qiè; #60EC +惭 > cán; #60ED +惮 > dàn; #60EE +惯 > guàn; #60EF +惰 > dùo; #60F0 +惱 > năo; #60F1 +惲 > yùn; #60F2 +想 > xiăng; #60F3 +惴 > zhùi; #60F4 +惵 > diè; #60F5 +惶 > huáng; #60F6 +惷 > chŭn; #60F7 +惸 > qíong; #60F8 +惹 > rĕ; #60F9 +惺 > xīng; #60FA +惻 > cè; #60FB +惼 > biăn; #60FC +惽 > hūn; #60FD +惾 > zōng; #60FE +惿 > tí; #60FF +愀 > qiăo; #6100 +愁 > chóu; #6101 +愂 > bèi; #6102 +愃 > xuān; #6103 +愄 > wēi; #6104 +愅 > gé; #6105 +愆 > qiān; #6106 +愇 > wĕi; #6107 +愈 > yù; #6108 +愉 > yú; #6109 +愊 > bì; #610A +愋 > xuān; #610B +愌 > huàn; #610C +愍 > mĭn; #610D +愎 > bì; #610E +意 > yì; #610F +愐 > miăn; #6110 +愑 > yŏng; #6111 +愒 > kài; #6112 +愓 > dàng; #6113 +愔 > yīn; #6114 +愕 > è; #6115 +愖 > chén; #6116 +愗 > mòu; #6117 +愘 > kè; #6118 +愙 > kè; #6119 +愚 > yú; #611A +愛 > ài; #611B +愜 > qiè; #611C +愝 > yăn; #611D +愞 > nùo; #611E +感 > găn; #611F +愠 > yùn; #6120 +愡 > zŏng; #6121 +愢 > sāi; #6122 +愣 > léng; #6123 +愤 > fèn; #6124 +愦 > kùi; #6126 +愧 > kùi; #6127 +愨 > què; #6128 +愩 > gōng; #6129 +愪 > yún; #612A +愫 > sù; #612B +愬 > sù; #612C +愭 > qí; #612D +愮 > yáo; #612E +愯 > sŏng; #612F +愰 > huăng; #6130 +愱 > jí; #6131 +愲 > gŭ; #6132 +愳 > jù; #6133 +愴 > chuàng; #6134 +愵 > nì; #6135 +愶 > xié; #6136 +愷 > kăi; #6137 +愸 > zhĕng; #6138 +愹 > yŏng; #6139 +愺 > căo; #613A +愻 > sùn; #613B +愼 > shèn; #613C +愽 > bó; #613D +愾 > kài; #613E +愿 > yuàn; #613F +慀 > xié; #6140 +慁 > hùn; #6141 +慂 > yŏng; #6142 +慃 > yăng; #6143 +慄 > lì; #6144 +慅 > sāo; #6145 +慆 > tāo; #6146 +慇 > yīn; #6147 +慈 > cí; #6148 +慉 > xù; #6149 +慊 > qiàn; #614A +態 > tài; #614B +慌 > huāng; #614C +慍 > yùn; #614D +慎 > shèn; #614E +慏 > mĭng; #614F +慑 > shè; #6151 +慒 > cóng; #6152 +慓 > piào; #6153 +慔 > mò; #6154 +慕 > mù; #6155 +慖 > gúo; #6156 +慗 > chì; #6157 +慘 > căn; #6158 +慙 > cán; #6159 +慚 > cán; #615A +慛 > cúi; #615B +慜 > mĭn; #615C +慝 > tè; #615D +慞 > zhāng; #615E +慟 > tòng; #615F +慠 > ào; #6160 +慡 > shuăng; #6161 +慢 > màn; #6162 +慣 > guàn; #6163 +慤 > què; #6164 +慥 > zào; #6165 +慦 > jìu; #6166 +慧 > hùi; #6167 +慨 > kăi; #6168 +慩 > lián; #6169 +慪 > òu; #616A +慫 > sŏng; #616B +慬 > jĭn; #616C +慭 > yìn; #616D +慮 > lǜ; #616E +慯 > shāng; #616F +慰 > wèi; #6170 +慱 > tuán; #6171 +慲 > mán; #6172 +慳 > qiān; #6173 +慴 > shè; #6174 +慵 > yōng; #6175 +慶 > qìng; #6176 +慷 > kāng; #6177 +慸 > dì; #6178 +慹 > zhí; #6179 +慺 > lóu; #617A +慻 > juàn; #617B +慼 > qī; #617C +慽 > qī; #617D +慾 > yù; #617E +慿 > píng; #617F +憀 > liáo; #6180 +憁 > cōng; #6181 +憂 > yōu; #6182 +憃 > chōng; #6183 +憄 > zhì; #6184 +憅 > tòng; #6185 +憆 > chēng; #6186 +憇 > qì; #6187 +憈 > qū; #6188 +憉 > péng; #6189 +憊 > bèi; #618A +憋 > biē; #618B +憌 > chún; #618C +憍 > jiāo; #618D +憎 > zēng; #618E +憏 > chì; #618F +憐 > lián; #6190 +憑 > píng; #6191 +憒 > kùi; #6192 +憓 > hùi; #6193 +憔 > qiáo; #6194 +憕 > chéng; #6195 +憖 > yìn; #6196 +憗 > yìn; #6197 +憘 > xĭ; #6198 +憙 > xĭ; #6199 +憚 > dàn; #619A +憛 > tán; #619B +憜 > dŭo; #619C +憝 > dùi; #619D +憞 > dùi; #619E +憟 > sù; #619F +憠 > jué; #61A0 +憡 > cè; #61A1 +憢 > xiāo; #61A2 +憣 > fán; #61A3 +憤 > fèn; #61A4 +憥 > láo; #61A5 +憦 > lào; #61A6 +憧 > chōng; #61A7 +憨 > hān; #61A8 +憩 > qì; #61A9 +憪 > xián; #61AA +憫 > mĭn; #61AB +憬 > jĭng; #61AC +憭 > liăo; #61AD +憮 > wŭ; #61AE +憯 > căn; #61AF +憰 > jué; #61B0 +憱 > cù; #61B1 +憲 > xiàn; #61B2 +憳 > tăn; #61B3 +憴 > shéng; #61B4 +憵 > pī; #61B5 +憶 > yì; #61B6 +憷 > chŭ; #61B7 +憸 > xiān; #61B8 +憹 > náo; #61B9 +憺 > dàn; #61BA +憻 > tăn; #61BB +憼 > jĭng; #61BC +憽 > sōng; #61BD +憾 > hàn; #61BE +憿 > jiāo; #61BF +懀 > wài; #61C0 +懁 > huán; #61C1 +懂 > dŏng; #61C2 +懃 > qín; #61C3 +懄 > qín; #61C4 +懅 > qú; #61C5 +懆 > căo; #61C6 +懇 > kĕn; #61C7 +懈 > xiè; #61C8 +應 > yìng; #61C9 +懊 > ào; #61CA +懋 > mào; #61CB +懌 > yì; #61CC +懍 > lĭn; #61CD +懎 > sè; #61CE +懏 > jùn; #61CF +懐 > huái; #61D0 +懑 > mèn; #61D1 +懒 > lăn; #61D2 +懓 > ài; #61D3 +懔 > lĭn; #61D4 +懕 > yān; #61D5 +懖 > guā; #61D6 +懗 > xià; #61D7 +懘 > chì; #61D8 +懙 > yŭ; #61D9 +懚 > yìn; #61DA +懛 > dāi; #61DB +懜 > mèng; #61DC +懝 > ài; #61DD +懞 > méng; #61DE +懟 > dùi; #61DF +懠 > qí; #61E0 +懡 > mŏ; #61E1 +懢 > lán; #61E2 +懣 > mèn; #61E3 +懤 > chóu; #61E4 +懥 > zhì; #61E5 +懦 > nùo; #61E6 +懧 > nùo; #61E7 +懨 > yān; #61E8 +懩 > yăng; #61E9 +懪 > bó; #61EA +懫 > zhí; #61EB +懬 > kuàng; #61EC +懭 > kuàng; #61ED +懮 > yŏu; #61EE +懯 > fū; #61EF +懰 > líu; #61F0 +懱 > miè; #61F1 +懲 > chéng; #61F2 +懴 > chàn; #61F4 +懵 > méng; #61F5 +懶 > lăn; #61F6 +懷 > huái; #61F7 +懸 > xuán; #61F8 +懹 > ràng; #61F9 +懺 > chàn; #61FA +懻 > jì; #61FB +懼 > jù; #61FC +懽 > huān; #61FD +懾 > shè; #61FE +懿 > yì; #61FF +戀 > liàn; #6200 +戁 > năn; #6201 +戂 > mí; #6202 +戃 > tăng; #6203 +戄 > jué; #6204 +戅 > gàng; #6205 +戆 > gàng; #6206 +戇 > gàng; #6207 +戈 > gē; #6208 +戉 > yuè; #6209 +戊 > wù; #620A +戋 > jiān; #620B +戌 > xū; #620C +戍 > shù; #620D +戎 > róng; #620E +戏 > xì; #620F +成 > chéng; #6210 +我 > wŏ; #6211 +戒 > jiè; #6212 +戓 > gē; #6213 +戔 > jiān; #6214 +戕 > qiāng; #6215 +或 > hùo; #6216 +戗 > qiāng; #6217 +战 > zhàn; #6218 +戙 > dòng; #6219 +戚 > qī; #621A +戛 > jiá; #621B +戜 > dié; #621C +戝 > zéi; #621D +戞 > jiá; #621E +戟 > jĭ; #621F +戠 > shì; #6220 +戡 > kān; #6221 +戢 > jí; #6222 +戣 > kúi; #6223 +戤 > gài; #6224 +戥 > dĕng; #6225 +戦 > zhàn; #6226 +戧 > chuāng; #6227 +戨 > gē; #6228 +戩 > jiăn; #6229 +截 > jié; #622A +戫 > yù; #622B +戬 > jiăn; #622C +戭 > yăn; #622D +戮 > lù; #622E +戯 > xì; #622F +戰 > zhàn; #6230 +戱 > xì; #6231 +戲 > xì; #6232 +戳 > chūo; #6233 +戴 > dài; #6234 +戵 > qú; #6235 +戶 > hù; #6236 +户 > hù; #6237 +戸 > hù; #6238 +戹 > è; #6239 +戺 > shì; #623A +戻 > lì; #623B +戼 > măo; #623C +戽 > hù; #623D +戾 > lì; #623E +房 > fáng; #623F +所 > sŭo; #6240 +扁 > biăn; #6241 +扂 > diàn; #6242 +扃 > jīong; #6243 +扄 > shăng; #6244 +扅 > yí; #6245 +扆 > yĭ; #6246 +扇 > shàn; #6247 +扈 > hù; #6248 +扉 > fēi; #6249 +扊 > yăn; #624A +手 > shŏu; #624B +扌 > t̄' 'shŏu' 'páng; #624C +才 > cái; #624D +扎 > zhā; #624E +扏 > qíu; #624F +扐 > lè; #6250 +扑 > bū; #6251 +扒 > bā; #6252 +打 > dă; #6253 +扔 > rēng; #6254 +払 > fú; #6255 +扗 > zài; #6257 +托 > tūo; #6258 +扙 > zhàng; #6259 +扚 > diāo; #625A +扛 > káng; #625B +扜 > yū; #625C +扝 > kū; #625D +扞 > hàn; #625E +扟 > shēn; #625F +扠 > chā; #6260 +扡 > yĭ; #6261 +扢 > gŭ; #6262 +扣 > kòu; #6263 +扤 > wù; #6264 +扥 > tūo; #6265 +扦 > qiān; #6266 +执 > zhí; #6267 +扨 > rèn; #6268 +扩 > kùo; #6269 +扪 > mén; #626A +扫 > săo; #626B +扬 > yáng; #626C +扭 > nĭu; #626D +扮 > bàn; #626E +扯 > chĕ; #626F +扰 > răo; #6270 +扱 > xī; #6271 +扲 > qián; #6272 +扳 > bān; #6273 +扴 > jiá; #6274 +扵 > yú; #6275 +扶 > fú; #6276 +扷 > ào; #6277 +扸 > xī; #6278 +批 > pī; #6279 +扺 > zhĭ; #627A +扻 > zì; #627B +扼 > è; #627C +扽 > dùn; #627D +找 > zhăo; #627E +承 > chéng; #627F +技 > jì; #6280 +抁 > yăn; #6281 +抂 > kuáng; #6282 +抃 > biàn; #6283 +抄 > chāo; #6284 +抅 > jū; #6285 +抆 > wèn; #6286 +抇 > hú; #6287 +抈 > yuè; #6288 +抉 > jué; #6289 +把 > bă; #628A +抋 > qìn; #628B +抌 > zhĕn; #628C +抍 > zhĕng; #628D +抎 > yŭn; #628E +抏 > wán; #628F +抐 > nù; #6290 +抑 > yì; #6291 +抒 > shū; #6292 +抓 > zhuā; #6293 +抔 > póu; #6294 +投 > tóu; #6295 +抖 > dŏu; #6296 +抗 > kàng; #6297 +折 > zhé; #6298 +抙 > póu; #6299 +抚 > fŭ; #629A +抛 > pāo; #629B +抜 > bá; #629C +抝 > ăo; #629D +択 > zé; #629E +抟 > tuán; #629F +抠 > kōu; #62A0 +抡 > lún; #62A1 +抢 > qiăng; #62A2 +护 > hù; #62A4 +报 > bào; #62A5 +抦 > bĭng; #62A6 +抧 > zhĭ; #62A7 +抨 > pēng; #62A8 +抩 > tān; #62A9 +抪 > pū; #62AA +披 > pī; #62AB +抬 > tái; #62AC +抭 > yăo; #62AD +抮 > zhĕn; #62AE +抯 > zhā; #62AF +抰 > yăng; #62B0 +抱 > bào; #62B1 +抲 > hē; #62B2 +抳 > nĭ; #62B3 +抴 > yì; #62B4 +抵 > dĭ; #62B5 +抶 > chì; #62B6 +抷 > pī; #62B7 +抸 > zā; #62B8 +抹 > mŏ; #62B9 +抺 > mŏ; #62BA +抻 > shèn; #62BB +押 > yā; #62BC +抽 > chōu; #62BD +抾 > qū; #62BE +抿 > mĭn; #62BF +拀 > chù; #62C0 +拁 > jiā; #62C1 +拂 > fú; #62C2 +拃 > zhăn; #62C3 +拄 > zhŭ; #62C4 +担 > dàn; #62C5 +拆 > chāi; #62C6 +拇 > mŭ; #62C7 +拈 > nián; #62C8 +拉 > lā; #62C9 +拊 > fŭ; #62CA +拋 > pāo; #62CB +拌 > bàn; #62CC +拍 > pāi; #62CD +拎 > līng; #62CE +拏 > ná; #62CF +拐 > guăi; #62D0 +拑 > qián; #62D1 +拒 > jù; #62D2 +拓 > tùo; #62D3 +拔 > bá; #62D4 +拕 > tūo; #62D5 +拖 > tūo; #62D6 +拗 > ăo; #62D7 +拘 > jū; #62D8 +拙 > zhúo; #62D9 +拚 > pàn; #62DA +招 > zhāo; #62DB +拜 > bài; #62DC +拝 > bài; #62DD +拞 > dĭ; #62DE +拟 > nĭ; #62DF +拠 > jù; #62E0 +拡 > kùo; #62E1 +拢 > lŏng; #62E2 +拣 > jiăn; #62E3 +拥 > yŏng; #62E5 +拦 > lán; #62E6 +拧 > níng; #62E7 +拨 > bō; #62E8 +择 > zé; #62E9 +拪 > qiān; #62EA +拫 > hén; #62EB +括 > guā; #62EC +拭 > shì; #62ED +拮 > jié; #62EE +拯 > zhĕng; #62EF +拰 > nĭn; #62F0 +拱 > gŏng; #62F1 +拲 > gŏng; #62F2 +拳 > quán; #62F3 +拴 > shuān; #62F4 +拵 > cún; #62F5 +拶 > zăn; #62F6 +拷 > kăo; #62F7 +拸 > chĭ; #62F8 +拹 > xié; #62F9 +拺 > cè; #62FA +拻 > hūi; #62FB +拼 > pīn; #62FC +拽 > zhuāi; #62FD +拾 > shí; #62FE +拿 > ná; #62FF +挀 > bò; #6300 +持 > chí; #6301 +挂 > guà; #6302 +挃 > zhì; #6303 +挄 > kùo; #6304 +挅 > dŭo; #6305 +挆 > dŭo; #6306 +指 > zhĭ; #6307 +挈 > qiè; #6308 +按 > àn; #6309 +挊 > nòng; #630A +挋 > zhèn; #630B +挌 > gé; #630C +挍 > jiào; #630D +挎 > kū; #630E +挏 > dòng; #630F +挐 > rú; #6310 +挑 > tiāo; #6311 +挒 > liè; #6312 +挓 > zhā; #6313 +挔 > lǚ; #6314 +挕 > dié; #6315 +挖 > wā; #6316 +挗 > jué; #6317 +挙 > jŭ; #6319 +挚 > zhì; #631A +挛 > luán; #631B +挜 > yà; #631C +挝 > zhuā; #631D +挞 > tà; #631E +挟 > xié; #631F +挠 > náo; #6320 +挡 > dăng; #6321 +挢 > jiăo; #6322 +挣 > zhēng; #6323 +挤 > jĭ; #6324 +挥 > hūi; #6325 +挦 > xún; #6326 +挨 > āi; #6328 +挩 > tūo; #6329 +挪 > núo; #632A +挫 > cùo; #632B +挬 > bó; #632C +挭 > gĕng; #632D +挮 > tĭ; #632E +振 > zhèn; #632F +挰 > chéng; #6330 +挱 > sūo; #6331 +挲 > sūo; #6332 +挳 > kēng; #6333 +挴 > mĕi; #6334 +挵 > lòng; #6335 +挶 > jú; #6336 +挷 > péng; #6337 +挸 > jiăn; #6338 +挹 > yì; #6339 +挺 > tĭng; #633A +挻 > shān; #633B +挼 > nùo; #633C +挽 > wăn; #633D +挾 > xié; #633E +挿 > chā; #633F +捀 > fēng; #6340 +捁 > jiăo; #6341 +捂 > wŭ; #6342 +捃 > jùn; #6343 +捄 > jìu; #6344 +捅 > tŏng; #6345 +捆 > kŭn; #6346 +捇 > hùo; #6347 +捈 > tú; #6348 +捉 > zhūo; #6349 +捊 > póu; #634A +捋 > lè; #634B +捌 > bā; #634C +捍 > hàn; #634D +捎 > shāo; #634E +捏 > niē; #634F +捐 > juān; #6350 +捑 > zé; #6351 +捒 > sŏng; #6352 +捓 > yé; #6353 +捔 > jué; #6354 +捕 > bŭ; #6355 +捖 > huán; #6356 +捗 > bù; #6357 +捘 > zùn; #6358 +捙 > yì; #6359 +捚 > zhāi; #635A +捛 > lǚ; #635B +捜 > sōu; #635C +捝 > tūo; #635D +捞 > lāo; #635E +损 > sŭn; #635F +捠 > bāng; #6360 +捡 > jiăn; #6361 +换 > huàn; #6362 +捣 > dăo; #6363 +捥 > wàn; #6365 +捦 > qín; #6366 +捧 > pĕng; #6367 +捨 > shĕ; #6368 +捩 > liè; #6369 +捪 > mín; #636A +捫 > mén; #636B +捬 > fŭ; #636C +捭 > băi; #636D +据 > jù; #636E +捯 > dăo; #636F +捰 > wŏ; #6370 +捱 > ái; #6371 +捲 > juăn; #6372 +捳 > yuè; #6373 +捴 > zŏng; #6374 +捵 > chĕn; #6375 +捶 > chúi; #6376 +捷 > jié; #6377 +捸 > tū; #6378 +捹 > bèn; #6379 +捺 > nà; #637A +捻 > niăn; #637B +捼 > núo; #637C +捽 > zú; #637D +捾 > wò; #637E +捿 > xī; #637F +掀 > xiān; #6380 +掁 > chéng; #6381 +掂 > diān; #6382 +掃 > săo; #6383 +掄 > lún; #6384 +掅 > qìng; #6385 +掆 > gāng; #6386 +掇 > dúo; #6387 +授 > shòu; #6388 +掉 > diào; #6389 +掊 > póu; #638A +掋 > dĭ; #638B +掌 > zhăng; #638C +掍 > gŭn; #638D +掎 > jĭ; #638E +掏 > tāo; #638F +掐 > qiā; #6390 +掑 > qí; #6391 +排 > pái; #6392 +掓 > shú; #6393 +掔 > qiān; #6394 +掕 > lìng; #6395 +掖 > yì; #6396 +掗 > yà; #6397 +掘 > jué; #6398 +掙 > zhēng; #6399 +掚 > liăng; #639A +掛 > guà; #639B +掜 > yĭ; #639C +掝 > hùo; #639D +掞 > shàn; #639E +掟 > zhĕng; #639F +掠 > lǜe; #63A0 +採 > căi; #63A1 +探 > tàn; #63A2 +掣 > chè; #63A3 +掤 > bīng; #63A4 +接 > jiē; #63A5 +掦 > tì; #63A6 +控 > kòng; #63A7 +推 > tūi; #63A8 +掩 > yăn; #63A9 +措 > cùo; #63AA +掫 > zōu; #63AB +掬 > jú; #63AC +掭 > tiàn; #63AD +掮 > qián; #63AE +掯 > kèn; #63AF +掰 > bāi; #63B0 +掱 > shŏu; #63B1 +掲 > jiē; #63B2 +掳 > lŭ; #63B3 +掴 > gúo; #63B4 +掷 > zhí; #63B7 +掸 > dăn; #63B8 +掺 > xiān; #63BA +掻 > sāo; #63BB +掼 > guàn; #63BC +掽 > pèng; #63BD +掾 > yuàn; #63BE +掿 > nùo; #63BF +揀 > jiăn; #63C0 +揁 > zhēn; #63C1 +揂 > jīu; #63C2 +揃 > jiān; #63C3 +揄 > yú; #63C4 +揅 > yán; #63C5 +揆 > kúi; #63C6 +揇 > năn; #63C7 +揈 > hōng; #63C8 +揉 > róu; #63C9 +揊 > pì; #63CA +揋 > wēi; #63CB +揌 > sāi; #63CC +揍 > zòu; #63CD +揎 > xuān; #63CE +描 > miáo; #63CF +提 > tí; #63D0 +揑 > niē; #63D1 +插 > chā; #63D2 +揓 > shì; #63D3 +揔 > zŏng; #63D4 +揕 > zhèn; #63D5 +揖 > yī; #63D6 +揗 > shŭn; #63D7 +揘 > héng; #63D8 +揙 > biàn; #63D9 +揚 > yáng; #63DA +換 > huàn; #63DB +揜 > yăn; #63DC +揝 > zuàn; #63DD +揞 > ăn; #63DE +揟 > xū; #63DF +揠 > yà; #63E0 +握 > wò; #63E1 +揢 > kè; #63E2 +揣 > chuăi; #63E3 +揤 > jí; #63E4 +揥 > tì; #63E5 +揦 > lá; #63E6 +揧 > là; #63E7 +揨 > chéng; #63E8 +揩 > kāi; #63E9 +揪 > jīu; #63EA +揫 > jīu; #63EB +揬 > tú; #63EC +揭 > jiē; #63ED +揮 > hūi; #63EE +揯 > gēng; #63EF +揰 > chòng; #63F0 +揱 > shùo; #63F1 +揲 > shé; #63F2 +揳 > xiè; #63F3 +援 > yuán; #63F4 +揵 > qián; #63F5 +揶 > yé; #63F6 +揷 > chā; #63F7 +揸 > zhā; #63F8 +揹 > bēi; #63F9 +揺 > yáo; #63FA +揽 > lăn; #63FD +揾 > wèn; #63FE +揿 > qìn; #63FF +搀 > chān; #6400 +搁 > gē; #6401 +搂 > lŏu; #6402 +搃 > zŏng; #6403 +搄 > gēng; #6404 +搅 > jiăo; #6405 +搆 > gòu; #6406 +搇 > qìn; #6407 +搈 > yŏng; #6408 +搉 > què; #6409 +搊 > chōu; #640A +搋 > chĭ; #640B +搌 > zhăn; #640C +損 > sŭn; #640D +搎 > sūn; #640E +搏 > bó; #640F +搐 > chù; #6410 +搑 > rŏng; #6411 +搒 > bèng; #6412 +搓 > cūo; #6413 +搔 > sāo; #6414 +搕 > kè; #6415 +搖 > yáo; #6416 +搗 > dăo; #6417 +搘 > zhī; #6418 +搙 > nù; #6419 +搚 > xié; #641A +搛 > jiān; #641B +搜 > sōu; #641C +搝 > qĭu; #641D +搞 > găo; #641E +搟 > xiăn; #641F +搠 > shùo; #6420 +搡 > săng; #6421 +搢 > jìn; #6422 +搣 > miè; #6423 +搤 > è; #6424 +搥 > chúi; #6425 +搦 > nùo; #6426 +搧 > shān; #6427 +搨 > tà; #6428 +搩 > jié; #6429 +搪 > táng; #642A +搫 > pán; #642B +搬 > bān; #642C +搭 > dā; #642D +搮 > lì; #642E +搯 > tāo; #642F +搰 > hú; #6430 +搱 > zhì; #6431 +搲 > wā; #6432 +搳 > xiá; #6433 +搴 > qiān; #6434 +搵 > wèn; #6435 +搶 > qiăng; #6436 +搷 > tián; #6437 +搸 > zhēn; #6438 +搹 > è; #6439 +携 > xī; #643A +搻 > nùo; #643B +搼 > quán; #643C +搽 > chá; #643D +搾 > zhà; #643E +搿 > gé; #643F +摀 > wŭ; #6440 +摁 > èn; #6441 +摂 > shè; #6442 +摃 > káng; #6443 +摄 > shè; #6444 +摅 > shū; #6445 +摆 > băi; #6446 +摇 > yáo; #6447 +摈 > bìn; #6448 +摉 > sōu; #6449 +摊 > tān; #644A +摋 > sà; #644B +摌 > chăn; #644C +摍 > sūo; #644D +摎 > liáo; #644E +摏 > chōng; #644F +摐 > chuāng; #6450 +摑 > gúo; #6451 +摒 > bìng; #6452 +摓 > féng; #6453 +摔 > shuāi; #6454 +摕 > dì; #6455 +摖 > qì; #6456 +摗 > sou; #6457 +摘 > zhāi; #6458 +摙 > liăn; #6459 +摚 > táng; #645A +摛 > chī; #645B +摜 > guàn; #645C +摝 > lù; #645D +摞 > lúo; #645E +摟 > lŏu; #645F +摠 > zŏng; #6460 +摡 > gài; #6461 +摢 > hù; #6462 +摣 > zhā; #6463 +摤 > chuăng; #6464 +摥 > tàng; #6465 +摦 > huà; #6466 +摧 > cūi; #6467 +摨 > nái; #6468 +摩 > mó; #6469 +摪 > jiāng; #646A +摫 > gūi; #646B +摬 > yìng; #646C +摭 > zhí; #646D +摮 > áo; #646E +摯 > zhì; #646F +摰 > niè; #6470 +摱 > mán; #6471 +摲 > shàn; #6472 +摳 > kōu; #6473 +摴 > shū; #6474 +摵 > sŭo; #6475 +摶 > tuán; #6476 +摷 > jiăo; #6477 +摸 > mō; #6478 +摹 > mó; #6479 +摺 > zhé; #647A +摻 > xiān; #647B +摼 > kēng; #647C +摽 > piăo; #647D +摾 > jiàng; #647E +摿 > yīn; #647F +撀 > gòu; #6480 +撁 > qiān; #6481 +撂 > lǜe; #6482 +撃 > jí; #6483 +撄 > yīng; #6484 +撅 > juē; #6485 +撆 > piē; #6486 +撇 > piĕ; #6487 +撈 > lāo; #6488 +撉 > dūn; #6489 +撊 > xiàn; #648A +撋 > ruán; #648B +撌 > kùi; #648C +撍 > zăn; #648D +撎 > yì; #648E +撏 > xún; #648F +撐 > chēng; #6490 +撑 > chēng; #6491 +撒 > să; #6492 +撓 > náo; #6493 +撔 > hèng; #6494 +撕 > sī; #6495 +撖 > qiăn; #6496 +撗 > huáng; #6497 +撘 > dā; #6498 +撙 > zŭn; #6499 +撚 > niăn; #649A +撛 > lĭn; #649B +撜 > zhĕng; #649C +撝 > hūi; #649D +撞 > zhuàng; #649E +撟 > jiăo; #649F +撠 > jĭ; #64A0 +撡 > cāo; #64A1 +撢 > dăn; #64A2 +撣 > dăn; #64A3 +撤 > chè; #64A4 +撥 > bō; #64A5 +撦 > chĕ; #64A6 +撧 > jué; #64A7 +撨 > xiāo; #64A8 +撩 > liáo; #64A9 +撪 > bèn; #64AA +撫 > fŭ; #64AB +撬 > qiào; #64AC +播 > bò; #64AD +撮 > cūo; #64AE +撯 > zhúo; #64AF +撰 > zhuàn; #64B0 +撱 > tŭo; #64B1 +撲 > pū; #64B2 +撳 > qìn; #64B3 +撴 > dūn; #64B4 +撵 > niăn; #64B5 +撷 > xié; #64B7 +撸 > lŭ; #64B8 +撹 > jiăo; #64B9 +撺 > cuān; #64BA +撻 > tà; #64BB +撼 > hàn; #64BC +撽 > qiào; #64BD +撾 > zhuā; #64BE +撿 > jiăn; #64BF +擀 > găn; #64C0 +擁 > yŏng; #64C1 +擂 > léi; #64C2 +擃 > kŭo; #64C3 +擄 > lŭ; #64C4 +擅 > shàn; #64C5 +擆 > zhúo; #64C6 +擇 > zé; #64C7 +擈 > pū; #64C8 +擉 > chùo; #64C9 +擊 > jí; #64CA +擋 > dăng; #64CB +擌 > sŭo; #64CC +操 > cāo; #64CD +擎 > qíng; #64CE +擏 > jìng; #64CF +擐 > huàn; #64D0 +擑 > jiē; #64D1 +擒 > qín; #64D2 +擓 > kuăi; #64D3 +擔 > dān; #64D4 +擕 > xī; #64D5 +擖 > gĕ; #64D6 +擗 > pì; #64D7 +擘 > bò; #64D8 +擙 > ào; #64D9 +據 > jù; #64DA +擛 > yè; #64DB +擞 > sŏu; #64DE +擟 > mí; #64DF +擠 > jĭ; #64E0 +擡 > tái; #64E1 +擢 > zhúo; #64E2 +擣 > dăo; #64E3 +擤 > xĭng; #64E4 +擥 > lăn; #64E5 +擦 > cā; #64E6 +擧 > jŭ; #64E7 +擨 > yé; #64E8 +擩 > rŭ; #64E9 +擪 > yè; #64EA +擫 > yè; #64EB +擬 > nĭ; #64EC +擭 > hù; #64ED +擮 > jí; #64EE +擯 > bìn; #64EF +擰 > níng; #64F0 +擱 > gē; #64F1 +擲 > zhí; #64F2 +擳 > jié; #64F3 +擴 > kùo; #64F4 +擵 > mó; #64F5 +擶 > jiàn; #64F6 +擷 > xié; #64F7 +擸 > liè; #64F8 +擹 > tān; #64F9 +擺 > băi; #64FA +擻 > sŏu; #64FB +擼 > lŭ; #64FC +擽 > lǜe; #64FD +擾 > răo; #64FE +擿 > zhí; #64FF +攀 > pān; #6500 +攁 > yăng; #6501 +攂 > lèi; #6502 +攃 > sà; #6503 +攄 > shū; #6504 +攅 > zăn; #6505 +攆 > niăn; #6506 +攇 > xiăn; #6507 +攈 > jùn; #6508 +攉 > hùo; #6509 +攊 > lì; #650A +攋 > là; #650B +攌 > hàn; #650C +攍 > yíng; #650D +攎 > lú; #650E +攏 > lŏng; #650F +攐 > qiān; #6510 +攑 > qiān; #6511 +攒 > zăn; #6512 +攓 > qiān; #6513 +攔 > lán; #6514 +攕 > sān; #6515 +攖 > yīng; #6516 +攗 > méi; #6517 +攘 > ráng; #6518 +攙 > chān; #6519 +攛 > cuān; #651B +攜 > xī; #651C +攝 > shè; #651D +攞 > lŭo; #651E +攟 > jùn; #651F +攠 > mí; #6520 +攡 > lí; #6521 +攢 > zăn; #6522 +攣 > lǘan; #6523 +攤 > tān; #6524 +攥 > zuàn; #6525 +攦 > lì; #6526 +攧 > diān; #6527 +攨 > wā; #6528 +攩 > dăng; #6529 +攪 > jiăo; #652A +攫 > jué; #652B +攬 > lăn; #652C +攭 > lì; #652D +攮 > năng; #652E +支 > zhī; #652F +攰 > gùi; #6530 +攱 > gŭi; #6531 +攲 > qī; #6532 +攳 > xín; #6533 +攴 > pū; #6534 +攵 > sūi; #6535 +收 > shōu; #6536 +攷 > káo; #6537 +攸 > yōu; #6538 +改 > găi; #6539 +攺 > yĭ; #653A +攻 > gōng; #653B +攼 > gān; #653C +攽 > bān; #653D +放 > fàng; #653E +政 > zhèng; #653F +敀 > bó; #6540 +敁 > diān; #6541 +敂 > kòu; #6542 +敃 > mĭn; #6543 +敄 > wù; #6544 +故 > gù; #6545 +敆 > hé; #6546 +敇 > cè; #6547 +效 > xiào; #6548 +敉 > mĭ; #6549 +敊 > chù; #654A +敋 > gé; #654B +敌 > dí; #654C +敍 > xù; #654D +敎 > jiào; #654E +敏 > mĭn; #654F +敐 > chén; #6550 +救 > jìu; #6551 +敒 > zhèn; #6552 +敓 > dúo; #6553 +敔 > yŭ; #6554 +敕 > chì; #6555 +敖 > áo; #6556 +敗 > bài; #6557 +敘 > xù; #6558 +教 > jiào; #6559 +敚 > dúo; #655A +敛 > liàn; #655B +敜 > niè; #655C +敝 > bì; #655D +敞 > chăng; #655E +敟 > diăn; #655F +敠 > dúo; #6560 +敡 > yì; #6561 +敢 > găn; #6562 +散 > sàn; #6563 +敤 > kĕ; #6564 +敥 > yàn; #6565 +敦 > dūn; #6566 +敧 > qĭ; #6567 +敨 > dŏu; #6568 +敩 > xiào; #6569 +敪 > dúo; #656A +敫 > jiào; #656B +敬 > jìng; #656C +敭 > yáng; #656D +敮 > xiá; #656E +敯 > mín; #656F +数 > shù; #6570 +敱 > ái; #6571 +敲 > qiāo; #6572 +敳 > ái; #6573 +整 > zhĕng; #6574 +敵 > dí; #6575 +敶 > zhèn; #6576 +敷 > fū; #6577 +數 > shù; #6578 +敹 > liáo; #6579 +敺 > qū; #657A +敻 > xìong; #657B +敼 > xĭ; #657C +敽 > jiăo; #657D +敿 > jiăo; #657F +斀 > zhúo; #6580 +斁 > yì; #6581 +斂 > liàn; #6582 +斃 > bì; #6583 +斄 > lì; #6584 +斅 > xiào; #6585 +斆 > xiào; #6586 +文 > wén; #6587 +斈 > xué; #6588 +斉 > qí; #6589 +斊 > qí; #658A +斋 > zhāi; #658B +斌 > bīn; #658C +斍 > jué; #658D +斎 > zhāi; #658E +斐 > fĕi; #6590 +斑 > bān; #6591 +斒 > bān; #6592 +斓 > lán; #6593 +斔 > yŭ; #6594 +斕 > lán; #6595 +斖 > wĕi; #6596 +斗 > dŏu; #6597 +斘 > shēng; #6598 +料 > liào; #6599 +斚 > jiă; #659A +斛 > hú; #659B +斜 > xié; #659C +斝 > jiă; #659D +斞 > yŭ; #659E +斟 > zhēn; #659F +斠 > jiào; #65A0 +斡 > wò; #65A1 +斢 > tŏu; #65A2 +斣 > chù; #65A3 +斤 > jīn; #65A4 +斥 > chì; #65A5 +斦 > yín; #65A6 +斧 > fŭ; #65A7 +斨 > qiāng; #65A8 +斩 > zhăn; #65A9 +斪 > qú; #65AA +斫 > zhúo; #65AB +斬 > zhăn; #65AC +断 > duàn; #65AD +斮 > zhúo; #65AE +斯 > sī; #65AF +新 > xīn; #65B0 +斱 > zhúo; #65B1 +斲 > zhúo; #65B2 +斳 > qín; #65B3 +斴 > lín; #65B4 +斵 > zhúo; #65B5 +斶 > chù; #65B6 +斷 > duàn; #65B7 +斸 > zhŭ; #65B8 +方 > fāng; #65B9 +斺 > xiè; #65BA +斻 > háng; #65BB +於 > yú; #65BC +施 > shī; #65BD +斾 > pèi; #65BE +斿 > yóu; #65BF +旁 > páng; #65C1 +旂 > qí; #65C2 +旃 > zhān; #65C3 +旄 > máo; #65C4 +旅 > lǚ; #65C5 +旆 > pèi; #65C6 +旇 > pī; #65C7 +旈 > líu; #65C8 +旉 > fū; #65C9 +旊 > făng; #65CA +旋 > xuán; #65CB +旌 > jīng; #65CC +旍 > jīng; #65CD +旎 > nĭ; #65CE +族 > zú; #65CF +旐 > zhào; #65D0 +旑 > yĭ; #65D1 +旒 > líu; #65D2 +旓 > shāo; #65D3 +旔 > jiàn; #65D4 +旖 > yĭ; #65D6 +旗 > qí; #65D7 +旘 > zhì; #65D8 +旙 > fān; #65D9 +旚 > piāo; #65DA +旛 > fān; #65DB +旜 > zhān; #65DC +旝 > guài; #65DD +旞 > sùi; #65DE +旟 > yú; #65DF +无 > wú; #65E0 +旡 > jì; #65E1 +既 > jì; #65E2 +旣 > jì; #65E3 +旤 > hùo; #65E4 +日 > rì; #65E5 +旦 > dàn; #65E6 +旧 > jìu; #65E7 +旨 > zhĭ; #65E8 +早 > zăo; #65E9 +旪 > xié; #65EA +旫 > tiāo; #65EB +旬 > xún; #65EC +旭 > xù; #65ED +旮 > xù; #65EE +旯 > xù; #65EF +旰 > gàn; #65F0 +旱 > hàn; #65F1 +旲 > tái; #65F2 +旳 > dì; #65F3 +旴 > xū; #65F4 +旵 > chăn; #65F5 +时 > shí; #65F6 +旷 > kuàng; #65F7 +旸 > yáng; #65F8 +旹 > shí; #65F9 +旺 > wàng; #65FA +旻 > mín; #65FB +旼 > mín; #65FC +旽 > tūn; #65FD +旾 > chūn; #65FE +旿 > wŭ; #65FF +昀 > yún; #6600 +昁 > bèi; #6601 +昂 > áng; #6602 +昃 > zè; #6603 +昄 > băn; #6604 +昅 > jié; #6605 +昆 > kūn; #6606 +昇 > shēng; #6607 +昈 > hù; #6608 +昉 > făng; #6609 +昊 > hào; #660A +昋 > gùi; #660B +昌 > chāng; #660C +昍 > xuān; #660D +明 > míng; #660E +昏 > hūn; #660F +昐 > fēn; #6610 +昑 > qĭn; #6611 +昒 > hū; #6612 +易 > yì; #6613 +昔 > xí; #6614 +昕 > xīn; #6615 +昖 > yán; #6616 +昗 > zè; #6617 +昘 > făng; #6618 +昙 > tán; #6619 +昚 > shèn; #661A +昛 > jù; #661B +昜 > yáng; #661C +昝 > zăn; #661D +昞 > bĭng; #661E +星 > xīng; #661F +映 > yìng; #6620 +昡 > xuàn; #6621 +昢 > pĕi; #6622 +昣 > zhĕn; #6623 +昤 > līng; #6624 +春 > chūn; #6625 +昦 > hào; #6626 +昧 > mèi; #6627 +昨 > zúo; #6628 +昩 > mò; #6629 +昪 > biàn; #662A +昫 > xŭ; #662B +昬 > hūn; #662C +昭 > zhāo; #662D +昮 > zòng; #662E +是 > shì; #662F +昰 > shì; #6630 +昱 > yù; #6631 +昲 > fèi; #6632 +昳 > dié; #6633 +昴 > măo; #6634 +昵 > nì; #6635 +昶 > chăng; #6636 +昷 > wēn; #6637 +昸 > dōng; #6638 +昹 > ăi; #6639 +昺 > bĭng; #663A +昻 > áng; #663B +昼 > zhòu; #663C +昽 > lóng; #663D +显 > xiăn; #663E +昿 > kuàng; #663F +晀 > tiăo; #6640 +晁 > cháo; #6641 +時 > shí; #6642 +晃 > huăng; #6643 +晄 > huăng; #6644 +晅 > xuān; #6645 +晆 > kúi; #6646 +晇 > xū; #6647 +晈 > jiăo; #6648 +晉 > jìn; #6649 +晊 > zhĭ; #664A +晋 > jìn; #664B +晌 > shăng; #664C +晍 > tóng; #664D +晎 > hŏng; #664E +晏 > yàn; #664F +晐 > gāi; #6650 +晑 > xiăng; #6651 +晒 > shài; #6652 +晓 > xiăo; #6653 +晔 > yē; #6654 +晕 > yūn; #6655 +晖 > hūi; #6656 +晗 > hán; #6657 +晘 > hàn; #6658 +晙 > jùn; #6659 +晚 > wăn; #665A +晛 > xiàn; #665B +晜 > kūn; #665C +晝 > zhòu; #665D +晞 > xī; #665E +晟 > chéng; #665F +晠 > shéng; #6660 +晡 > bū; #6661 +晢 > zhē; #6662 +晣 > zhē; #6663 +晤 > wù; #6664 +晥 > hàn; #6665 +晦 > hùi; #6666 +晧 > hào; #6667 +晨 > chén; #6668 +晩 > wăn; #6669 +晪 > tiăn; #666A +晫 > zhúo; #666B +晬 > zùi; #666C +晭 > zhŏu; #666D +普 > pŭ; #666E +景 > jĭng; #666F +晰 > xī; #6670 +晱 > shăn; #6671 +晲 > yĭ; #6672 +晳 > xì; #6673 +晴 > qíng; #6674 +晵 > qĭ; #6675 +晶 > jīng; #6676 +晷 > gŭi; #6677 +晸 > zhĕn; #6678 +晹 > yì; #6679 +智 > zhì; #667A +晻 > ăn; #667B +晼 > wăn; #667C +晽 > lín; #667D +晾 > liàng; #667E +晿 > chāng; #667F +暀 > wăng; #6680 +暁 > xiăo; #6681 +暂 > zàn; #6682 +暄 > xuān; #6684 +暅 > xuăn; #6685 +暆 > yí; #6686 +暇 > xiá; #6687 +暈 > yūn; #6688 +暉 > hūi; #6689 +暊 > fŭ; #668A +暋 > mĭn; #668B +暌 > kúi; #668C +暍 > hè; #668D +暎 > yìng; #668E +暏 > dŭ; #668F +暐 > wĕi; #6690 +暑 > shŭ; #6691 +暒 > qíng; #6692 +暓 > mào; #6693 +暔 > nán; #6694 +暕 > jiăn; #6695 +暖 > nuăn; #6696 +暗 > àn; #6697 +暘 > yáng; #6698 +暙 > chūn; #6699 +暚 > yáo; #669A +暛 > sŭo; #669B +暜 > jìn; #669C +暝 > míng; #669D +暞 > jiăo; #669E +暟 > kăi; #669F +暠 > găo; #66A0 +暡 > wĕng; #66A1 +暢 > chàng; #66A2 +暣 > qì; #66A3 +暤 > hào; #66A4 +暥 > yàn; #66A5 +暦 > lì; #66A6 +暧 > ài; #66A7 +暨 > jì; #66A8 +暩 > gùi; #66A9 +暪 > mĕn; #66AA +暫 > zàn; #66AB +暬 > xiè; #66AC +暭 > hào; #66AD +暮 > mù; #66AE +暯 > mò; #66AF +暰 > cōng; #66B0 +暱 > nì; #66B1 +暲 > zhāng; #66B2 +暳 > hùi; #66B3 +暴 > bào; #66B4 +暵 > hàn; #66B5 +暶 > xuán; #66B6 +暷 > chuán; #66B7 +暸 > liáo; #66B8 +暹 > xiān; #66B9 +暺 > dàn; #66BA +暻 > jĭng; #66BB +暼 > piē; #66BC +暽 > lín; #66BD +暾 > tūn; #66BE +暿 > xĭ; #66BF +曀 > yì; #66C0 +曁 > jì; #66C1 +曂 > huàng; #66C2 +曃 > tài; #66C3 +曄 > yè; #66C4 +曅 > yè; #66C5 +曆 > lì; #66C6 +曇 > tán; #66C7 +曈 > tóng; #66C8 +曉 > xiăo; #66C9 +曊 > fèi; #66CA +曋 > qĭn; #66CB +曌 > zhào; #66CC +曍 > hào; #66CD +曎 > yì; #66CE +曏 > xiàng; #66CF +曐 > xīng; #66D0 +曑 > sēn; #66D1 +曒 > jiăo; #66D2 +曓 > bào; #66D3 +曔 > jìng; #66D4 +曕 > yiàn; #66D5 +曖 > ài; #66D6 +曗 > yè; #66D7 +曘 > rú; #66D8 +曙 > shù; #66D9 +曚 > méng; #66DA +曛 > xūn; #66DB +曜 > yào; #66DC +曝 > pù; #66DD +曞 > lì; #66DE +曟 > chén; #66DF +曠 > kuàng; #66E0 +曡 > dié; #66E1 +曣 > yàn; #66E3 +曤 > hùo; #66E4 +曥 > lú; #66E5 +曦 > xī; #66E6 +曧 > róng; #66E7 +曨 > lóng; #66E8 +曩 > năng; #66E9 +曪 > lŭo; #66EA +曫 > luán; #66EB +曬 > shài; #66EC +曭 > tăng; #66ED +曮 > yăn; #66EE +曯 > chú; #66EF +曰 > yuē; #66F0 +曱 > yuē; #66F1 +曲 > qŭ; #66F2 +曳 > yì; #66F3 +更 > gèng; #66F4 +曵 > yè; #66F5 +曶 > hū; #66F6 +曷 > hé; #66F7 +書 > shū; #66F8 +曹 > cáo; #66F9 +曺 > cáo; #66FA +曼 > màn; #66FC +曽 > cēng; #66FD +曾 > céng; #66FE +替 > tì; #66FF +最 > zùi; #6700 +朁 > căn; #6701 +朂 > xù; #6702 +會 > hùi; #6703 +朄 > yìn; #6704 +朅 > qiè; #6705 +朆 > fēn; #6706 +朇 > pí; #6707 +月 > yuè; #6708 +有 > yŏu; #6709 +朊 > ruăn; #670A +朋 > péng; #670B +朌 > bān; #670C +服 > fú; #670D +朎 > líng; #670E +朏 > fĕi; #670F +朐 > qú; #6710 +朒 > nǜ; #6712 +朓 > tiào; #6713 +朔 > shùo; #6714 +朕 > zhèn; #6715 +朖 > lăng; #6716 +朗 > lăng; #6717 +朘 > juān; #6718 +朙 > míng; #6719 +朚 > huāng; #671A +望 > wàng; #671B +朜 > tūn; #671C +朝 > zhāo; #671D +朞 > jī; #671E +期 > qí; #671F +朠 > yīng; #6720 +朡 > zōng; #6721 +朢 > wàng; #6722 +朣 > tóng; #6723 +朤 > lăng; #6724 +朦 > méng; #6726 +朧 > lóng; #6727 +木 > mù; #6728 +朩 > dĕng; #6729 +未 > wèi; #672A +末 > mò; #672B +本 > bĕn; #672C +札 > zhá; #672D +朮 > zhú; #672E +术 > zhú; #672F +朱 > zhū; #6731 +朲 > rén; #6732 +朳 > bā; #6733 +朴 > pò; #6734 +朵 > dŭo; #6735 +朶 > dŭo; #6736 +朷 > dāo; #6737 +朸 > lì; #6738 +朹 > qíu; #6739 +机 > jī; #673A +朻 > jīu; #673B +朼 > bĭ; #673C +朽 > xĭu; #673D +朾 > tíng; #673E +朿 > cì; #673F +杀 > shā; #6740 +杂 > zá; #6742 +权 > quán; #6743 +杄 > qiān; #6744 +杅 > yú; #6745 +杆 > gān; #6746 +杇 > wū; #6747 +杈 > chā; #6748 +杉 > shān; #6749 +杊 > xún; #674A +杋 > fān; #674B +杌 > wù; #674C +杍 > zĭ; #674D +李 > lĭ; #674E +杏 > xìng; #674F +材 > cái; #6750 +村 > cūn; #6751 +杒 > rèn; #6752 +杓 > sháo; #6753 +杔 > tūo; #6754 +杕 > dì; #6755 +杖 > zhàng; #6756 +杗 > máng; #6757 +杘 > chì; #6758 +杙 > yì; #6759 +杚 > gŭ; #675A +杛 > gōng; #675B +杜 > dù; #675C +杝 > yí; #675D +杞 > qĭ; #675E +束 > shù; #675F +杠 > gāng; #6760 +条 > tiáo; #6761 +来 > lái; #6765 +杧 > máng; #6767 +杨 > yáng; #6768 +杩 > mà; #6769 +杪 > miăo; #676A +杫 > sì; #676B +杬 > yuán; #676C +杭 > háng; #676D +杮 > fèi; #676E +杯 > bēi; #676F +杰 > jié; #6770 +東 > dōng; #6771 +杲 > găo; #6772 +杳 > yăo; #6773 +杴 > xiān; #6774 +杵 > chŭ; #6775 +杶 > qūn; #6776 +杷 > pá; #6777 +杸 > shū; #6778 +杹 > huà; #6779 +杺 > xīn; #677A +杻 > chŏu; #677B +杼 > zhù; #677C +杽 > chŏu; #677D +松 > sōng; #677E +板 > băn; #677F +枀 > sōng; #6780 +极 > jí; #6781 +枂 > yuè; #6782 +枃 > jìn; #6783 +构 > gōu; #6784 +枅 > jī; #6785 +枆 > máo; #6786 +枇 > pí; #6787 +枈 > bì; #6788 +枉 > wăng; #6789 +枊 > àng; #678A +枋 > fāng; #678B +枌 > fén; #678C +枍 > yì; #678D +枎 > fú; #678E +枏 > nán; #678F +析 > xī; #6790 +枑 > hù; #6791 +枒 > yá; #6792 +枓 > dŏu; #6793 +枔 > xún; #6794 +枕 > zhĕn; #6795 +枖 > yāo; #6796 +林 > lín; #6797 +枘 > rùi; #6798 +枙 > é; #6799 +枚 > méi; #679A +枛 > zhào; #679B +果 > gŭo; #679C +枝 > zhī; #679D +枞 > cōng; #679E +枟 > yùn; #679F +枡 > dŏu; #67A1 +枢 > shū; #67A2 +枣 > zăo; #67A3 +枥 > lì; #67A5 +枧 > jiàn; #67A7 +枨 > chéng; #67A8 +枪 > qiāng; #67AA +枫 > fēng; #67AB +枬 > nán; #67AC +枭 > xiāo; #67AD +枮 > xiān; #67AE +枯 > kū; #67AF +枰 > píng; #67B0 +枱 > yí; #67B1 +枲 > xĭ; #67B2 +枳 > zhī; #67B3 +枴 > guăi; #67B4 +枵 > xiāo; #67B5 +架 > jià; #67B6 +枷 > jiā; #67B7 +枸 > gŏu; #67B8 +枹 > fū; #67B9 +枺 > mò; #67BA +枻 > yì; #67BB +枼 > yè; #67BC +枽 > yè; #67BD +枾 > shì; #67BE +枿 > niè; #67BF +柀 > bĭ; #67C0 +柁 > dùo; #67C1 +柂 > yí; #67C2 +柃 > líng; #67C3 +柄 > bĭng; #67C4 +柅 > nĭ; #67C5 +柆 > lā; #67C6 +柇 > hé; #67C7 +柈 > pán; #67C8 +柉 > fán; #67C9 +柊 > zhōng; #67CA +柋 > dài; #67CB +柌 > cí; #67CC +柍 > yāng; #67CD +柎 > fū; #67CE +柏 > bó; #67CF +某 > mŏu; #67D0 +柑 > gān; #67D1 +柒 > qī; #67D2 +染 > răn; #67D3 +柔 > róu; #67D4 +柕 > mào; #67D5 +柖 > zhāo; #67D6 +柗 > sōng; #67D7 +柘 > zhè; #67D8 +柙 > xiá; #67D9 +柚 > yòu; #67DA +柛 > shēn; #67DB +柜 > jŭ; #67DC +柝 > tùo; #67DD +柞 > zùo; #67DE +柟 > nán; #67DF +柠 > níng; #67E0 +柡 > yŏng; #67E1 +柢 > dĭ; #67E2 +柣 > zhí; #67E3 +柤 > zhā; #67E4 +查 > chá; #67E5 +柦 > dàn; #67E6 +柧 > gū; #67E7 +柨 > pu; #67E8 +柩 > jìu; #67E9 +柪 > āo; #67EA +柫 > fú; #67EB +柬 > jiăn; #67EC +柭 > bō; #67ED +柮 > dùo; #67EE +柯 > kē; #67EF +柰 > nài; #67F0 +柱 > zhù; #67F1 +柲 > bì; #67F2 +柳 > lĭu; #67F3 +柴 > chái; #67F4 +柵 > zhà; #67F5 +柶 > sì; #67F6 +柷 > zhù; #67F7 +柸 > pēi; #67F8 +柹 > shì; #67F9 +柺 > guăi; #67FA +査 > chá; #67FB +柼 > yăo; #67FC +柽 > jué; #67FD +柾 > jìu; #67FE +柿 > shì; #67FF +栀 > zhī; #6800 +栁 > lĭu; #6801 +栂 > méi; #6802 +栄 > róng; #6804 +栅 > zhà; #6805 +标 > biāo; #6807 +栈 > zhàn; #6808 +栉 > jié; #6809 +栊 > lóng; #680A +栋 > dòng; #680B +栌 > lú; #680C +栎 > lì; #680E +栏 > lán; #680F +栐 > yŏng; #6810 +树 > shù; #6811 +栒 > xún; #6812 +栓 > shuān; #6813 +栔 > qì; #6814 +栕 > zhēn; #6815 +栖 > qī; #6816 +栗 > lì; #6817 +栘 > yĭ; #6818 +栙 > xiáng; #6819 +栚 > zhèn; #681A +栛 > lì; #681B +栜 > sù; #681C +栝 > guā; #681D +栞 > kān; #681E +栟 > bīng; #681F +栠 > rĕn; #6820 +校 > xiào; #6821 +栢 > bó; #6822 +栣 > rĕn; #6823 +栤 > bìng; #6824 +栥 > zī; #6825 +栦 > chóu; #6826 +栧 > yì; #6827 +栨 > jié; #6828 +栩 > xŭ; #6829 +株 > zhū; #682A +栫 > jiàn; #682B +栬 > zùi; #682C +栭 > ér; #682D +栮 > ĕr; #682E +栯 > yŏu; #682F +栰 > fá; #6830 +栱 > gŏng; #6831 +栲 > kăo; #6832 +栳 > lăo; #6833 +栴 > zhān; #6834 +栵 > lì; #6835 +栶 > yin; #6836 +样 > yáng; #6837 +核 > hé; #6838 +根 > gēn; #6839 +栺 > zhĭ; #683A +栻 > chì; #683B +格 > gé; #683C +栽 > zāi; #683D +栾 > luán; #683E +栿 > fú; #683F +桀 > jié; #6840 +桁 > háng; #6841 +桂 > gùi; #6842 +桃 > táo; #6843 +桄 > guàng; #6844 +桅 > wéi; #6845 +框 > kuàng; #6846 +桇 > rú; #6847 +案 > àn; #6848 +桉 > àn; #6849 +桊 > juàn; #684A +桋 > yí; #684B +桌 > zhūo; #684C +桍 > kū; #684D +桎 > zhí; #684E +桏 > qíong; #684F +桐 > tóng; #6850 +桑 > sāng; #6851 +桒 > sāng; #6852 +桓 > huán; #6853 +桔 > jié; #6854 +桕 > jìu; #6855 +桖 > xuè; #6856 +桗 > dùo; #6857 +桘 > zhùi; #6858 +桙 > yú; #6859 +桚 > zăn; #685A +桜 > yīng; #685C +桟 > zhàn; #685F +桠 > yá; #6860 +桡 > náo; #6861 +桢 > zhēn; #6862 +档 > dăng; #6863 +桤 > qī; #6864 +桥 > qiáo; #6865 +桦 > huà; #6866 +桧 > kuài; #6867 +桨 > jiăng; #6868 +桩 > zhuāng; #6869 +桪 > xún; #686A +桫 > sūo; #686B +桬 > shā; #686C +桭 > zhēn; #686D +桮 > bēi; #686E +桯 > tīng; #686F +桰 > guā; #6870 +桱 > jìng; #6871 +桲 > bó; #6872 +桳 > bèn; #6873 +桴 > fú; #6874 +桵 > rŭi; #6875 +桶 > tŏng; #6876 +桷 > jué; #6877 +桸 > xī; #6878 +桹 > láng; #6879 +桺 > lĭu; #687A +桻 > fēng; #687B +桼 > qī; #687C +桽 > wĕn; #687D +桾 > jūn; #687E +桿 > găn; #687F +梀 > cù; #6880 +梁 > liáng; #6881 +梂 > qíu; #6882 +梃 > tĭng; #6883 +梄 > yŏu; #6884 +梅 > méi; #6885 +梆 > bāng; #6886 +梇 > lòng; #6887 +梈 > pēng; #6888 +梉 > zhuāng; #6889 +梊 > dì; #688A +梋 > xuān; #688B +梌 > tú; #688C +梍 > zào; #688D +梎 > āo; #688E +梏 > gù; #688F +梐 > bì; #6890 +梑 > dí; #6891 +梒 > hán; #6892 +梓 > zĭ; #6893 +梔 > zhī; #6894 +梕 > rèn; #6895 +梖 > bèi; #6896 +梗 > gĕng; #6897 +梘 > jiàn; #6898 +梙 > huàn; #6899 +梚 > wăn; #689A +梛 > núo; #689B +梜 > jiá; #689C +條 > tiáo; #689D +梞 > jì; #689E +梟 > xiāo; #689F +梠 > lǚ; #68A0 +梡 > huán; #68A1 +梢 > shāo; #68A2 +梣 > cén; #68A3 +梤 > fén; #68A4 +梥 > sōng; #68A5 +梦 > mèng; #68A6 +梧 > wú; #68A7 +梨 > lí; #68A8 +梩 > lí; #68A9 +梪 > dòu; #68AA +梫 > cēn; #68AB +梬 > yĭng; #68AC +梭 > sūo; #68AD +梮 > jú; #68AE +梯 > tī; #68AF +械 > jiè; #68B0 +梱 > kŭn; #68B1 +梲 > zhúo; #68B2 +梳 > shū; #68B3 +梴 > chān; #68B4 +梵 > fàn; #68B5 +梶 > wĕi; #68B6 +梷 > jìng; #68B7 +梸 > lí; #68B8 +梹 > bīng; #68B9 +梼 > táo; #68BC +梽 > zhì; #68BD +梾 > lái; #68BE +梿 > lián; #68BF +检 > jiăn; #68C0 +棁 > zhúo; #68C1 +棂 > líng; #68C2 +棃 > lí; #68C3 +棄 > qì; #68C4 +棅 > bìng; #68C5 +棆 > zhūn; #68C6 +棇 > cōng; #68C7 +棈 > qiàn; #68C8 +棉 > mián; #68C9 +棊 > qí; #68CA +棋 > qí; #68CB +棌 > căi; #68CC +棍 > gùn; #68CD +棎 > chán; #68CE +棏 > tè; #68CF +棐 > fĕi; #68D0 +棑 > pái; #68D1 +棒 > bàng; #68D2 +棓 > pŏu; #68D3 +棔 > hūn; #68D4 +棕 > zōng; #68D5 +棖 > chéng; #68D6 +棗 > zăo; #68D7 +棘 > jí; #68D8 +棙 > lì; #68D9 +棚 > péng; #68DA +棛 > yù; #68DB +棜 > yù; #68DC +棝 > gù; #68DD +棞 > hún; #68DE +棟 > dòng; #68DF +棠 > táng; #68E0 +棡 > gāng; #68E1 +棢 > wăng; #68E2 +棣 > dì; #68E3 +棤 > xí; #68E4 +棥 > fán; #68E5 +棦 > chēng; #68E6 +棧 > zhàn; #68E7 +棨 > qĭ; #68E8 +棩 > yuān; #68E9 +棪 > yăn; #68EA +棫 > yù; #68EB +棬 > quān; #68EC +棭 > yì; #68ED +森 > sēn; #68EE +棯 > rĕn; #68EF +棰 > chúi; #68F0 +棱 > léng; #68F1 +棲 > qī; #68F2 +棳 > zhúo; #68F3 +棴 > fú; #68F4 +棵 > kē; #68F5 +棶 > lái; #68F6 +棷 > zōu; #68F7 +棸 > zōu; #68F8 +棹 > zhūo; #68F9 +棺 > guān; #68FA +棻 > fén; #68FB +棼 > fén; #68FC +棽 > chēn; #68FD +棾 > qíong; #68FE +棿 > niè; #68FF +椀 > wăn; #6900 +椁 > gŭo; #6901 +椂 > lù; #6902 +椃 > háo; #6903 +椄 > jiē; #6904 +椅 > yĭ; #6905 +椆 > chóu; #6906 +椇 > jŭ; #6907 +椈 > jú; #6908 +椉 > chéng; #6909 +椊 > zúo; #690A +椋 > liáng; #690B +椌 > qiāng; #690C +植 > zhí; #690D +椎 > zhūi; #690E +椏 > yā; #690F +椐 > jū; #6910 +椑 > bēi; #6911 +椒 > jiāo; #6912 +椓 > zhúo; #6913 +椔 > zī; #6914 +椕 > bīn; #6915 +椖 > péng; #6916 +椗 > dìng; #6917 +椘 > chŭ; #6918 +検 > jiăn; #691C +椝 > gūi; #691D +椞 > xì; #691E +椟 > dú; #691F +椠 > qiàn; #6920 +椤 > lúo; #6924 +椥 > zhī; #6925 +椪 > pèng; #692A +椫 > zhăn; #692B +椭 > tŭo; #692D +椮 > sēn; #692E +椯 > dúo; #692F +椰 > yé; #6930 +椱 > fòu; #6931 +椲 > wĕi; #6932 +椳 > wēi; #6933 +椴 > duàn; #6934 +椵 > jiă; #6935 +椶 > zōng; #6936 +椷 > jiān; #6937 +椸 > yí; #6938 +椹 > shèn; #6939 +椺 > xí; #693A +椻 > yàn; #693B +椼 > yăn; #693C +椽 > chuán; #693D +椾 > zhàn; #693E +椿 > chūn; #693F +楀 > yŭ; #6940 +楁 > hé; #6941 +楂 > zhā; #6942 +楃 > wò; #6943 +楄 > pián; #6944 +楅 > bì; #6945 +楆 > yāo; #6946 +楇 > hùo; #6947 +楈 > xū; #6948 +楉 > rùo; #6949 +楊 > yáng; #694A +楋 > là; #694B +楌 > yán; #694C +楍 > bĕn; #694D +楎 > hún; #694E +楏 > kúi; #694F +楐 > jiè; #6950 +楑 > kúi; #6951 +楒 > sī; #6952 +楓 > fēng; #6953 +楔 > xiè; #6954 +楕 > tŭo; #6955 +楖 > zhì; #6956 +楗 > jiàn; #6957 +楘 > mù; #6958 +楙 > mào; #6959 +楚 > chŭ; #695A +楛 > hù; #695B +楜 > hú; #695C +楝 > liàn; #695D +楞 > léng; #695E +楟 > tíng; #695F +楠 > nán; #6960 +楡 > yú; #6961 +楢 > yóu; #6962 +楣 > méi; #6963 +楤 > sŏng; #6964 +楥 > xuàn; #6965 +楦 > xuàn; #6966 +楧 > yīng; #6967 +楨 > zhēn; #6968 +楩 > pián; #6969 +楪 > yè; #696A +楫 > jí; #696B +楬 > jié; #696C +業 > yè; #696D +楮 > chŭ; #696E +楯 > shŭn; #696F +楰 > yú; #6970 +楱 > còu; #6971 +楲 > wēi; #6972 +楳 > méi; #6973 +楴 > dì; #6974 +極 > jí; #6975 +楶 > jié; #6976 +楷 > kăi; #6977 +楸 > qīu; #6978 +楹 > yíng; #6979 +楺 > róu; #697A +楻 > héng; #697B +楼 > lóu; #697C +楽 > lè; #697D +榀 > pĭn; #6980 +概 > gài; #6982 +榃 > tán; #6983 +榄 > lăn; #6984 +榅 > yún; #6985 +榆 > yú; #6986 +榇 > chèn; #6987 +榈 > lǘ; #6988 +榉 > jŭ; #6989 +榍 > xiè; #698D +榎 > jiă; #698E +榏 > yì; #698F +榐 > zhăn; #6990 +榑 > fù; #6991 +榒 > nài; #6992 +榓 > mì; #6993 +榔 > láng; #6994 +榕 > róng; #6995 +榖 > gŭ; #6996 +榗 > jiàn; #6997 +榘 > jŭ; #6998 +榙 > tă; #6999 +榚 > yăo; #699A +榛 > zhēn; #699B +榜 > băng; #699C +榝 > shā; #699D +榞 > yuán; #699E +榟 > zĭ; #699F +榠 > mīng; #69A0 +榡 > sù; #69A1 +榢 > jià; #69A2 +榣 > yáo; #69A3 +榤 > jié; #69A4 +榥 > huăng; #69A5 +榦 > gàn; #69A6 +榧 > fĕi; #69A7 +榨 > zhà; #69A8 +榩 > qián; #69A9 +榪 > mà; #69AA +榫 > sŭn; #69AB +榬 > yuán; #69AC +榭 > xiè; #69AD +榮 > róng; #69AE +榯 > shí; #69AF +榰 > zhī; #69B0 +榱 > cūi; #69B1 +榲 > yún; #69B2 +榳 > tíng; #69B3 +榴 > líu; #69B4 +榵 > róng; #69B5 +榶 > táng; #69B6 +榷 > què; #69B7 +榸 > zhāi; #69B8 +榹 > sī; #69B9 +榺 > shèng; #69BA +榻 > tà; #69BB +榼 > kè; #69BC +榽 > xī; #69BD +榾 > gù; #69BE +榿 > qī; #69BF +槀 > kăo; #69C0 +槁 > găo; #69C1 +槂 > sūn; #69C2 +槃 > pán; #69C3 +槄 > tāo; #69C4 +槅 > gé; #69C5 +槆 > xún; #69C6 +槇 > diān; #69C7 +槈 > nòu; #69C8 +槉 > jí; #69C9 +槊 > shùo; #69CA +構 > gòu; #69CB +槌 > chúi; #69CC +槍 > qiāng; #69CD +槎 > chā; #69CE +槏 > qiăn; #69CF +槐 > huái; #69D0 +槑 > méi; #69D1 +槒 > xù; #69D2 +槓 > gàng; #69D3 +槔 > gāo; #69D4 +槕 > zhúo; #69D5 +槖 > tùo; #69D6 +様 > yàng; #69D8 +槙 > diān; #69D9 +槚 > jiă; #69DA +槛 > jiàn; #69DB +槜 > zùi; #69DC +槟 > bīn; #69DF +槠 > zhū; #69E0 +槢 > xí; #69E2 +槣 > qĭ; #69E3 +槤 > lián; #69E4 +槥 > hùi; #69E5 +槦 > yóng; #69E6 +槧 > qiàn; #69E7 +槨 > gŭo; #69E8 +槩 > gài; #69E9 +槪 > gài; #69EA +槫 > tuán; #69EB +槬 > huà; #69EC +槭 > cù; #69ED +槮 > sēn; #69EE +槯 > cūi; #69EF +槰 > bèng; #69F0 +槱 > yŏu; #69F1 +槲 > hú; #69F2 +槳 > jiăng; #69F3 +槴 > hù; #69F4 +槵 > huàn; #69F5 +槶 > kùi; #69F6 +槷 > yì; #69F7 +槸 > niè; #69F8 +槹 > gāo; #69F9 +槺 > kāng; #69FA +槻 > gūi; #69FB +槼 > gūi; #69FC +槽 > cáo; #69FD +槾 > mán; #69FE +槿 > jĭn; #69FF +樀 > dì; #6A00 +樁 > zhuāng; #6A01 +樂 > lè; #6A02 +樃 > láng; #6A03 +樄 > chén; #6A04 +樅 > cōng; #6A05 +樆 > lí; #6A06 +樇 > xīu; #6A07 +樈 > qíng; #6A08 +樉 > shuăng; #6A09 +樊 > fán; #6A0A +樋 > tōng; #6A0B +樌 > guàn; #6A0C +樍 > jī; #6A0D +樎 > sūo; #6A0E +樏 > lĕi; #6A0F +樐 > lŭ; #6A10 +樑 > liáng; #6A11 +樒 > mì; #6A12 +樓 > lóu; #6A13 +樔 > cháo; #6A14 +樕 > sù; #6A15 +樖 > kē; #6A16 +樗 > shū; #6A17 +樘 > táng; #6A18 +標 > biāo; #6A19 +樚 > lù; #6A1A +樛 > jīu; #6A1B +樜 > shù; #6A1C +樝 > zhā; #6A1D +樞 > shū; #6A1E +樟 > zhāng; #6A1F +樠 > mén; #6A20 +模 > mó; #6A21 +樢 > niăo; #6A22 +樣 > yàng; #6A23 +樤 > tiáo; #6A24 +樥 > péng; #6A25 +樦 > zhù; #6A26 +樧 > shā; #6A27 +樨 > xī; #6A28 +権 > quán; #6A29 +横 > héng; #6A2A +樫 > jiān; #6A2B +樬 > cōng; #6A2C +樯 > qiáng; #6A2F +樱 > yīng; #6A31 +樲 > èr; #6A32 +樳 > xín; #6A33 +樴 > zhí; #6A34 +樵 > qiáo; #6A35 +樶 > zūi; #6A36 +樷 > cōng; #6A37 +樸 > pú; #6A38 +樹 > shù; #6A39 +樺 > huà; #6A3A +樻 > kùi; #6A3B +樼 > zhēn; #6A3C +樽 > zūn; #6A3D +樾 > yuè; #6A3E +樿 > zhăn; #6A3F +橀 > xī; #6A40 +橁 > xún; #6A41 +橂 > diàn; #6A42 +橃 > fā; #6A43 +橄 > găn; #6A44 +橅 > mó; #6A45 +橆 > wŭ; #6A46 +橇 > qiāo; #6A47 +橈 > náo; #6A48 +橉 > lìn; #6A49 +橊 > líu; #6A4A +橋 > qiáo; #6A4B +橌 > xiàn; #6A4C +橍 > rùn; #6A4D +橎 > fán; #6A4E +橏 > zhăn; #6A4F +橐 > tùo; #6A50 +橑 > lăo; #6A51 +橒 > yún; #6A52 +橓 > shùn; #6A53 +橔 > túi; #6A54 +橕 > chēng; #6A55 +橖 > táng; #6A56 +橗 > méng; #6A57 +橘 > jú; #6A58 +橙 > chéng; #6A59 +橚 > sù; #6A5A +橛 > jué; #6A5B +橜 > jué; #6A5C +橝 > tān; #6A5D +橞 > hùi; #6A5E +機 > jī; #6A5F +橠 > nŭo; #6A60 +橡 > xiàng; #6A61 +橢 > tŭo; #6A62 +橣 > nĭng; #6A63 +橤 > rŭi; #6A64 +橥 > zhū; #6A65 +橦 > chuáng; #6A66 +橧 > zēng; #6A67 +橨 > fén; #6A68 +橩 > qíong; #6A69 +橪 > răn; #6A6A +橫 > héng; #6A6B +橬 > cén; #6A6C +橭 > gū; #6A6D +橮 > lĭu; #6A6E +橯 > lào; #6A6F +橰 > gāo; #6A70 +橱 > chú; #6A71 +橶 > jí; #6A76 +橷 > dōu; #6A77 +橹 > lŭ; #6A79 +橼 > yuán; #6A7C +橽 > tà; #6A7D +橾 > shū; #6A7E +橿 > jiāng; #6A7F +檀 > tán; #6A80 +檁 > lĭn; #6A81 +檂 > nóng; #6A82 +檃 > yĭn; #6A83 +檄 > xí; #6A84 +檅 > sùi; #6A85 +檆 > shān; #6A86 +檇 > zùi; #6A87 +檈 > xuán; #6A88 +檉 > chēng; #6A89 +檊 > gàn; #6A8A +檋 > jū; #6A8B +檌 > zùi; #6A8C +檍 > yì; #6A8D +檎 > qín; #6A8E +檏 > pŭ; #6A8F +檐 > yán; #6A90 +檑 > léi; #6A91 +檒 > fēng; #6A92 +檓 > hŭi; #6A93 +檔 > dăng; #6A94 +檕 > jì; #6A95 +檖 > sùi; #6A96 +檗 > bò; #6A97 +檘 > bì; #6A98 +檙 > dĭng; #6A99 +檚 > chŭ; #6A9A +檛 > zhuā; #6A9B +檜 > kuài; #6A9C +檝 > jí; #6A9D +檞 > jiĕ; #6A9E +檟 > jiă; #6A9F +檠 > qíng; #6AA0 +檡 > zhè; #6AA1 +檢 > jiăn; #6AA2 +檣 > qiáng; #6AA3 +檤 > dào; #6AA4 +檥 > yĭ; #6AA5 +檦 > biăo; #6AA6 +檧 > sōng; #6AA7 +檨 > shē; #6AA8 +檩 > lĭn; #6AA9 +檫 > chá; #6AAB +檬 > méng; #6AAC +檭 > yín; #6AAD +檮 > táo; #6AAE +檯 > tái; #6AAF +檰 > mián; #6AB0 +檱 > qí; #6AB1 +檲 > tóan; #6AB2 +檳 > bīn; #6AB3 +檴 > hùo; #6AB4 +檵 > jì; #6AB5 +檶 > qiān; #6AB6 +檷 > mí; #6AB7 +檸 > níng; #6AB8 +檹 > yī; #6AB9 +檺 > găo; #6ABA +檻 > jiàn; #6ABB +檼 > yìn; #6ABC +檽 > ér; #6ABD +檾 > qĭng; #6ABE +檿 > yăn; #6ABF +櫀 > qí; #6AC0 +櫁 > mì; #6AC1 +櫂 > zhào; #6AC2 +櫃 > gùi; #6AC3 +櫄 > chūn; #6AC4 +櫅 > jī; #6AC5 +櫆 > kúi; #6AC6 +櫇 > pó; #6AC7 +櫈 > dèng; #6AC8 +櫉 > chú; #6AC9 +櫋 > mián; #6ACB +櫌 > yōu; #6ACC +櫍 > zhì; #6ACD +櫎 > guàng; #6ACE +櫏 > qiān; #6ACF +櫐 > lĕi; #6AD0 +櫑 > lĕi; #6AD1 +櫒 > sà; #6AD2 +櫓 > lŭ; #6AD3 +櫔 > lì; #6AD4 +櫕 > cuán; #6AD5 +櫖 > lǘ; #6AD6 +櫗 > miè; #6AD7 +櫘 > hùi; #6AD8 +櫙 > ōu; #6AD9 +櫚 > lǘ; #6ADA +櫛 > jié; #6ADB +櫜 > gāo; #6ADC +櫝 > dú; #6ADD +櫞 > yuán; #6ADE +櫟 > lì; #6ADF +櫠 > fèi; #6AE0 +櫡 > zhúo; #6AE1 +櫢 > sŏu; #6AE2 +櫣 > lián; #6AE3 +櫥 > chú; #6AE5 +櫧 > zhū; #6AE7 +櫨 > lú; #6AE8 +櫩 > yán; #6AE9 +櫪 > lì; #6AEA +櫫 > zhū; #6AEB +櫬 > chèn; #6AEC +櫭 > jié; #6AED +櫮 > è; #6AEE +櫯 > sū; #6AEF +櫰 > huái; #6AF0 +櫱 > niè; #6AF1 +櫲 > yù; #6AF2 +櫳 > lóng; #6AF3 +櫴 > lài; #6AF4 +櫶 > xiăn; #6AF6 +櫸 > jŭ; #6AF8 +櫹 > xiāo; #6AF9 +櫺 > líng; #6AFA +櫻 > yīng; #6AFB +櫼 > jiān; #6AFC +櫽 > yĭn; #6AFD +櫾 > yóu; #6AFE +櫿 > yíng; #6AFF +欀 > xiāng; #6B00 +欁 > nóng; #6B01 +欂 > bó; #6B02 +欃 > chán; #6B03 +欄 > lán; #6B04 +欅 > jŭ; #6B05 +欆 > shuāng; #6B06 +欇 > shè; #6B07 +欈 > wéi; #6B08 +欉 > còng; #6B09 +權 > quán; #6B0A +欋 > qú; #6B0B +欎 > yù; #6B0E +欏 > lúo; #6B0F +欐 > lĭ; #6B10 +欑 > zàn; #6B11 +欒 > luán; #6B12 +欓 > dăng; #6B13 +欔 > jué; #6B14 +欖 > lăn; #6B16 +欗 > lán; #6B17 +欘 > zhŭ; #6B18 +欙 > léi; #6B19 +欚 > lĭ; #6B1A +欛 > bà; #6B1B +欜 > náng; #6B1C +欝 > yù; #6B1D +欞 > líng; #6B1E +欠 > qiàn; #6B20 +次 > cì; #6B21 +欢 > huān; #6B22 +欣 > xīn; #6B23 +欤 > yú; #6B24 +欥 > yù; #6B25 +欦 > qiān; #6B26 +欧 > ōu; #6B27 +欨 > xū; #6B28 +欩 > chāo; #6B29 +欪 > chù; #6B2A +欫 > chī; #6B2B +欬 > kài; #6B2C +欭 > yì; #6B2D +欮 > jué; #6B2E +欯 > xí; #6B2F +欰 > xū; #6B30 +欱 > xià; #6B31 +欲 > yù; #6B32 +欳 > kuài; #6B33 +欴 > láng; #6B34 +欵 > kuăn; #6B35 +欶 > shùo; #6B36 +欷 > xī; #6B37 +欸 > ăi; #6B38 +欹 > yī; #6B39 +欺 > qī; #6B3A +欻 > hū; #6B3B +欼 > chĭ; #6B3C +欽 > qīn; #6B3D +款 > kuăn; #6B3E +欿 > kăn; #6B3F +歀 > kuăn; #6B40 +歁 > kăn; #6B41 +歂 > chuán; #6B42 +歃 > shà; #6B43 +歄 > gua; #6B44 +歅 > yīn; #6B45 +歆 > xīn; #6B46 +歇 > xiē; #6B47 +歈 > yú; #6B48 +歉 > qiàn; #6B49 +歊 > xiāo; #6B4A +歋 > yí; #6B4B +歌 > gē; #6B4C +歍 > wū; #6B4D +歎 > tàn; #6B4E +歏 > jìn; #6B4F +歐 > ōu; #6B50 +歑 > hū; #6B51 +歒 > tì; #6B52 +歓 > huān; #6B53 +歔 > xū; #6B54 +歕 > pèn; #6B55 +歖 > xī; #6B56 +歗 > xiào; #6B57 +歘 > xū; #6B58 +歙 > xì; #6B59 +歛 > liàn; #6B5B +歜 > chù; #6B5C +歝 > yì; #6B5D +歞 > kăn; #6B5E +歟 > yú; #6B5F +歠 > chùo; #6B60 +歡 > huān; #6B61 +止 > zhĭ; #6B62 +正 > zhèng; #6B63 +此 > cĭ; #6B64 +步 > bù; #6B65 +武 > wŭ; #6B66 +歧 > qí; #6B67 +歨 > bù; #6B68 +歩 > bù; #6B69 +歪 > wāi; #6B6A +歫 > jù; #6B6B +歬 > qián; #6B6C +歭 > chí; #6B6D +歮 > sè; #6B6E +歯 > chĭ; #6B6F +歰 > sè; #6B70 +歱 > zhŏng; #6B71 +歲 > sùi; #6B72 +歳 > sùi; #6B73 +歴 > lì; #6B74 +歵 > cùo; #6B75 +歶 > yú; #6B76 +歷 > lì; #6B77 +歸 > gūi; #6B78 +歹 > dăi; #6B79 +歺 > dăi; #6B7A +死 > sĭ; #6B7B +歼 > jiān; #6B7C +歽 > zhé; #6B7D +歾 > mò; #6B7E +歿 > mò; #6B7F +殀 > yăo; #6B80 +殁 > mò; #6B81 +殂 > cú; #6B82 +殃 > yāng; #6B83 +殄 > tiăn; #6B84 +殅 > shēng; #6B85 +殆 > dài; #6B86 +殇 > shāng; #6B87 +殈 > xù; #6B88 +殉 > xùn; #6B89 +殊 > shū; #6B8A +残 > cán; #6B8B +殌 > jué; #6B8C +殍 > piăo; #6B8D +殎 > qià; #6B8E +殏 > qìu; #6B8F +殐 > sù; #6B90 +殑 > qíng; #6B91 +殒 > yŭn; #6B92 +殓 > liàn; #6B93 +殔 > yì; #6B94 +殕 > fŏu; #6B95 +殖 > zhí; #6B96 +殗 > yè; #6B97 +殘 > cán; #6B98 +殙 > hūn; #6B99 +殚 > dān; #6B9A +殛 > jí; #6B9B +殜 > yè; #6B9C +殝 > zhen; #6B9D +殞 > yŭn; #6B9E +殟 > wēn; #6B9F +殠 > chòu; #6BA0 +殡 > bìn; #6BA1 +殢 > tì; #6BA2 +殣 > jĭn; #6BA3 +殤 > shāng; #6BA4 +殥 > yín; #6BA5 +殦 > diāo; #6BA6 +殧 > cù; #6BA7 +殨 > hùi; #6BA8 +殩 > cuàn; #6BA9 +殪 > yì; #6BAA +殫 > dān; #6BAB +殬 > dù; #6BAC +殭 > jiāng; #6BAD +殮 > liàn; #6BAE +殯 > bìn; #6BAF +殰 > dú; #6BB0 +殲 > jiān; #6BB2 +殳 > shū; #6BB3 +殴 > ōu; #6BB4 +段 > duàn; #6BB5 +殶 > zhù; #6BB6 +殷 > yīn; #6BB7 +殸 > qìng; #6BB8 +殹 > yì; #6BB9 +殺 > shā; #6BBA +殻 > què; #6BBB +殼 > ké; #6BBC +殽 > yáo; #6BBD +殾 > jùn; #6BBE +殿 > diàn; #6BBF +毀 > hŭi; #6BC0 +毁 > hŭi; #6BC1 +毂 > gŭ; #6BC2 +毃 > què; #6BC3 +毄 > jī; #6BC4 +毅 > yì; #6BC5 +毆 > ōu; #6BC6 +毇 > hŭi; #6BC7 +毈 > duàn; #6BC8 +毉 > yī; #6BC9 +毊 > xiāo; #6BCA +毋 > wú; #6BCB +毌 > guàn; #6BCC +母 > mŭ; #6BCD +毎 > mĕi; #6BCE +每 > mĕi; #6BCF +毐 > ăi; #6BD0 +毑 > zŭo; #6BD1 +毒 > dú; #6BD2 +毓 > yù; #6BD3 +比 > bĭ; #6BD4 +毕 > bì; #6BD5 +毖 > bì; #6BD6 +毗 > pí; #6BD7 +毘 > pí; #6BD8 +毙 > bì; #6BD9 +毚 > chán; #6BDA +毛 > máo; #6BDB +毞 > pú; #6BDE +毠 > jiā; #6BE0 +毡 > zhān; #6BE1 +毢 > sāi; #6BE2 +毣 > mù; #6BE3 +毤 > tùo; #6BE4 +毥 > xún; #6BE5 +毦 > èr; #6BE6 +毧 > róng; #6BE7 +毨 > xiăn; #6BE8 +毩 > jú; #6BE9 +毪 > mú; #6BEA +毫 > háo; #6BEB +毬 > qíu; #6BEC +毭 > dòu; #6BED +毯 > tăn; #6BEF +毰 > péi; #6BF0 +毱 > jú; #6BF1 +毲 > dúo; #6BF2 +毳 > cùi; #6BF3 +毴 > bī; #6BF4 +毵 > sān; #6BF5 +毷 > mào; #6BF7 +毸 > sūi; #6BF8 +毹 > yū; #6BF9 +毺 > yū; #6BFA +毻 > tùo; #6BFB +毼 > hé; #6BFC +毽 > jiàn; #6BFD +毾 > tà; #6BFE +毿 > sān; #6BFF +氀 > lǘ; #6C00 +氁 > mú; #6C01 +氂 > lí; #6C02 +氃 > tóng; #6C03 +氄 > rŏng; #6C04 +氅 > chăng; #6C05 +氆 > pŭ; #6C06 +氇 > lúo; #6C07 +氈 > zhān; #6C08 +氉 > sào; #6C09 +氊 > zhān; #6C0A +氋 > méng; #6C0B +氌 > lúo; #6C0C +氍 > qú; #6C0D +氎 > dié; #6C0E +氏 > shì; #6C0F +氐 > dĭ; #6C10 +民 > mín; #6C11 +氒 > jué; #6C12 +氓 > máng; #6C13 +气 > qì; #6C14 +氕 > piē; #6C15 +氖 > năi; #6C16 +気 > qì; #6C17 +氘 > dāo; #6C18 +氙 > xiān; #6C19 +氚 > chuān; #6C1A +氛 > fēn; #6C1B +氜 > rì; #6C1C +氝 > nèi; #6C1D +氟 > fú; #6C1F +氠 > shēn; #6C20 +氡 > dōng; #6C21 +氢 > qīng; #6C22 +氣 > qì; #6C23 +氤 > yīn; #6C24 +氥 > xī; #6C25 +氦 > hài; #6C26 +氧 > yăng; #6C27 +氨 > ān; #6C28 +氩 > yà; #6C29 +氪 > kè; #6C2A +氫 > qīng; #6C2B +氬 > yà; #6C2C +氭 > dōng; #6C2D +氮 > dàn; #6C2E +氯 > lǜ; #6C2F +氰 > qīng; #6C30 +氱 > yăng; #6C31 +氲 > yūn; #6C32 +氳 > yūn; #6C33 +水 > shŭi; #6C34 +氵 > sān' 'diăn' 'shŭi; #6C35 +氶 > zhĕng; #6C36 +氷 > bīng; #6C37 +永 > yŏng; #6C38 +氹 > dàng; #6C39 +氻 > lè; #6C3B +氼 > nì; #6C3C +氽 > tŭn; #6C3D +氾 > fàn; #6C3E +氿 > gŭi; #6C3F +汀 > tīng; #6C40 +汁 > zhī; #6C41 +求 > qíu; #6C42 +汃 > bīn; #6C43 +汄 > zè; #6C44 +汅 > miăn; #6C45 +汆 > cuān; #6C46 +汇 > hùi; #6C47 +汈 > diāo; #6C48 +汉 > yì; #6C49 +汊 > chà; #6C4A +汋 > zhúo; #6C4B +汌 > chuàn; #6C4C +汍 > wán; #6C4D +汎 > fàn; #6C4E +汏 > dài; #6C4F +汐 > xì; #6C50 +汑 > tūo; #6C51 +汒 > máng; #6C52 +汓 > qíu; #6C53 +汔 > qì; #6C54 +汕 > shàn; #6C55 +汖 > pài; #6C56 +汗 > hàn; #6C57 +汘 > qiān; #6C58 +汙 > wū; #6C59 +汚 > wū; #6C5A +汛 > xùn; #6C5B +汜 > sì; #6C5C +汝 > rŭ; #6C5D +汞 > gŏng; #6C5E +江 > jiāng; #6C5F +池 > chí; #6C60 +污 > wū; #6C61 +汤 > tāng; #6C64 +汥 > zhī; #6C65 +汦 > chí; #6C66 +汧 > qiān; #6C67 +汨 > mì; #6C68 +汩 > yù; #6C69 +汪 > wāng; #6C6A +汫 > qìng; #6C6B +汬 > jĭng; #6C6C +汭 > rùi; #6C6D +汮 > jūn; #6C6E +汯 > hóng; #6C6F +汰 > tài; #6C70 +汱 > quăn; #6C71 +汲 > jí; #6C72 +汳 > biàn; #6C73 +汴 > biàn; #6C74 +汵 > gàn; #6C75 +汶 > wèn; #6C76 +汷 > zhōng; #6C77 +汸 > fāng; #6C78 +汹 > xīong; #6C79 +決 > jué; #6C7A +汻 > hăng; #6C7B +汼 > niōu; #6C7C +汽 > qì; #6C7D +汾 > fén; #6C7E +汿 > xù; #6C7F +沀 > xù; #6C80 +沁 > qìn; #6C81 +沂 > yí; #6C82 +沃 > wò; #6C83 +沄 > yún; #6C84 +沅 > yuán; #6C85 +沆 > háng; #6C86 +沇 > yăn; #6C87 +沈 > chén; #6C88 +沉 > chén; #6C89 +沊 > dàn; #6C8A +沋 > yóu; #6C8B +沌 > dùn; #6C8C +沍 > hù; #6C8D +沎 > hùo; #6C8E +沏 > qiē; #6C8F +沐 > mù; #6C90 +沑 > róu; #6C91 +沒 > méi; #6C92 +沓 > tà; #6C93 +沔 > miăn; #6C94 +沕 > wù; #6C95 +沖 > chōng; #6C96 +沗 > tiān; #6C97 +沘 > bĭ; #6C98 +沙 > shā; #6C99 +沚 > zhĭ; #6C9A +沛 > pèi; #6C9B +沜 > pàn; #6C9C +沝 > zhŭi; #6C9D +沞 > zā; #6C9E +沟 > gōu; #6C9F +沠 > líu; #6CA0 +没 > méi; #6CA1 +沢 > zé; #6CA2 +沣 > fēng; #6CA3 +沤 > òu; #6CA4 +沥 > lì; #6CA5 +沦 > lún; #6CA6 +沧 > cāng; #6CA7 +沨 > féng; #6CA8 +沩 > wéi; #6CA9 +沪 > hù; #6CAA +沫 > mò; #6CAB +沬 > mèi; #6CAC +沭 > shù; #6CAD +沮 > jū; #6CAE +沯 > zăn; #6CAF +沰 > tūo; #6CB0 +沱 > túo; #6CB1 +沲 > túo; #6CB2 +河 > hé; #6CB3 +沴 > lì; #6CB4 +沵 > mĭ; #6CB5 +沶 > yí; #6CB6 +沷 > fā; #6CB7 +沸 > fèi; #6CB8 +油 > yóu; #6CB9 +沺 > tián; #6CBA +治 > zhì; #6CBB +沼 > zhăo; #6CBC +沽 > gū; #6CBD +沾 > zhān; #6CBE +沿 > yán; #6CBF +泀 > sī; #6CC0 +況 > kuàng; #6CC1 +泂 > jĭong; #6CC2 +泃 > jù; #6CC3 +泄 > xiè; #6CC4 +泅 > qíu; #6CC5 +泆 > yī; #6CC6 +泇 > jiā; #6CC7 +泈 > zhōng; #6CC8 +泉 > quán; #6CC9 +泊 > bó; #6CCA +泋 > hùi; #6CCB +泌 > mì; #6CCC +泍 > bēn; #6CCD +泎 > zhúo; #6CCE +泏 > chù; #6CCF +泐 > lè; #6CD0 +泑 > yŏu; #6CD1 +泒 > gū; #6CD2 +泓 > hóng; #6CD3 +泔 > gān; #6CD4 +法 > fă; #6CD5 +泖 > măo; #6CD6 +泗 > sì; #6CD7 +泘 > hū; #6CD8 +泙 > píng; #6CD9 +泚 > cĭ; #6CDA +泛 > fàn; #6CDB +泜 > chí; #6CDC +泝 > sù; #6CDD +泞 > nìng; #6CDE +泟 > chēng; #6CDF +泠 > líng; #6CE0 +泡 > pào; #6CE1 +波 > bō; #6CE2 +泣 > qì; #6CE3 +泤 > sì; #6CE4 +泥 > ní; #6CE5 +泦 > jú; #6CE6 +泧 > yuè; #6CE7 +注 > zhù; #6CE8 +泩 > shēng; #6CE9 +泪 > lèi; #6CEA +泫 > xuàn; #6CEB +泬 > xuè; #6CEC +泭 > fū; #6CED +泮 > pàn; #6CEE +泯 > mĭn; #6CEF +泰 > tài; #6CF0 +泱 > yāng; #6CF1 +泲 > jĭ; #6CF2 +泳 > yŏng; #6CF3 +泴 > guàn; #6CF4 +泵 > bèng; #6CF5 +泶 > xué; #6CF6 +泷 > lóng; #6CF7 +泸 > lú; #6CF8 +泺 > bó; #6CFA +泻 > xiè; #6CFB +泼 > pō; #6CFC +泽 > zé; #6CFD +泾 > jīng; #6CFE +泿 > yín; #6CFF +洀 > zhōu; #6D00 +洁 > jí; #6D01 +洂 > yì; #6D02 +洃 > hūi; #6D03 +洄 > húi; #6D04 +洅 > zŭi; #6D05 +洆 > chéng; #6D06 +洇 > yīn; #6D07 +洈 > wéi; #6D08 +洉 > hòu; #6D09 +洊 > jiàn; #6D0A +洋 > yáng; #6D0B +洌 > liè; #6D0C +洍 > sì; #6D0D +洎 > jì; #6D0E +洏 > ér; #6D0F +洐 > xíng; #6D10 +洑 > fú; #6D11 +洒 > să; #6D12 +洓 > sŭo; #6D13 +洔 > zhĭ; #6D14 +洕 > yīn; #6D15 +洖 > wú; #6D16 +洗 > xĭ; #6D17 +洘 > kăo; #6D18 +洙 > zhū; #6D19 +洚 > jiàng; #6D1A +洛 > lùo; #6D1B +洝 > àn; #6D1D +洞 > dòng; #6D1E +洟 > yí; #6D1F +洠 > móu; #6D20 +洡 > lĕi; #6D21 +洢 > yī; #6D22 +洣 > mĭ; #6D23 +洤 > quán; #6D24 +津 > jīn; #6D25 +洦 > mò; #6D26 +洧 > wĕi; #6D27 +洨 > xiáo; #6D28 +洩 > xiè; #6D29 +洪 > hóng; #6D2A +洫 > xù; #6D2B +洬 > shùo; #6D2C +洭 > kuāng; #6D2D +洮 > tāo; #6D2E +洯 > qiè; #6D2F +洰 > jù; #6D30 +洱 > ĕr; #6D31 +洲 > zhōu; #6D32 +洳 > rù; #6D33 +洴 > píng; #6D34 +洵 > xún; #6D35 +洶 > xīong; #6D36 +洷 > zhì; #6D37 +洸 > guāng; #6D38 +洹 > huán; #6D39 +洺 > míng; #6D3A +活 > húo; #6D3B +洼 > wā; #6D3C +洽 > qià; #6D3D +派 > pài; #6D3E +洿 > wū; #6D3F +浀 > qŭ; #6D40 +流 > líu; #6D41 +浂 > yì; #6D42 +浃 > jiá; #6D43 +浄 > jìng; #6D44 +浅 > qiăn; #6D45 +浆 > jiāng; #6D46 +浇 > jiāo; #6D47 +浈 > chéng; #6D48 +浉 > shī; #6D49 +浊 > zhúo; #6D4A +测 > cè; #6D4B +浍 > kuài; #6D4D +济 > jì; #6D4E +浏 > líu; #6D4F +浐 > chăn; #6D50 +浑 > hún; #6D51 +浒 > hŭ; #6D52 +浓 > nóng; #6D53 +浔 > xún; #6D54 +浕 > jìn; #6D55 +浖 > liè; #6D56 +浗 > qíu; #6D57 +浘 > wĕi; #6D58 +浙 > zhè; #6D59 +浚 > jùn; #6D5A +浛 > hàn; #6D5B +浜 > bāng; #6D5C +浝 > máng; #6D5D +浞 > zhúo; #6D5E +浟 > yóu; #6D5F +浠 > xī; #6D60 +浡 > bó; #6D61 +浢 > dòu; #6D62 +浣 > wăn; #6D63 +浤 > hóng; #6D64 +浥 > yì; #6D65 +浦 > pŭ; #6D66 +浧 > yĭng; #6D67 +浨 > lăn; #6D68 +浩 > hào; #6D69 +浪 > làng; #6D6A +浫 > hăn; #6D6B +浬 > lĭ; #6D6C +浭 > gēng; #6D6D +浮 > fú; #6D6E +浯 > wú; #6D6F +浰 > liàn; #6D70 +浱 > chún; #6D71 +浲 > féng; #6D72 +浳 > yì; #6D73 +浴 > yù; #6D74 +浵 > tóng; #6D75 +浶 > láo; #6D76 +海 > hăi; #6D77 +浸 > jìn; #6D78 +浹 > jiá; #6D79 +浺 > chōng; #6D7A +浻 > wĕng; #6D7B +浼 > mĕi; #6D7C +浽 > sūi; #6D7D +浾 > chēng; #6D7E +浿 > pèi; #6D7F +涀 > xiàn; #6D80 +涁 > shèn; #6D81 +涂 > tú; #6D82 +涃 > kùn; #6D83 +涄 > pīn; #6D84 +涅 > niè; #6D85 +涆 > hàn; #6D86 +涇 > jīng; #6D87 +消 > xiāo; #6D88 +涉 > shè; #6D89 +涊 > niàn; #6D8A +涋 > tū; #6D8B +涌 > yŏng; #6D8C +涍 > xiào; #6D8D +涎 > xián; #6D8E +涏 > tĭng; #6D8F +涐 > é; #6D90 +涑 > sù; #6D91 +涒 > tūn; #6D92 +涓 > juān; #6D93 +涔 > cén; #6D94 +涕 > tì; #6D95 +涖 > lì; #6D96 +涗 > shùi; #6D97 +涘 > sì; #6D98 +涙 > lèi; #6D99 +涚 > shùi; #6D9A +涛 > tāo; #6D9B +涜 > dú; #6D9C +涝 > lào; #6D9D +涞 > lái; #6D9E +涟 > lián; #6D9F +涠 > wéi; #6DA0 +涡 > wō; #6DA1 +涢 > yún; #6DA2 +涣 > huàn; #6DA3 +涤 > dí; #6DA4 +润 > rùn; #6DA6 +涧 > jiàn; #6DA7 +涨 > zhăng; #6DA8 +涩 > sè; #6DA9 +涪 > fú; #6DAA +涫 > guàn; #6DAB +涬 > xìng; #6DAC +涭 > shòu; #6DAD +涮 > shuàn; #6DAE +涯 > yá; #6DAF +涰 > chùo; #6DB0 +涱 > zhàng; #6DB1 +液 > yè; #6DB2 +涳 > kōng; #6DB3 +涴 > wò; #6DB4 +涵 > hán; #6DB5 +涶 > tūo; #6DB6 +涷 > dōng; #6DB7 +涸 > hé; #6DB8 +涹 > wō; #6DB9 +涺 > jū; #6DBA +涻 > gàn; #6DBB +涼 > liáng; #6DBC +涽 > hūn; #6DBD +涾 > tà; #6DBE +涿 > zhúo; #6DBF +淀 > diàn; #6DC0 +淁 > qiè; #6DC1 +淂 > dé; #6DC2 +淃 > juàn; #6DC3 +淄 > zī; #6DC4 +淅 > xī; #6DC5 +淆 > yáo; #6DC6 +淇 > qí; #6DC7 +淈 > gŭ; #6DC8 +淉 > gŭo; #6DC9 +淊 > hàn; #6DCA +淋 > lín; #6DCB +淌 > tăng; #6DCC +淍 > zhōu; #6DCD +淎 > pĕng; #6DCE +淏 > hào; #6DCF +淐 > chāng; #6DD0 +淑 > shú; #6DD1 +淒 > qī; #6DD2 +淓 > fāng; #6DD3 +淔 > chì; #6DD4 +淕 > lù; #6DD5 +淖 > nào; #6DD6 +淗 > jú; #6DD7 +淘 > táo; #6DD8 +淙 > cóng; #6DD9 +淚 > lèi; #6DDA +淛 > zhì; #6DDB +淜 > péng; #6DDC +淝 > féi; #6DDD +淞 > sōng; #6DDE +淟 > tiăn; #6DDF +淠 > pì; #6DE0 +淡 > dàn; #6DE1 +淢 > yù; #6DE2 +淣 > ní; #6DE3 +淤 > yū; #6DE4 +淥 > lù; #6DE5 +淦 > gàn; #6DE6 +淧 > mì; #6DE7 +淨 > jìng; #6DE8 +淩 > líng; #6DE9 +淪 > lún; #6DEA +淫 > yín; #6DEB +淬 > cùi; #6DEC +淭 > qú; #6DED +淮 > huái; #6DEE +淯 > yù; #6DEF +淰 > niàn; #6DF0 +深 > shēn; #6DF1 +淲 > piáo; #6DF2 +淳 > chún; #6DF3 +淴 > wà; #6DF4 +淵 > yuān; #6DF5 +淶 > lái; #6DF6 +混 > hŭn; #6DF7 +淸 > qīng; #6DF8 +淹 > yān; #6DF9 +淺 > qiăn; #6DFA +添 > tiān; #6DFB +淼 > miăo; #6DFC +淽 > zhĭ; #6DFD +淾 > yĭn; #6DFE +淿 > mì; #6DFF +渀 > bēn; #6E00 +渁 > yuān; #6E01 +渂 > wèn; #6E02 +渃 > rè; #6E03 +渄 > fēi; #6E04 +清 > qīng; #6E05 +渆 > yuān; #6E06 +渇 > kĕ; #6E07 +済 > jì; #6E08 +渉 > shè; #6E09 +渊 > yuān; #6E0A +渌 > lù; #6E0C +渍 > zì; #6E0D +渎 > dú; #6E0E +渐 > jiàn; #6E10 +渑 > mĭn; #6E11 +渒 > pì; #6E12 +渔 > yú; #6E14 +渕 > yuān; #6E15 +渖 > shĕn; #6E16 +渗 > shèn; #6E17 +渘 > róu; #6E18 +渙 > huàn; #6E19 +渚 > zhŭ; #6E1A +減 > jiăn; #6E1B +渜 > nuăn; #6E1C +渝 > yú; #6E1D +渞 > qíu; #6E1E +渟 > tíng; #6E1F +渠 > qú; #6E20 +渡 > dù; #6E21 +渢 > féng; #6E22 +渣 > zhā; #6E23 +渤 > bó; #6E24 +渥 > wò; #6E25 +渦 > wō; #6E26 +渧 > dì; #6E27 +渨 > wēi; #6E28 +温 > wēn; #6E29 +渪 > rú; #6E2A +渫 > xiè; #6E2B +測 > cè; #6E2C +渭 > wèi; #6E2D +渮 > gē; #6E2E +港 > găng; #6E2F +渰 > yăn; #6E30 +渱 > hóng; #6E31 +渲 > xuàn; #6E32 +渳 > mĭ; #6E33 +渴 > kĕ; #6E34 +渵 > máo; #6E35 +渶 > yīng; #6E36 +渷 > yăn; #6E37 +游 > yóu; #6E38 +渹 > hōng; #6E39 +渺 > miăo; #6E3A +渻 > xĭng; #6E3B +渼 > mĕi; #6E3C +渽 > zāi; #6E3D +渾 > hún; #6E3E +渿 > nài; #6E3F +湀 > kúi; #6E40 +湁 > shí; #6E41 +湂 > è; #6E42 +湃 > pài; #6E43 +湄 > méi; #6E44 +湅 > liàn; #6E45 +湆 > qì; #6E46 +湇 > qì; #6E47 +湈 > méi; #6E48 +湉 > tián; #6E49 +湊 > còu; #6E4A +湋 > wéi; #6E4B +湌 > cān; #6E4C +湍 > tuān; #6E4D +湎 > miăn; #6E4E +湏 > hùi; #6E4F +湐 > mò; #6E50 +湑 > xŭ; #6E51 +湒 > jí; #6E52 +湓 > pén; #6E53 +湔 > jiān; #6E54 +湕 > jiăn; #6E55 +湖 > hú; #6E56 +湗 > fèng; #6E57 +湘 > xiāng; #6E58 +湙 > yì; #6E59 +湚 > yìn; #6E5A +湛 > zhàn; #6E5B +湜 > shí; #6E5C +湝 > jiē; #6E5D +湞 > chéng; #6E5E +湟 > huáng; #6E5F +湠 > tàn; #6E60 +湡 > yú; #6E61 +湢 > bì; #6E62 +湣 > mĭn; #6E63 +湤 > shī; #6E64 +湥 > tú; #6E65 +湦 > shēng; #6E66 +湧 > yŏng; #6E67 +湨 > qù; #6E68 +湩 > zhòng; #6E69 +湪 > suèi; #6E6A +湫 > jīu; #6E6B +湬 > jiăo; #6E6C +湭 > qióu; #6E6D +湮 > yīn; #6E6E +湯 > tāng; #6E6F +湰 > lóng; #6E70 +湱 > hùo; #6E71 +湲 > yuán; #6E72 +湳 > năn; #6E73 +湴 > bàn; #6E74 +湵 > yŏu; #6E75 +湶 > quán; #6E76 +湷 > chúi; #6E77 +湸 > liàng; #6E78 +湹 > chán; #6E79 +湺 > yán; #6E7A +湻 > chún; #6E7B +湼 > niè; #6E7C +湽 > zī; #6E7D +湾 > wān; #6E7E +湿 > shī; #6E7F +満 > măn; #6E80 +溁 > yíng; #6E81 +溃 > kùi; #6E83 +溅 > jiàn; #6E85 +溆 > xù; #6E86 +溇 > lǚ; #6E87 +溈 > gūi; #6E88 +溉 > gài; #6E89 +溌 > pō; #6E8C +溍 > jìn; #6E8D +溎 > gùi; #6E8E +溏 > táng; #6E8F +源 > yuán; #6E90 +溑 > sŭo; #6E91 +溒 > yuán; #6E92 +溓 > lián; #6E93 +溔 > yăo; #6E94 +溕 > mèng; #6E95 +準 > zhŭn; #6E96 +溗 > shéng; #6E97 +溘 > kè; #6E98 +溙 > tài; #6E99 +溚 > dá; #6E9A +溛 > wā; #6E9B +溜 > līu; #6E9C +溝 > gōu; #6E9D +溞 > sāo; #6E9E +溟 > míng; #6E9F +溠 > zhà; #6EA0 +溡 > shí; #6EA1 +溢 > yì; #6EA2 +溣 > lún; #6EA3 +溤 > mă; #6EA4 +溥 > pŭ; #6EA5 +溦 > wéi; #6EA6 +溧 > lì; #6EA7 +溨 > cái; #6EA8 +溩 > wù; #6EA9 +溪 > xī; #6EAA +溫 > wēn; #6EAB +溬 > qiāng; #6EAC +溭 > zé; #6EAD +溮 > shī; #6EAE +溯 > sù; #6EAF +溰 > yī; #6EB0 +溱 > zhēn; #6EB1 +溲 > sōu; #6EB2 +溳 > yún; #6EB3 +溴 > xìu; #6EB4 +溵 > yīn; #6EB5 +溶 > róng; #6EB6 +溷 > hùn; #6EB7 +溸 > sù; #6EB8 +溹 > sù; #6EB9 +溺 > nì; #6EBA +溻 > tà; #6EBB +溼 > shī; #6EBC +溽 > rù; #6EBD +溾 > wēi; #6EBE +溿 > pàn; #6EBF +滀 > chù; #6EC0 +滁 > chú; #6EC1 +滂 > pāng; #6EC2 +滃 > wĕng; #6EC3 +滄 > cāng; #6EC4 +滅 > miè; #6EC5 +滆 > hé; #6EC6 +滇 > diān; #6EC7 +滈 > hào; #6EC8 +滉 > huăng; #6EC9 +滊 > xì; #6ECA +滋 > zī; #6ECB +滌 > dí; #6ECC +滍 > zhĭ; #6ECD +滎 > yíng; #6ECE +滏 > fŭ; #6ECF +滐 > jié; #6ED0 +滑 > huá; #6ED1 +滒 > gē; #6ED2 +滓 > zĭ; #6ED3 +滔 > tāo; #6ED4 +滕 > téng; #6ED5 +滖 > sūi; #6ED6 +滗 > bĭ; #6ED7 +滘 > jiào; #6ED8 +滙 > hùi; #6ED9 +滚 > gŭn; #6EDA +滛 > yín; #6EDB +滜 > gāo; #6EDC +滝 > lóng; #6EDD +滞 > zhì; #6EDE +滟 > yàn; #6EDF +滠 > shè; #6EE0 +满 > măn; #6EE1 +滢 > yìng; #6EE2 +滣 > chún; #6EE3 +滤 > lǜ; #6EE4 +滥 > làn; #6EE5 +滦 > luán; #6EE6 +滨 > bīn; #6EE8 +滩 > tān; #6EE9 +滪 > yù; #6EEA +滫 > sŏu; #6EEB +滬 > hù; #6EEC +滭 > bì; #6EED +滮 > biāo; #6EEE +滯 > zhì; #6EEF +滰 > jiăng; #6EF0 +滱 > kòu; #6EF1 +滲 > shèn; #6EF2 +滳 > shāng; #6EF3 +滴 > dī; #6EF4 +滵 > mì; #6EF5 +滶 > áo; #6EF6 +滷 > lŭ; #6EF7 +滸 > hŭ; #6EF8 +滹 > hū; #6EF9 +滺 > yóu; #6EFA +滻 > chăn; #6EFB +滼 > fàn; #6EFC +滽 > yóng; #6EFD +滾 > gŭn; #6EFE +滿 > măn; #6EFF +漀 > qìng; #6F00 +漁 > yú; #6F01 +漂 > piāo; #6F02 +漃 > jí; #6F03 +漄 > yá; #6F04 +漅 > jiăo; #6F05 +漆 > qī; #6F06 +漇 > xĭ; #6F07 +漈 > jì; #6F08 +漉 > lù; #6F09 +漊 > lǚ; #6F0A +漋 > lóng; #6F0B +漌 > jĭn; #6F0C +漍 > gúo; #6F0D +漎 > cóng; #6F0E +漏 > lòu; #6F0F +漐 > zhí; #6F10 +漑 > gài; #6F11 +漒 > qiáng; #6F12 +漓 > lí; #6F13 +演 > yăn; #6F14 +漕 > cáo; #6F15 +漖 > jiào; #6F16 +漗 > cōng; #6F17 +漘 > qún; #6F18 +漙 > tuán; #6F19 +漚 > òu; #6F1A +漛 > téng; #6F1B +漜 > yĕ; #6F1C +漝 > xí; #6F1D +漞 > mì; #6F1E +漟 > táng; #6F1F +漠 > mò; #6F20 +漡 > shāng; #6F21 +漢 > hàn; #6F22 +漣 > lián; #6F23 +漤 > lăn; #6F24 +漥 > wā; #6F25 +漦 > lí; #6F26 +漧 > qián; #6F27 +漨 > féng; #6F28 +漩 > xuán; #6F29 +漪 > yī; #6F2A +漫 > màn; #6F2B +漬 > zì; #6F2C +漭 > măng; #6F2D +漮 > kāng; #6F2E +漯 > lĕi; #6F2F +漰 > pēng; #6F30 +漱 > shù; #6F31 +漲 > zhăng; #6F32 +漳 > zhāng; #6F33 +漴 > chóng; #6F34 +漵 > xù; #6F35 +漶 > huàn; #6F36 +漷 > kùo; #6F37 +漸 > jiàn; #6F38 +漹 > yān; #6F39 +漺 > chuăng; #6F3A +漻 > liáo; #6F3B +漼 > cŭi; #6F3C +漽 > tí; #6F3D +漾 > yàng; #6F3E +漿 > jiāng; #6F3F +潀 > cóng; #6F40 +潁 > yĭng; #6F41 +潂 > hóng; #6F42 +潃 > xún; #6F43 +潄 > shù; #6F44 +潅 > guàn; #6F45 +潆 > yíng; #6F46 +潇 > xiāo; #6F47 +潊 > xù; #6F4A +潋 > liàn; #6F4B +潌 > zhì; #6F4C +潍 > wéi; #6F4D +潎 > pì; #6F4E +潏 > jué; #6F4F +潐 > jiào; #6F50 +潑 > pō; #6F51 +潒 > dàng; #6F52 +潓 > hùi; #6F53 +潔 > jié; #6F54 +潕 > wŭ; #6F55 +潖 > pá; #6F56 +潗 > jí; #6F57 +潘 > pān; #6F58 +潙 > gúi; #6F59 +潚 > xiāo; #6F5A +潛 > qián; #6F5B +潜 > qián; #6F5C +潝 > xī; #6F5D +潞 > lù; #6F5E +潟 > xì; #6F5F +潠 > xuàn; #6F60 +潡 > dùn; #6F61 +潢 > huáng; #6F62 +潣 > mĭn; #6F63 +潤 > rùn; #6F64 +潥 > sù; #6F65 +潦 > liáo; #6F66 +潧 > zhēn; #6F67 +潨 > zhōng; #6F68 +潩 > yì; #6F69 +潪 > dí; #6F6A +潫 > wān; #6F6B +潬 > dàn; #6F6C +潭 > tán; #6F6D +潮 > cháo; #6F6E +潯 > xún; #6F6F +潰 > kùi; #6F70 +潱 > yie; #6F71 +潲 > shào; #6F72 +潳 > tú; #6F73 +潴 > zhū; #6F74 +潵 > sàn; #6F75 +潶 > hēi; #6F76 +潷 > bĭ; #6F77 +潸 > shān; #6F78 +潹 > chán; #6F79 +潺 > chán; #6F7A +潻 > shŭ; #6F7B +潼 > tóng; #6F7C +潽 > pŭ; #6F7D +潾 > lín; #6F7E +潿 > wéi; #6F7F +澀 > sè; #6F80 +澁 > sè; #6F81 +澂 > chéng; #6F82 +澃 > jìong; #6F83 +澄 > chéng; #6F84 +澅 > huà; #6F85 +澆 > jiāo; #6F86 +澇 > lào; #6F87 +澈 > chè; #6F88 +澉 > găn; #6F89 +澊 > cūn; #6F8A +澋 > hèng; #6F8B +澌 > sī; #6F8C +澍 > shù; #6F8D +澎 > péng; #6F8E +澏 > hàn; #6F8F +澐 > yún; #6F90 +澑 > lìu; #6F91 +澒 > hòng; #6F92 +澓 > fú; #6F93 +澔 > hào; #6F94 +澕 > hé; #6F95 +澖 > xiān; #6F96 +澗 > jiàn; #6F97 +澘 > shān; #6F98 +澙 > xì; #6F99 +澜 > lán; #6F9C +澞 > yú; #6F9E +澟 > lĭn; #6F9F +澠 > mĭn; #6FA0 +澡 > zăo; #6FA1 +澢 > dāng; #6FA2 +澣 > wăn; #6FA3 +澤 > zé; #6FA4 +澥 > xiè; #6FA5 +澦 > yù; #6FA6 +澧 > lĭ; #6FA7 +澨 > shì; #6FA8 +澩 > xué; #6FA9 +澪 > líng; #6FAA +澫 > màn; #6FAB +澬 > zī; #6FAC +澭 > yōng; #6FAD +澮 > kuài; #6FAE +澯 > càn; #6FAF +澰 > liàn; #6FB0 +澱 > diàn; #6FB1 +澲 > yè; #6FB2 +澳 > ào; #6FB3 +澴 > huán; #6FB4 +澵 > zhēn; #6FB5 +澶 > chán; #6FB6 +澷 > màn; #6FB7 +澸 > dăn; #6FB8 +澹 > dàn; #6FB9 +澺 > yì; #6FBA +澻 > sùi; #6FBB +澼 > pì; #6FBC +澽 > jù; #6FBD +澾 > tà; #6FBE +澿 > qín; #6FBF +激 > jī; #6FC0 +濁 > zhúo; #6FC1 +濂 > lián; #6FC2 +濃 > nóng; #6FC3 +濄 > gūo; #6FC4 +濅 > jìn; #6FC5 +濆 > fén; #6FC6 +濇 > sè; #6FC7 +濈 > jí; #6FC8 +濉 > sūi; #6FC9 +濊 > hùi; #6FCA +濋 > chŭ; #6FCB +濌 > tà; #6FCC +濍 > sōng; #6FCD +濎 > dĭng; #6FCE +濐 > zhŭ; #6FD0 +濑 > lài; #6FD1 +濒 > bīn; #6FD2 +濓 > lián; #6FD3 +濔 > mĭ; #6FD4 +濕 > shī; #6FD5 +濖 > shù; #6FD6 +濗 > mì; #6FD7 +濘 > nìng; #6FD8 +濙 > yíng; #6FD9 +濚 > yíng; #6FDA +濛 > méng; #6FDB +濜 > jìn; #6FDC +濝 > qí; #6FDD +濞 > pì; #6FDE +濟 > jì; #6FDF +濠 > háo; #6FE0 +濡 > rú; #6FE1 +濢 > zŭi; #6FE2 +濣 > wò; #6FE3 +濤 > tāo; #6FE4 +濥 > yìn; #6FE5 +濦 > yĭn; #6FE6 +濧 > dùi; #6FE7 +濨 > cí; #6FE8 +濩 > hùo; #6FE9 +濪 > jìng; #6FEA +濫 > làn; #6FEB +濬 > jùn; #6FEC +濭 > ài; #6FED +濮 > pū; #6FEE +濯 > zhúo; #6FEF +濰 > wéi; #6FF0 +濱 > bīn; #6FF1 +濲 > gŭ; #6FF2 +濳 > qián; #6FF3 +濴 > xíng; #6FF4 +濶 > kùo; #6FF6 +濷 > fèi; #6FF7 +濺 > jiàn; #6FFA +濻 > wĕi; #6FFB +濼 > lùo; #6FFC +濽 > zàn; #6FFD +濾 > lǜ; #6FFE +濿 > lì; #6FFF +瀀 > yōu; #7000 +瀁 > yàng; #7001 +瀂 > lŭ; #7002 +瀃 > sì; #7003 +瀄 > jié; #7004 +瀅 > yìng; #7005 +瀆 > dú; #7006 +瀇 > wăng; #7007 +瀈 > hūi; #7008 +瀉 > xiè; #7009 +瀊 > pán; #700A +瀋 > shĕn; #700B +瀌 > biāo; #700C +瀍 > chán; #700D +瀎 > mò; #700E +瀏 > líu; #700F +瀐 > jiān; #7010 +瀑 > pù; #7011 +瀒 > sè; #7012 +瀓 > chéng; #7013 +瀔 > gŭ; #7014 +瀕 > bīn; #7015 +瀖 > hùo; #7016 +瀗 > xiàn; #7017 +瀘 > lú; #7018 +瀙 > qīn; #7019 +瀚 > hàn; #701A +瀛 > yíng; #701B +瀜 > yōng; #701C +瀝 > lì; #701D +瀞 > jìng; #701E +瀟 > xiāo; #701F +瀠 > yíng; #7020 +瀡 > sŭi; #7021 +瀢 > wéi; #7022 +瀣 > xiè; #7023 +瀤 > huái; #7024 +瀥 > hào; #7025 +瀦 > zhū; #7026 +瀧 > lóng; #7027 +瀨 > lài; #7028 +瀩 > dùi; #7029 +瀪 > fán; #702A +瀫 > hú; #702B +瀬 > lài; #702C +瀯 > yíng; #702F +瀰 > mí; #7030 +瀱 > jì; #7031 +瀲 > liàn; #7032 +瀳 > jiàn; #7033 +瀴 > yĭng; #7034 +瀵 > fèn; #7035 +瀶 > lín; #7036 +瀷 > yì; #7037 +瀸 > jiān; #7038 +瀹 > yuè; #7039 +瀺 > chán; #703A +瀻 > dài; #703B +瀼 > ráng; #703C +瀽 > jiăn; #703D +瀾 > lán; #703E +瀿 > fán; #703F +灀 > shuàng; #7040 +灁 > yuān; #7041 +灂 > zhúo; #7042 +灃 > fēng; #7043 +灄 > shè; #7044 +灅 > lĕi; #7045 +灆 > lán; #7046 +灇 > cóng; #7047 +灈 > qú; #7048 +灉 > yōng; #7049 +灊 > qián; #704A +灋 > fă; #704B +灌 > guàn; #704C +灍 > què; #704D +灎 > yàn; #704E +灏 > hào; #704F +灑 > să; #7051 +灒 > zàn; #7052 +灓 > luán; #7053 +灔 > yàn; #7054 +灕 > lí; #7055 +灖 > mĭ; #7056 +灗 > shàn; #7057 +灘 > tān; #7058 +灙 > dăng; #7059 +灚 > jiăo; #705A +灛 > chăn; #705B +灝 > hào; #705D +灞 > bà; #705E +灟 > zhú; #705F +灠 > lăn; #7060 +灡 > lán; #7061 +灢 > năng; #7062 +灣 > wān; #7063 +灤 > luán; #7064 +灥 > xún; #7065 +灦 > xiăn; #7066 +灧 > yàn; #7067 +灨 > găn; #7068 +灩 > yàn; #7069 +灪 > yù; #706A +火 > hŭo; #706B +灬 > sì' 'diăn' 'hŭo; #706C +灭 > miè; #706D +灮 > guāng; #706E +灯 > dēng; #706F +灰 > hūi; #7070 +灱 > xiāo; #7071 +灲 > xiāo; #7072 +灳 > hū1; #7073 +灴 > hóng; #7074 +灵 > líng; #7075 +灶 > zào; #7076 +灷 > zhuàn; #7077 +灸 > jĭu; #7078 +灹 > zhà; #7079 +灺 > xiè; #707A +灻 > chì; #707B +灼 > zhúo; #707C +災 > zāi; #707D +灾 > zāi; #707E +灿 > càn; #707F +炀 > yáng; #7080 +炁 > qì; #7081 +炂 > zhōng; #7082 +炃 > fén; #7083 +炄 > nĭu; #7084 +炅 > jĭong; #7085 +炆 > wén; #7086 +炇 > pò; #7087 +炈 > yì; #7088 +炉 > lú; #7089 +炊 > chūi; #708A +炋 > pī; #708B +炌 > kài; #708C +炍 > pàn; #708D +炎 > yán; #708E +炏 > kài; #708F +炐 > pàng; #7090 +炑 > mù; #7091 +炒 > chăo; #7092 +炓 > liào; #7093 +炔 > gùi; #7094 +炕 > kàng; #7095 +炖 > tūn; #7096 +炗 > guāng; #7097 +炘 > xīn; #7098 +炙 > zhì; #7099 +炚 > guang; #709A +炛 > guāng; #709B +炜 > wĕi; #709C +炝 > qiàng; #709D +炟 > dá; #709F +炠 > xiá; #70A0 +炡 > zhēng; #70A1 +炢 > zhú; #70A2 +炣 > kĕ; #70A3 +炤 > zhào; #70A4 +炥 > fú; #70A5 +炦 > bá; #70A6 +炧 > dùo; #70A7 +炨 > dùo; #70A8 +炩 > lìng; #70A9 +炪 > zhúo; #70AA +炫 > xuàn; #70AB +炬 > jù; #70AC +炭 > tàn; #70AD +炮 > pào; #70AE +炯 > jĭong; #70AF +炰 > páo; #70B0 +炱 > tái; #70B1 +炲 > tái; #70B2 +炳 > bĭng; #70B3 +炴 > yăng; #70B4 +炵 > tōng; #70B5 +炶 > hān; #70B6 +炷 > zhù; #70B7 +炸 > zhà; #70B8 +点 > diăn; #70B9 +為 > wèi; #70BA +炻 > shí; #70BB +炼 > liàn; #70BC +炽 > chì; #70BD +炾 > huăng; #70BE +烀 > hū; #70C0 +烁 > shùo; #70C1 +烂 > làn; #70C2 +烃 > jĭng; #70C3 +烄 > jiăo; #70C4 +烅 > xù; #70C5 +烆 > xíng; #70C6 +烇 > quàn; #70C7 +烈 > liè; #70C8 +烉 > huàn; #70C9 +烊 > yáng; #70CA +烋 > xiāo; #70CB +烌 > xīu; #70CC +烍 > xiăn; #70CD +烎 > yín; #70CE +烏 > wū; #70CF +烐 > zhōu; #70D0 +烑 > yáo; #70D1 +烒 > shì; #70D2 +烓 > wēi; #70D3 +烔 > tóng; #70D4 +烕 > xuè; #70D5 +烖 > zāi; #70D6 +烗 > kài; #70D7 +烘 > hōng; #70D8 +烙 > lùo; #70D9 +烚 > xiá; #70DA +烛 > zhú; #70DB +烜 > xuăn; #70DC +烝 > zhēng; #70DD +烞 > pò; #70DE +烟 > yān; #70DF +烠 > hŭi; #70E0 +烡 > guāng; #70E1 +烢 > zhè; #70E2 +烣 > hūi; #70E3 +烤 > kăo; #70E4 +烦 > fán; #70E6 +烧 > shāo; #70E7 +烨 > yè; #70E8 +烩 > hùi; #70E9 +烫 > tàng; #70EB +烬 > jìn; #70EC +热 > rè; #70ED +烯 > xī; #70EF +烰 > fú; #70F0 +烱 > jĭong; #70F1 +烲 > chè; #70F2 +烳 > pŭ; #70F3 +烴 > jĭng; #70F4 +烵 > zhúo; #70F5 +烶 > tĭng; #70F6 +烷 > wán; #70F7 +烸 > hăi; #70F8 +烹 > pēng; #70F9 +烺 > lăng; #70FA +烻 > shān; #70FB +烼 > hū; #70FC +烽 > fēng; #70FD +烾 > chì; #70FE +烿 > róng; #70FF +焀 > hú; #7100 +焁 > xi; #7101 +焂 > shú; #7102 +焃 > hè; #7103 +焄 > xūn; #7104 +焅 > kù; #7105 +焆 > jué; #7106 +焇 > xiāo; #7107 +焈 > xī; #7108 +焉 > yān; #7109 +焊 > hàn; #710A +焋 > zhuàng; #710B +焌 > jùn; #710C +焍 > dì; #710D +焎 > xiè; #710E +焏 > jí; #710F +焐 > wù; #7110 +焓 > hán; #7113 +焔 > yàn; #7114 +焕 > huàn; #7115 +焖 > mèn; #7116 +焗 > jú; #7117 +焘 > chóu; #7118 +焙 > bèi; #7119 +焚 > fén; #711A +焛 > lìn; #711B +焜 > kūn; #711C +焝 > hùn; #711D +焞 > tūn; #711E +焟 > xí; #711F +焠 > cùi; #7120 +無 > wú; #7121 +焢 > hōng; #7122 +焣 > jù; #7123 +焤 > fŭ; #7124 +焥 > wò; #7125 +焦 > jiāo; #7126 +焧 > cōng; #7127 +焨 > fèng; #7128 +焩 > pīng; #7129 +焪 > qīong; #712A +焫 > rùo; #712B +焬 > xí; #712C +焭 > qíong; #712D +焮 > xìn; #712E +焯 > zhúo; #712F +焰 > yàn; #7130 +焱 > yàn; #7131 +焲 > yì; #7132 +焳 > jué; #7133 +焴 > yù; #7134 +焵 > gàng; #7135 +然 > rán; #7136 +焷 > pí; #7137 +焸 > gŭ; #7138 +焺 > shēng; #713A +焻 > chàng; #713B +焼 > shāo; #713C +煁 > chén; #7141 +煂 > hè; #7142 +煃 > kŭi; #7143 +煄 > zhōng; #7144 +煅 > duàn; #7145 +煆 > xiā; #7146 +煇 > hūi; #7147 +煈 > fèng; #7148 +煉 > liàn; #7149 +煊 > xuān; #714A +煋 > xīng; #714B +煌 > huáng; #714C +煍 > jiăo; #714D +煎 > jiān; #714E +煏 > bì; #714F +煐 > yīng; #7150 +煑 > zhŭ; #7151 +煒 > wĕi; #7152 +煓 > tuān; #7153 +煔 > tiàn; #7154 +煕 > xī; #7155 +煖 > nuăn; #7156 +煗 > nuăn; #7157 +煘 > chán; #7158 +煙 > yān; #7159 +煚 > jĭong; #715A +煛 > jĭong; #715B +煜 > yù; #715C +煝 > mèi; #715D +煞 > shà; #715E +煟 > wèi; #715F +煠 > yè; #7160 +煡 > xìn; #7161 +煢 > qíong; #7162 +煣 > rŏu; #7163 +煤 > méi; #7164 +煥 > huàn; #7165 +煦 > xŭ; #7166 +照 > zhào; #7167 +煨 > wēi; #7168 +煩 > fán; #7169 +煪 > qíu; #716A +煫 > sùi; #716B +煬 > yáng; #716C +煭 > liè; #716D +煮 > zhŭ; #716E +煯 > jie; #716F +煰 > gào; #7170 +煱 > guā; #7171 +煲 > bào; #7172 +煳 > hú; #7173 +煴 > yūn; #7174 +煵 > xiā; #7175 +煸 > biān; #7178 +煹 > gòu; #7179 +煺 > tùi; #717A +煻 > táng; #717B +煼 > chăo; #717C +煽 > shān; #717D +煾 > n; #717E +煿 > bó; #717F +熀 > huăng; #7180 +熁 > xié; #7181 +熂 > xì; #7182 +熃 > wù; #7183 +熄 > xí; #7184 +熅 > yún; #7185 +熆 > hé; #7186 +熇 > hè; #7187 +熈 > xī; #7188 +熉 > yún; #7189 +熊 > xíong; #718A +熋 > nái; #718B +熌 > shàn; #718C +熍 > qiong; #718D +熎 > yào; #718E +熏 > xūn; #718F +熐 > mì; #7190 +熑 > lián; #7191 +熒 > yíng; #7192 +熓 > wèn; #7193 +熔 > róng; #7194 +熗 > qiàng; #7197 +熘 > līu; #7198 +熙 > xī; #7199 +熚 > bì; #719A +熛 > biāo; #719B +熜 > zŏng; #719C +熝 > lù; #719D +熞 > jiān; #719E +熟 > shóu; #719F +熠 > yì; #71A0 +熡 > lóu; #71A1 +熢 > fēng; #71A2 +熣 > sūi; #71A3 +熤 > yì; #71A4 +熥 > tōng; #71A5 +熦 > jué; #71A6 +熧 > zōng; #71A7 +熨 > yùn; #71A8 +熩 > hù; #71A9 +熪 > yí; #71AA +熫 > zhì; #71AB +熬 > áo; #71AC +熭 > wèi; #71AD +熮 > liáo; #71AE +熯 > hàn; #71AF +熰 > ōu; #71B0 +熱 > rè; #71B1 +熲 > jĭong; #71B2 +熳 > màn; #71B3 +熵 > shāng; #71B5 +熶 > cuàn; #71B6 +熷 > zēng; #71B7 +熸 > jiān; #71B8 +熹 > xī; #71B9 +熺 > xī; #71BA +熻 > xī; #71BB +熼 > yì; #71BC +熽 > xiào; #71BD +熾 > chì; #71BE +熿 > huáng; #71BF +燀 > chăn; #71C0 +燁 > yè; #71C1 +燂 > qián; #71C2 +燃 > rán; #71C3 +燄 > yàn; #71C4 +燅 > xián; #71C5 +燆 > qiáo; #71C6 +燇 > zùn; #71C7 +燈 > dēng; #71C8 +燉 > dùn; #71C9 +燊 > shēn; #71CA +燋 > jiāo; #71CB +燌 > fén; #71CC +燍 > sī; #71CD +燎 > liào; #71CE +燏 > yù; #71CF +燐 > lín; #71D0 +燑 > tóng; #71D1 +燒 > shāo; #71D2 +燓 > fēn; #71D3 +燔 > fán; #71D4 +燕 > yàn; #71D5 +燖 > xún; #71D6 +燗 > làn; #71D7 +燘 > mĕi; #71D8 +燙 > tàng; #71D9 +燚 > yī; #71DA +燛 > jĭng; #71DB +燜 > mèn; #71DC +營 > yíng; #71DF +燠 > yù; #71E0 +燡 > yì; #71E1 +燢 > xué; #71E2 +燣 > lán; #71E3 +燤 > tài; #71E4 +燥 > zào; #71E5 +燦 > càn; #71E6 +燧 > sùi; #71E7 +燨 > xī; #71E8 +燩 > què; #71E9 +燪 > cōng; #71EA +燫 > lián; #71EB +燬 > hŭi; #71EC +燭 > zhú; #71ED +燮 > xiè; #71EE +燯 > líng; #71EF +燰 > wēi; #71F0 +燱 > yì; #71F1 +燲 > xié; #71F2 +燳 > zhào; #71F3 +燴 > hùi; #71F4 +燷 > lán; #71F7 +燸 > rú; #71F8 +燹 > xiăn; #71F9 +燺 > kăo; #71FA +燻 > xūn; #71FB +燼 > jìn; #71FC +燽 > chóu; #71FD +燾 > chóu; #71FE +燿 > yào; #71FF +爀 > hè; #7200 +爁 > làn; #7201 +爂 > biāo; #7202 +爃 > róng; #7203 +爄 > lì; #7204 +爅 > mò; #7205 +爆 > bào; #7206 +爇 > rùo; #7207 +爈 > lǘ; #7208 +爉 > là; #7209 +爊 > áo; #720A +爋 > xùn; #720B +爌 > kuàng; #720C +爍 > shùo; #720D +爏 > lì; #720F +爐 > lú; #7210 +爑 > jué; #7211 +爒 > liào; #7212 +爓 > yàn; #7213 +爔 > xī; #7214 +爕 > xiè; #7215 +爖 > lóng; #7216 +爗 > yè; #7217 +爙 > răng; #7219 +爚 > yuè; #721A +爛 > làn; #721B +爜 > cóng; #721C +爝 > jué; #721D +爞 > tóng; #721E +爟 > guàn; #721F +爡 > chè; #7221 +爢 > mí; #7222 +爣 > tăng; #7223 +爤 > làn; #7224 +爥 > zhú; #7225 +爧 > líng; #7227 +爨 > cuàn; #7228 +爩 > yù; #7229 +爪 > zhuă; #722A +爬 > pá; #722C +爭 > zhēng; #722D +爮 > páo; #722E +爯 > chēng; #722F +爰 > yuán; #7230 +爱 > ài; #7231 +爲 > wèi; #7232 +爴 > jué; #7234 +爵 > jué; #7235 +父 > fù; #7236 +爷 > yé; #7237 +爸 > bà; #7238 +爹 > diē; #7239 +爺 > yé; #723A +爻 > yáo; #723B +爼 > zŭ; #723C +爽 > shuăng; #723D +爾 > ĕr; #723E +爿 > qiáng; #723F +牀 > chuáng; #7240 +牁 > gē; #7241 +牂 > zāng; #7242 +牃 > dié; #7243 +牄 > qiāng; #7244 +牅 > yóng; #7245 +牆 > qiáng; #7246 +片 > piàn; #7247 +版 > băn; #7248 +牉 > pàn; #7249 +牊 > sháo; #724A +牋 > jiān; #724B +牌 > pái; #724C +牍 > dú; #724D +牎 > chuāng; #724E +牏 > tóu; #724F +牐 > zhá; #7250 +牑 > biān; #7251 +牒 > dié; #7252 +牓 > băng; #7253 +牔 > bó; #7254 +牕 > chuāng; #7255 +牖 > yŏu; #7256 +牘 > dú; #7258 +牙 > yá; #7259 +牚 > chèng; #725A +牛 > níu; #725B +牝 > pìn; #725D +牞 > jīu; #725E +牟 > móu; #725F +牠 > tūo; #7260 +牡 > mŭ; #7261 +牢 > láo; #7262 +牣 > rèn; #7263 +牤 > máng; #7264 +牥 > fāng; #7265 +牦 > máo; #7266 +牧 > mù; #7267 +牨 > gāng; #7268 +物 > wù; #7269 +牪 > yàn; #726A +牫 > gē; #726B +牬 > bèi; #726C +牭 > sì; #726D +牮 > jiàn; #726E +牯 > gŭ; #726F +牰 > yòu; #7270 +牱 > gē; #7271 +牲 > shēng; #7272 +牳 > mŭ; #7273 +牴 > dĭ; #7274 +牵 > qiān; #7275 +牶 > quàn; #7276 +牷 > quán; #7277 +牸 > zì; #7278 +特 > tè; #7279 +牺 > xī; #727A +牻 > máng; #727B +牼 > kēng; #727C +牽 > qiān; #727D +牾 > wú; #727E +牿 > gù; #727F +犀 > xī; #7280 +犁 > lí; #7281 +犂 > lí; #7282 +犃 > pŏu; #7283 +犄 > jī; #7284 +犅 > gāng; #7285 +犆 > zhí; #7286 +犇 > bēn; #7287 +犈 > quán; #7288 +犉 > rún; #7289 +犊 > dú; #728A +犋 > jù; #728B +犌 > jiā; #728C +犍 > jiān; #728D +犎 > fēng; #728E +犏 > piān; #728F +犐 > kē; #7290 +犑 > jú; #7291 +犒 > kào; #7292 +犓 > chú; #7293 +犔 > xì; #7294 +犕 > bèi; #7295 +犖 > lùo; #7296 +犗 > jiè; #7297 +犘 > má; #7298 +犙 > sān; #7299 +犚 > wèi; #729A +犛 > lí; #729B +犜 > dūn; #729C +犝 > tóng; #729D +犟 > jiàng; #729F +犡 > lì; #72A1 +犢 > dú; #72A2 +犣 > liè; #72A3 +犤 > pí; #72A4 +犥 > piăo; #72A5 +犦 > bào; #72A6 +犧 > xī; #72A7 +犨 > chōu; #72A8 +犩 > wèi; #72A9 +犪 > kúi; #72AA +犫 > chōu; #72AB +犬 > quăn; #72AC +犭 > făn' 'quăn' 'páng; #72AD +犮 > bá; #72AE +犯 > fàn; #72AF +犰 > qíu; #72B0 +犱 > jĭ; #72B1 +犲 > cái; #72B2 +犳 > chúo; #72B3 +犴 > àn; #72B4 +犵 > jié; #72B5 +状 > zhuàng; #72B6 +犷 > guăng; #72B7 +犸 > mà; #72B8 +犹 > yóu; #72B9 +犺 > kàng; #72BA +犻 > bó; #72BB +犼 > hŏu; #72BC +犽 > yá; #72BD +犾 > yín; #72BE +犿 > huān; #72BF +狀 > zhuàng; #72C0 +狁 > yŭn; #72C1 +狂 > kuáng; #72C2 +狃 > nĭu; #72C3 +狄 > dí; #72C4 +狅 > qīng; #72C5 +狆 > zhòng; #72C6 +狇 > mù; #72C7 +狈 > bèi; #72C8 +狉 > pī; #72C9 +狊 > jú; #72CA +狋 > ní; #72CB +狌 > shēng; #72CC +狍 > páo; #72CD +狎 > xiá; #72CE +狏 > túo; #72CF +狐 > hú; #72D0 +狑 > líng; #72D1 +狒 > fèi; #72D2 +狓 > pī; #72D3 +狔 > nĭ; #72D4 +狕 > ăo; #72D5 +狖 > yòu; #72D6 +狗 > gŏu; #72D7 +狘 > yuè; #72D8 +狙 > jū; #72D9 +狚 > dàn; #72DA +狛 > pò; #72DB +狜 > gŭ; #72DC +狝 > xiăn; #72DD +狞 > níng; #72DE +狟 > huán; #72DF +狠 > hĕn; #72E0 +狡 > jiăo; #72E1 +狢 > hé; #72E2 +狣 > zhào; #72E3 +狤 > jí; #72E4 +狥 > xùn; #72E5 +狦 > shān; #72E6 +狧 > tà; #72E7 +狨 > róng; #72E8 +狩 > shòu; #72E9 +狪 > tōng; #72EA +狫 > lăo; #72EB +独 > dú; #72EC +狭 > xiá; #72ED +狮 > shī; #72EE +狯 > huá; #72EF +狰 > zhēng; #72F0 +狱 > yù; #72F1 +狲 > sūn; #72F2 +狳 > yú; #72F3 +狴 > bì; #72F4 +狵 > máng; #72F5 +狶 > xĭ; #72F6 +狷 > juàn; #72F7 +狸 > lí; #72F8 +狹 > xiá; #72F9 +狺 > yín; #72FA +狻 > suān; #72FB +狼 > láng; #72FC +狽 > bèi; #72FD +狾 > zhì; #72FE +狿 > yán; #72FF +猀 > shā; #7300 +猁 > lì; #7301 +猂 > hàn; #7302 +猃 > xiăn; #7303 +猄 > jīng; #7304 +猅 > pái; #7305 +猆 > fēi; #7306 +猇 > yáo; #7307 +猈 > bà; #7308 +猉 > qí; #7309 +猊 > ní; #730A +猋 > biāo; #730B +猌 > yìn; #730C +猍 > lái; #730D +猎 > xí; #730E +猏 > jiān; #730F +猐 > qiāng; #7310 +猑 > kūn; #7311 +猒 > yān; #7312 +猓 > gŭo; #7313 +猔 > zòng; #7314 +猕 > mí; #7315 +猖 > chāng; #7316 +猗 > yī; #7317 +猘 > zhì; #7318 +猙 > zhēng; #7319 +猚 > yá; #731A +猛 > mĕng; #731B +猜 > cāi; #731C +猝 > cù; #731D +猞 > shè; #731E +猡 > lúo; #7321 +猢 > hú; #7322 +猣 > zōng; #7323 +猤 > jì; #7324 +猥 > wĕi; #7325 +猦 > fēng; #7326 +猧 > wō; #7327 +猨 > yuán; #7328 +猩 > xīng; #7329 +猪 > zhū; #732A +猫 > māo; #732B +猬 > wèi; #732C +猭 > yuán; #732D +献 > xiàn; #732E +猯 > tuān; #732F +猰 > yà; #7330 +猱 > náo; #7331 +猲 > xiē; #7332 +猳 > jiā; #7333 +猴 > hóu; #7334 +猵 > biān; #7335 +猶 > yóu; #7336 +猷 > yóu; #7337 +猸 > méi; #7338 +猹 > zhā; #7339 +猺 > yáo; #733A +猻 > sūn; #733B +猼 > bó; #733C +猽 > míng; #733D +猾 > huá; #733E +猿 > yuán; #733F +獀 > sōu; #7340 +獁 > mà; #7341 +獂 > yuán; #7342 +獃 > dāi; #7343 +獄 > yù; #7344 +獅 > shī; #7345 +獆 > háo; #7346 +獈 > yì; #7348 +獉 > zhēn; #7349 +獊 > chuàng; #734A +獋 > háo; #734B +獌 > màn; #734C +獍 > jìng; #734D +獎 > jiăng; #734E +獏 > mú; #734F +獐 > zhāng; #7350 +獑 > chán; #7351 +獒 > áo; #7352 +獓 > áo; #7353 +獔 > háo; #7354 +獕 > cūi; #7355 +獖 > fén; #7356 +獗 > jué; #7357 +獘 > bì; #7358 +獙 > bì; #7359 +獚 > huáng; #735A +獛 > pú; #735B +獜 > lín; #735C +獝 > yù; #735D +獞 > tóng; #735E +獟 > yào; #735F +獠 > liáo; #7360 +獡 > shùo; #7361 +獢 > xiāo; #7362 +獥 > xí; #7365 +獦 > gé; #7366 +獧 > juàn; #7367 +獨 > dú; #7368 +獩 > hùi; #7369 +獪 > kuài; #736A +獫 > xiăn; #736B +獬 > xiè; #736C +獭 > tà; #736D +獮 > xiăn; #736E +獯 > xūn; #736F +獰 > níng; #7370 +獱 > pín; #7371 +獲 > hùo; #7372 +獳 > nòu; #7373 +獴 > méng; #7374 +獵 > liè; #7375 +獶 > náo; #7376 +獷 > guăng; #7377 +獸 > shòu; #7378 +獹 > lú; #7379 +獺 > tà; #737A +獻 > xiàn; #737B +獼 > mí; #737C +獽 > ráng; #737D +獾 > huān; #737E +獿 > náo; #737F +玀 > lúo; #7380 +玁 > xiăn; #7381 +玂 > qí; #7382 +玃 > jué; #7383 +玄 > xuán; #7384 +玅 > miào; #7385 +玆 > zī; #7386 +率 > lǜ; #7387 +玈 > lú; #7388 +玉 > yù; #7389 +玊 > sù; #738A +王 > wáng; #738B +玌 > qíu; #738C +玍 > gă; #738D +玎 > dīng; #738E +玏 > lè; #738F +玐 > bā; #7390 +玑 > jī; #7391 +玒 > hóng; #7392 +玓 > dì; #7393 +玔 > quàn; #7394 +玕 > gān; #7395 +玖 > jĭu; #7396 +玗 > yú; #7397 +玘 > jĭ; #7398 +玙 > yú; #7399 +玚 > yáng; #739A +玛 > mă; #739B +玜 > gōng; #739C +玝 > wŭ; #739D +玞 > fū; #739E +玟 > wén; #739F +玠 > jiè; #73A0 +玡 > yà; #73A1 +玢 > fén; #73A2 +玣 > biàn; #73A3 +玤 > bĕng; #73A4 +玥 > yuè; #73A5 +玦 > jué; #73A6 +玧 > yŭn; #73A7 +玨 > jué; #73A8 +玩 > wán; #73A9 +玪 > jiān; #73AA +玫 > méi; #73AB +玬 > dăn; #73AC +玭 > pí; #73AD +玮 > wĕi; #73AE +环 > huán; #73AF +现 > xiàn; #73B0 +玱 > qiāng; #73B1 +玲 > líng; #73B2 +玳 > dài; #73B3 +玴 > yì; #73B4 +玵 > án; #73B5 +玶 > píng; #73B6 +玷 > diàn; #73B7 +玸 > fú; #73B8 +玹 > xuán; #73B9 +玺 > xĭ; #73BA +玻 > bō; #73BB +玼 > cĭ; #73BC +玽 > gŏu; #73BD +玾 > jiă; #73BE +玿 > sháo; #73BF +珀 > pò; #73C0 +珁 > cí; #73C1 +珂 > kē; #73C2 +珃 > răn; #73C3 +珄 > shēng; #73C4 +珅 > shēn; #73C5 +珆 > yí; #73C6 +珇 > zŭ; #73C7 +珈 > jiā; #73C8 +珉 > mín; #73C9 +珊 > shān; #73CA +珋 > lĭu; #73CB +珌 > bì; #73CC +珍 > zhēn; #73CD +珎 > zhēn; #73CE +珏 > jué; #73CF +珐 > fà; #73D0 +珑 > lóng; #73D1 +珒 > jīn; #73D2 +珓 > jiào; #73D3 +珔 > jiàn; #73D4 +珕 > lì; #73D5 +珖 > guāng; #73D6 +珗 > xiān; #73D7 +珘 > zhōu; #73D8 +珙 > gŏng; #73D9 +珚 > yān; #73DA +珛 > xìu; #73DB +珜 > yáng; #73DC +珝 > xŭ; #73DD +珞 > lùo; #73DE +珟 > sù; #73DF +珠 > zhū; #73E0 +珡 > qín; #73E1 +珢 > kèn; #73E2 +珣 > xún; #73E3 +珤 > băo; #73E4 +珥 > ĕr; #73E5 +珦 > xiàng; #73E6 +珧 > yáo; #73E7 +珨 > xiá; #73E8 +珩 > héng; #73E9 +珪 > gūi; #73EA +珫 > chōng; #73EB +珬 > xù; #73EC +班 > bān; #73ED +珮 > pèi; #73EE +珰 > dāng; #73F0 +珲 > hún; #73F2 +珳 > wén; #73F3 +珴 > é; #73F4 +珵 > chéng; #73F5 +珶 > tí; #73F6 +珷 > wŭ; #73F7 +珸 > wú; #73F8 +珹 > chéng; #73F9 +珺 > jùn; #73FA +珻 > méi; #73FB +珼 > bèi; #73FC +珽 > tĭng; #73FD +現 > xiàn; #73FE +珿 > chùo; #73FF +琀 > hán; #7400 +琁 > xuan; #7401 +琂 > yán; #7402 +球 > qíu; #7403 +琄 > quăn; #7404 +琅 > láng; #7405 +理 > lĭ; #7406 +琇 > xìu; #7407 +琈 > fú; #7408 +琉 > líu; #7409 +琊 > yé; #740A +琋 > xī; #740B +琌 > líng; #740C +琍 > lì; #740D +琎 > jìn; #740E +琏 > lián; #740F +琐 > sŭo; #7410 +琓 > wán; #7413 +琔 > diàn; #7414 +琕 > pín; #7415 +琖 > zhăn; #7416 +琗 > cùi; #7417 +琘 > mín; #7418 +琙 > yù; #7419 +琚 > jū; #741A +琛 > chēn; #741B +琜 > lái; #741C +琝 > wén; #741D +琞 > shèng; #741E +琟 > wéi; #741F +琠 > diăn; #7420 +琡 > chù; #7421 +琢 > zhúo; #7422 +琣 > pĕi; #7423 +琤 > chēng; #7424 +琥 > hŭ; #7425 +琦 > qí; #7426 +琧 > è; #7427 +琨 > kūn; #7428 +琩 > chāng; #7429 +琪 > qí; #742A +琫 > bĕng; #742B +琬 > wăn; #742C +琭 > lù; #742D +琮 > cóng; #742E +琯 > guăn; #742F +琰 > yăn; #7430 +琱 > diāo; #7431 +琲 > bèi; #7432 +琳 > lín; #7433 +琴 > qín; #7434 +琵 > pí; #7435 +琶 > pá; #7436 +琷 > què; #7437 +琸 > zhúo; #7438 +琹 > qín; #7439 +琺 > fà; #743A +琼 > qíong; #743C +琽 > dŭ; #743D +琾 > jiè; #743E +琿 > hún; #743F +瑀 > yŭ; #7440 +瑁 > mào; #7441 +瑂 > méi; #7442 +瑃 > chun; #7443 +瑄 > xuān; #7444 +瑅 > tí; #7445 +瑆 > xīng; #7446 +瑇 > dài; #7447 +瑈 > róu; #7448 +瑉 > mín; #7449 +瑊 > zhēn; #744A +瑋 > wĕi; #744B +瑌 > ruăn; #744C +瑍 > huàn; #744D +瑎 > jiē; #744E +瑏 > chuān; #744F +瑐 > jiăn; #7450 +瑑 > zhuàn; #7451 +瑒 > yáng; #7452 +瑓 > liàn; #7453 +瑔 > quán; #7454 +瑕 > xiá; #7455 +瑖 > duàn; #7456 +瑗 > yuàn; #7457 +瑘 > yé; #7458 +瑙 > năo; #7459 +瑚 > hú; #745A +瑛 > yīng; #745B +瑜 > yú; #745C +瑝 > huáng; #745D +瑞 > rùi; #745E +瑟 > sè; #745F +瑠 > líu; #7460 +瑡 > shi; #7461 +瑢 > róng; #7462 +瑣 > sŭo; #7463 +瑤 > yáo; #7464 +瑥 > wēn; #7465 +瑦 > wū; #7466 +瑧 > jīn; #7467 +瑨 > jìn; #7468 +瑩 > yíng; #7469 +瑪 > mă; #746A +瑫 > tāo; #746B +瑬 > líu; #746C +瑭 > táng; #746D +瑮 > lì; #746E +瑯 > láng; #746F +瑰 > gūi; #7470 +瑱 > zhèn; #7471 +瑲 > qiāng; #7472 +瑳 > cŭo; #7473 +瑴 > jué; #7474 +瑵 > zhăo; #7475 +瑶 > yáo; #7476 +瑷 > ài; #7477 +瑸 > bīn; #7478 +瑹 > tú; #7479 +瑺 > cháng; #747A +瑻 > kūn; #747B +瑼 > zhuān; #747C +瑽 > cōng; #747D +瑾 > jĭn; #747E +瑿 > yī; #747F +璀 > cŭi; #7480 +璁 > cōng; #7481 +璂 > qí; #7482 +璃 > lí; #7483 +璄 > yĭng; #7484 +璅 > sŭo; #7485 +璆 > qíu; #7486 +璇 > xuán; #7487 +璈 > áo; #7488 +璉 > lián; #7489 +璊 > mán; #748A +璋 > zhāng; #748B +璌 > yín; #748C +璎 > yīng; #748E +璏 > zhì; #748F +璐 > lù; #7490 +璑 > wú; #7491 +璒 > dēng; #7492 +璓 > xiòu; #7493 +璔 > zēng; #7494 +璕 > xún; #7495 +璖 > qú; #7496 +璗 > dàng; #7497 +璘 > lín; #7498 +璙 > liáo; #7499 +璚 > qíong; #749A +璛 > sù; #749B +璜 > huáng; #749C +璝 > gūi; #749D +璞 > pú; #749E +璟 > jĭng; #749F +璠 > fán; #74A0 +璡 > jìn; #74A1 +璢 > líu; #74A2 +璣 > jī; #74A3 +璥 > jĭng; #74A5 +璦 > ài; #74A6 +璧 > bì; #74A7 +璨 > càn; #74A8 +璩 > qú; #74A9 +璪 > zăo; #74AA +璫 > dāng; #74AB +璬 > jiăo; #74AC +璭 > gùn; #74AD +璮 > tăn; #74AE +璯 > hùi; #74AF +環 > huán; #74B0 +璱 > sè; #74B1 +璲 > sùi; #74B2 +璳 > tián; #74B3 +璵 > yú; #74B5 +璶 > jìn; #74B6 +璷 > lú; #74B7 +璸 > bīn; #74B8 +璹 > shòu; #74B9 +璺 > wèn; #74BA +璻 > zŭi; #74BB +璼 > lán; #74BC +璽 > xĭ; #74BD +璾 > jì; #74BE +璿 > xuán; #74BF +瓀 > ruăn; #74C0 +瓁 > hùo; #74C1 +瓂 > gài; #74C2 +瓃 > léi; #74C3 +瓄 > dú; #74C4 +瓅 > lì; #74C5 +瓆 > zhí; #74C6 +瓇 > róu; #74C7 +瓈 > lí; #74C8 +瓉 > zàn; #74C9 +瓊 > qíong; #74CA +瓋 > zhé; #74CB +瓌 > gūi; #74CC +瓍 > sùi; #74CD +瓎 > là; #74CE +瓏 > lóng; #74CF +瓐 > lú; #74D0 +瓑 > lì; #74D1 +瓒 > zàn; #74D2 +瓓 > làn; #74D3 +瓔 > yīng; #74D4 +瓕 > mí; #74D5 +瓖 > xiāng; #74D6 +瓗 > xī; #74D7 +瓘 > guàn; #74D8 +瓙 > dào; #74D9 +瓚 > zàn; #74DA +瓛 > huán; #74DB +瓜 > guā; #74DC +瓝 > bó; #74DD +瓞 > dié; #74DE +瓟 > báo; #74DF +瓠 > hù; #74E0 +瓡 > zhí; #74E1 +瓢 > piáo; #74E2 +瓣 > bàn; #74E3 +瓤 > ráng; #74E4 +瓥 > lì; #74E5 +瓦 > wă; #74E6 +瓨 > jiāng; #74E8 +瓩 > qián' 'wă; #74E9 +瓪 > făn; #74EA +瓫 > pén; #74EB +瓬 > făng; #74EC +瓭 > dăn; #74ED +瓮 > wèng; #74EE +瓯 > ōu; #74EF +瓳 > hú; #74F3 +瓴 > líng; #74F4 +瓵 > yí; #74F5 +瓶 > píng; #74F6 +瓷 > cí; #74F7 +瓹 > juàn; #74F9 +瓺 > cháng; #74FA +瓻 > chī; #74FB +瓽 > dàng; #74FD +瓾 > mĕng; #74FE +瓿 > pŏu; #74FF +甀 > zhùi; #7500 +甁 > píng; #7501 +甂 > biān; #7502 +甃 > zhòu; #7503 +甄 > zhēn; #7504 +甆 > cí; #7506 +甇 > yīng; #7507 +甈 > qì; #7508 +甉 > xián; #7509 +甊 > lŏu; #750A +甋 > dì; #750B +甌 > ōu; #750C +甍 > méng; #750D +甎 > zhuān; #750E +甏 > pèng; #750F +甐 > lín; #7510 +甑 > zèng; #7511 +甒 > wŭ; #7512 +甓 > pì; #7513 +甔 > dān; #7514 +甕 > wèng; #7515 +甖 > yīng; #7516 +甗 > yăn; #7517 +甘 > gān; #7518 +甙 > dài; #7519 +甚 > shén; #751A +甛 > tián; #751B +甜 > tián; #751C +甝 > hān; #751D +甞 > cháng; #751E +生 > shēng; #751F +甠 > qíng; #7520 +甡 > shēng; #7521 +產 > chăn; #7522 +産 > chăn; #7523 +甤 > rúi; #7524 +甥 > shēng; #7525 +甦 > sū; #7526 +甧 > sēn; #7527 +用 > yòng; #7528 +甩 > shuăi; #7529 +甪 > lù; #752A +甫 > fŭ; #752B +甬 > yŏng; #752C +甭 > béng; #752D +甮 > fèng; #752E +甯 > níng; #752F +田 > tián; #7530 +由 > yóu; #7531 +甲 > jiă; #7532 +申 > shēn; #7533 +甴 > zhá; #7534 +电 > diàn; #7535 +甶 > fú; #7536 +男 > nán; #7537 +甸 > diàn; #7538 +甹 > píng; #7539 +町 > tĭng; #753A +画 > huà; #753B +甼 > tĭng; #753C +甽 > quăn; #753D +甾 > zī; #753E +甿 > méng; #753F +畀 > bì; #7540 +畁 > qí; #7541 +畂 > lìu; #7542 +畃 > xún; #7543 +畄 > líu; #7544 +畅 > chàng; #7545 +畆 > mŭ; #7546 +畇 > yún; #7547 +畈 > fàn; #7548 +畉 > fú; #7549 +畊 > gēng; #754A +畋 > tián; #754B +界 > jiè; #754C +畍 > jiè; #754D +畎 > quăn; #754E +畏 > wèi; #754F +畐 > fú; #7550 +畑 > tián; #7551 +畒 > mŭ; #7552 +畔 > pàn; #7554 +畕 > jiāng; #7555 +畖 > wā; #7556 +畗 > dá; #7557 +畘 > nán; #7558 +留 > líu; #7559 +畚 > bĕn; #755A +畛 > zhĕn; #755B +畜 > chù; #755C +畝 > mŭ; #755D +畞 > mŭ; #755E +畟 > cè; #755F +畡 > gāi; #7561 +畢 > bì; #7562 +畣 > dá; #7563 +畤 > zhì; #7564 +略 > lǜe; #7565 +畦 > qí; #7566 +畧 > lǜe; #7567 +畨 > pān; #7568 +番 > fān; #756A +畫 > huà; #756B +畬 > yú; #756C +畭 > yú; #756D +畮 > mŭ; #756E +畯 > jùn; #756F +異 > yì; #7570 +畱 > líu; #7571 +畲 > yú; #7572 +畳 > dié; #7573 +畴 > chóu; #7574 +畵 > huà; #7575 +當 > dāng; #7576 +畷 > chùo; #7577 +畸 > jī; #7578 +畹 > wăn; #7579 +畺 > jiāng; #757A +畻 > shéng; #757B +畼 > chàng; #757C +畽 > tuăn; #757D +畾 > léi; #757E +畿 > jī; #757F +疀 > chā; #7580 +疁 > líu; #7581 +疃 > tuăn; #7583 +疄 > lín; #7584 +疅 > jiāng; #7585 +疆 > jiāng; #7586 +疇 > chóu; #7587 +疈 > bò; #7588 +疉 > dié; #7589 +疊 > dié; #758A +疋 > pĭ; #758B +疌 > niè; #758C +疍 > dàn; #758D +疎 > shū; #758E +疏 > shū; #758F +疐 > zhì; #7590 +疑 > yí; #7591 +疒 > chuáng; #7592 +疓 > năi; #7593 +疔 > dīng; #7594 +疕 > bĭ; #7595 +疖 > jié; #7596 +疗 > liáo; #7597 +疘 > gōng; #7598 +疙 > gē; #7599 +疚 > jìu; #759A +疛 > zhŏu; #759B +疜 > xià; #759C +疝 > shàn; #759D +疞 > xū; #759E +疟 > nǜe; #759F +疠 > lì; #75A0 +疡 > yáng; #75A1 +疢 > chèn; #75A2 +疣 > yóu; #75A3 +疤 > bā; #75A4 +疥 > jiè; #75A5 +疦 > jué; #75A6 +疧 > zhī; #75A7 +疨 > xiā; #75A8 +疩 > cùi; #75A9 +疪 > bì; #75AA +疫 > yì; #75AB +疬 > lì; #75AC +疭 > zòng; #75AD +疮 > chuāng; #75AE +疯 > fēng; #75AF +疰 > zhù; #75B0 +疱 > pào; #75B1 +疲 > pí; #75B2 +疳 > gān; #75B3 +疴 > kē; #75B4 +疵 > cī; #75B5 +疶 > xiè; #75B6 +疷 > qí; #75B7 +疸 > dăn; #75B8 +疹 > zhĕn; #75B9 +疺 > fá; #75BA +疻 > zhĭ; #75BB +疼 > téng; #75BC +疽 > jū; #75BD +疾 > jí; #75BE +疿 > fèi; #75BF +痀 > qú; #75C0 +痁 > diàn; #75C1 +痂 > jiā; #75C2 +痃 > xián; #75C3 +痄 > chá; #75C4 +病 > bìng; #75C5 +痆 > nì; #75C6 +症 > zhèng; #75C7 +痈 > yōng; #75C8 +痉 > jìng; #75C9 +痊 > quán; #75CA +痋 > chóng; #75CB +痌 > tōng; #75CC +痍 > yí; #75CD +痎 > kāi; #75CE +痏 > wĕi; #75CF +痐 > húi; #75D0 +痑 > dŭo; #75D1 +痒 > yăng; #75D2 +痓 > chì; #75D3 +痔 > zhì; #75D4 +痕 > hén; #75D5 +痖 > yă; #75D6 +痗 > mèi; #75D7 +痘 > dòu; #75D8 +痙 > jìng; #75D9 +痚 > xiāo; #75DA +痛 > tòng; #75DB +痜 > tū; #75DC +痝 > máng; #75DD +痞 > pĭ; #75DE +痟 > xiāo; #75DF +痠 > suān; #75E0 +痡 > pū; #75E1 +痢 > lì; #75E2 +痣 > zhì; #75E3 +痤 > cúo; #75E4 +痥 > dúo; #75E5 +痦 > wù; #75E6 +痧 > shā; #75E7 +痨 > láo; #75E8 +痩 > shòu; #75E9 +痪 > huàn; #75EA +痫 > xián; #75EB +痬 > yì; #75EC +痭 > péng; #75ED +痮 > zhàng; #75EE +痯 > guăn; #75EF +痰 > tán; #75F0 +痱 > fèi; #75F1 +痲 > má; #75F2 +痳 > lín; #75F3 +痴 > chī; #75F4 +痵 > jì; #75F5 +痶 > diăn; #75F6 +痷 > ān; #75F7 +痸 > chì; #75F8 +痹 > bì; #75F9 +痺 > bēi; #75FA +痻 > mín; #75FB +痼 > gū; #75FC +痽 > dūi; #75FD +痾 > ē; #75FE +痿 > wĕi; #75FF +瘀 > yū; #7600 +瘁 > cùi; #7601 +瘂 > yă; #7602 +瘃 > zhŭ; #7603 +瘄 > cù; #7604 +瘅 > dàn; #7605 +瘆 > shèn; #7606 +瘇 > zhŭng; #7607 +瘈 > jì; #7608 +瘉 > yù; #7609 +瘊 > hóu; #760A +瘋 > fēng; #760B +瘌 > là; #760C +瘍 > yáng; #760D +瘎 > shèn; #760E +瘏 > tú; #760F +瘐 > yŭ; #7610 +瘑 > guā; #7611 +瘒 > wén; #7612 +瘓 > huàn; #7613 +瘔 > kù; #7614 +瘕 > jiă; #7615 +瘖 > yīn; #7616 +瘗 > yì; #7617 +瘘 > lǘ; #7618 +瘙 > sāo; #7619 +瘚 > jué; #761A +瘛 > chì; #761B +瘜 > xí; #761C +瘝 > guān; #761D +瘞 > yì; #761E +瘟 > wēn; #761F +瘠 > jí; #7620 +瘡 > chuāng; #7621 +瘢 > bān; #7622 +瘣 > lĕi; #7623 +瘤 > líu; #7624 +瘥 > chài; #7625 +瘦 > shòu; #7626 +瘧 > nǜe; #7627 +瘨 > diān; #7628 +瘩 > dā; #7629 +瘪 > piē; #762A +瘫 > tān; #762B +瘬 > zhàng; #762C +瘭 > biāo; #762D +瘮 > shen; #762E +瘯 > cù; #762F +瘰 > lŭo; #7630 +瘱 > yì; #7631 +瘲 > zòng; #7632 +瘳 > chōu; #7633 +瘴 > zhàng; #7634 +瘵 > zhài; #7635 +瘶 > sòu; #7636 +瘷 > sŭo; #7637 +瘸 > qué; #7638 +瘹 > diào; #7639 +瘺 > lòu; #763A +瘻 > lǘ; #763B +瘼 > mò; #763C +瘽 > jìn; #763D +瘾 > yĭn; #763E +瘿 > yĭng; #763F +癀 > huáng; #7640 +癁 > fú; #7641 +療 > liáo; #7642 +癃 > lóng; #7643 +癄 > qiáo; #7644 +癅 > líu; #7645 +癆 > láo; #7646 +癇 > xián; #7647 +癈 > fèi; #7648 +癉 > dàn; #7649 +癊 > yìn; #764A +癋 > hè; #764B +癌 > yán; #764C +癍 > bān; #764D +癎 > xián; #764E +癏 > guān; #764F +癐 > guài; #7650 +癑 > nóng; #7651 +癒 > yù; #7652 +癓 > wéi; #7653 +癔 > yì; #7654 +癕 > yōng; #7655 +癖 > pĭ; #7656 +癗 > lĕi; #7657 +癘 > lì; #7658 +癙 > shŭ; #7659 +癚 > dàn; #765A +癛 > lĭn; #765B +癜 > diàn; #765C +癝 > lĭn; #765D +癞 > lài; #765E +癟 > piē; #765F +癠 > jì; #7660 +癡 > chī; #7661 +癢 > yăng; #7662 +癣 > xiăn; #7663 +癤 > jié; #7664 +癥 > zhēng; #7665 +癧 > lì; #7667 +癨 > hùo; #7668 +癩 > lài; #7669 +癫 > diān; #766B +癬 > xiăn; #766C +癭 > yĭng; #766D +癮 > yĭn; #766E +癯 > qú; #766F +癰 > yōng; #7670 +癱 > tān; #7671 +癲 > diān; #7672 +癳 > lŭo; #7673 +癴 > lǘan; #7674 +癵 > luán; #7675 +癶 > bō; #7676 +癸 > gŭi; #7678 +癹 > pō; #7679 +発 > fā; #767A +登 > dēng; #767B +發 > fā; #767C +白 > bái; #767D +百 > băi; #767E +癿 > qié; #767F +皀 > bī; #7680 +皁 > zào; #7681 +皂 > zào; #7682 +皃 > mào; #7683 +的 > de; #7684 +皅 > pā; #7685 +皆 > jiē; #7686 +皇 > huáng; #7687 +皈 > gūi; #7688 +皉 > cĭ; #7689 +皊 > líng; #768A +皋 > gāo; #768B +皌 > mò; #768C +皍 > jí; #768D +皎 > jiăo; #768E +皏 > pĕng; #768F +皐 > gāo; #7690 +皑 > ái; #7691 +皒 > é; #7692 +皓 > hào; #7693 +皔 > hàn; #7694 +皕 > bī; #7695 +皖 > wăn; #7696 +皗 > chóu; #7697 +皘 > qiàn; #7698 +皙 > xī; #7699 +皚 > ái; #769A +皛 > jĭong; #769B +皜 > hào; #769C +皝 > huăng; #769D +皞 > hào; #769E +皟 > zé; #769F +皠 > cŭi; #76A0 +皡 > hào; #76A1 +皢 > xiăo; #76A2 +皣 > yè; #76A3 +皤 > pó; #76A4 +皥 > hào; #76A5 +皦 > jiăo; #76A6 +皧 > ài; #76A7 +皨 > xīng; #76A8 +皩 > huàng; #76A9 +皪 > lì; #76AA +皫 > piăo; #76AB +皬 > hè; #76AC +皭 > jiào; #76AD +皮 > pí; #76AE +皯 > găn; #76AF +皰 > pào; #76B0 +皱 > zhòu; #76B1 +皲 > jūn; #76B2 +皳 > qíu; #76B3 +皴 > cūn; #76B4 +皵 > què; #76B5 +皶 > zhā; #76B6 +皷 > gŭ; #76B7 +皸 > jūn; #76B8 +皹 > jūn; #76B9 +皺 > zhòu; #76BA +皻 > zhā; #76BB +皼 > gŭ; #76BC +皽 > zhăn; #76BD +皾 > dú; #76BE +皿 > mĭn; #76BF +盀 > qĭ; #76C0 +盁 > yíng; #76C1 +盂 > yú; #76C2 +盃 > bēi; #76C3 +盄 > zhāo; #76C4 +盅 > zhōng; #76C5 +盆 > pén; #76C6 +盇 > hé; #76C7 +盈 > yíng; #76C8 +盉 > hé; #76C9 +益 > yì; #76CA +盋 > bō; #76CB +盌 > wăn; #76CC +盍 > hé; #76CD +盎 > àng; #76CE +盏 > zhăn; #76CF +盐 > yán; #76D0 +监 > jiān; #76D1 +盒 > hé; #76D2 +盓 > yū; #76D3 +盔 > kūi; #76D4 +盕 > fàn; #76D5 +盖 > gài; #76D6 +盗 > dào; #76D7 +盘 > pán; #76D8 +盙 > fŭ; #76D9 +盚 > qíu; #76DA +盛 > shèng; #76DB +盜 > dào; #76DC +盝 > lù; #76DD +盞 > zhăn; #76DE +盟 > méng; #76DF +盠 > lĭ; #76E0 +盡 > jìn; #76E1 +盢 > xù; #76E2 +監 > jiān; #76E3 +盤 > pán; #76E4 +盥 > guàn; #76E5 +盦 > ān; #76E6 +盧 > lú; #76E7 +盨 > shŭ; #76E8 +盩 > zhōu; #76E9 +盪 > dàng; #76EA +盫 > ān; #76EB +盬 > gŭ; #76EC +盭 > lì; #76ED +目 > mù; #76EE +盯 > chéng; #76EF +盰 > găn; #76F0 +盱 > xū; #76F1 +盲 > máng; #76F2 +盳 > máng; #76F3 +直 > zhí; #76F4 +盵 > qì; #76F5 +盶 > ruăn; #76F6 +盷 > tián; #76F7 +相 > xiāng; #76F8 +盹 > dùn; #76F9 +盺 > xīn; #76FA +盻 > xì; #76FB +盼 > pàn; #76FC +盽 > fēng; #76FD +盾 > dùn; #76FE +盿 > mín; #76FF +眀 > míng; #7700 +省 > shĕng; #7701 +眂 > shì; #7702 +眃 > yún; #7703 +眄 > miăn; #7704 +眅 > pān; #7705 +眆 > făng; #7706 +眇 > miăo; #7707 +眈 > dān; #7708 +眉 > méi; #7709 +眊 > mào; #770A +看 > kàn; #770B +県 > xiàn; #770C +眍 > ōu; #770D +眎 > shì; #770E +眏 > yāng; #770F +眐 > zhēng; #7710 +眑 > yăo; #7711 +眒 > shèn; #7712 +眓 > hùo; #7713 +眔 > dà; #7714 +眕 > zhĕn; #7715 +眖 > kuàng; #7716 +眗 > jū; #7717 +眘 > shèn; #7718 +眙 > chì; #7719 +眚 > shĕng; #771A +眛 > mèi; #771B +眜 > mò; #771C +眝 > zhù; #771D +眞 > zhēn; #771E +真 > zhēn; #771F +眠 > mián; #7720 +眡 > dī; #7721 +眢 > yuān; #7722 +眣 > dié; #7723 +眤 > yí; #7724 +眥 > zì; #7725 +眦 > zì; #7726 +眧 > chăo; #7727 +眨 > zhă; #7728 +眩 > xuàn; #7729 +眪 > bĭng; #772A +眫 > mĭ; #772B +眬 > lóng; #772C +眭 > sūi; #772D +眮 > dòng; #772E +眯 > mĭ; #772F +眰 > dié; #7730 +眱 > yí; #7731 +眲 > èr; #7732 +眳 > mĭng; #7733 +眴 > xuàn; #7734 +眵 > chī; #7735 +眶 > kuàng; #7736 +眷 > juàn; #7737 +眸 > móu; #7738 +眹 > zhèn; #7739 +眺 > tiào; #773A +眻 > yáng; #773B +眼 > yăn; #773C +眽 > mò; #773D +眾 > zhòng; #773E +眿 > mài; #773F +着 > zháo; #7740 +睁 > zhēng; #7741 +睂 > méi; #7742 +睃 > jùn; #7743 +睄 > shào; #7744 +睅 > hàn; #7745 +睆 > huăn; #7746 +睇 > dì; #7747 +睈 > chĕng; #7748 +睉 > cūo; #7749 +睊 > juàn; #774A +睋 > é; #774B +睌 > wăn; #774C +睍 > xiàn; #774D +睎 > xī; #774E +睏 > kùn; #774F +睐 > lài; #7750 +睑 > jiăn; #7751 +睒 > shăn; #7752 +睓 > tiăn; #7753 +睔 > hŭn; #7754 +睕 > wăn; #7755 +睖 > líng; #7756 +睗 > shì; #7757 +睘 > qíong; #7758 +睙 > liè; #7759 +睚 > yái; #775A +睛 > jīng; #775B +睜 > zhēng; #775C +睝 > lí; #775D +睞 > lài; #775E +睟 > sùi; #775F +睠 > juàn; #7760 +睡 > shùi; #7761 +睢 > sūi; #7762 +督 > dū; #7763 +睤 > bì; #7764 +睥 > bì; #7765 +睦 > mù; #7766 +睧 > hūn; #7767 +睨 > nì; #7768 +睩 > lù; #7769 +睪 > yì; #776A +睫 > jié; #776B +睬 > căi; #776C +睭 > zhŏu; #776D +睮 > yú; #776E +睯 > hūn; #776F +睰 > mà; #7770 +睱 > xià; #7771 +睲 > xĭng; #7772 +睳 > xī; #7773 +睴 > gùn; #7774 +睵 > cai; #7775 +睶 > chŭn; #7776 +睷 > jiān; #7777 +睸 > mèi; #7778 +睹 > dŭ; #7779 +睺 > hóu; #777A +睻 > xuān; #777B +睼 > tì; #777C +睽 > kúi; #777D +睾 > gāo; #777E +睿 > rùi; #777F +瞀 > mòu; #7780 +瞁 > xù; #7781 +瞂 > fā; #7782 +瞃 > wēn; #7783 +瞄 > miáo; #7784 +瞅 > chŏu; #7785 +瞆 > kùi; #7786 +瞇 > mī; #7787 +瞈 > wĕng; #7788 +瞉 > kòu; #7789 +瞊 > dàng; #778A +瞋 > chēn; #778B +瞌 > kē; #778C +瞍 > sŏu; #778D +瞎 > xiā; #778E +瞏 > qíong; #778F +瞐 > mào; #7790 +瞑 > míng; #7791 +瞒 > mán; #7792 +瞓 > shùi; #7793 +瞔 > zé; #7794 +瞕 > zhàng; #7795 +瞖 > yì; #7796 +瞗 > diāo; #7797 +瞘 > ōu; #7798 +瞙 > mò; #7799 +瞚 > shùn; #779A +瞛 > cōng; #779B +瞜 > lōu; #779C +瞝 > chī; #779D +瞞 > mán; #779E +瞟 > piăo; #779F +瞠 > chēng; #77A0 +瞡 > jì; #77A1 +瞢 > méng; #77A2 +瞤 > rún; #77A4 +瞥 > piē; #77A5 +瞦 > xī; #77A6 +瞧 > qiáo; #77A7 +瞨 > pú; #77A8 +瞩 > zhŭ; #77A9 +瞪 > dèng; #77AA +瞫 > shĕn; #77AB +瞬 > shùn; #77AC +瞭 > liăo; #77AD +瞮 > chè; #77AE +瞯 > xián; #77AF +瞰 > kàn; #77B0 +瞱 > yè; #77B1 +瞲 > xù; #77B2 +瞳 > tóng; #77B3 +瞴 > móu; #77B4 +瞵 > lín; #77B5 +瞶 > kùi; #77B6 +瞷 > xián; #77B7 +瞸 > yè; #77B8 +瞹 > ài; #77B9 +瞺 > hùi; #77BA +瞻 > zhān; #77BB +瞼 > jiăn; #77BC +瞽 > gŭ; #77BD +瞾 > zhào; #77BE +瞿 > qū; #77BF +矀 > wéi; #77C0 +矁 > chŏu; #77C1 +矂 > sào; #77C2 +矃 > nĭng; #77C3 +矄 > xūn; #77C4 +矅 > yào; #77C5 +矆 > hùo; #77C6 +矇 > méng; #77C7 +矈 > mián; #77C8 +矉 > bīn; #77C9 +矊 > mián; #77CA +矋 > lì; #77CB +矌 > kuàng; #77CC +矍 > jué; #77CD +矎 > xuān; #77CE +矏 > mián; #77CF +矐 > hùo; #77D0 +矑 > lú; #77D1 +矒 > méng; #77D2 +矓 > lóng; #77D3 +矔 > guàn; #77D4 +矕 > măn; #77D5 +矖 > xĭ; #77D6 +矗 > chù; #77D7 +矘 > tăng; #77D8 +矙 > kàn; #77D9 +矚 > zhŭ; #77DA +矛 > máo; #77DB +矜 > jīn; #77DC +矝 > lín; #77DD +矞 > yù; #77DE +矟 > shùo; #77DF +矠 > cè; #77E0 +矡 > jué; #77E1 +矢 > shĭ; #77E2 +矣 > yĭ; #77E3 +矤 > shĕn; #77E4 +知 > zhī; #77E5 +矦 > hóu; #77E6 +矧 > shĕn; #77E7 +矨 > yĭng; #77E8 +矩 > jŭ; #77E9 +矪 > zhōu; #77EA +矫 > jiăo; #77EB +矬 > cúo; #77EC +短 > duăn; #77ED +矮 > ăi; #77EE +矯 > jiăo; #77EF +矰 > zēng; #77F0 +矱 > hùo; #77F1 +矲 > băi; #77F2 +石 > shí; #77F3 +矴 > dìng; #77F4 +矵 > qì; #77F5 +矶 > jī; #77F6 +矷 > zĭ; #77F7 +矸 > gān; #77F8 +矹 > wù; #77F9 +矺 > tūo; #77FA +矻 > kù; #77FB +矼 > qiāng; #77FC +矽 > xì; #77FD +矾 > fán; #77FE +矿 > kuàng; #77FF +砀 > dàng; #7800 +码 > mă; #7801 +砂 > shā; #7802 +砃 > dān; #7803 +砄 > jué; #7804 +砅 > lì; #7805 +砆 > fū; #7806 +砇 > mín; #7807 +砈 > nŭo; #7808 +砉 > hùo; #7809 +砊 > kàng; #780A +砋 > zhĭ; #780B +砌 > qì; #780C +砍 > kăn; #780D +砎 > jiè; #780E +砏 > fēn; #780F +砐 > è; #7810 +砑 > yà; #7811 +砒 > pī; #7812 +砓 > zhé; #7813 +研 > yán; #7814 +砕 > sùi; #7815 +砖 > zhuān; #7816 +砗 > chē; #7817 +砘 > dùn; #7818 +砙 > pān; #7819 +砚 > yàn; #781A +砜 > fēng; #781C +砝 > fá; #781D +砞 > mò; #781E +砟 > zhà; #781F +砠 > qū; #7820 +砡 > yù; #7821 +砢 > lŭo; #7822 +砣 > túo; #7823 +砤 > túo; #7824 +砥 > dĭ; #7825 +砦 > zhài; #7826 +砧 > zhēn; #7827 +砨 > ài; #7828 +砩 > fèi; #7829 +砪 > mŭ; #782A +砫 > zhŭ; #782B +砬 > lì; #782C +砭 > biān; #782D +砮 > nŭ; #782E +砯 > pīng; #782F +砰 > pēng; #7830 +砱 > líng; #7831 +砲 > pào; #7832 +砳 > lè; #7833 +破 > pò; #7834 +砵 > bō; #7835 +砶 > pò; #7836 +砷 > shēn; #7837 +砸 > zá; #7838 +砹 > nŭo; #7839 +砺 > lì; #783A +砻 > lóng; #783B +砼 > tóng; #783C +砾 > lì; #783E +础 > chŭ; #7840 +硁 > kēng; #7841 +硂 > quán; #7842 +硃 > zhū; #7843 +硄 > kuāng; #7844 +硅 > hùo; #7845 +硆 > è; #7846 +硇 > náo; #7847 +硈 > jiá; #7848 +硉 > lù; #7849 +硊 > wĕi; #784A +硋 > ài; #784B +硌 > lùo; #784C +硍 > kèn; #784D +硎 > xíng; #784E +硏 > yán; #784F +硐 > tóng; #7850 +硑 > pēng; #7851 +硒 > xī; #7852 +硔 > hóng; #7854 +硕 > shùo; #7855 +硖 > xiá; #7856 +硗 > qiāo; #7857 +硙 > wèi; #7859 +硚 > qiáo; #785A +硜 > kēng; #785C +硝 > xiāo; #785D +硞 > què; #785E +硟 > chàn; #785F +硠 > lăng; #7860 +硡 > hóng; #7861 +硢 > yú; #7862 +硣 > xiāo; #7863 +硤 > xiá; #7864 +硥 > măng; #7865 +硦 > lòng; #7866 +硧 > ĭong; #7867 +硨 > chē; #7868 +硩 > chè; #7869 +硪 > é; #786A +硫 > líu; #786B +硬 > yìng; #786C +硭 > máng; #786D +确 > què; #786E +硯 > yàn; #786F +硰 > shā; #7870 +硱 > kŭn; #7871 +硲 > yù; #7872 +硵 > lŭ; #7875 +硶 > chĕn; #7876 +硷 > jiăn; #7877 +硸 > nuè; #7878 +硹 > sōng; #7879 +硺 > zhúo; #787A +硻 > kēng; #787B +硼 > péng; #787C +硽 > yăn; #787D +硾 > zhùi; #787E +硿 > kōng; #787F +碀 > céng; #7880 +碁 > qí; #7881 +碂 > zòng; #7882 +碃 > qìng; #7883 +碄 > lín; #7884 +碅 > jūn; #7885 +碆 > bō; #7886 +碇 > dìng; #7887 +碈 > mín; #7888 +碉 > diāo; #7889 +碊 > jiān; #788A +碋 > hè; #788B +碌 > lù; #788C +碍 > ài; #788D +碎 > sùi; #788E +碏 > què; #788F +碐 > líng; #7890 +碑 > bēi; #7891 +碒 > yín; #7892 +碓 > dùi; #7893 +碔 > wŭ; #7894 +碕 > qí; #7895 +碖 > lùn; #7896 +碗 > wăn; #7897 +碘 > diăn; #7898 +碙 > gāng; #7899 +碚 > péi; #789A +碛 > qì; #789B +碜 > chĕn; #789C +碝 > ruăn; #789D +碞 > yán; #789E +碟 > dié; #789F +碠 > dìng; #78A0 +碡 > dú; #78A1 +碢 > túo; #78A2 +碣 > jié; #78A3 +碤 > yīng; #78A4 +碥 > biăn; #78A5 +碦 > kè; #78A6 +碧 > bì; #78A7 +碨 > wēi; #78A8 +碩 > shùo; #78A9 +碪 > zhēn; #78AA +碫 > duàn; #78AB +碬 > xiá; #78AC +碭 > dàng; #78AD +碮 > tí; #78AE +碯 > năo; #78AF +碰 > pèng; #78B0 +碱 > jiăn; #78B1 +碲 > dì; #78B2 +碳 > tàn; #78B3 +碴 > chá; #78B4 +碶 > qì; #78B6 +碸 > fēng; #78B8 +碹 > xuàn; #78B9 +確 > què; #78BA +碻 > què; #78BB +碼 > mă; #78BC +碽 > gōng; #78BD +碾 > niàn; #78BE +碿 > sù; #78BF +磀 > é; #78C0 +磁 > cí; #78C1 +磂 > lìu; #78C2 +磃 > sī; #78C3 +磄 > táng; #78C4 +磅 > bàng; #78C5 +磆 > huá; #78C6 +磇 > pī; #78C7 +磈 > wĕi; #78C8 +磉 > săng; #78C9 +磊 > lĕi; #78CA +磋 > cūo; #78CB +磌 > zhēn; #78CC +磍 > xiá; #78CD +磎 > qī; #78CE +磏 > lián; #78CF +磐 > pán; #78D0 +磑 > wèi; #78D1 +磒 > yŭn; #78D2 +磓 > dūi; #78D3 +磔 > zhé; #78D4 +磕 > kē; #78D5 +磖 > lā; #78D6 +磘 > qìng; #78D8 +磙 > gŭn; #78D9 +磚 > zhuān; #78DA +磛 > chán; #78DB +磜 > qì; #78DC +磝 > áo; #78DD +磞 > pēng; #78DE +磟 > lù; #78DF +磠 > lŭ; #78E0 +磡 > kàn; #78E1 +磢 > qiăng; #78E2 +磣 > chĕn; #78E3 +磤 > yĭn; #78E4 +磥 > lĕi; #78E5 +磦 > biāo; #78E6 +磧 > qì; #78E7 +磨 > mó; #78E8 +磩 > qī; #78E9 +磪 > cūi; #78EA +磫 > zōng; #78EB +磬 > qìng; #78EC +磭 > chùo; #78ED +磯 > jī; #78EF +磰 > shàn; #78F0 +磱 > láo; #78F1 +磲 > qú; #78F2 +磳 > zēng; #78F3 +磴 > dèng; #78F4 +磵 > jiàn; #78F5 +磶 > xì; #78F6 +磷 > lìn; #78F7 +磸 > dìng; #78F8 +磹 > diàn; #78F9 +磺 > huáng; #78FA +磻 > pán; #78FB +磼 > zá; #78FC +磽 > qiāo; #78FD +磾 > dī; #78FE +磿 > lì; #78FF +礁 > jiāo; #7901 +礃 > zhăng; #7903 +礄 > qiáo; #7904 +礅 > dūn; #7905 +礆 > xiăn; #7906 +礇 > yù; #7907 +礈 > zhùi; #7908 +礉 > hé; #7909 +礊 > hùo; #790A +礋 > zhái; #790B +礌 > lèi; #790C +礍 > kĕ; #790D +礎 > chŭ; #790E +礏 > jí; #790F +礐 > què; #7910 +礑 > dàng; #7911 +礒 > yĭ; #7912 +礓 > jiāng; #7913 +礔 > pì; #7914 +礕 > pī; #7915 +礖 > yù; #7916 +礗 > pīn; #7917 +礘 > qì; #7918 +礙 > ài; #7919 +礚 > kài; #791A +礛 > jiān; #791B +礜 > yù; #791C +礝 > ruăn; #791D +礞 > méng; #791E +礟 > pào; #791F +礠 > cí; #7920 +礣 > miè; #7923 +礤 > că; #7924 +礥 > xián; #7925 +礦 > kuàng; #7926 +礧 > lèi; #7927 +礨 > lĕi; #7928 +礩 > zhì; #7929 +礪 > lì; #792A +礫 > lì; #792B +礬 > fán; #792C +礭 > què; #792D +礮 > pào; #792E +礯 > yīng; #792F +礰 > lì; #7930 +礱 > lóng; #7931 +礲 > lóng; #7932 +礳 > mò; #7933 +礴 > bó; #7934 +礵 > shuāng; #7935 +礶 > guàn; #7936 +礷 > lán; #7937 +礸 > zăn; #7938 +礹 > yán; #7939 +示 > shì; #793A +礻 > shì' 'zì' 'páng; #793B +礼 > lĭ; #793C +礽 > réng; #793D +社 > shè; #793E +礿 > yuè; #793F +祀 > sì; #7940 +祁 > qí; #7941 +祂 > tā; #7942 +祃 > mà; #7943 +祄 > xiè; #7944 +祅 > xiān; #7945 +祆 > xiān; #7946 +祇 > zhī; #7947 +祈 > qí; #7948 +祉 > zhĭ; #7949 +祊 > bēng; #794A +祋 > dùi; #794B +祌 > zhòng; #794C +祎 > yī; #794E +祏 > shí; #794F +祐 > yòu; #7950 +祑 > zhì; #7951 +祒 > tiáo; #7952 +祓 > fú; #7953 +祔 > fù; #7954 +祕 > mì; #7955 +祖 > zŭ; #7956 +祗 > zhī; #7957 +祘 > suàn; #7958 +祙 > mèi; #7959 +祚 > zùo; #795A +祛 > qū; #795B +祜 > hù; #795C +祝 > zhù; #795D +神 > shén; #795E +祟 > sùi; #795F +祠 > cí; #7960 +祡 > chái; #7961 +祢 > mí; #7962 +祣 > lǚ; #7963 +祤 > yŭ; #7964 +祥 > xiáng; #7965 +祦 > wú; #7966 +祧 > tiāo; #7967 +票 > piào; #7968 +祩 > zhū; #7969 +祪 > gŭi; #796A +祫 > xiá; #796B +祬 > zhī; #796C +祭 > jì; #796D +祮 > gào; #796E +祯 > zhēn; #796F +祰 > gào; #7970 +祱 > shùi; #7971 +祲 > jīn; #7972 +祳 > chĕn; #7973 +祴 > gāi; #7974 +祵 > kŭn; #7975 +祶 > dì; #7976 +祷 > dăo; #7977 +祸 > hùo; #7978 +祹 > táo; #7979 +祺 > qí; #797A +祻 > gù; #797B +祼 > guàn; #797C +祽 > zùi; #797D +祾 > líng; #797E +祿 > lù; #797F +禀 > bĭng; #7980 +禁 > jìn; #7981 +禂 > dăo; #7982 +禃 > zhí; #7983 +禄 > lù; #7984 +禅 > shàn; #7985 +禆 > bēi; #7986 +禇 > zhĕ; #7987 +禈 > hūi; #7988 +禉 > yŏu; #7989 +禊 > xì; #798A +禋 > yīn; #798B +禌 > zī; #798C +禍 > hùo; #798D +禎 > zhēn; #798E +福 > fú; #798F +禐 > yuàn; #7990 +禑 > wú; #7991 +禒 > xiăn; #7992 +禓 > yáng; #7993 +禔 > tí; #7994 +禕 > yī; #7995 +禖 > méi; #7996 +禗 > sī; #7997 +禘 > dì; #7998 +禚 > zhúo; #799A +禛 > zhēn; #799B +禜 > yŏng; #799C +禝 > jí; #799D +禞 > gào; #799E +禟 > táng; #799F +禠 > sī; #79A0 +禡 > mà; #79A1 +禢 > tā; #79A2 +禤 > xuān; #79A4 +禥 > qí; #79A5 +禦 > yù; #79A6 +禧 > xī; #79A7 +禨 > jī; #79A8 +禩 > sì; #79A9 +禪 > chán; #79AA +禫 > tăn; #79AB +禬 > kuài; #79AC +禭 > sùi; #79AD +禮 > lĭ; #79AE +禯 > nóng; #79AF +禰 > nĭ; #79B0 +禱 > dăo; #79B1 +禲 > lì; #79B2 +禳 > ráng; #79B3 +禴 > yuè; #79B4 +禵 > tí; #79B5 +禶 > zăn; #79B6 +禷 > lèi; #79B7 +禸 > róu; #79B8 +禹 > yŭ; #79B9 +禺 > yú; #79BA +离 > chī; #79BB +禼 > xiè; #79BC +禽 > qín; #79BD +禾 > hé; #79BE +禿 > tū; #79BF +秀 > xìu; #79C0 +私 > sī; #79C1 +秂 > rén; #79C2 +秃 > tū; #79C3 +秄 > zĭ; #79C4 +秅 > chá; #79C5 +秆 > găn; #79C6 +秇 > yì; #79C7 +秈 > xiān; #79C8 +秉 > bĭng; #79C9 +秊 > nián; #79CA +秋 > qīu; #79CB +秌 > qīu; #79CC +种 > chóng; #79CD +秎 > fén; #79CE +秏 > hào; #79CF +秐 > yún; #79D0 +科 > kē; #79D1 +秒 > miăo; #79D2 +秓 > zhī; #79D3 +秔 > gēng; #79D4 +秕 > bĭ; #79D5 +秖 > zhī; #79D6 +秗 > yù; #79D7 +秘 > mì; #79D8 +秙 > kù; #79D9 +秚 > bàn; #79DA +秛 > pī; #79DB +秜 > ní; #79DC +秝 > lì; #79DD +秞 > yóu; #79DE +租 > zū; #79DF +秠 > pī; #79E0 +秡 > bá; #79E1 +秢 > líng; #79E2 +秣 > mò; #79E3 +秤 > chèng; #79E4 +秥 > nián; #79E5 +秦 > qín; #79E6 +秧 > yāng; #79E7 +秨 > zúo; #79E8 +秩 > zhì; #79E9 +秪 > zhī; #79EA +秫 > shú; #79EB +秬 > jù; #79EC +秭 > zĭ; #79ED +秮 > húo; #79EE +积 > jī; #79EF +称 > chēng; #79F0 +秱 > tóng; #79F1 +秲 > zhì; #79F2 +秳 > húo; #79F3 +秴 > hé; #79F4 +秵 > yīn; #79F5 +秶 > zī; #79F6 +秷 > zhí; #79F7 +秸 > jiē; #79F8 +秹 > rĕn; #79F9 +秺 > dù; #79FA +移 > yí; #79FB +秼 > zhū; #79FC +秽 > hùi; #79FD +秾 > nóng; #79FE +秿 > fŭ; #79FF +稀 > xī; #7A00 +稁 > kăo; #7A01 +稂 > láng; #7A02 +稃 > fū; #7A03 +稄 > zè; #7A04 +稅 > shùi; #7A05 +稆 > lǚ; #7A06 +稇 > kŭn; #7A07 +稈 > găn; #7A08 +稉 > gēng; #7A09 +稊 > tí; #7A0A +程 > chéng; #7A0B +稌 > tú; #7A0C +稍 > shāo; #7A0D +税 > shùi; #7A0E +稏 > yà; #7A0F +稐 > lŭn; #7A10 +稑 > lù; #7A11 +稒 > gù; #7A12 +稓 > zúo; #7A13 +稔 > rĕn; #7A14 +稕 > zhùn; #7A15 +稖 > bàng; #7A16 +稗 > bài; #7A17 +稘 > jī; #7A18 +稙 > zhí; #7A19 +稚 > zhì; #7A1A +稛 > kŭn; #7A1B +稜 > léng; #7A1C +稝 > péng; #7A1D +稞 > kē; #7A1E +稟 > bĭng; #7A1F +稠 > chóu; #7A20 +稡 > zú; #7A21 +稢 > yù; #7A22 +稣 > sū; #7A23 +稤 > lǜe; #7A24 +稦 > yī; #7A26 +稧 > xì; #7A27 +稨 > biān; #7A28 +稩 > jì; #7A29 +稪 > fù; #7A2A +稫 > bī; #7A2B +稬 > nùo; #7A2C +稭 > jiē; #7A2D +種 > zhŏng; #7A2E +稯 > zōng; #7A2F +稰 > xū; #7A30 +稱 > chēng; #7A31 +稲 > dào; #7A32 +稳 > wĕn; #7A33 +稴 > lián; #7A34 +稵 > zī; #7A35 +稶 > yù; #7A36 +稷 > jì; #7A37 +稸 > xù; #7A38 +稹 > zhĕn; #7A39 +稺 > zhì; #7A3A +稻 > dào; #7A3B +稼 > jià; #7A3C +稽 > jī; #7A3D +稾 > găo; #7A3E +稿 > găo; #7A3F +穀 > gŭ; #7A40 +穁 > róng; #7A41 +穂 > sùi; #7A42 +穄 > jì; #7A44 +穅 > kāng; #7A45 +穆 > mù; #7A46 +穇 > shān; #7A47 +穈 > mén; #7A48 +穉 > zhì; #7A49 +穊 > jì; #7A4A +穋 > lù; #7A4B +穌 > sū; #7A4C +積 > jī; #7A4D +穎 > yĭng; #7A4E +穏 > wĕn; #7A4F +穐 > qīu; #7A50 +穑 > sè; #7A51 +穓 > yì; #7A53 +穔 > huáng; #7A54 +穕 > qiè; #7A55 +穖 > jĭ; #7A56 +穗 > sùi; #7A57 +穘 > xiāo; #7A58 +穙 > pú; #7A59 +穚 > jiāo; #7A5A +穛 > zhūo; #7A5B +穜 > tóng; #7A5C +穞 > lǚ; #7A5E +穟 > sùi; #7A5F +穠 > nóng; #7A60 +穡 > sè; #7A61 +穢 > hùi; #7A62 +穣 > ráng; #7A63 +穤 > nùo; #7A64 +穥 > yù; #7A65 +穦 > bin; #7A66 +穧 > jì; #7A67 +穨 > túi; #7A68 +穩 > wĕn; #7A69 +穪 > chēng; #7A6A +穫 > hùo; #7A6B +穬 > gŏng; #7A6C +穭 > lǚ; #7A6D +穮 > biāo; #7A6E +穰 > ráng; #7A70 +穱 > zhūo; #7A71 +穲 > lí; #7A72 +穳 > zàn; #7A73 +穴 > xuè; #7A74 +穵 > wā; #7A75 +究 > jìu; #7A76 +穷 > qíong; #7A77 +穸 > xì; #7A78 +穹 > qīong; #7A79 +空 > kōng; #7A7A +穻 > yū; #7A7B +穼 > sēn; #7A7C +穽 > jĭng; #7A7D +穾 > yào; #7A7E +穿 > chuān; #7A7F +窀 > zhūn; #7A80 +突 > tú; #7A81 +窂 > láo; #7A82 +窃 > qiè; #7A83 +窄 > zhăi; #7A84 +窅 > yăo; #7A85 +窆 > biăn; #7A86 +窇 > báo; #7A87 +窈 > yăo; #7A88 +窉 > bĭng; #7A89 +窊 > wā; #7A8A +窋 > zhú; #7A8B +窌 > jiào; #7A8C +窍 > qiào; #7A8D +窎 > diào; #7A8E +窏 > wū; #7A8F +窐 > gūi; #7A90 +窑 > yáo; #7A91 +窒 > zhì; #7A92 +窓 > chuāng; #7A93 +窔 > yăo; #7A94 +窕 > tiăo; #7A95 +窖 > jiào; #7A96 +窗 > chuāng; #7A97 +窘 > jĭong; #7A98 +窙 > xiāo; #7A99 +窚 > chéng; #7A9A +窛 > kòu; #7A9B +窜 > cuàn; #7A9C +窝 > wō; #7A9D +窞 > dàn; #7A9E +窟 > kū; #7A9F +窠 > kē; #7AA0 +窡 > zhùi; #7AA1 +窢 > xù; #7AA2 +窣 > sù; #7AA3 +窤 > guan; #7AA4 +窥 > kūi; #7AA5 +窦 > dòu; #7AA6 +窨 > yìn; #7AA8 +窩 > wō; #7AA9 +窪 > wā; #7AAA +窫 > yà; #7AAB +窬 > yú; #7AAC +窭 > jù; #7AAD +窮 > qíong; #7AAE +窯 > yáo; #7AAF +窰 > yáo; #7AB0 +窱 > tiào; #7AB1 +窲 > cháo; #7AB2 +窳 > yŭ; #7AB3 +窴 > tián; #7AB4 +窵 > diào; #7AB5 +窶 > jù; #7AB6 +窷 > liáo; #7AB7 +窸 > xī; #7AB8 +窹 > wù; #7AB9 +窺 > kūi; #7ABA +窻 > chuāng; #7ABB +窼 > zhāo; #7ABC +窾 > kuăn; #7ABE +窿 > lóng; #7ABF +竀 > chēng; #7AC0 +竁 > cùi; #7AC1 +竂 > piáo; #7AC2 +竃 > zào; #7AC3 +竄 > cuàn; #7AC4 +竅 > qiào; #7AC5 +竆 > qíong; #7AC6 +竇 > dòu; #7AC7 +竈 > zào; #7AC8 +竉 > lŏng; #7AC9 +竊 > qiè; #7ACA +立 > lì; #7ACB +竌 > chù; #7ACC +竍 > shí' 'gōng' 'shēng; #7ACD +竎 > fòu; #7ACE +竏 > qiān' 'gōng' 'shēng; #7ACF +竐 > chù; #7AD0 +竑 > hóng; #7AD1 +竒 > qí; #7AD2 +竓 > qiān' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD3 +竔 > gōng' 'shēng; #7AD4 +竕 > shí' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD5 +竖 > shù; #7AD6 +竗 > miào; #7AD7 +竘 > jŭ; #7AD8 +站 > zhàn; #7AD9 +竚 > zhù; #7ADA +竛 > líng; #7ADB +竜 > lóng; #7ADC +竝 > bìng; #7ADD +竞 > jìng; #7ADE +竟 > jìng; #7ADF +章 > zhāng; #7AE0 +竡 > yī' 'gōng' 'shēng' 'de' 'yī' 'băi' 'bèi; #7AE1 +竢 > sì; #7AE2 +竣 > jùn; #7AE3 +竤 > hóng; #7AE4 +童 > tóng; #7AE5 +竦 > sŏng; #7AE6 +竧 > jìng; #7AE7 +竨 > diào; #7AE8 +竩 > yì; #7AE9 +竪 > shù; #7AEA +竫 > jìng; #7AEB +竬 > qŭ; #7AEC +竭 > jié; #7AED +竮 > píng; #7AEE +端 > duān; #7AEF +竰 > sháo; #7AF0 +竱 > zhuăn; #7AF1 +竲 > céng; #7AF2 +竳 > dēng; #7AF3 +竴 > cūi; #7AF4 +竵 > huāi; #7AF5 +競 > jìng; #7AF6 +竷 > kàn; #7AF7 +竸 > jìng; #7AF8 +竹 > zhú; #7AF9 +竺 > zhú; #7AFA +竻 > lè; #7AFB +竼 > péng; #7AFC +竽 > yú; #7AFD +竾 > chí; #7AFE +竿 > gān; #7AFF +笀 > máng; #7B00 +笁 > zhú; #7B01 +笃 > dŭ; #7B03 +笄 > jī; #7B04 +笅 > xiáo; #7B05 +笆 > bā; #7B06 +笇 > suàn; #7B07 +笈 > jí; #7B08 +笉 > zhĕn; #7B09 +笊 > zhào; #7B0A +笋 > sŭn; #7B0B +笌 > yá; #7B0C +笍 > zhùi; #7B0D +笎 > yuán; #7B0E +笏 > hù; #7B0F +笐 > gāng; #7B10 +笑 > xiào; #7B11 +笒 > cén; #7B12 +笓 > pí; #7B13 +笔 > bĭ; #7B14 +笕 > jiăn; #7B15 +笖 > yĭ; #7B16 +笗 > dōng; #7B17 +笘 > shān; #7B18 +笙 > shēng; #7B19 +笚 > xiá; #7B1A +笛 > dí; #7B1B +笜 > zhú; #7B1C +笝 > nà; #7B1D +笞 > chī; #7B1E +笟 > gū; #7B1F +笠 > lì; #7B20 +笡 > qiè; #7B21 +笢 > mĭn; #7B22 +笣 > bāo; #7B23 +笤 > tiáo; #7B24 +笥 > sì; #7B25 +符 > fú; #7B26 +笧 > cè; #7B27 +笨 > bèn; #7B28 +笩 > pèi; #7B29 +笪 > dá; #7B2A +笫 > zĭ; #7B2B +第 > dì; #7B2C +笭 > líng; #7B2D +笮 > zé; #7B2E +笯 > nú; #7B2F +笰 > fú; #7B30 +笱 > gŏu; #7B31 +笲 > fān; #7B32 +笳 > jiā; #7B33 +笴 > gĕ; #7B34 +笵 > fàn; #7B35 +笶 > shĭ; #7B36 +笷 > măo; #7B37 +笸 > pŏ; #7B38 +笺 > jiān; #7B3A +笻 > qíong; #7B3B +笼 > lóng; #7B3C +笾 > biān; #7B3E +笿 > lùo; #7B3F +筀 > gùi; #7B40 +筁 > qŭ; #7B41 +筂 > chí; #7B42 +筃 > yīn; #7B43 +筄 > yào; #7B44 +筅 > xiăn; #7B45 +筆 > bĭ; #7B46 +筇 > qíong; #7B47 +筈 > guā; #7B48 +等 > dĕng; #7B49 +筊 > jiăo; #7B4A +筋 > jīn; #7B4B +筌 > quán; #7B4C +筍 > sŭn; #7B4D +筎 > rú; #7B4E +筏 > fá; #7B4F +筐 > kuāng; #7B50 +筑 > zhú; #7B51 +筒 > tŏng; #7B52 +筓 > jī; #7B53 +答 > dá; #7B54 +筕 > xíng; #7B55 +策 > cè; #7B56 +筗 > zhòng; #7B57 +筘 > kòu; #7B58 +筙 > lái; #7B59 +筚 > bì; #7B5A +筛 > shāi; #7B5B +筜 > dāng; #7B5C +筝 > zhēng; #7B5D +筞 > cè; #7B5E +筟 > fū; #7B5F +筠 > yún; #7B60 +筡 > tú; #7B61 +筢 > pá; #7B62 +筣 > lì; #7B63 +筤 > láng; #7B64 +筥 > jŭ; #7B65 +筦 > guăn; #7B66 +筧 > jiăn; #7B67 +筨 > hán; #7B68 +筩 > tóng; #7B69 +筪 > xiá; #7B6A +筫 > zhì; #7B6B +筬 > chéng; #7B6C +筭 > suàn; #7B6D +筮 > shì; #7B6E +筯 > zhù; #7B6F +筰 > zúo; #7B70 +筱 > xiăo; #7B71 +筲 > shāo; #7B72 +筳 > tíng; #7B73 +筴 > cè; #7B74 +筵 > yán; #7B75 +筶 > găo; #7B76 +筷 > kuài; #7B77 +筸 > gān; #7B78 +筹 > chóu; #7B79 +筻 > gàng; #7B7B +筼 > yún; #7B7C +签 > qiān; #7B7E +筿 > xiăo; #7B7F +简 > jiăn; #7B80 +箁 > pú; #7B81 +箂 > lái; #7B82 +箃 > zōu; #7B83 +箄 > bì; #7B84 +箅 > bì; #7B85 +箆 > bì; #7B86 +箇 > gè; #7B87 +箈 > chí; #7B88 +箉 > guăi; #7B89 +箊 > yū; #7B8A +箋 > jiān; #7B8B +箌 > zhào; #7B8C +箍 > gū; #7B8D +箎 > chí; #7B8E +箏 > zhēng; #7B8F +箐 > jīng; #7B90 +箑 > shà; #7B91 +箒 > zhŏu; #7B92 +箓 > lù; #7B93 +箔 > bó; #7B94 +箕 > jī; #7B95 +箖 > lín; #7B96 +算 > suàn; #7B97 +箘 > jùn; #7B98 +箙 > fú; #7B99 +箚 > zhá; #7B9A +箛 > gū; #7B9B +箜 > kōng; #7B9C +箝 > qián; #7B9D +箞 > quān; #7B9E +箟 > jùn; #7B9F +箠 > chúi; #7BA0 +管 > guăn; #7BA1 +箢 > yuān; #7BA2 +箣 > cè; #7BA3 +箤 > jú; #7BA4 +箥 > bŏ; #7BA5 +箦 > zé; #7BA6 +箧 > qiè; #7BA7 +箨 > tùo; #7BA8 +箩 > lúo; #7BA9 +箪 > dān; #7BAA +箫 > xiāo; #7BAB +箬 > rùo; #7BAC +箭 > jiàn; #7BAD +箮 > xuan; #7BAE +箯 > biān; #7BAF +箰 > sŭn; #7BB0 +箱 > xiāng; #7BB1 +箲 > xiăn; #7BB2 +箳 > píng; #7BB3 +箴 > zhēn; #7BB4 +箵 > shĕng; #7BB5 +箶 > hú; #7BB6 +箷 > shī; #7BB7 +箸 > zhù; #7BB8 +箹 > yuē; #7BB9 +箺 > chŭn; #7BBA +箻 > lǜ; #7BBB +箼 > wū; #7BBC +箽 > dŏng; #7BBD +箾 > xiāo; #7BBE +箿 > jí; #7BBF +節 > jié; #7BC0 +篁 > huáng; #7BC1 +篂 > xīng; #7BC2 +篃 > méi; #7BC3 +範 > fàn; #7BC4 +篅 > chúi; #7BC5 +篆 > zhuàn; #7BC6 +篇 > piān; #7BC7 +篈 > fēng; #7BC8 +築 > zhú; #7BC9 +篊 > hóng; #7BCA +篋 > qiè; #7BCB +篌 > hóu; #7BCC +篍 > qīu; #7BCD +篎 > miăo; #7BCE +篏 > qiàn; #7BCF +篑 > kùi; #7BD1 +篓 > lŏu; #7BD3 +篔 > yún; #7BD4 +篕 > hé; #7BD5 +篖 > táng; #7BD6 +篗 > yuè; #7BD7 +篘 > chōu; #7BD8 +篙 > gāo; #7BD9 +篚 > fĕi; #7BDA +篛 > rùo; #7BDB +篜 > zhēng; #7BDC +篝 > gōu; #7BDD +篞 > niè; #7BDE +篟 > qiàn; #7BDF +篠 > xiăo; #7BE0 +篡 > cuàn; #7BE1 +篢 > gōng; #7BE2 +篣 > páng; #7BE3 +篤 > dŭ; #7BE4 +篥 > lì; #7BE5 +篦 > bì; #7BE6 +篧 > zhúo; #7BE7 +篨 > chú; #7BE8 +篩 > shāi; #7BE9 +篪 > chí; #7BEA +篫 > zhú; #7BEB +篬 > qiāng; #7BEC +篭 > lóng; #7BED +篮 > lán; #7BEE +篯 > jiān; #7BEF +篰 > bù; #7BF0 +篱 > lí; #7BF1 +篲 > hùi; #7BF2 +篳 > bì; #7BF3 +篴 > dí; #7BF4 +篵 > cōng; #7BF5 +篶 > yān; #7BF6 +篷 > péng; #7BF7 +篸 > sēn; #7BF8 +篹 > zhuàn; #7BF9 +篺 > pái; #7BFA +篻 > piào; #7BFB +篼 > dōu; #7BFC +篽 > yŭ; #7BFD +篾 > miè; #7BFE +篿 > zhuān; #7BFF +簀 > zé; #7C00 +簁 > xĭ; #7C01 +簂 > gúo; #7C02 +簃 > yí; #7C03 +簄 > hù; #7C04 +簅 > chăn; #7C05 +簆 > kòu; #7C06 +簇 > cù; #7C07 +簈 > píng; #7C08 +簉 > chòu; #7C09 +簊 > jī; #7C0A +簋 > gŭi; #7C0B +簌 > sù; #7C0C +簍 > lŏu; #7C0D +簎 > zhà; #7C0E +簏 > lù; #7C0F +簐 > niăn; #7C10 +簑 > sūo; #7C11 +簒 > cuàn; #7C12 +簔 > sūo; #7C14 +簕 > lè; #7C15 +簖 > duàn; #7C16 +簘 > xiāo; #7C18 +簙 > bó; #7C19 +簚 > mì; #7C1A +簛 > sī; #7C1B +簜 > dàng; #7C1C +簝 > liáo; #7C1D +簞 > dān; #7C1E +簟 > diàn; #7C1F +簠 > fŭ; #7C20 +簡 > jiăn; #7C21 +簢 > mĭn; #7C22 +簣 > kùi; #7C23 +簤 > dài; #7C24 +簥 > qiáo; #7C25 +簦 > dēng; #7C26 +簧 > huáng; #7C27 +簨 > sŭn; #7C28 +簩 > láo; #7C29 +簪 > zān; #7C2A +簫 > xiāo; #7C2B +簬 > dù; #7C2C +簭 > shì; #7C2D +簮 > zān; #7C2E +簰 > pái; #7C30 +簲 > pái; #7C32 +簳 > gàn; #7C33 +簴 > jù; #7C34 +簵 > dù; #7C35 +簶 > lù; #7C36 +簷 > yán; #7C37 +簸 > bò; #7C38 +簹 > dāng; #7C39 +簺 > sài; #7C3A +簻 > kē; #7C3B +簼 > lóng; #7C3C +簽 > qiān; #7C3D +簾 > lián; #7C3E +簿 > bó; #7C3F +籀 > zhòu; #7C40 +籁 > lài; #7C41 +籃 > lán; #7C43 +籄 > kùi; #7C44 +籅 > yú; #7C45 +籆 > yuè; #7C46 +籇 > háo; #7C47 +籈 > zhēn; #7C48 +籉 > tái; #7C49 +籊 > tì; #7C4A +籋 > mí; #7C4B +籌 > chóu; #7C4C +籍 > jí; #7C4D +籐 > téng; #7C50 +籑 > zhuàn; #7C51 +籒 > zhòu; #7C52 +籓 > fān; #7C53 +籔 > sŏu; #7C54 +籕 > zhòu; #7C55 +籗 > zhúo; #7C57 +籘 > téng; #7C58 +籙 > lù; #7C59 +籚 > lú; #7C5A +籛 > jiān; #7C5B +籜 > tùo; #7C5C +籝 > yíng; #7C5D +籞 > yù; #7C5E +籟 > lài; #7C5F +籠 > lóng; #7C60 +籢 > lián; #7C62 +籣 > lán; #7C63 +籤 > qiān; #7C64 +籥 > yuè; #7C65 +籦 > zhōng; #7C66 +籧 > qú; #7C67 +籨 > lián; #7C68 +籩 > biān; #7C69 +籪 > duàn; #7C6A +籫 > zuăn; #7C6B +籬 > lí; #7C6C +籭 > sī; #7C6D +籮 > lúo; #7C6E +籯 > yíng; #7C6F +籰 > yuè; #7C70 +籱 > zhúo; #7C71 +籲 > xū; #7C72 +米 > mĭ; #7C73 +籴 > dí; #7C74 +籵 > fán; #7C75 +籶 > shēn; #7C76 +籷 > zhé; #7C77 +籸 > shēn; #7C78 +籹 > nǚ; #7C79 +籺 > xié; #7C7A +类 > lèi; #7C7B +籼 > xiān; #7C7C +籽 > zĭ; #7C7D +籾 > ní; #7C7E +籿 > cùn; #7C7F +粁 > qiān; #7C81 +粃 > bĭ; #7C83 +粄 > băn; #7C84 +粅 > wù; #7C85 +粆 > shā; #7C86 +粇 > kāng; #7C87 +粈 > rŏu; #7C88 +粉 > fĕn; #7C89 +粊 > bì; #7C8A +粋 > cùi; #7C8B +粍 > lí; #7C8D +粎 > chĭ; #7C8E +粑 > bā; #7C91 +粒 > lì; #7C92 +粓 > gān; #7C93 +粔 > jù; #7C94 +粕 > pò; #7C95 +粖 > mò; #7C96 +粗 > cū; #7C97 +粘 > nián; #7C98 +粙 > zhòu; #7C99 +粚 > lí; #7C9A +粛 > sù; #7C9B +粜 > tiào; #7C9C +粝 > lì; #7C9D +粞 > qī; #7C9E +粟 > sù; #7C9F +粠 > hóng; #7CA0 +粡 > tóng; #7CA1 +粢 > zī; #7CA2 +粣 > cè; #7CA3 +粤 > yuè; #7CA4 +粥 > zhōu; #7CA5 +粦 > lìn; #7CA6 +粧 > zhuāng; #7CA7 +粨 > băi; #7CA8 +粪 > fèn; #7CAA +粮 > liáng; #7CAE +粯 > xiàn; #7CAF +粰 > fú; #7CB0 +粱 > liáng; #7CB1 +粲 > càn; #7CB2 +粳 > gēng; #7CB3 +粴 > lĭ; #7CB4 +粵 > yuè; #7CB5 +粶 > lù; #7CB6 +粷 > jú; #7CB7 +粸 > qí; #7CB8 +粹 > cùi; #7CB9 +粺 > bài; #7CBA +粻 > zhāng; #7CBB +粼 > lín; #7CBC +粽 > zòng; #7CBD +精 > jīng; #7CBE +粿 > gŭo; #7CBF +糁 > sān; #7CC1 +糂 > săn; #7CC2 +糃 > táng; #7CC3 +糄 > biān; #7CC4 +糅 > rŏu; #7CC5 +糆 > miàn; #7CC6 +糇 > hóu; #7CC7 +糈 > xŭ; #7CC8 +糉 > zòng; #7CC9 +糊 > hú; #7CCA +糋 > jiàn; #7CCB +糌 > zán; #7CCC +糍 > cí; #7CCD +糎 > lí; #7CCE +糏 > xiè; #7CCF +糐 > fū; #7CD0 +糑 > nì; #7CD1 +糒 > bèi; #7CD2 +糓 > gŭ; #7CD3 +糔 > xĭu; #7CD4 +糕 > gāo; #7CD5 +糖 > táng; #7CD6 +糗 > qĭu; #7CD7 +糙 > cāo; #7CD9 +糚 > zhuāng; #7CDA +糛 > táng; #7CDB +糜 > mí; #7CDC +糝 > sān; #7CDD +糞 > fèn; #7CDE +糟 > zāo; #7CDF +糠 > kāng; #7CE0 +糡 > jiàng; #7CE1 +糢 > mó; #7CE2 +糣 > săn; #7CE3 +糤 > săn; #7CE4 +糥 > nùo; #7CE5 +糦 > xī; #7CE6 +糧 > liáng; #7CE7 +糨 > jiàng; #7CE8 +糩 > kuài; #7CE9 +糪 > bó; #7CEA +糫 > huán; #7CEB +糭 > zòng; #7CED +糮 > xiàn; #7CEE +糯 > nùo; #7CEF +糰 > tuán; #7CF0 +糱 > niè; #7CF1 +糲 > lì; #7CF2 +糳 > zùo; #7CF3 +糴 > dí; #7CF4 +糵 > niè; #7CF5 +糶 > tiào; #7CF6 +糷 > lán; #7CF7 +糸 > mì; #7CF8 +糹 > jiăo' 'sī' 'páng; #7CF9 +糺 > jīu; #7CFA +系 > xì; #7CFB +糼 > gōng; #7CFC +糽 > zhĕng; #7CFD +糾 > jīu; #7CFE +糿 > yòu; #7CFF +紀 > jì; #7D00 +紁 > chà; #7D01 +紂 > zhòu; #7D02 +紃 > xún; #7D03 +約 > yuē; #7D04 +紅 > hóng; #7D05 +紆 > yū; #7D06 +紇 > hé; #7D07 +紈 > wán; #7D08 +紉 > rèn; #7D09 +紊 > wèn; #7D0A +紋 > wén; #7D0B +紌 > qíu; #7D0C +納 > nà; #7D0D +紎 > zī; #7D0E +紏 > tŏu; #7D0F +紐 > nĭu; #7D10 +紑 > fóu; #7D11 +紒 > jiè; #7D12 +紓 > shū; #7D13 +純 > chún; #7D14 +紕 > pí; #7D15 +紖 > yĭn; #7D16 +紗 > shā; #7D17 +紘 > hóng; #7D18 +紙 > zhĭ; #7D19 +級 > jí; #7D1A +紛 > fēn; #7D1B +紜 > yún; #7D1C +紝 > rén; #7D1D +紞 > dăn; #7D1E +紟 > jīn; #7D1F +素 > sù; #7D20 +紡 > făng; #7D21 +索 > sŭo; #7D22 +紣 > cùi; #7D23 +紤 > jĭu; #7D24 +紥 > zhá; #7D25 +紧 > jĭn; #7D27 +紨 > fù; #7D28 +紩 > zhì; #7D29 +紪 > cĭ; #7D2A +紫 > zĭ; #7D2B +紬 > chóu; #7D2C +紭 > hóng; #7D2D +紮 > zhá; #7D2E +累 > lèi; #7D2F +細 > xì; #7D30 +紱 > fú; #7D31 +紲 > xiè; #7D32 +紳 > shēn; #7D33 +紴 > bèi; #7D34 +紵 > zhù; #7D35 +紶 > qŭ; #7D36 +紷 > líng; #7D37 +紸 > zhù; #7D38 +紹 > shào; #7D39 +紺 > gàn; #7D3A +紻 > yāng; #7D3B +紼 > fú; #7D3C +紽 > túo; #7D3D +紾 > zhĕn; #7D3E +紿 > dài; #7D3F +絀 > zhúo; #7D40 +絁 > shī; #7D41 +終 > zhōng; #7D42 +絃 > xián; #7D43 +組 > zŭ; #7D44 +絅 > jĭong; #7D45 +絆 > bàn; #7D46 +絇 > jù; #7D47 +絈 > mò; #7D48 +絉 > shù; #7D49 +絊 > zùi; #7D4A +経 > jīng; #7D4C +絍 > rén; #7D4D +絎 > hèng; #7D4E +絏 > xiè; #7D4F +結 > jié; #7D50 +絑 > zhū; #7D51 +絒 > chóu; #7D52 +絓 > guà; #7D53 +絔 > băi; #7D54 +絕 > jué; #7D55 +絖 > kuàng; #7D56 +絗 > hú; #7D57 +絘 > cì; #7D58 +絙 > gēng; #7D59 +絚 > gēng; #7D5A +絛 > tāo; #7D5B +絜 > xié; #7D5C +絝 > kù; #7D5D +絞 > jiăo; #7D5E +絟 > quān; #7D5F +絠 > găi; #7D60 +絡 > lùo; #7D61 +絢 > xuàn; #7D62 +絣 > bīng; #7D63 +絤 > xiàn; #7D64 +絥 > fú; #7D65 +給 > gĕi; #7D66 +絧 > tóng; #7D67 +絨 > róng; #7D68 +絩 > tiào; #7D69 +絪 > yīn; #7D6A +絫 > lĕi; #7D6B +絬 > xiè; #7D6C +絭 > quàn; #7D6D +絮 > xù; #7D6E +絯 > lǜn; #7D6F +絰 > dié; #7D70 +統 > tŏng; #7D71 +絲 > sī; #7D72 +絳 > jiàng; #7D73 +絴 > xiáng; #7D74 +絵 > hùi; #7D75 +絶 > jué; #7D76 +絷 > zhí; #7D77 +絸 > jiăn; #7D78 +絹 > juàn; #7D79 +絺 > chī; #7D7A +絻 > miăn; #7D7B +絼 > zhĕn; #7D7C +絽 > lǚ; #7D7D +絾 > chéng; #7D7E +絿 > qíu; #7D7F +綀 > shū; #7D80 +綁 > băng; #7D81 +綂 > tŏng; #7D82 +綃 > xiāo; #7D83 +綄 > wàn; #7D84 +綅 > qīn; #7D85 +綆 > gĕng; #7D86 +綇 > xĭu; #7D87 +綈 > tí; #7D88 +綉 > xìu; #7D89 +綊 > xié; #7D8A +綋 > hóng; #7D8B +綌 > xì; #7D8C +綍 > fú; #7D8D +綎 > tīng; #7D8E +綏 > sūi; #7D8F +綐 > dùi; #7D90 +綑 > kŭn; #7D91 +綒 > fū; #7D92 +經 > jīng; #7D93 +綔 > hù; #7D94 +綕 > zhī; #7D95 +綖 > yán; #7D96 +綗 > jĭong; #7D97 +綘 > féng; #7D98 +継 > jì; #7D99 +綜 > zòng; #7D9C +綝 > lín; #7D9D +綞 > dŭo; #7D9E +綟 > lì; #7D9F +綠 > lǜ; #7DA0 +綡 > liáng; #7DA1 +綢 > chóu; #7DA2 +綣 > quăn; #7DA3 +綤 > shào; #7DA4 +綥 > qì; #7DA5 +綦 > qí; #7DA6 +綧 > zhŭn; #7DA7 +綨 > qí; #7DA8 +綩 > wăn; #7DA9 +綪 > qiàn; #7DAA +綫 > xiàn; #7DAB +綬 > shòu; #7DAC +維 > wéi; #7DAD +綮 > qĭ; #7DAE +綯 > táo; #7DAF +綰 > wăn; #7DB0 +綱 > gāng; #7DB1 +網 > wăng; #7DB2 +綳 > bēng; #7DB3 +綴 > zhùi; #7DB4 +綵 > căi; #7DB5 +綶 > gŭo; #7DB6 +綷 > cùi; #7DB7 +綸 > lún; #7DB8 +綹 > lĭu; #7DB9 +綺 > qĭ; #7DBA +綻 > zhàn; #7DBB +綼 > bēi; #7DBC +綽 > chùo; #7DBD +綾 > líng; #7DBE +綿 > mián; #7DBF +緀 > qī; #7DC0 +緁 > qiè; #7DC1 +緂 > tān; #7DC2 +緃 > zōng; #7DC3 +緄 > gŭn; #7DC4 +緅 > zōu; #7DC5 +緆 > yì; #7DC6 +緇 > zī; #7DC7 +緈 > xìng; #7DC8 +緉 > liăng; #7DC9 +緊 > jĭn; #7DCA +緋 > fēi; #7DCB +緌 > rúi; #7DCC +緍 > mín; #7DCD +緎 > yù; #7DCE +総 > zŏng; #7DCF +緐 > fán; #7DD0 +緑 > lǜ; #7DD1 +緒 > xù; #7DD2 +緓 > yingl; #7DD3 +緔 > zhàng; #7DD4 +緖 > xù; #7DD6 +緗 > xiāng; #7DD7 +緘 > jiān; #7DD8 +緙 > kè; #7DD9 +線 > xiàn; #7DDA +緛 > ruăn; #7DDB +緜 > mián; #7DDC +緝 > qì; #7DDD +緞 > duàn; #7DDE +緟 > zhòng; #7DDF +締 > dì; #7DE0 +緡 > mín; #7DE1 +緢 > miáo; #7DE2 +緣 > yuán; #7DE3 +緤 > xiè; #7DE4 +緥 > băo; #7DE5 +緦 > sī; #7DE6 +緧 > qīu; #7DE7 +編 > biān; #7DE8 +緩 > huăn; #7DE9 +緪 > gēng; #7DEA +緫 > cōng; #7DEB +緬 > miăn; #7DEC +緭 > wèi; #7DED +緮 > fù; #7DEE +緯 > wĕi; #7DEF +緰 > yú; #7DF0 +緱 > gōu; #7DF1 +緲 > miăo; #7DF2 +緳 > xié; #7DF3 +練 > liàn; #7DF4 +緵 > zōng; #7DF5 +緶 > biàn; #7DF6 +緷 > yùn; #7DF7 +緸 > yīn; #7DF8 +緹 > tí; #7DF9 +緺 > guā; #7DFA +緻 > zhì; #7DFB +緼 > yūn; #7DFC +緽 > chēng; #7DFD +緾 > chán; #7DFE +緿 > dài; #7DFF +縀 > xiá; #7E00 +縁 > yuán; #7E01 +縂 > zŏng; #7E02 +縃 > xū; #7E03 +縆 > gēng; #7E06 +縈 > yíng; #7E08 +縉 > jìn; #7E09 +縊 > yì; #7E0A +縋 > zhùi; #7E0B +縌 > nì; #7E0C +縍 > bāng; #7E0D +縎 > gŭ; #7E0E +縏 > pán; #7E0F +縐 > zhòu; #7E10 +縑 > jiān; #7E11 +縒 > cŭo; #7E12 +縓 > quăn; #7E13 +縔 > shuăng; #7E14 +縕 > yūn; #7E15 +縖 > xiá; #7E16 +縗 > shuāi; #7E17 +縘 > xī; #7E18 +縙 > róng; #7E19 +縚 > tāo; #7E1A +縛 > fú; #7E1B +縜 > yún; #7E1C +縝 > zhēn; #7E1D +縞 > găo; #7E1E +縟 > rù; #7E1F +縠 > hú; #7E20 +縡 > zăi; #7E21 +縢 > téng; #7E22 +縣 > xiàn; #7E23 +縤 > sù; #7E24 +縥 > zhĕn; #7E25 +縦 > zòng; #7E26 +縧 > tāo; #7E27 +縩 > cài; #7E29 +縪 > bì; #7E2A +縫 > féng; #7E2B +縬 > cù; #7E2C +縭 > lí; #7E2D +縮 > sūo; #7E2E +縯 > yĭn; #7E2F +縰 > xĭ; #7E30 +縱 > zòng; #7E31 +縲 > léi; #7E32 +縳 > zhuàn; #7E33 +縴 > qiān; #7E34 +縵 > màn; #7E35 +縶 > zhí; #7E36 +縷 > lǚ; #7E37 +縸 > mò; #7E38 +縹 > piăo; #7E39 +縺 > lián; #7E3A +縻 > mí; #7E3B +縼 > xuàn; #7E3C +總 > zŏng; #7E3D +績 > jī; #7E3E +縿 > shān; #7E3F +繀 > sùi; #7E40 +繁 > fán; #7E41 +繂 > shuài; #7E42 +繃 > bēng; #7E43 +繄 > yī; #7E44 +繅 > sāo; #7E45 +繆 > móu; #7E46 +繇 > zhòu; #7E47 +繈 > qiăng; #7E48 +繉 > hún; #7E49 +繋 > xì; #7E4B +繍 > xìu; #7E4D +繎 > rán; #7E4E +繏 > xuàn; #7E4F +繐 > hùi; #7E50 +繑 > qiāo; #7E51 +繒 > zēng; #7E52 +繓 > zŭo; #7E53 +織 > zhī; #7E54 +繕 > shàn; #7E55 +繖 > săn; #7E56 +繗 > lín; #7E57 +繘 > yù; #7E58 +繙 > fān; #7E59 +繚 > liáo; #7E5A +繛 > chùo; #7E5B +繜 > zūn; #7E5C +繝 > jiàn; #7E5D +繞 > rào; #7E5E +繟 > chăn; #7E5F +繠 > rŭi; #7E60 +繡 > xìu; #7E61 +繢 > hùi; #7E62 +繣 > huà; #7E63 +繤 > zuăn; #7E64 +繥 > xī; #7E65 +繦 > qiăng; #7E66 +繨 > dá; #7E68 +繩 > shéng; #7E69 +繪 > hùi; #7E6A +繫 > xì; #7E6B +繬 > sè; #7E6C +繭 > jiăn; #7E6D +繮 > jiāng; #7E6E +繯 > huán; #7E6F +繰 > zăo; #7E70 +繱 > cōng; #7E71 +繲 > jiè; #7E72 +繳 > jiăo; #7E73 +繴 > bò; #7E74 +繵 > chán; #7E75 +繶 > yì; #7E76 +繷 > náo; #7E77 +繸 > sùi; #7E78 +繹 > yì; #7E79 +繺 > shăi; #7E7A +繻 > xū; #7E7B +繼 > jì; #7E7C +繽 > bīn; #7E7D +繾 > qiăn; #7E7E +繿 > lán; #7E7F +纀 > pú; #7E80 +纁 > xūn; #7E81 +纂 > zuăn; #7E82 +纃 > qí; #7E83 +纄 > péng; #7E84 +纅 > lì; #7E85 +纆 > mò; #7E86 +纇 > lèi; #7E87 +纈 > xié; #7E88 +纉 > zuăn; #7E89 +纊 > kuàng; #7E8A +纋 > yōu; #7E8B +續 > xù; #7E8C +纍 > léi; #7E8D +纎 > xiān; #7E8E +纏 > chán; #7E8F +纑 > lú; #7E91 +纒 > chán; #7E92 +纓 > yīng; #7E93 +纔 > cái; #7E94 +纕 > xiāng; #7E95 +纖 > xiān; #7E96 +纗 > zūi; #7E97 +纘 > zuăn; #7E98 +纙 > lùo; #7E99 +纚 > xĭ; #7E9A +纛 > dào; #7E9B +纜 > làn; #7E9C +纝 > léi; #7E9D +纞 > liàn; #7E9E +纟 > sī; #7E9F +纠 > jīu; #7EA0 +纡 > yū; #7EA1 +红 > hóng; #7EA2 +纣 > zhòu; #7EA3 +纤 > xiān; #7EA4 +纥 > hé; #7EA5 +约 > yuē; #7EA6 +级 > jí; #7EA7 +纨 > wán; #7EA8 +纩 > kuàng; #7EA9 +纪 > jì; #7EAA +纫 > rèn; #7EAB +纬 > wĕi; #7EAC +纭 > yún; #7EAD +纮 > hóng; #7EAE +纯 > chún; #7EAF +纰 > pí; #7EB0 +纱 > shā; #7EB1 +纲 > gāng; #7EB2 +纳 > nà; #7EB3 +纴 > rén; #7EB4 +纵 > zòng; #7EB5 +纶 > lún; #7EB6 +纷 > fēn; #7EB7 +纸 > zhĭ; #7EB8 +纹 > wén; #7EB9 +纺 > făng; #7EBA +纻 > zhù; #7EBB +纼 > yĭn; #7EBC +纽 > nĭu; #7EBD +纾 > shū; #7EBE +线 > xiàn; #7EBF +绀 > gàn; #7EC0 +绁 > xiè; #7EC1 +绂 > fú; #7EC2 +练 > liàn; #7EC3 +组 > zŭ; #7EC4 +绅 > shēn; #7EC5 +细 > xì; #7EC6 +织 > zhī; #7EC7 +终 > zhōng; #7EC8 +绉 > zhòu; #7EC9 +绊 > bàn; #7ECA +绋 > fú; #7ECB +绌 > zhúo; #7ECC +绍 > shào; #7ECD +绎 > yì; #7ECE +经 > jīng; #7ECF +绐 > dài; #7ED0 +绑 > băng; #7ED1 +绒 > róng; #7ED2 +结 > jié; #7ED3 +绔 > kù; #7ED4 +绕 > rào; #7ED5 +绖 > dié; #7ED6 +绗 > hèng; #7ED7 +绘 > hùi; #7ED8 +给 > gĕi; #7ED9 +绚 > xuàn; #7EDA +绛 > jiàng; #7EDB +络 > lùo; #7EDC +绝 > jué; #7EDD +绞 > jiăo; #7EDE +统 > tŏng; #7EDF +绠 > gĕng; #7EE0 +绡 > xiāo; #7EE1 +绢 > juàn; #7EE2 +绣 > xìu; #7EE3 +绤 > xì; #7EE4 +绥 > sūi; #7EE5 +绦 > tāo; #7EE6 +继 > jì; #7EE7 +绨 > tí; #7EE8 +绩 > jī; #7EE9 +绪 > xù; #7EEA +绫 > líng; #7EEB +续 > xù; #7EED +绮 > qĭ; #7EEE +绯 > fēi; #7EEF +绰 > chùo; #7EF0 +绱 > zhăng; #7EF1 +绲 > gŭn; #7EF2 +绳 > shéng; #7EF3 +维 > wéi; #7EF4 +绵 > mián; #7EF5 +绶 > shòu; #7EF6 +绷 > bēng; #7EF7 +绸 > chóu; #7EF8 +绹 > táo; #7EF9 +绺 > lĭu; #7EFA +绻 > quăn; #7EFB +综 > zòng; #7EFC +绽 > zhàn; #7EFD +绾 > wăn; #7EFE +绿 > lǜ; #7EFF +缀 > zhùi; #7F00 +缁 > zī; #7F01 +缂 > kè; #7F02 +缃 > xiāng; #7F03 +缄 > jiān; #7F04 +缅 > miăn; #7F05 +缆 > làn; #7F06 +缇 > tí; #7F07 +缈 > miăo; #7F08 +缉 > qì; #7F09 +缊 > yūn; #7F0A +缋 > hùi; #7F0B +缌 > sī; #7F0C +缍 > dŭo; #7F0D +缎 > duàn; #7F0E +缏 > biàn; #7F0F +缐 > xiàn; #7F10 +缑 > gōu; #7F11 +缒 > zhùi; #7F12 +缓 > huăn; #7F13 +缔 > dì; #7F14 +缕 > lǚ; #7F15 +编 > biān; #7F16 +缗 > mín; #7F17 +缘 > yuán; #7F18 +缙 > jìn; #7F19 +缚 > fú; #7F1A +缛 > rù; #7F1B +缜 > zhēn; #7F1C +缝 > féng; #7F1D +缞 > shuāi; #7F1E +缟 > găo; #7F1F +缠 > chán; #7F20 +缡 > lí; #7F21 +缢 > yì; #7F22 +缣 > jiān; #7F23 +缤 > bīn; #7F24 +缥 > piăo; #7F25 +缦 > màn; #7F26 +缧 > léi; #7F27 +缨 > yīng; #7F28 +缩 > sūo; #7F29 +缪 > móu; #7F2A +缫 > sāo; #7F2B +缬 > xié; #7F2C +缭 > liáo; #7F2D +缮 > shàn; #7F2E +缯 > zēng; #7F2F +缰 > jiāng; #7F30 +缱 > qiăn; #7F31 +缲 > zăo; #7F32 +缳 > huán; #7F33 +缴 > jiăo; #7F34 +缵 > zuăn; #7F35 +缶 > fŏu; #7F36 +缷 > xiè; #7F37 +缸 > gāng; #7F38 +缹 > fŏu; #7F39 +缺 > quē; #7F3A +缻 > fŏu; #7F3B +缽 > bō; #7F3D +缾 > píng; #7F3E +缿 > hòu; #7F3F +罁 > gāng; #7F41 +罂 > yīng; #7F42 +罃 > yīng; #7F43 +罄 > qìng; #7F44 +罅 > xià; #7F45 +罆 > guàn; #7F46 +罇 > zūn; #7F47 +罈 > tán; #7F48 +罊 > qì; #7F4A +罋 > wèng; #7F4B +罌 > yīng; #7F4C +罍 > léi; #7F4D +罎 > tán; #7F4E +罏 > lú; #7F4F +罐 > guàn; #7F50 +网 > wăng; #7F51 +罒 > wăng; #7F52 +罓 > gāng; #7F53 +罔 > wăng; #7F54 +罕 > hăn; #7F55 +罗 > lūo; #7F57 +罘 > fú; #7F58 +罙 > mí; #7F59 +罚 > fá; #7F5A +罛 > gū; #7F5B +罜 > zhŭ; #7F5C +罝 > jū; #7F5D +罞 > máo; #7F5E +罟 > gŭ; #7F5F +罠 > mín; #7F60 +罡 > gāng; #7F61 +罢 > bà; #7F62 +罣 > guà; #7F63 +罤 > tí; #7F64 +罥 > juàn; #7F65 +罦 > fū; #7F66 +罧 > lín; #7F67 +罨 > yăn; #7F68 +罩 > zhào; #7F69 +罪 > zùi; #7F6A +罫 > guà; #7F6B +罬 > zhúo; #7F6C +罭 > yù; #7F6D +置 > zhì; #7F6E +罯 > ăn; #7F6F +罰 > fá; #7F70 +罱 > năn; #7F71 +署 > shŭ; #7F72 +罳 > sī; #7F73 +罴 > pí; #7F74 +罵 > mà; #7F75 +罶 > lĭu; #7F76 +罷 > bà; #7F77 +罸 > fá; #7F78 +罹 > lí; #7F79 +罺 > chāo; #7F7A +罻 > wèi; #7F7B +罼 > bì; #7F7C +罽 > jì; #7F7D +罾 > zēng; #7F7E +罿 > tóng; #7F7F +羀 > lĭu; #7F80 +羁 > jī; #7F81 +羂 > juàn; #7F82 +羃 > mì; #7F83 +羄 > zhào; #7F84 +羅 > lúo; #7F85 +羆 > pí; #7F86 +羇 > jī; #7F87 +羈 > jī; #7F88 +羉 > luán; #7F89 +羊 > yáng; #7F8A +羋 > miē; #7F8B +羌 > qiāng; #7F8C +羍 > tà; #7F8D +美 > mĕi; #7F8E +羏 > yáng; #7F8F +羐 > yŏu; #7F90 +羑 > yŏu; #7F91 +羒 > fén; #7F92 +羓 > bā; #7F93 +羔 > gāo; #7F94 +羕 > yàng; #7F95 +羖 > gŭ; #7F96 +羗 > qiāng; #7F97 +羘 > zāng; #7F98 +羙 > gāo; #7F99 +羚 > líng; #7F9A +羛 > yì; #7F9B +羜 > zhù; #7F9C +羝 > dī; #7F9D +羞 > xīu; #7F9E +羟 > qiān; #7F9F +羠 > yí; #7FA0 +羡 > xiàn; #7FA1 +羢 > róng; #7FA2 +羣 > qún; #7FA3 +群 > qún; #7FA4 +羥 > qiān; #7FA5 +羦 > huán; #7FA6 +羧 > zūi; #7FA7 +羨 > xiàn; #7FA8 +義 > yì; #7FA9 +羫 > qiāng; #7FAB +羬 > xián; #7FAC +羭 > yú; #7FAD +羮 > gēng; #7FAE +羯 > jié; #7FAF +羰 > tāng; #7FB0 +羱 > yuán; #7FB1 +羲 > xī; #7FB2 +羳 > fán; #7FB3 +羴 > shān; #7FB4 +羵 > fĕn; #7FB5 +羶 > shān; #7FB6 +羷 > liăn; #7FB7 +羸 > léi; #7FB8 +羹 > gēng; #7FB9 +羺 > nóu; #7FBA +羻 > qiàng; #7FBB +羼 > chàn; #7FBC +羽 > yŭ; #7FBD +羾 > gòng; #7FBE +羿 > yì; #7FBF +翀 > chóng; #7FC0 +翁 > wēng; #7FC1 +翂 > fēn; #7FC2 +翃 > hóng; #7FC3 +翄 > chì; #7FC4 +翅 > chì; #7FC5 +翆 > cùi; #7FC6 +翇 > fú; #7FC7 +翈 > xiá; #7FC8 +翉 > pĕn; #7FC9 +翊 > yì; #7FCA +翋 > lā; #7FCB +翌 > yì; #7FCC +翍 > pī; #7FCD +翎 > líng; #7FCE +翏 > lìu; #7FCF +翐 > zhì; #7FD0 +翑 > qú; #7FD1 +習 > xí; #7FD2 +翓 > xié; #7FD3 +翔 > xiáng; #7FD4 +翕 > xì; #7FD5 +翖 > xì; #7FD6 +翗 > qí; #7FD7 +翘 > qiáo; #7FD8 +翙 > hùi; #7FD9 +翚 > hūi; #7FDA +翛 > xiāo; #7FDB +翜 > sè; #7FDC +翝 > hóng; #7FDD +翞 > jiāng; #7FDE +翟 > dí; #7FDF +翠 > cùi; #7FE0 +翡 > fĕi; #7FE1 +翢 > tāo; #7FE2 +翣 > shà; #7FE3 +翤 > chì; #7FE4 +翥 > zhù; #7FE5 +翦 > jiăn; #7FE6 +翧 > xuān; #7FE7 +翨 > shì; #7FE8 +翩 > piān; #7FE9 +翪 > zōng; #7FEA +翫 > wàn; #7FEB +翬 > hūi; #7FEC +翭 > hóu; #7FED +翮 > hé; #7FEE +翯 > hè; #7FEF +翰 > hàn; #7FF0 +翱 > áo; #7FF1 +翲 > piāo; #7FF2 +翳 > yì; #7FF3 +翴 > lián; #7FF4 +翵 > qú; #7FF5 +翷 > lín; #7FF7 +翸 > pĕn; #7FF8 +翹 > qiáo; #7FF9 +翺 > áo; #7FFA +翻 > fān; #7FFB +翼 > yì; #7FFC +翽 > hùi; #7FFD +翾 > xuān; #7FFE +翿 > dào; #7FFF +耀 > yào; #8000 +老 > lăo; #8001 +考 > kăo; #8003 +耄 > mào; #8004 +者 > zhĕ; #8005 +耆 > qí; #8006 +耇 > gŏu; #8007 +耈 > gŏu; #8008 +耉 > gŏu; #8009 +耊 > diè; #800A +耋 > diè; #800B +而 > ér; #800C +耍 > shuă; #800D +耎 > ruăn; #800E +耏 > ér; #800F +耐 > nài; #8010 +耑 > zhuān; #8011 +耒 > lĕi; #8012 +耓 > tīng; #8013 +耔 > zĭ; #8014 +耕 > gēng; #8015 +耖 > chào; #8016 +耗 > hào; #8017 +耘 > yún; #8018 +耙 > pá; #8019 +耚 > pī; #801A +耛 > chí; #801B +耜 > sì; #801C +耝 > chú; #801D +耞 > jiā; #801E +耟 > jù; #801F +耠 > hé; #8020 +耡 > chú; #8021 +耢 > lào; #8022 +耣 > lŭn; #8023 +耤 > jí; #8024 +耥 > tăng; #8025 +耦 > ŏu; #8026 +耧 > lóu; #8027 +耨 > nòu; #8028 +耩 > gōu; #8029 +耪 > păng; #802A +耫 > zé; #802B +耬 > lóu; #802C +耭 > jī; #802D +耮 > lào; #802E +耯 > hùo; #802F +耰 > yōu; #8030 +耱 > mò; #8031 +耲 > huái; #8032 +耳 > ĕr; #8033 +耴 > zhé; #8034 +耵 > tīng; #8035 +耶 > yé; #8036 +耷 > dā; #8037 +耸 > sŏng; #8038 +耹 > qín; #8039 +耺 > yún; #803A +耻 > chĭ; #803B +耼 > dān; #803C +耽 > dān; #803D +耾 > hóng; #803E +耿 > gĕng; #803F +聀 > zhí; #8040 +聂 > niè; #8042 +聃 > dān; #8043 +聄 > zhĕn; #8044 +聅 > chè; #8045 +聆 > líng; #8046 +聇 > zhēng; #8047 +聈 > yŏu; #8048 +聉 > wā; #8049 +聊 > liáo; #804A +聋 > lóng; #804B +职 > zhí; #804C +聍 > níng; #804D +聎 > tiāo; #804E +聏 > ér; #804F +聐 > yà; #8050 +聑 > dié; #8051 +聒 > guā; #8052 +联 > lián; #8054 +聕 > hào; #8055 +聖 > shèng; #8056 +聗 > liè; #8057 +聘 > pìn; #8058 +聙 > jīng; #8059 +聚 > jù; #805A +聛 > bì; #805B +聜 > dĭ; #805C +聝 > gúo; #805D +聞 > wén; #805E +聟 > xù; #805F +聠 > píng; #8060 +聡 > cōng; #8061 +聤 > tíng; #8064 +聥 > yŭ; #8065 +聦 > cōng; #8066 +聧 > kúi; #8067 +聩 > kùi; #8069 +聪 > cōng; #806A +聫 > lián; #806B +聬 > wĕng; #806C +聭 > kùi; #806D +聮 > lián; #806E +聯 > lián; #806F +聰 > cōng; #8070 +聱 > áo; #8071 +聲 > shēng; #8072 +聳 > sŏng; #8073 +聴 > tīng; #8074 +聵 > kùi; #8075 +聶 > niè; #8076 +職 > zhí; #8077 +聸 > dān; #8078 +聹 > níng; #8079 +聺 > qie; #807A +聻 > jī; #807B +聼 > tīng; #807C +聽 > tīng; #807D +聾 > lóng; #807E +聿 > yù; #807F +肀 > yù; #8080 +肁 > zhào; #8081 +肂 > sì; #8082 +肃 > sù; #8083 +肄 > yì; #8084 +肅 > sù; #8085 +肆 > sì; #8086 +肇 > zhào; #8087 +肈 > zhào; #8088 +肉 > ròu; #8089 +肊 > yì; #808A +肋 > lè; #808B +肌 > jī; #808C +肍 > qíu; #808D +肎 > kĕn; #808E +肏 > cào; #808F +肐 > gē; #8090 +肑 > dì; #8091 +肒 > huán; #8092 +肓 > huāng; #8093 +肔 > yĭ; #8094 +肕 > rèn; #8095 +肖 > xiào; #8096 +肗 > rŭ; #8097 +肘 > zhŏu; #8098 +肙 > yuān; #8099 +肚 > dù; #809A +肛 > gāng; #809B +肜 > róng; #809C +肝 > gān; #809D +肞 > chā; #809E +肟 > wò; #809F +肠 > cháng; #80A0 +股 > gŭ; #80A1 +肢 > zhī; #80A2 +肣 > hán; #80A3 +肤 > fū; #80A4 +肥 > féi; #80A5 +肦 > fén; #80A6 +肧 > pēi; #80A7 +肨 > pàng; #80A8 +肩 > jiān; #80A9 +肪 > fáng; #80AA +肫 > zhūn; #80AB +肬 > yóu; #80AC +肭 > nà; #80AD +肮 > háng; #80AE +肯 > kĕn; #80AF +肰 > rán; #80B0 +肱 > gōng; #80B1 +育 > yù; #80B2 +肳 > wĕn; #80B3 +肴 > yáo; #80B4 +肵 > jìn; #80B5 +肶 > pí; #80B6 +肷 > qiān; #80B7 +肸 > xì; #80B8 +肹 > xī; #80B9 +肺 > fèi; #80BA +肻 > kĕn; #80BB +肼 > jĭng; #80BC +肽 > tài; #80BD +肾 > shèn; #80BE +肿 > zhŏng; #80BF +胀 > zhàng; #80C0 +胁 > xié; #80C1 +胂 > shēn; #80C2 +胃 > wèi; #80C3 +胄 > zhòu; #80C4 +胅 > dié; #80C5 +胆 > dăn; #80C6 +胇 > fèi; #80C7 +胈 > bá; #80C8 +胉 > bó; #80C9 +胊 > qú; #80CA +胋 > tián; #80CB +背 > bèi; #80CC +胍 > guā; #80CD +胎 > tāi; #80CE +胏 > zĭ; #80CF +胐 > kū; #80D0 +胑 > zhī; #80D1 +胒 > nì; #80D2 +胓 > píng; #80D3 +胔 > zì; #80D4 +胕 > fù; #80D5 +胖 > pàng; #80D6 +胗 > zhēn; #80D7 +胘 > xián; #80D8 +胙 > zùo; #80D9 +胚 > pēi; #80DA +胛 > jiă; #80DB +胜 > shèng; #80DC +胝 > zhī; #80DD +胞 > bāo; #80DE +胟 > mŭ; #80DF +胠 > qū; #80E0 +胡 > hú; #80E1 +胢 > kē; #80E2 +胣 > yĭ; #80E3 +胤 > yìn; #80E4 +胥 > xū; #80E5 +胦 > yāng; #80E6 +胧 > lóng; #80E7 +胨 > dòng; #80E8 +胩 > kă; #80E9 +胪 > lú; #80EA +胫 > jìng; #80EB +胬 > nŭ; #80EC +胭 > yān; #80ED +胮 > páng; #80EE +胯 > kuà; #80EF +胰 > yí; #80F0 +胱 > guāng; #80F1 +胲 > gāi; #80F2 +胳 > gē; #80F3 +胴 > dòng; #80F4 +胵 > zhì; #80F5 +胶 > xiáo; #80F6 +胷 > xīong; #80F7 +胸 > xīong; #80F8 +胹 > ér; #80F9 +胺 > è; #80FA +胻 > xíng; #80FB +胼 > pián; #80FC +能 > néng; #80FD +胾 > zì; #80FE +胿 > gui; #80FF +脀 > chéng; #8100 +脁 > tiào; #8101 +脂 > zhī; #8102 +脃 > cùi; #8103 +脄 > méi; #8104 +脅 > xié; #8105 +脆 > cùi; #8106 +脇 > xié; #8107 +脈 > mò; #8108 +脉 > mài; #8109 +脊 > jí; #810A +脍 > kuài; #810D +脎 > sà; #810E +脏 > zāng; #810F +脐 > qí; #8110 +脑 > năo; #8111 +脒 > mĭ; #8112 +脓 > nóng; #8113 +脔 > luán; #8114 +脕 > wăn; #8115 +脖 > bó; #8116 +脗 > wĕn; #8117 +脘 > guăn; #8118 +脙 > qíu; #8119 +脚 > jiăo; #811A +脛 > jìng; #811B +脜 > róu; #811C +脝 > hēng; #811D +脞 > cŭo; #811E +脟 > liè; #811F +脠 > shān; #8120 +脡 > tĭng; #8121 +脢 > méi; #8122 +脣 > chún; #8123 +脤 > shèn; #8124 +脥 > xié; #8125 +脦 > de; #8126 +脧 > zūi; #8127 +脨 > cù; #8128 +脩 > xīu; #8129 +脪 > xìn; #812A +脫 > tūo; #812B +脬 > pāo; #812C +脭 > chéng; #812D +脮 > nĕi; #812E +脯 > fŭ; #812F +脰 > dòu; #8130 +脱 > tūo; #8131 +脲 > niào; #8132 +脴 > pĭ; #8134 +脵 > gŭ; #8135 +脶 > guā; #8136 +脷 > lì; #8137 +脸 > liăn; #8138 +脹 > zhàng; #8139 +脺 > cùi; #813A +脻 > jié; #813B +脼 > liăng; #813C +脽 > zhōu; #813D +脾 > pí; #813E +脿 > biāo; #813F +腀 > lún; #8140 +腁 > pián; #8141 +腂 > gùo; #8142 +腃 > kùi; #8143 +腄 > chúi; #8144 +腅 > dàn; #8145 +腆 > tiăn; #8146 +腇 > nĕi; #8147 +腈 > jīng; #8148 +腉 > jiē; #8149 +腊 > là; #814A +腋 > yì; #814B +腌 > ān; #814C +腍 > rĕn; #814D +腎 > shèn; #814E +腏 > chùo; #814F +腐 > fŭ; #8150 +腑 > fŭ; #8151 +腒 > jū; #8152 +腓 > féi; #8153 +腔 > qiāng; #8154 +腕 > wàn; #8155 +腖 > dòng; #8156 +腗 > pí; #8157 +腘 > gúo; #8158 +腙 > zōng; #8159 +腚 > dìng; #815A +腛 > wū; #815B +腜 > méi; #815C +腝 > ruăn; #815D +腞 > zhuàn; #815E +腟 > zhì; #815F +腠 > còu; #8160 +腡 > guā; #8161 +腢 > ŏu; #8162 +腣 > dì; #8163 +腤 > ān; #8164 +腥 > xīng; #8165 +腦 > năo; #8166 +腧 > yú; #8167 +腨 > chuăn; #8168 +腩 > năn; #8169 +腪 > yùn; #816A +腫 > zhŏng; #816B +腬 > róu; #816C +腭 > è; #816D +腮 > sāi; #816E +腯 > tú; #816F +腰 > yāo; #8170 +腱 > jiàn; #8171 +腲 > wĕi; #8172 +腳 > jiăo; #8173 +腴 > yú; #8174 +腵 > jiā; #8175 +腶 > duàn; #8176 +腷 > bì; #8177 +腸 > cháng; #8178 +腹 > fù; #8179 +腺 > xiàn; #817A +腻 > nì; #817B +腼 > miăn; #817C +腽 > wà; #817D +腾 > téng; #817E +腿 > tŭi; #817F +膀 > băng; #8180 +膁 > qiān; #8181 +膂 > lǚ; #8182 +膃 > wà; #8183 +膄 > sòu; #8184 +膅 > táng; #8185 +膆 > sù; #8186 +膇 > zhùi; #8187 +膈 > gé; #8188 +膉 > yì; #8189 +膊 > bó; #818A +膋 > liáo; #818B +膌 > jí; #818C +膍 > pí; #818D +膎 > xié; #818E +膏 > gāo; #818F +膐 > lǚ; #8190 +膑 > bìn; #8191 +膒 > ou; #8192 +膓 > cháng; #8193 +膔 > lù; #8194 +膕 > gúo; #8195 +膖 > pāng; #8196 +膗 > chuái; #8197 +膘 > piăo; #8198 +膙 > jiăng; #8199 +膚 > fū; #819A +膛 > táng; #819B +膜 > mò; #819C +膝 > xī; #819D +膞 > zhuān; #819E +膟 > lǜ; #819F +膠 > jiāo; #81A0 +膡 > yìng; #81A1 +膢 > lǘ; #81A2 +膣 > zhì; #81A3 +膥 > chūn; #81A5 +膦 > liăn; #81A6 +膧 > tóng; #81A7 +膨 > péng; #81A8 +膩 > nì; #81A9 +膪 > zhà; #81AA +膫 > liáo; #81AB +膬 > cùi; #81AC +膭 > gūi; #81AD +膮 > xiāo; #81AE +膯 > tēng; #81AF +膰 > fán; #81B0 +膱 > zhí; #81B1 +膲 > jiāo; #81B2 +膳 > shàn; #81B3 +膴 > wú; #81B4 +膵 > cùi; #81B5 +膶 > rùn; #81B6 +膷 > xiāng; #81B7 +膸 > sŭi; #81B8 +膹 > fèn; #81B9 +膺 > yīng; #81BA +膻 > tăn; #81BB +膼 > zhuā; #81BC +膽 > dăn; #81BD +膾 > kuài; #81BE +膿 > nóng; #81BF +臀 > tún; #81C0 +臁 > lián; #81C1 +臂 > bì; #81C2 +臃 > yŏng; #81C3 +臄 > jué; #81C4 +臅 > chù; #81C5 +臆 > yì; #81C6 +臇 > juăn; #81C7 +臈 > là; #81C8 +臉 > liăn; #81C9 +臊 > sāo; #81CA +臋 > tún; #81CB +臌 > gŭ; #81CC +臍 > qí; #81CD +臎 > cùi; #81CE +臏 > bìn; #81CF +臐 > xūn; #81D0 +臑 > rú; #81D1 +臒 > hùo; #81D2 +臓 > zàng; #81D3 +臔 > xiàn; #81D4 +臕 > biāo; #81D5 +臖 > xìng; #81D6 +臗 > kuān; #81D7 +臘 > là; #81D8 +臙 > yān; #81D9 +臚 > lú; #81DA +臛 > hùo; #81DB +臜 > zāng; #81DC +臝 > lŭo; #81DD +臞 > qú; #81DE +臟 > zàng; #81DF +臠 > luán; #81E0 +臡 > ní; #81E1 +臢 > zāng; #81E2 +臣 > chén; #81E3 +臤 > qiān; #81E4 +臥 > wò; #81E5 +臦 > guàng; #81E6 +臧 > záng; #81E7 +臨 > lín; #81E8 +臩 > guàng; #81E9 +自 > zì; #81EA +臫 > jiăo; #81EB +臬 > niè; #81EC +臭 > chòu; #81ED +臮 > jì; #81EE +臯 > gāo; #81EF +臰 > chòu; #81F0 +臱 > mián; #81F1 +臲 > niè; #81F2 +至 > zhì; #81F3 +致 > zhì; #81F4 +臵 > gé; #81F5 +臶 > jiàn; #81F6 +臷 > dié; #81F7 +臸 > zhì; #81F8 +臹 > xīu; #81F9 +臺 > tái; #81FA +臻 > zhēn; #81FB +臼 > jìu; #81FC +臽 > xiàn; #81FD +臾 > yú; #81FE +臿 > chā; #81FF +舀 > yăo; #8200 +舁 > yú; #8201 +舂 > chōng; #8202 +舃 > xì; #8203 +舄 > xì; #8204 +舅 > jìu; #8205 +舆 > yú; #8206 +與 > yŭ; #8207 +興 > xīng; #8208 +舉 > jŭ; #8209 +舊 > jìu; #820A +舋 > xìn; #820B +舌 > shé; #820C +舍 > shè; #820D +舏 > jĭu; #820F +舐 > shì; #8210 +舑 > tān; #8211 +舒 > shū; #8212 +舓 > shì; #8213 +舔 > tiăn; #8214 +舕 > dàn; #8215 +舖 > pù; #8216 +舗 > pù; #8217 +舘 > guăn; #8218 +舙 > huà; #8219 +舚 > tān; #821A +舛 > chuăn; #821B +舜 > shùn; #821C +舝 > xiá; #821D +舞 > wŭ; #821E +舟 > zhōu; #821F +舠 > dāo; #8220 +舡 > gāng; #8221 +舢 > shān; #8222 +舣 > yĭ; #8223 +舥 > pā; #8225 +舦 > tài; #8226 +舧 > fán; #8227 +舨 > băn; #8228 +舩 > chuán; #8229 +航 > háng; #822A +舫 > făng; #822B +般 > bān; #822C +舭 > què; #822D +舯 > zhōng; #822F +舰 > jiàn; #8230 +舱 > cāng; #8231 +舲 > líng; #8232 +舳 > zhú; #8233 +舴 > zé; #8234 +舵 > dùo; #8235 +舶 > bó; #8236 +舷 > xián; #8237 +舸 > gĕ; #8238 +船 > chuán; #8239 +舺 > jiá; #823A +舻 > lŭ; #823B +舼 > hóng; #823C +舽 > páng; #823D +舾 > xī; #823E +艀 > fú; #8240 +艁 > zào; #8241 +艂 > féng; #8242 +艃 > lí; #8243 +艄 > shāo; #8244 +艅 > yú; #8245 +艆 > láng; #8246 +艇 > tĭng; #8247 +艉 > wĕi; #8249 +艊 > bó; #824A +艋 > mĕng; #824B +艌 > niàn; #824C +艍 > jū; #824D +艎 > huáng; #824E +艏 > shŏu; #824F +艐 > zōng; #8250 +艑 > biàn; #8251 +艒 > mào; #8252 +艓 > dié; #8253 +艕 > bàng; #8255 +艖 > chā; #8256 +艗 > yì; #8257 +艘 > sāo; #8258 +艙 > cāng; #8259 +艚 > cáo; #825A +艛 > lóu; #825B +艜 > dài; #825C +艞 > yào; #825E +艟 > tóng; #825F +艡 > dāng; #8261 +艢 > tán; #8262 +艣 > lŭ; #8263 +艤 > yĭ; #8264 +艥 > jiè; #8265 +艦 > jiàn; #8266 +艧 > hùo; #8267 +艨 > méng; #8268 +艩 > qí; #8269 +艪 > lŭ; #826A +艫 > lú; #826B +艬 > chán; #826C +艭 > shuāng; #826D +艮 > gèn; #826E +良 > liáng; #826F +艰 > jiān; #8270 +艱 > jiān; #8271 +色 > sè; #8272 +艳 > yàn; #8273 +艴 > fú; #8274 +艵 > píng; #8275 +艶 > yàn; #8276 +艷 > yàn; #8277 +艸 > căo; #8278 +艹 > căo' 'zì' 'tóu; #8279 +艺 > yì; #827A +艻 > lè; #827B +艼 > tīng; #827C +艽 > qíu; #827D +艾 > ài; #827E +艿 > năi; #827F +芀 > tiáo; #8280 +芁 > jiāo; #8281 +节 > jié; #8282 +芃 > péng; #8283 +芄 > wán; #8284 +芅 > yì; #8285 +芆 > chāi; #8286 +芇 > mián; #8287 +芈 > miē; #8288 +芉 > gān; #8289 +芊 > qiān; #828A +芋 > yù; #828B +芌 > yù; #828C +芍 > shùo; #828D +芎 > qīong; #828E +芏 > tŭ; #828F +芐 > xià; #8290 +芑 > qĭ; #8291 +芒 > máng; #8292 +芓 > zĭ; #8293 +芔 > hŭi; #8294 +芕 > sūi; #8295 +芖 > zhì; #8296 +芗 > xiāng; #8297 +芘 > bī; #8298 +芙 > fú; #8299 +芚 > tún; #829A +芛 > wĕi; #829B +芜 > wú; #829C +芝 > zhī; #829D +芞 > qĭ; #829E +芟 > shān; #829F +芠 > wén; #82A0 +芡 > qiàn; #82A1 +芢 > rén; #82A2 +芣 > fŏu; #82A3 +芤 > kōu; #82A4 +芥 > jiè; #82A5 +芦 > lú; #82A6 +芧 > xù; #82A7 +芨 > jí; #82A8 +芩 > qín; #82A9 +芪 > qí; #82AA +芫 > yuán; #82AB +芬 > fēn; #82AC +芭 > bā; #82AD +芮 > rùi; #82AE +芯 > xīn; #82AF +芰 > jì; #82B0 +花 > huā; #82B1 +芲 > huā; #82B2 +芳 > fāng; #82B3 +芴 > wù; #82B4 +芵 > jué; #82B5 +芶 > gōu; #82B6 +芷 > zhĭ; #82B7 +芸 > yún; #82B8 +芹 > qín; #82B9 +芺 > ăo; #82BA +芻 > chú; #82BB +芼 > mào; #82BC +芽 > yá; #82BD +芾 > fèi; #82BE +芿 > rèng; #82BF +苀 > háng; #82C0 +苁 > cōng; #82C1 +苂 > yín; #82C2 +苃 > yŏu; #82C3 +苄 > biàn; #82C4 +苅 > yì; #82C5 +苇 > wĕi; #82C7 +苈 > lì; #82C8 +苉 > pĭ; #82C9 +苊 > è; #82CA +苋 > xiàn; #82CB +苌 > cháng; #82CC +苍 > cāng; #82CD +苎 > méng; #82CE +苏 > sū; #82CF +苐 > yí; #82D0 +苑 > yuàn; #82D1 +苒 > răn; #82D2 +苓 > líng; #82D3 +苔 > tái; #82D4 +苕 > tiáo; #82D5 +苖 > dĭ; #82D6 +苗 > miáo; #82D7 +苘 > qĭong; #82D8 +苙 > lì; #82D9 +苚 > yòng; #82DA +苛 > kē; #82DB +苜 > mù; #82DC +苝 > pèi; #82DD +苞 > bāo; #82DE +苟 > gŏu; #82DF +苠 > mín; #82E0 +苡 > yĭ; #82E1 +苢 > yĭ; #82E2 +苣 > jù; #82E3 +苤 > pĭ; #82E4 +若 > rùo; #82E5 +苦 > kŭ; #82E6 +苧 > zhù; #82E7 +苨 > nĭ; #82E8 +苩 > bó; #82E9 +苪 > bĭng; #82EA +苫 > shān; #82EB +苬 > qíu; #82EC +苭 > yăo; #82ED +苮 > xiān; #82EE +苯 > bĕn; #82EF +苰 > hóng; #82F0 +英 > yīng; #82F1 +苲 > zhă; #82F2 +苳 > dōng; #82F3 +苴 > jū; #82F4 +苵 > dié; #82F5 +苶 > nié; #82F6 +苷 > gān; #82F7 +苸 > hū; #82F8 +苹 > píng; #82F9 +苺 > méi; #82FA +苻 > fú; #82FB +苼 > shēng; #82FC +苽 > gū; #82FD +苾 > bì; #82FE +苿 > wèi; #82FF +茀 > fú; #8300 +茁 > zhúo; #8301 +茂 > mào; #8302 +范 > fàn; #8303 +茄 > qié; #8304 +茅 > máo; #8305 +茆 > măo; #8306 +茇 > bá; #8307 +茈 > zĭ; #8308 +茉 > mò; #8309 +茊 > zī; #830A +茋 > dĭ; #830B +茌 > chí; #830C +茍 > jì; #830D +茎 > jīng; #830E +茏 > lóng; #830F +茑 > niăo; #8311 +茓 > xué; #8313 +茔 > yíng; #8314 +茕 > qíong; #8315 +茖 > gé; #8316 +茗 > mĭng; #8317 +茘 > lì; #8318 +茙 > róng; #8319 +茚 > yìn; #831A +茛 > gèn; #831B +茜 > qiàn; #831C +茝 > chăi; #831D +茞 > chén; #831E +茟 > yù; #831F +茠 > xīu; #8320 +茡 > zì; #8321 +茢 > liè; #8322 +茣 > wú; #8323 +茤 > jì; #8324 +茥 > kūi; #8325 +茦 > cè; #8326 +茧 > chóng; #8327 +茨 > cí; #8328 +茩 > gŏu; #8329 +茪 > guāng; #832A +茫 > máng; #832B +茬 > chí; #832C +茭 > jiāo; #832D +茮 > jiāo; #832E +茯 > fú; #832F +茰 > yú; #8330 +茱 > zhū; #8331 +茲 > zī; #8332 +茳 > jiāng; #8333 +茴 > húi; #8334 +茵 > yīn; #8335 +茶 > chá; #8336 +茷 > fá; #8337 +茸 > róng; #8338 +茹 > rú; #8339 +茺 > chōng; #833A +茻 > măng; #833B +茼 > tóng; #833C +茽 > zhòng; #833D +茿 > zhú; #833F +荀 > xún; #8340 +荁 > huán; #8341 +荂 > kuā; #8342 +荃 > quán; #8343 +荄 > gāi; #8344 +荅 > dā; #8345 +荆 > jīng; #8346 +荇 > xìng; #8347 +荈 > quàn; #8348 +草 > căo; #8349 +荊 > jīng; #834A +荋 > ér; #834B +荌 > àn; #834C +荍 > shōu; #834D +荎 > chí; #834E +荏 > rĕn; #834F +荐 > jiàn; #8350 +荑 > tí; #8351 +荒 > huāng; #8352 +荓 > píng; #8353 +荔 > lì; #8354 +荕 > jīn; #8355 +荖 > lăo; #8356 +荗 > shù; #8357 +荘 > zhuāng; #8358 +荙 > dá; #8359 +荚 > jiá; #835A +荛 > ráo; #835B +荜 > bì; #835C +荝 > zé; #835D +荞 > qiáo; #835E +荟 > hùi; #835F +荠 > qí; #8360 +荡 > dàng; #8361 +荣 > róng; #8363 +荤 > hūn; #8364 +荥 > yíng; #8365 +荦 > lùo; #8366 +荧 > yíng; #8367 +荨 > xún; #8368 +荩 > jìn; #8369 +荪 > sūn; #836A +荫 > yìn; #836B +荬 > măi; #836C +荭 > hóng; #836D +荮 > zhòu; #836E +药 > yào; #836F +荰 > dù; #8370 +荱 > wĕi; #8371 +荲 > chù; #8372 +荳 > dòu; #8373 +荴 > fū; #8374 +荵 > rĕn; #8375 +荶 > yín; #8376 +荷 > hé; #8377 +荸 > bí; #8378 +荹 > bù; #8379 +荺 > yún; #837A +荻 > dí; #837B +荼 > tú; #837C +荽 > sūi; #837D +荾 > sūi; #837E +荿 > chéng; #837F +莀 > chén; #8380 +莁 > wú; #8381 +莂 > bié; #8382 +莃 > xī; #8383 +莄 > gĕng; #8384 +莅 > lì; #8385 +莆 > fŭ; #8386 +莇 > zhù; #8387 +莈 > mò; #8388 +莉 > lì; #8389 +莊 > zhuāng; #838A +莋 > jí; #838B +莌 > dúo; #838C +莍 > qíu; #838D +莎 > shā; #838E +莏 > sūo; #838F +莐 > chén; #8390 +莑 > fēng; #8391 +莒 > jŭ; #8392 +莓 > méi; #8393 +莔 > méng; #8394 +莕 > xìng; #8395 +莖 > jīng; #8396 +莗 > chē; #8397 +莘 > xīn; #8398 +莙 > jūn; #8399 +莚 > yán; #839A +莛 > tíng; #839B +莜 > diào; #839C +莝 > cùo; #839D +莞 > wăn; #839E +莟 > hàn; #839F +莠 > yŏu; #83A0 +莡 > cùo; #83A1 +莢 > jiá; #83A2 +莣 > wáng; #83A3 +莤 > yóu; #83A4 +莥 > nĭu; #83A5 +莦 > shāo; #83A6 +莧 > xiàn; #83A7 +莨 > láng; #83A8 +莩 > fú; #83A9 +莪 > é; #83AA +莫 > mò; #83AB +莬 > wèn; #83AC +莭 > jié; #83AD +莮 > nán; #83AE +莯 > mù; #83AF +莰 > kăn; #83B0 +莱 > lái; #83B1 +莲 > lián; #83B2 +莳 > shí; #83B3 +莴 > wō; #83B4 +莶 > liăn; #83B6 +获 > hùo; #83B7 +莸 > yóu; #83B8 +莹 > yíng; #83B9 +莺 > yīng; #83BA +莼 > chún; #83BC +莽 > măng; #83BD +莾 > măng; #83BE +莿 > cì; #83BF +菀 > wăn; #83C0 +菁 > jīng; #83C1 +菂 > dī; #83C2 +菃 > qú; #83C3 +菄 > dōng; #83C4 +菅 > jiān; #83C5 +菆 > zōu; #83C6 +菇 > gū; #83C7 +菈 > lā; #83C8 +菉 > lù; #83C9 +菊 > jú; #83CA +菋 > wèi; #83CB +菌 > jùn; #83CC +菍 > niè; #83CD +菎 > kūn; #83CE +菏 > hé; #83CF +菐 > pú; #83D0 +菑 > zī; #83D1 +菒 > găo; #83D2 +菓 > gŭo; #83D3 +菔 > fú; #83D4 +菕 > lún; #83D5 +菖 > chāng; #83D6 +菗 > chóu; #83D7 +菘 > sōng; #83D8 +菙 > chúi; #83D9 +菚 > zhàn; #83DA +菛 > mén; #83DB +菜 > cài; #83DC +菝 > bá; #83DD +菞 > lí; #83DE +菟 > tù; #83DF +菠 > bō; #83E0 +菡 > hàn; #83E1 +菢 > bào; #83E2 +菣 > qìn; #83E3 +菤 > juăn; #83E4 +菥 > xī; #83E5 +菦 > qín; #83E6 +菧 > dĭ; #83E7 +菨 > jiē; #83E8 +菩 > pú; #83E9 +菪 > dàng; #83EA +菫 > jĭn; #83EB +菬 > zhăo; #83EC +菭 > tái; #83ED +菮 > gēng; #83EE +華 > huá; #83EF +菰 > gū; #83F0 +菱 > líng; #83F1 +菲 > fēi; #83F2 +菳 > jīn; #83F3 +菴 > ān; #83F4 +菵 > wăng; #83F5 +菶 > bĕng; #83F6 +菷 > zhŏu; #83F7 +菸 > yān; #83F8 +菹 > jū; #83F9 +菺 > jiān; #83FA +菻 > lĭn; #83FB +菼 > tăn; #83FC +菽 > shú; #83FD +菾 > tián; #83FE +菿 > dào; #83FF +萀 > hŭ; #8400 +萁 > qí; #8401 +萂 > hé; #8402 +萃 > cùi; #8403 +萄 > táo; #8404 +萅 > chūn; #8405 +萆 > bēi; #8406 +萇 > cháng; #8407 +萈 > huán; #8408 +萉 > féi; #8409 +萊 > lái; #840A +萋 > qī; #840B +萌 > méng; #840C +萍 > píng; #840D +萎 > wēi; #840E +萏 > dàn; #840F +萐 > shà; #8410 +萑 > huán; #8411 +萒 > yăn; #8412 +萓 > yí; #8413 +萔 > tiáo; #8414 +萕 > qí; #8415 +萖 > wăn; #8416 +萗 > cè; #8417 +萘 > nài; #8418 +萚 > tùo; #841A +萛 > jīu; #841B +萜 > tiē; #841C +萝 > lúo; #841D +萠 > méng; #8420 +萤 > yíng; #8424 +营 > yíng; #8425 +萦 > yíng; #8426 +萧 > xiāo; #8427 +萨 > sà; #8428 +萩 > qīu; #8429 +萪 > kē; #842A +萫 > xiàng; #842B +萬 > wàn; #842C +萭 > yŭ; #842D +萮 > yù; #842E +萯 > fù; #842F +萰 > liàn; #8430 +萱 > xuān; #8431 +萲 > yuán; #8432 +萳 > nán; #8433 +萴 > zé; #8434 +萵 > wō; #8435 +萶 > chŭn; #8436 +萷 > xiāo; #8437 +萸 > yú; #8438 +萹 > piān; #8439 +萺 > mào; #843A +萻 > ān; #843B +萼 > è; #843C +落 > lùo; #843D +萾 > yíng; #843E +萿 > húo; #843F +葀 > guā; #8440 +葁 > jiāng; #8441 +葂 > miăn; #8442 +葃 > zúo; #8443 +葄 > zùo; #8444 +葅 > jū; #8445 +葆 > băo; #8446 +葇 > róu; #8447 +葈 > xĭ; #8448 +葉 > xié; #8449 +葊 > ān; #844A +葋 > qú; #844B +葌 > jiān; #844C +葍 > fú; #844D +葎 > lǜ; #844E +葏 > jīng; #844F +葐 > pén; #8450 +葑 > fēng; #8451 +葒 > hóng; #8452 +葓 > hóng; #8453 +葔 > hóu; #8454 +葕 > yán; #8455 +葖 > tú; #8456 +著 > zhù; #8457 +葘 > zī; #8458 +葙 > xiāng; #8459 +葚 > shèn; #845A +葛 > gĕ; #845B +葜 > jié; #845C +葝 > jìng; #845D +葞 > mĭ; #845E +葟 > huáng; #845F +葠 > shēn; #8460 +葡 > pú; #8461 +葢 > gài; #8462 +董 > dŏng; #8463 +葤 > zhòu; #8464 +葥 > qián; #8465 +葦 > wĕi; #8466 +葧 > bó; #8467 +葨 > wēi; #8468 +葩 > pā; #8469 +葪 > jì; #846A +葫 > hú; #846B +葬 > zàng; #846C +葭 > jiā; #846D +葮 > duàn; #846E +葯 > yào; #846F +葰 > jùn; #8470 +葱 > cōng; #8471 +葲 > quán; #8472 +葳 > wēi; #8473 +葴 > xián; #8474 +葵 > kúi; #8475 +葶 > tíng; #8476 +葷 > hūn; #8477 +葸 > xĭ; #8478 +葹 > shī; #8479 +葺 > qì; #847A +葻 > lán; #847B +葼 > zōng; #847C +葽 > yāo; #847D +葾 > yuān; #847E +葿 > méi; #847F +蒀 > yūn; #8480 +蒁 > shù; #8481 +蒂 > dì; #8482 +蒃 > zhuàn; #8483 +蒄 > guān; #8484 +蒆 > xuē; #8486 +蒇 > chăn; #8487 +蒈 > kăi; #8488 +蒉 > kùi; #8489 +蒋 > jiăng; #848B +蒌 > lóu; #848C +蒍 > wéi; #848D +蒎 > pài; #848E +蒐 > sōu; #8490 +蒑 > yīn; #8491 +蒒 > shī; #8492 +蒓 > chún; #8493 +蒔 > shí; #8494 +蒕 > yūn; #8495 +蒖 > zhēn; #8496 +蒗 > làng; #8497 +蒘 > nú; #8498 +蒙 > méng; #8499 +蒚 > hé; #849A +蒛 > quē; #849B +蒜 > suàn; #849C +蒝 > yuán; #849D +蒞 > lì; #849E +蒟 > jŭ; #849F +蒠 > xí; #84A0 +蒡 > páng; #84A1 +蒢 > chú; #84A2 +蒣 > xú; #84A3 +蒤 > tú; #84A4 +蒥 > líu; #84A5 +蒦 > wò; #84A6 +蒧 > zhēn; #84A7 +蒨 > qiàn; #84A8 +蒩 > zū; #84A9 +蒪 > pò; #84AA +蒫 > cūo; #84AB +蒬 > yuān; #84AC +蒭 > chú; #84AD +蒮 > yù; #84AE +蒯 > kuăi; #84AF +蒰 > pán; #84B0 +蒱 > pú; #84B1 +蒲 > pú; #84B2 +蒳 > nà; #84B3 +蒴 > shùo; #84B4 +蒵 > xī; #84B5 +蒶 > fén; #84B6 +蒷 > yún; #84B7 +蒸 > zhēng; #84B8 +蒹 > jiān; #84B9 +蒺 > jí; #84BA +蒻 > rùo; #84BB +蒼 > cāng; #84BC +蒽 > ēn; #84BD +蒾 > mí; #84BE +蒿 > hāo; #84BF +蓀 > sūn; #84C0 +蓁 > zhēn; #84C1 +蓂 > míng; #84C2 +蓃 > sou; #84C3 +蓄 > xù; #84C4 +蓅 > líu; #84C5 +蓆 > xí; #84C6 +蓇 > gŭ; #84C7 +蓈 > láng; #84C8 +蓉 > róng; #84C9 +蓊 > wĕng; #84CA +蓋 > gài; #84CB +蓌 > cùo; #84CC +蓍 > shī; #84CD +蓎 > táng; #84CE +蓏 > lŭo; #84CF +蓐 > rù; #84D0 +蓑 > sūo; #84D1 +蓒 > xiān; #84D2 +蓓 > bèi; #84D3 +蓔 > yăo; #84D4 +蓕 > gùi; #84D5 +蓖 > bī; #84D6 +蓗 > zŏng; #84D7 +蓘 > gŭn; #84D8 +蓚 > xīu; #84DA +蓛 > cè; #84DB +蓝 > lán; #84DD +蓟 > jì; #84DF +蓠 > lí; #84E0 +蓡 > cān; #84E1 +蓢 > láng; #84E2 +蓣 > yù; #84E3 +蓥 > yìng; #84E5 +蓦 > mò; #84E6 +蓧 > diào; #84E7 +蓨 > tiāo; #84E8 +蓩 > mào; #84E9 +蓪 > tōng; #84EA +蓫 > zhú; #84EB +蓬 > péng; #84EC +蓭 > ān; #84ED +蓮 > lián; #84EE +蓯 > cōng; #84EF +蓰 > xĭ; #84F0 +蓱 > píng; #84F1 +蓲 > qīu; #84F2 +蓳 > jìn; #84F3 +蓴 > chún; #84F4 +蓵 > jié; #84F5 +蓶 > wĕi; #84F6 +蓷 > tūi; #84F7 +蓸 > cáo; #84F8 +蓹 > yŭ; #84F9 +蓺 > yì; #84FA +蓻 > jí; #84FB +蓼 > liăo; #84FC +蓽 > bì; #84FD +蓾 > lŭ; #84FE +蓿 > sù; #84FF +蔀 > bù; #8500 +蔁 > zhāng; #8501 +蔂 > lúo; #8502 +蔃 > jiàng; #8503 +蔄 > màn; #8504 +蔅 > yán; #8505 +蔆 > líng; #8506 +蔇 > jì; #8507 +蔈 > piăo; #8508 +蔉 > gŭn; #8509 +蔊 > hăn; #850A +蔋 > dí; #850B +蔌 > sù; #850C +蔍 > lù; #850D +蔎 > shè; #850E +蔏 > shāng; #850F +蔐 > dí; #8510 +蔑 > miè; #8511 +蔒 > xūn; #8512 +蔓 > màn; #8513 +蔔 > bó; #8514 +蔕 > dì; #8515 +蔖 > cúo; #8516 +蔗 > zhè; #8517 +蔘 > sēn; #8518 +蔙 > xuàn; #8519 +蔚 > wèi; #851A +蔛 > hú; #851B +蔜 > áo; #851C +蔝 > mĭ; #851D +蔞 > lóu; #851E +蔟 > cù; #851F +蔠 > zhōng; #8520 +蔡 > cài; #8521 +蔢 > pó; #8522 +蔣 > jiăng; #8523 +蔤 > mì; #8524 +蔥 > cōng; #8525 +蔦 > niăo; #8526 +蔧 > hùi; #8527 +蔨 > jùn; #8528 +蔩 > yín; #8529 +蔪 > jiàn; #852A +蔫 > yān; #852B +蔬 > shū; #852C +蔭 > yìn; #852D +蔮 > kùi; #852E +蔯 > chén; #852F +蔰 > hù; #8530 +蔱 > shā; #8531 +蔲 > kòu; #8532 +蔳 > qiàn; #8533 +蔴 > má; #8534 +蔵 > zāng; #8535 +蔷 > qiáng; #8537 +蔸 > dōu; #8538 +蔹 > liàn; #8539 +蔺 > lìn; #853A +蔻 > kòu; #853B +蔼 > ăi; #853C +蔽 > bì; #853D +蔾 > lí; #853E +蔿 > wéi; #853F +蕀 > jí; #8540 +蕁 > xún; #8541 +蕂 > shèng; #8542 +蕃 > fán; #8543 +蕄 > méng; #8544 +蕅 > ŏu; #8545 +蕆 > chăn; #8546 +蕇 > diăn; #8547 +蕈 > xùn; #8548 +蕉 > jiāo; #8549 +蕊 > rŭi; #854A +蕋 > rŭi; #854B +蕌 > lĕi; #854C +蕍 > yú; #854D +蕎 > qiáo; #854E +蕏 > chú; #854F +蕐 > huá; #8550 +蕑 > jiān; #8551 +蕒 > măi; #8552 +蕓 > yún; #8553 +蕔 > bāo; #8554 +蕕 > yóu; #8555 +蕖 > qú; #8556 +蕗 > lù; #8557 +蕘 > ráo; #8558 +蕙 > hùi; #8559 +蕚 > è; #855A +蕛 > téng; #855B +蕜 > fĕi; #855C +蕝 > jué; #855D +蕞 > zùi; #855E +蕟 > fà; #855F +蕠 > rú; #8560 +蕡 > fén; #8561 +蕢 > kùi; #8562 +蕣 > shùn; #8563 +蕤 > rúi; #8564 +蕥 > yă; #8565 +蕦 > xū; #8566 +蕧 > fù; #8567 +蕨 > jué; #8568 +蕩 > dàng; #8569 +蕪 > wú; #856A +蕫 > tóng; #856B +蕬 > sī; #856C +蕭 > xiāo; #856D +蕮 > xì; #856E +蕯 > lóng; #856F +蕰 > yùn; #8570 +蕲 > qí; #8572 +蕳 > jiān; #8573 +蕴 > yùn; #8574 +蕵 > sūn; #8575 +蕶 > líng; #8576 +蕷 > yù; #8577 +蕸 > xiá; #8578 +蕹 > yōng; #8579 +蕺 > jí; #857A +蕻 > hòng; #857B +蕼 > sì; #857C +蕽 > nóng; #857D +蕾 > lĕi; #857E +蕿 > xuān; #857F +薀 > yùn; #8580 +薁 > yù; #8581 +薂 > xí; #8582 +薃 > hào; #8583 +薄 > bó; #8584 +薅 > hāo; #8585 +薆 > ài; #8586 +薇 > wéi; #8587 +薈 > hùi; #8588 +薉 > wèi; #8589 +薊 > jì; #858A +薋 > cī; #858B +薌 > xiāng; #858C +薍 > luàn; #858D +薎 > miè; #858E +薏 > yì; #858F +薐 > léng; #8590 +薑 > jiāng; #8591 +薒 > càn; #8592 +薓 > shēn; #8593 +薔 > qiáng; #8594 +薕 > lián; #8595 +薖 > kē; #8596 +薗 > yuán; #8597 +薘 > dá; #8598 +薙 > tì; #8599 +薚 > táng; #859A +薛 > xiē; #859B +薜 > bì; #859C +薝 > zhán; #859D +薞 > sūn; #859E +薟 > liăn; #859F +薠 > fán; #85A0 +薡 > dĭng; #85A1 +薢 > jiē; #85A2 +薣 > gŭ; #85A3 +薤 > xiè; #85A4 +薥 > shŭ; #85A5 +薦 > jiàn; #85A6 +薧 > kăo; #85A7 +薨 > hōng; #85A8 +薩 > sà; #85A9 +薪 > xīn; #85AA +薫 > xūn; #85AB +薬 > yào; #85AC +薮 > sŏu; #85AE +薯 > shŭ; #85AF +薰 > xūn; #85B0 +薱 > dùi; #85B1 +薲 > pín; #85B2 +薳 > wĕi; #85B3 +薴 > néng; #85B4 +薵 > chóu; #85B5 +薶 > mái; #85B6 +薷 > rú; #85B7 +薸 > piāo; #85B8 +薹 > tái; #85B9 +薺 > qí; #85BA +薻 > zăo; #85BB +薼 > chén; #85BC +薽 > zhēn; #85BD +薾 > ĕr; #85BE +薿 > nĭ; #85BF +藀 > yíng; #85C0 +藁 > găo; #85C1 +藂 > còng; #85C2 +藃 > xiāo; #85C3 +藄 > qí; #85C4 +藅 > fá; #85C5 +藆 > jiăn; #85C6 +藇 > xù; #85C7 +藈 > kūi; #85C8 +藉 > jiè; #85C9 +藊 > biăn; #85CA +藋 > diào; #85CB +藌 > mì; #85CC +藍 > lán; #85CD +藎 > jìn; #85CE +藏 > cáng; #85CF +藐 > miăo; #85D0 +藑 > qíong; #85D1 +藒 > qiè; #85D2 +藓 > xiăn; #85D3 +藕 > ŏu; #85D5 +藖 > xián; #85D6 +藗 > sù; #85D7 +藘 > lǘ; #85D8 +藙 > yì; #85D9 +藚 > xù; #85DA +藛 > xiĕ; #85DB +藜 > lí; #85DC +藝 > yì; #85DD +藞 > lă; #85DE +藟 > lĕi; #85DF +藠 > xiào; #85E0 +藡 > dí; #85E1 +藢 > zhĭ; #85E2 +藣 > bēi; #85E3 +藤 > téng; #85E4 +藥 > yào; #85E5 +藦 > mò; #85E6 +藧 > huăn; #85E7 +藨 > piăo; #85E8 +藩 > fán; #85E9 +藪 > sŏu; #85EA +藫 > tán; #85EB +藬 > tūi; #85EC +藭 > qíong; #85ED +藮 > qiáo; #85EE +藯 > wèi; #85EF +藰 > líu; #85F0 +藱 > hùi; #85F1 +藳 > găo; #85F3 +藴 > yùn; #85F4 +藶 > lì; #85F6 +藷 > shŭ; #85F7 +藸 > chú; #85F8 +藹 > ăi; #85F9 +藺 > lìn; #85FA +藻 > zăo; #85FB +藼 > xuān; #85FC +藽 > chèn; #85FD +藾 > lài; #85FE +藿 > hùo; #85FF +蘀 > tùo; #8600 +蘁 > wù; #8601 +蘂 > rŭi; #8602 +蘃 > rŭi; #8603 +蘄 > qí; #8604 +蘅 > héng; #8605 +蘆 > lú; #8606 +蘇 > sū; #8607 +蘈 > túi; #8608 +蘉 > máng; #8609 +蘊 > yùn; #860A +蘋 > pín; #860B +蘌 > yŭ; #860C +蘍 > xūn; #860D +蘎 > jì; #860E +蘏 > jīong; #860F +蘐 > xiān; #8610 +蘑 > mó; #8611 +蘓 > sū; #8613 +蘔 > jīong; #8614 +蘖 > niè; #8616 +蘗 > bò; #8617 +蘘 > ráng; #8618 +蘙 > yì; #8619 +蘚 > xiăn; #861A +蘛 > yú; #861B +蘜 > jú; #861C +蘝 > liàn; #861D +蘞 > liàn; #861E +蘟 > yĭn; #861F +蘠 > qiáng; #8620 +蘡 > yīng; #8621 +蘢 > lóng; #8622 +蘣 > tòng; #8623 +蘤 > wĕi; #8624 +蘥 > yuè; #8625 +蘦 > líng; #8626 +蘧 > qú; #8627 +蘨 > yáo; #8628 +蘩 > fán; #8629 +蘪 > mí; #862A +蘫 > lán; #862B +蘬 > kūi; #862C +蘭 > lán; #862D +蘮 > jì; #862E +蘯 > dàng; #862F +蘱 > lèi; #8631 +蘲 > léi; #8632 +蘳 > huă; #8633 +蘴 > fēng; #8634 +蘵 > zhí; #8635 +蘶 > wèi; #8636 +蘷 > kúi; #8637 +蘸 > zhàn; #8638 +蘹 > huài; #8639 +蘺 > lí; #863A +蘻 > jì; #863B +蘼 > mí; #863C +蘽 > lĕi; #863D +蘾 > huài; #863E +蘿 > lúo; #863F +虀 > jī; #8640 +虁 > kúi; #8641 +虂 > lù; #8642 +虃 > jiān; #8643 +虆 > léi; #8646 +虇 > quăn; #8647 +虈 > xiāo; #8648 +虉 > yì; #8649 +虊 > luán; #864A +虋 > mén; #864B +虌 > biē; #864C +虍 > hū; #864D +虎 > hŭ; #864E +虏 > lŭ; #864F +虐 > nǜe; #8650 +虑 > lǜ; #8651 +虒 > sī; #8652 +虓 > xiāo; #8653 +虔 > qián; #8654 +處 > chù; #8655 +虖 > hū; #8656 +虗 > xū; #8657 +虘 > cúo; #8658 +虙 > fú; #8659 +虚 > xū; #865A +虛 > xū; #865B +虜 > lŭ; #865C +虝 > hŭ; #865D +虞 > yú; #865E +號 > hào; #865F +虠 > jiăo; #8660 +虡 > jù; #8661 +虢 > gúo; #8662 +虣 > bào; #8663 +虤 > yán; #8664 +虥 > zhàn; #8665 +虦 > zhàn; #8666 +虧 > kūi; #8667 +虨 > bān; #8668 +虩 > xì; #8669 +虪 > shú; #866A +虫 > chóng; #866B +虬 > qíu; #866C +虭 > diāo; #866D +虮 > jī; #866E +虯 > qíu; #866F +虰 > chéng; #8670 +虱 > shī; #8671 +虳 > dì; #8673 +虴 > zhé; #8674 +虵 > shé; #8675 +虶 > yū; #8676 +虷 > gān; #8677 +虸 > zĭ; #8678 +虹 > hóng; #8679 +虺 > hŭi; #867A +虻 > méng; #867B +虼 > gè; #867C +虽 > sūi; #867D +虾 > xiā; #867E +虿 > chài; #867F +蚀 > shí; #8680 +蚁 > yĭ; #8681 +蚂 > mă; #8682 +蚃 > xiàng; #8683 +蚄 > fāng; #8684 +蚅 > è; #8685 +蚆 > pā; #8686 +蚇 > chĭ; #8687 +蚈 > qiān; #8688 +蚉 > wén; #8689 +蚊 > wén; #868A +蚋 > rùi; #868B +蚌 > bàng; #868C +蚍 > bĭ; #868D +蚎 > yuè; #868E +蚏 > yuè; #868F +蚐 > jūn; #8690 +蚑 > qí; #8691 +蚒 > rán; #8692 +蚓 > yĭn; #8693 +蚔 > qí; #8694 +蚕 > tiăn; #8695 +蚖 > yuán; #8696 +蚗 > jué; #8697 +蚘 > húi; #8698 +蚙 > qín; #8699 +蚚 > qí; #869A +蚛 > zhòng; #869B +蚜 > yá; #869C +蚝 > cì; #869D +蚞 > mù; #869E +蚟 > wáng; #869F +蚠 > fén; #86A0 +蚡 > fén; #86A1 +蚢 > háng; #86A2 +蚣 > gōng; #86A3 +蚤 > zăo; #86A4 +蚥 > fŭ; #86A5 +蚦 > rán; #86A6 +蚧 > jiè; #86A7 +蚨 > fú; #86A8 +蚩 > chī; #86A9 +蚪 > dŏu; #86AA +蚫 > piáo; #86AB +蚬 > xiàn; #86AC +蚭 > ní; #86AD +蚮 > tè; #86AE +蚯 > qīu; #86AF +蚰 > yóu; #86B0 +蚱 > zhà; #86B1 +蚲 > píng; #86B2 +蚳 > chí; #86B3 +蚴 > yŏu; #86B4 +蚵 > hé; #86B5 +蚶 > hān; #86B6 +蚷 > jù; #86B7 +蚸 > lì; #86B8 +蚹 > fù; #86B9 +蚺 > rán; #86BA +蚻 > zhá; #86BB +蚼 > gŏu; #86BC +蚽 > pí; #86BD +蚾 > bŏ; #86BE +蚿 > xián; #86BF +蛀 > zhù; #86C0 +蛁 > diāo; #86C1 +蛂 > biĕ; #86C2 +蛃 > bĭng; #86C3 +蛄 > gū; #86C4 +蛅 > rán; #86C5 +蛆 > qū; #86C6 +蛇 > shé; #86C7 +蛈 > tiè; #86C8 +蛉 > líng; #86C9 +蛊 > gŭ; #86CA +蛋 > dàn; #86CB +蛌 > gŭ; #86CC +蛍 > yíng; #86CD +蛎 > lì; #86CE +蛏 > chēng; #86CF +蛐 > qū; #86D0 +蛑 > móu; #86D1 +蛒 > gé; #86D2 +蛓 > cì; #86D3 +蛔 > húi; #86D4 +蛕 > húi; #86D5 +蛖 > máng; #86D6 +蛗 > fù; #86D7 +蛘 > yáng; #86D8 +蛙 > wā; #86D9 +蛚 > liè; #86DA +蛛 > zhū; #86DB +蛜 > yī; #86DC +蛝 > xián; #86DD +蛞 > kùo; #86DE +蛟 > jiāo; #86DF +蛠 > lì; #86E0 +蛡 > yì; #86E1 +蛢 > píng; #86E2 +蛣 > jī; #86E3 +蛤 > há; #86E4 +蛥 > shé; #86E5 +蛦 > yí; #86E6 +蛧 > wăng; #86E7 +蛨 > mò; #86E8 +蛩 > qíong; #86E9 +蛪 > qiè; #86EA +蛫 > gŭi; #86EB +蛬 > gŏng; #86EC +蛭 > zhì; #86ED +蛮 > mán; #86EE +蛰 > zhí; #86F0 +蛱 > jiá; #86F1 +蛲 > ráo; #86F2 +蛳 > sī; #86F3 +蛴 > qí; #86F4 +蛵 > xīng; #86F5 +蛶 > liè; #86F6 +蛷 > qíu; #86F7 +蛸 > shāo; #86F8 +蛹 > yŏng; #86F9 +蛺 > jiá; #86FA +蛻 > shùi; #86FB +蛼 > chē; #86FC +蛽 > bài; #86FD +蛾 > é; #86FE +蛿 > hàn; #86FF +蜀 > shŭ; #8700 +蜁 > xuán; #8701 +蜂 > fēng; #8702 +蜃 > shèn; #8703 +蜄 > zhèn; #8704 +蜅 > fŭ; #8705 +蜆 > xiàn; #8706 +蜇 > zhé; #8707 +蜈 > wú; #8708 +蜉 > fú; #8709 +蜊 > lí; #870A +蜋 > láng; #870B +蜌 > bì; #870C +蜍 > chú; #870D +蜎 > yuān; #870E +蜏 > yŏu; #870F +蜐 > jié; #8710 +蜑 > dàn; #8711 +蜒 > yán; #8712 +蜓 > tíng; #8713 +蜔 > diàn; #8714 +蜕 > shùi; #8715 +蜖 > húi; #8716 +蜗 > guā; #8717 +蜘 > zhī; #8718 +蜙 > sōng; #8719 +蜚 > fēi; #871A +蜛 > jū; #871B +蜜 > mì; #871C +蜝 > qí; #871D +蜞 > qí; #871E +蜟 > yù; #871F +蜠 > jŭn; #8720 +蜡 > zhà; #8721 +蜢 > mĕng; #8722 +蜣 > qiāng; #8723 +蜤 > sī; #8724 +蜥 > xī; #8725 +蜦 > lún; #8726 +蜧 > lì; #8727 +蜨 > dié; #8728 +蜩 > tiáo; #8729 +蜪 > tāo; #872A +蜫 > kūn; #872B +蜬 > gān; #872C +蜭 > hàn; #872D +蜮 > yù; #872E +蜯 > bàng; #872F +蜰 > féi; #8730 +蜱 > pí; #8731 +蜲 > wĕi; #8732 +蜳 > dūn; #8733 +蜴 > yì; #8734 +蜵 > yuān; #8735 +蜶 > sù; #8736 +蜷 > quán; #8737 +蜸 > qiăn; #8738 +蜹 > rùi; #8739 +蜺 > ní; #873A +蜻 > qīng; #873B +蜼 > wèi; #873C +蜽 > liăng; #873D +蜾 > gŭo; #873E +蜿 > wān; #873F +蝀 > dōng; #8740 +蝁 > è; #8741 +蝂 > băn; #8742 +蝃 > dì; #8743 +蝄 > wăng; #8744 +蝅 > cán; #8745 +蝆 > yăng; #8746 +蝇 > yíng; #8747 +蝈 > gūo; #8748 +蝉 > chán; #8749 +蝋 > là; #874B +蝌 > kē; #874C +蝍 > jí; #874D +蝎 > hé; #874E +蝏 > tíng; #874F +蝐 > mài; #8750 +蝑 > xū; #8751 +蝒 > mián; #8752 +蝓 > yú; #8753 +蝔 > jiē; #8754 +蝕 > shí; #8755 +蝖 > xuān; #8756 +蝗 > huáng; #8757 +蝘 > yăn; #8758 +蝙 > biān; #8759 +蝚 > róu; #875A +蝛 > wēi; #875B +蝜 > fù; #875C +蝝 > yuán; #875D +蝞 > mèi; #875E +蝟 > wèi; #875F +蝠 > fú; #8760 +蝡 > ruăn; #8761 +蝢 > xié; #8762 +蝣 > yóu; #8763 +蝤 > qíu; #8764 +蝥 > máo; #8765 +蝦 > xiā; #8766 +蝧 > yīng; #8767 +蝨 > shī; #8768 +蝩 > chóng; #8769 +蝪 > tāng; #876A +蝫 > zhū; #876B +蝬 > zōng; #876C +蝭 > tí; #876D +蝮 > fù; #876E +蝯 > yuán; #876F +蝰 > hŭi; #8770 +蝱 > méng; #8771 +蝲 > là; #8772 +蝳 > dú; #8773 +蝴 > hú; #8774 +蝵 > qīu; #8775 +蝶 > dié; #8776 +蝷 > lì; #8777 +蝸 > guā; #8778 +蝹 > yūn; #8779 +蝺 > jŭ; #877A +蝻 > năn; #877B +蝼 > lóu; #877C +蝽 > qŭn; #877D +蝾 > róng; #877E +蝿 > yíng; #877F +螀 > jiāng; #8780 +螂 > láng; #8782 +螃 > páng; #8783 +螄 > sī; #8784 +螅 > xī; #8785 +螆 > cì; #8786 +螇 > xī; #8787 +螈 > yuán; #8788 +螉 > wēng; #8789 +螊 > lián; #878A +螋 > sōu; #878B +螌 > bān; #878C +融 > róng; #878D +螎 > róng; #878E +螏 > jí; #878F +螐 > wū; #8790 +螑 > qìu; #8791 +螒 > hàn; #8792 +螓 > qín; #8793 +螔 > yí; #8794 +螕 > bī; #8795 +螖 > huá; #8796 +螗 > táng; #8797 +螘 > yĭ; #8798 +螙 > dù; #8799 +螚 > nài; #879A +螛 > hé; #879B +螜 > hú; #879C +螝 > hùi; #879D +螞 > mă; #879E +螟 > míng; #879F +螠 > yì; #87A0 +螡 > wén; #87A1 +螢 > yíng; #87A2 +螣 > téng; #87A3 +螤 > yŭ; #87A4 +螥 > cāng; #87A5 +螨 > măn; #87A8 +螪 > shāng; #87AA +螫 > zhē; #87AB +螬 > cáo; #87AC +螭 > chī; #87AD +螮 > dì; #87AE +螯 > áo; #87AF +螰 > lù; #87B0 +螱 > wèi; #87B1 +螲 > zhì; #87B2 +螳 > táng; #87B3 +螴 > chén; #87B4 +螵 > piāo; #87B5 +螶 > qú; #87B6 +螷 > pí; #87B7 +螸 > yú; #87B8 +螹 > jiàn; #87B9 +螺 > lúo; #87BA +螻 > lóu; #87BB +螼 > qĭn; #87BC +螽 > zhōng; #87BD +螾 > yĭn; #87BE +螿 > jiāng; #87BF +蟀 > shuài; #87C0 +蟁 > wén; #87C1 +蟂 > jiāo; #87C2 +蟃 > wàn; #87C3 +蟄 > zhí; #87C4 +蟅 > zhè; #87C5 +蟆 > má; #87C6 +蟇 > má; #87C7 +蟈 > gūo; #87C8 +蟉 > líu; #87C9 +蟊 > máo; #87CA +蟋 > xī; #87CB +蟌 > cōng; #87CC +蟍 > lí; #87CD +蟎 > măn; #87CE +蟏 > xiāo; #87CF +蟑 > zhāng; #87D1 +蟒 > măng; #87D2 +蟓 > xiàng; #87D3 +蟔 > mò; #87D4 +蟕 > zūi; #87D5 +蟖 > sī; #87D6 +蟗 > qīu; #87D7 +蟘 > tè; #87D8 +蟙 > zhí; #87D9 +蟚 > péng; #87DA +蟛 > péng; #87DB +蟜 > jiăo; #87DC +蟝 > qú; #87DD +蟞 > bié; #87DE +蟟 > liáo; #87DF +蟠 > pán; #87E0 +蟡 > gŭi; #87E1 +蟢 > xĭ; #87E2 +蟣 > jĭ; #87E3 +蟤 > zhuān; #87E4 +蟥 > huáng; #87E5 +蟦 > fèi; #87E6 +蟧 > láo; #87E7 +蟨 > jué; #87E8 +蟩 > jué; #87E9 +蟪 > hùi; #87EA +蟫 > yín; #87EB +蟬 > chán; #87EC +蟭 > jiāo; #87ED +蟮 > shàn; #87EE +蟯 > ráo; #87EF +蟰 > xiāo; #87F0 +蟱 > móu; #87F1 +蟲 > chóng; #87F2 +蟳 > xún; #87F3 +蟴 > sī; #87F4 +蟶 > chēng; #87F6 +蟷 > dāng; #87F7 +蟸 > lĭ; #87F8 +蟹 > xiè; #87F9 +蟺 > shàn; #87FA +蟻 > yĭ; #87FB +蟼 > jĭng; #87FC +蟽 > dá; #87FD +蟾 > chán; #87FE +蟿 > qì; #87FF +蠀 > cī; #8800 +蠁 > xiàng; #8801 +蠂 > shè; #8802 +蠃 > lŭo; #8803 +蠄 > qín; #8804 +蠅 > yíng; #8805 +蠆 > chài; #8806 +蠇 > lì; #8807 +蠈 > zé; #8808 +蠉 > xuān; #8809 +蠊 > lián; #880A +蠋 > zhú; #880B +蠌 > zé; #880C +蠍 > xiē; #880D +蠎 > măng; #880E +蠏 > xiè; #880F +蠐 > qí; #8810 +蠑 > róng; #8811 +蠒 > jiăn; #8812 +蠓 > mĕng; #8813 +蠔 > háo; #8814 +蠕 > ruăn; #8815 +蠖 > hùo; #8816 +蠗 > zhúo; #8817 +蠘 > jié; #8818 +蠙 > bīn; #8819 +蠚 > hè; #881A +蠛 > miè; #881B +蠜 > fán; #881C +蠝 > léi; #881D +蠞 > jié; #881E +蠟 > là; #881F +蠠 > mì; #8820 +蠡 > lĭ; #8821 +蠢 > chŭn; #8822 +蠣 > lì; #8823 +蠤 > qīu; #8824 +蠥 > niè; #8825 +蠦 > lú; #8826 +蠧 > dù; #8827 +蠨 > xiāo; #8828 +蠩 > zhū; #8829 +蠪 > lóng; #882A +蠫 > lì; #882B +蠬 > lóng; #882C +蠭 > fēng; #882D +蠮 > yē; #882E +蠯 > bèng; #882F +蠰 > shàng; #8830 +蠱 > gŭ; #8831 +蠲 > juān; #8832 +蠳 > yīng; #8833 +蠵 > xī; #8835 +蠶 > cán; #8836 +蠷 > qú; #8837 +蠸 > quán; #8838 +蠹 > dù; #8839 +蠺 > cán; #883A +蠻 > mán; #883B +蠼 > jué; #883C +蠽 > jié; #883D +蠾 > zhú; #883E +蠿 > zhá; #883F +血 > xiĕ; #8840 +衁 > huāng; #8841 +衂 > nìu; #8842 +衃 > pēi; #8843 +衄 > nǜ; #8844 +衅 > xìn; #8845 +衆 > zhòng; #8846 +衇 > mò; #8847 +衈 > èr; #8848 +衉 > kè; #8849 +衊 > miè; #884A +衋 > xì; #884B +行 > xíng; #884C +衍 > yăn; #884D +衎 > kàn; #884E +衏 > yuàn; #884F +衑 > líng; #8851 +衒 > xuàn; #8852 +術 > shù; #8853 +衔 > xián; #8854 +衕 > tòng; #8855 +衖 > lòng; #8856 +街 > jiē; #8857 +衘 > xián; #8858 +衙 > yá; #8859 +衚 > hú; #885A +衛 > wèi; #885B +衜 > dào; #885C +衝 > chōng; #885D +衞 > wèi; #885E +衟 > dào; #885F +衠 > zhūn; #8860 +衡 > héng; #8861 +衢 > qú; #8862 +衣 > yī; #8863 +衤 > yī' 'zì' 'páng; #8864 +补 > bŭ; #8865 +衦 > găn; #8866 +衧 > yú; #8867 +表 > biăo; #8868 +衩 > chà; #8869 +衪 > yĭ; #886A +衫 > shān; #886B +衬 > chèn; #886C +衭 > fū; #886D +衮 > gŭn; #886E +衯 > fēn; #886F +衰 > shuāi; #8870 +衱 > jié; #8871 +衲 > nà; #8872 +衳 > zhōng; #8873 +衴 > dăn; #8874 +衵 > rì; #8875 +衶 > zhòng; #8876 +衷 > zhōng; #8877 +衸 > xiè; #8878 +衹 > qí; #8879 +衺 > xié; #887A +衻 > rán; #887B +衼 > zhī; #887C +衽 > rèn; #887D +衾 > qīn; #887E +衿 > jīn; #887F +袀 > jūn; #8880 +袁 > yuán; #8881 +袂 > mèi; #8882 +袃 > chài; #8883 +袄 > ăo; #8884 +袅 > niăo; #8885 +袆 > hūi; #8886 +袇 > rán; #8887 +袈 > jiā; #8888 +袉 > túo; #8889 +袊 > lĭng; #888A +袋 > dài; #888B +袌 > bào; #888C +袍 > páo; #888D +袎 > yào; #888E +袏 > zùo; #888F +袐 > bì; #8890 +袑 > shào; #8891 +袒 > tăn; #8892 +袓 > jŭ; #8893 +袔 > hè; #8894 +袕 > shù; #8895 +袖 > xìu; #8896 +袗 > zhĕn; #8897 +袘 > yí; #8898 +袙 > pà; #8899 +袚 > bō; #889A +袛 > dī; #889B +袜 > wà; #889C +袝 > fù; #889D +袞 > gŭn; #889E +袟 > zhì; #889F +袠 > zhì; #88A0 +袡 > rán; #88A1 +袢 > pàn; #88A2 +袣 > yì; #88A3 +袤 > mào; #88A4 +袥 > tuo; #88A5 +袦 > nà; #88A6 +袧 > kōu; #88A7 +袨 > xiàn; #88A8 +袩 > chān; #88A9 +袪 > qū; #88AA +被 > bèi; #88AB +袬 > gŭn; #88AC +袭 > xí; #88AD +袯 > bó; #88AF +袱 > fú; #88B1 +袲 > yí; #88B2 +袳 > chĭ; #88B3 +袴 > kù; #88B4 +袵 > rèn; #88B5 +袶 > jiàng; #88B6 +袷 > jiá; #88B7 +袸 > cún; #88B8 +袹 > mò; #88B9 +袺 > jié; #88BA +袻 > ér; #88BB +袼 > lùo; #88BC +袽 > rú; #88BD +袾 > zhū; #88BE +袿 > gūi; #88BF +裀 > yīn; #88C0 +裁 > cái; #88C1 +裂 > liè; #88C2 +装 > zhuāng; #88C5 +裆 > dāng; #88C6 +裈 > kūn; #88C8 +裉 > kèn; #88C9 +裊 > niăo; #88CA +裋 > shù; #88CB +裌 > jiá; #88CC +裍 > kŭn; #88CD +裎 > chéng; #88CE +裏 > lĭ; #88CF +裐 > juān; #88D0 +裑 > shēn; #88D1 +裒 > póu; #88D2 +裓 > gé; #88D3 +裔 > yì; #88D4 +裕 > yù; #88D5 +裖 > zhĕn; #88D6 +裗 > líu; #88D7 +裘 > qíu; #88D8 +裙 > qún; #88D9 +裚 > jì; #88DA +裛 > yì; #88DB +補 > bŭ; #88DC +裝 > zhuāng; #88DD +裞 > shùi; #88DE +裟 > shā; #88DF +裠 > qún; #88E0 +裡 > lĭ; #88E1 +裢 > lián; #88E2 +裣 > liàn; #88E3 +裤 > kù; #88E4 +裥 > jiăn; #88E5 +裦 > fóu; #88E6 +裧 > chān; #88E7 +裨 > bì; #88E8 +裩 > gūn; #88E9 +裪 > táo; #88EA +裫 > yuàn; #88EB +裬 > líng; #88EC +裭 > chĭ; #88ED +裮 > chāng; #88EE +裯 > chóu; #88EF +裰 > dúo; #88F0 +裱 > biăo; #88F1 +裲 > liăng; #88F2 +裳 > cháng; #88F3 +裴 > péi; #88F4 +裵 > péi; #88F5 +裶 > fēi; #88F6 +裷 > yuān; #88F7 +裸 > lŭo; #88F8 +裹 > gŭo; #88F9 +裺 > yăn; #88FA +裻 > dŭ; #88FB +裼 > xí; #88FC +製 > zhì; #88FD +裾 > jū; #88FE +裿 > qĭ; #88FF +褀 > jì; #8900 +褁 > zhí; #8901 +褂 > guà; #8902 +褃 > kèn; #8903 +褅 > tì; #8905 +褆 > tí; #8906 +複 > fù; #8907 +褈 > chóng; #8908 +褉 > xiē; #8909 +褊 > biăn; #890A +褋 > dié; #890B +褌 > kūn; #890C +褍 > duān; #890D +褎 > xìu; #890E +褏 > xìu; #890F +褐 > hé; #8910 +褑 > yuàn; #8911 +褒 > bāo; #8912 +褓 > băo; #8913 +褔 > fù; #8914 +褕 > yú; #8915 +褖 > tuàn; #8916 +褗 > yăn; #8917 +褘 > hūi; #8918 +褙 > bèi; #8919 +褚 > chŭ; #891A +褛 > lǚ; #891B +褞 > yŭn; #891E +褟 > dá; #891F +褠 > gōu; #8920 +褡 > dā; #8921 +褢 > huái; #8922 +褣 > róng; #8923 +褤 > yuàn; #8924 +褥 > rù; #8925 +褦 > nài; #8926 +褧 > jĭong; #8927 +褨 > sŭo; #8928 +褩 > bān; #8929 +褪 > tùn; #892A +褫 > chĭ; #892B +褬 > săng; #892C +褭 > niăo; #892D +褮 > yīng; #892E +褯 > jiè; #892F +褰 > qiān; #8930 +褱 > huái; #8931 +褲 > kù; #8932 +褳 > lián; #8933 +褴 > băo; #8934 +褵 > lí; #8935 +褶 > zhé; #8936 +褷 > shī; #8937 +褸 > lǚ; #8938 +褹 > yì; #8939 +褺 > dié; #893A +褻 > xiè; #893B +褼 > xiān; #893C +褽 > wèi; #893D +褾 > biăo; #893E +褿 > cáo; #893F +襀 > jī; #8940 +襁 > jiăng; #8941 +襂 > sēn; #8942 +襃 > bāo; #8943 +襄 > xiāng; #8944 +襆 > pú; #8946 +襇 > jiăn; #8947 +襈 > zhuàn; #8948 +襉 > jiàn; #8949 +襊 > zùi; #894A +襋 > jí; #894B +襌 > dān; #894C +襍 > zá; #894D +襎 > fán; #894E +襏 > bó; #894F +襐 > xiàng; #8950 +襑 > xín; #8951 +襒 > bié; #8952 +襓 > ráo; #8953 +襔 > măn; #8954 +襕 > lán; #8955 +襖 > ăo; #8956 +襗 > dúo; #8957 +襘 > gùi; #8958 +襙 > cào; #8959 +襚 > sùi; #895A +襛 > nóng; #895B +襜 > chān; #895C +襝 > liàn; #895D +襞 > bì; #895E +襟 > jīn; #895F +襠 > dāng; #8960 +襡 > shú; #8961 +襢 > tăn; #8962 +襣 > bì; #8963 +襤 > lán; #8964 +襥 > pú; #8965 +襦 > rú; #8966 +襧 > zhĭ; #8967 +襩 > shŭ; #8969 +襪 > wà; #896A +襫 > shì; #896B +襬 > băi; #896C +襭 > xié; #896D +襮 > bó; #896E +襯 > chèn; #896F +襰 > lài; #8970 +襱 > lóng; #8971 +襲 > xí; #8972 +襳 > xiān; #8973 +襴 > lán; #8974 +襵 > zhé; #8975 +襶 > dài; #8976 +襸 > zàn; #8978 +襹 > shī; #8979 +襺 > jiăn; #897A +襻 > pàn; #897B +襼 > yì; #897C +襾 > yà; #897E +西 > xī; #897F +覀 > xī; #8980 +要 > yào; #8981 +覂 > fĕng; #8982 +覃 > tán; #8983 +覅 > biào; #8985 +覆 > fù; #8986 +覇 > bà; #8987 +覈 > hé; #8988 +覉 > jī; #8989 +覊 > jī; #898A +見 > jiàn; #898B +覌 > guān; #898C +覍 > biàn; #898D +覎 > yàn; #898E +規 > gūi; #898F +覐 > jué; #8990 +覑 > piăn; #8991 +覒 > máo; #8992 +覓 > mì; #8993 +覔 > mì; #8994 +覕 > miè; #8995 +視 > shì; #8996 +覗 > sī; #8997 +覘 > zhān; #8998 +覙 > lúo; #8999 +覚 > jué; #899A +覛 > mì; #899B +覜 > tiào; #899C +覝 > lián; #899D +覞 > yào; #899E +覟 > zhì; #899F +覠 > jūn; #89A0 +覡 > xí; #89A1 +覢 > shăn; #89A2 +覣 > wēi; #89A3 +覤 > xì; #89A4 +覥 > tiăn; #89A5 +覦 > yú; #89A6 +覧 > lăn; #89A7 +覨 > è; #89A8 +覩 > dŭ; #89A9 +親 > qīn; #89AA +覫 > păng; #89AB +覬 > jì; #89AC +覭 > míng; #89AD +覮 > yíng; #89AE +覯 > gòu; #89AF +覰 > qù; #89B0 +覱 > zhàn; #89B1 +覲 > jĭn; #89B2 +観 > guān; #89B3 +覴 > dēng; #89B4 +覵 > jiàn; #89B5 +覶 > lúo; #89B6 +覷 > qù; #89B7 +覸 > jiàn; #89B8 +覹 > wéi; #89B9 +覺 > jué; #89BA +覻 > qù; #89BB +覼 > lúo; #89BC +覽 > lăn; #89BD +覾 > shĕn; #89BE +覿 > dí; #89BF +觀 > guān; #89C0 +见 > jiàn; #89C1 +观 > guān; #89C2 +觃 > yàn; #89C3 +规 > gūi; #89C4 +觅 > mì; #89C5 +视 > shì; #89C6 +觇 > zhān; #89C7 +览 > lăn; #89C8 +觉 > jué; #89C9 +觊 > jì; #89CA +觋 > xí; #89CB +觌 > dí; #89CC +觍 > tiăn; #89CD +觎 > yú; #89CE +觏 > gòu; #89CF +觐 > jĭn; #89D0 +觑 > qù; #89D1 +角 > jiăo; #89D2 +觓 > jīu; #89D3 +觔 > jīn; #89D4 +觕 > cū; #89D5 +觖 > jué; #89D6 +觗 > zhì; #89D7 +觘 > chào; #89D8 +觙 > jí; #89D9 +觚 > gū; #89DA +觛 > dàn; #89DB +觜 > zŭi; #89DC +觝 > dĭ; #89DD +觞 > shāng; #89DE +觟 > huà; #89DF +觠 > quán; #89E0 +觡 > gé; #89E1 +觢 > chì; #89E2 +解 > jiĕ; #89E3 +觤 > gŭi; #89E4 +觥 > gōng; #89E5 +触 > hóng; #89E6 +觧 > jiĕ; #89E7 +觨 > hùn; #89E8 +觩 > qíu; #89E9 +觪 > xīng; #89EA +觫 > sù; #89EB +觬 > ní; #89EC +觭 > jī; #89ED +觮 > lù; #89EE +觯 > zhì; #89EF +觰 > zhā; #89F0 +觱 > bì; #89F1 +觲 > xīng; #89F2 +觳 > hú; #89F3 +觴 > shāng; #89F4 +觵 > gōng; #89F5 +觶 > zhì; #89F6 +觷 > xué; #89F7 +觸 > chù; #89F8 +觹 > xī; #89F9 +觺 > yí; #89FA +觻 > lù; #89FB +觼 > jué; #89FC +觽 > xī; #89FD +觾 > yàn; #89FE +觿 > xī; #89FF +言 > yán; #8A00 +訁 > yán' 'zì' 'páng; #8A01 +訂 > dìng; #8A02 +訃 > fù; #8A03 +訄 > qíu; #8A04 +訅 > qíu; #8A05 +訆 > jiào; #8A06 +訇 > hōng; #8A07 +計 > jì; #8A08 +訉 > fàn; #8A09 +訊 > xùn; #8A0A +訋 > diào; #8A0B +訌 > hóng; #8A0C +訍 > chà; #8A0D +討 > tăo; #8A0E +訏 > xū; #8A0F +訐 > jié; #8A10 +訑 > yí; #8A11 +訒 > rèn; #8A12 +訓 > xùn; #8A13 +訔 > yín; #8A14 +訕 > shàn; #8A15 +訖 > qì; #8A16 +託 > tūo; #8A17 +記 > jì; #8A18 +訙 > xùn; #8A19 +訚 > yín; #8A1A +訛 > é; #8A1B +訜 > fēn; #8A1C +訝 > yà; #8A1D +訞 > yāo; #8A1E +訟 > sòng; #8A1F +訠 > shĕn; #8A20 +訡 > yín; #8A21 +訢 > xīn; #8A22 +訣 > jué; #8A23 +訤 > xiáo; #8A24 +訥 > nè; #8A25 +訦 > chén; #8A26 +訧 > yóu; #8A27 +訨 > zhĭ; #8A28 +訩 > xīong; #8A29 +訪 > făng; #8A2A +訫 > xìn; #8A2B +訬 > chāo; #8A2C +設 > shè; #8A2D +訮 > xiān; #8A2E +訯 > shă; #8A2F +訰 > tún; #8A30 +許 > xŭ; #8A31 +訲 > yì; #8A32 +訳 > yì; #8A33 +訴 > sù; #8A34 +訵 > chī; #8A35 +訶 > hē; #8A36 +訷 > shēn; #8A37 +訸 > hé; #8A38 +訹 > xù; #8A39 +診 > zhĕn; #8A3A +註 > zhù; #8A3B +証 > zhèng; #8A3C +訽 > gòu; #8A3D +訾 > zĭ; #8A3E +訿 > zĭ; #8A3F +詀 > zhān; #8A40 +詁 > gŭ; #8A41 +詂 > fù; #8A42 +詃 > quăn; #8A43 +詄 > dié; #8A44 +詅 > líng; #8A45 +詆 > dĭ; #8A46 +詇 > yàng; #8A47 +詈 > lì; #8A48 +詉 > náo; #8A49 +詊 > pàn; #8A4A +詋 > zhòu; #8A4B +詌 > gàn; #8A4C +詍 > yì; #8A4D +詎 > jù; #8A4E +詏 > ào; #8A4F +詐 > zhà; #8A50 +詑 > túo; #8A51 +詒 > yí; #8A52 +詓 > qŭ; #8A53 +詔 > zhào; #8A54 +評 > píng; #8A55 +詖 > bì; #8A56 +詗 > xìong; #8A57 +詘 > qù; #8A58 +詙 > bá; #8A59 +詚 > dá; #8A5A +詛 > zŭ; #8A5B +詜 > tāo; #8A5C +詝 > zhŭ; #8A5D +詞 > cí; #8A5E +詟 > zhé; #8A5F +詠 > yŏng; #8A60 +詡 > xŭ; #8A61 +詢 > xún; #8A62 +詣 > yì; #8A63 +詤 > huăng; #8A64 +詥 > hé; #8A65 +試 > shì; #8A66 +詧 > chá; #8A67 +詨 > jiāo; #8A68 +詩 > shī; #8A69 +詪 > hĕn; #8A6A +詫 > chà; #8A6B +詬 > gòu; #8A6C +詭 > gŭi; #8A6D +詮 > quán; #8A6E +詯 > hùi; #8A6F +詰 > jié; #8A70 +話 > huà; #8A71 +該 > gāi; #8A72 +詳 > xiáng; #8A73 +詴 > wēi; #8A74 +詵 > shēn; #8A75 +詶 > chóu; #8A76 +詷 > tóng; #8A77 +詸 > mí; #8A78 +詹 > zhān; #8A79 +詺 > mìng; #8A7A +詻 > è; #8A7B +詼 > hūi; #8A7C +詽 > yán; #8A7D +詾 > xīong; #8A7E +詿 > guà; #8A7F +誀 > èr; #8A80 +誁 > bĕng; #8A81 +誂 > tiăo; #8A82 +誃 > chĭ; #8A83 +誄 > lĕi; #8A84 +誅 > zhū; #8A85 +誆 > kuāng; #8A86 +誇 > kuā; #8A87 +誈 > wú; #8A88 +誉 > yù; #8A89 +誊 > téng; #8A8A +誋 > jì; #8A8B +誌 > zhì; #8A8C +認 > rèn; #8A8D +誎 > sù; #8A8E +誏 > lăng; #8A8F +誐 > é; #8A90 +誑 > kuáng; #8A91 +誒 > è; #8A92 +誓 > shì; #8A93 +誔 > tĭng; #8A94 +誕 > dàn; #8A95 +誖 > bó; #8A96 +誗 > chán; #8A97 +誘 > yòu; #8A98 +誙 > héng; #8A99 +誚 > qiào; #8A9A +誛 > qīn; #8A9B +誜 > shuà; #8A9C +誝 > ān; #8A9D +語 > yŭ; #8A9E +誟 > xiào; #8A9F +誠 > chéng; #8AA0 +誡 > jiè; #8AA1 +誢 > xiàn; #8AA2 +誣 > wú; #8AA3 +誤 > wù; #8AA4 +誥 > gào; #8AA5 +誦 > sòng; #8AA6 +誧 > pŭ; #8AA7 +誨 > hùi; #8AA8 +誩 > jìng; #8AA9 +說 > shūo; #8AAA +誫 > zhèn; #8AAB +説 > shūo; #8AAC +読 > dú; #8AAD +誯 > chàng; #8AAF +誰 > shúi; #8AB0 +誱 > jié; #8AB1 +課 > kè; #8AB2 +誳 > qū; #8AB3 +誴 > cóng; #8AB4 +誵 > xiáo; #8AB5 +誶 > sùi; #8AB6 +誷 > wăng; #8AB7 +誸 > xuán; #8AB8 +誹 > fĕi; #8AB9 +誺 > chī; #8ABA +誻 > tà; #8ABB +誼 > yí; #8ABC +誽 > ná; #8ABD +誾 > yín; #8ABE +調 > diào; #8ABF +諀 > pĭ; #8AC0 +諁 > chùo; #8AC1 +諂 > chăn; #8AC2 +諃 > chēn; #8AC3 +諄 > zhūn; #8AC4 +諅 > jī; #8AC5 +諆 > qī; #8AC6 +談 > tán; #8AC7 +諈 > zhùi; #8AC8 +諉 > wĕi; #8AC9 +諊 > jú; #8ACA +請 > qĭng; #8ACB +諌 > jiàn; #8ACC +諍 > zhēng; #8ACD +諎 > zé; #8ACE +諏 > zōu; #8ACF +諐 > qiān; #8AD0 +諑 > zhúo; #8AD1 +諒 > liàng; #8AD2 +諓 > jiàn; #8AD3 +諔 > zhù; #8AD4 +諕 > háo; #8AD5 +論 > lùn; #8AD6 +諗 > shĕn; #8AD7 +諘 > biăo; #8AD8 +諙 > huài; #8AD9 +諚 > pián; #8ADA +諛 > yú; #8ADB +諜 > dié; #8ADC +諝 > xŭ; #8ADD +諞 > pián; #8ADE +諟 > shì; #8ADF +諠 > xuān; #8AE0 +諡 > shì; #8AE1 +諢 > hùn; #8AE2 +諣 > huà; #8AE3 +諤 > è; #8AE4 +諥 > zhòng; #8AE5 +諦 > dì; #8AE6 +諧 > xié; #8AE7 +諨 > fú; #8AE8 +諩 > pŭ; #8AE9 +諪 > tíng; #8AEA +諫 > jiàn; #8AEB +諬 > qĭ; #8AEC +諭 > yù; #8AED +諮 > zī; #8AEE +諯 > chuán; #8AEF +諰 > xĭ; #8AF0 +諱 > hùi; #8AF1 +諲 > yīn; #8AF2 +諳 > ān; #8AF3 +諴 > xián; #8AF4 +諵 > nán; #8AF5 +諶 > chén; #8AF6 +諷 > fēng; #8AF7 +諸 > zhū; #8AF8 +諹 > yáng; #8AF9 +諺 > yàn; #8AFA +諻 > hēng; #8AFB +諼 > xuān; #8AFC +諽 > gé; #8AFD +諾 > nùo; #8AFE +諿 > qì; #8AFF +謀 > móu; #8B00 +謁 > yè; #8B01 +謂 > wèi; #8B02 +謄 > téng; #8B04 +謅 > zōu; #8B05 +謆 > shàn; #8B06 +謇 > jiăn; #8B07 +謈 > bó; #8B08 +謉 > kù1; #8B09 +謊 > huăng; #8B0A +謋 > hùo; #8B0B +謌 > gē; #8B0C +謍 > yíng; #8B0D +謎 > mí; #8B0E +謏 > xiăo; #8B0F +謐 > mì; #8B10 +謑 > xì; #8B11 +謒 > qiāng; #8B12 +謓 > chēn; #8B13 +謔 > nǜe; #8B14 +謕 > tí; #8B15 +謖 > sù; #8B16 +謗 > bàng; #8B17 +謘 > chí; #8B18 +謙 > qiān; #8B19 +謚 > shì; #8B1A +講 > jiăng; #8B1B +謜 > yuàn; #8B1C +謝 > xiè; #8B1D +謞 > xuè; #8B1E +謟 > tāo; #8B1F +謠 > yáo; #8B20 +謡 > yáo; #8B21 +謣 > yú; #8B23 +謤 > biāo; #8B24 +謥 > còng; #8B25 +謦 > qìng; #8B26 +謧 > lí; #8B27 +謨 > mó; #8B28 +謩 > mò; #8B29 +謪 > shāng; #8B2A +謫 > zhé; #8B2B +謬 > mìu; #8B2C +謭 > jiăn; #8B2D +謮 > zé; #8B2E +謯 > jiē; #8B2F +謰 > lián; #8B30 +謱 > lóu; #8B31 +謲 > cān; #8B32 +謳 > ōu; #8B33 +謴 > guàn; #8B34 +謵 > xí; #8B35 +謶 > zhúo; #8B36 +謷 > áo; #8B37 +謸 > áo; #8B38 +謹 > jĭn; #8B39 +謺 > zhé; #8B3A +謻 > yí; #8B3B +謼 > hù; #8B3C +謽 > jiàng; #8B3D +謾 > mán; #8B3E +謿 > cháo; #8B3F +譀 > hàn; #8B40 +譁 > huá; #8B41 +譂 > chăn; #8B42 +譃 > xū; #8B43 +譄 > zēng; #8B44 +譅 > sè; #8B45 +譆 > xī; #8B46 +譇 > shē; #8B47 +譈 > dùi; #8B48 +證 > zhèng; #8B49 +譊 > náo; #8B4A +譋 > lán; #8B4B +譌 > é; #8B4C +譍 > yìng; #8B4D +譎 > jué; #8B4E +譏 > jī; #8B4F +譐 > zŭn; #8B50 +譑 > jiăo; #8B51 +譒 > bò; #8B52 +譓 > hùi; #8B53 +譔 > zhuàn; #8B54 +譕 > mú; #8B55 +譖 > zèn; #8B56 +譗 > zhá; #8B57 +識 > shì; #8B58 +譙 > qiáo; #8B59 +譚 > tán; #8B5A +譛 > zèn; #8B5B +譜 > pŭ; #8B5C +譝 > shéng; #8B5D +譞 > xuān; #8B5E +譟 > zào; #8B5F +譠 > tān; #8B60 +譡 > dăng; #8B61 +譢 > sùi; #8B62 +譣 > qiān; #8B63 +譤 > jī; #8B64 +譥 > jiào; #8B65 +警 > jĭng; #8B66 +譧 > lián; #8B67 +譨 > nóu; #8B68 +譩 > yī; #8B69 +譪 > ài; #8B6A +譫 > zhān; #8B6B +譬 > pì; #8B6C +譭 > hŭi; #8B6D +譮 > huà; #8B6E +譯 > yì; #8B6F +議 > yì; #8B70 +譱 > shàn; #8B71 +譲 > ràng; #8B72 +譳 > nòu; #8B73 +譴 > qiăn; #8B74 +譵 > zhùi; #8B75 +譶 > tà; #8B76 +護 > hù; #8B77 +譸 > zhōu; #8B78 +譹 > háo; #8B79 +譺 > yè; #8B7A +譻 > yīng; #8B7B +譼 > jiàn; #8B7C +譽 > yù; #8B7D +譾 > jiăn; #8B7E +譿 > hùi; #8B7F +讀 > dú; #8B80 +讁 > zhé; #8B81 +讂 > xuàn; #8B82 +讃 > zàn; #8B83 +讄 > lĕi; #8B84 +讅 > shĕn; #8B85 +讆 > wèi; #8B86 +讇 > chăn; #8B87 +讈 > lì; #8B88 +讉 > yí; #8B89 +變 > biàn; #8B8A +讋 > zhé; #8B8B +讌 > yàn; #8B8C +讍 > è; #8B8D +讎 > chóu; #8B8E +讏 > wèi; #8B8F +讐 > chóu; #8B90 +讑 > yào; #8B91 +讒 > chán; #8B92 +讓 > ràng; #8B93 +讔 > yĭn; #8B94 +讕 > lán; #8B95 +讖 > chèn; #8B96 +讗 > hùo; #8B97 +讘 > zhé; #8B98 +讙 > huān; #8B99 +讚 > zàn; #8B9A +讛 > yì; #8B9B +讜 > dăng; #8B9C +讝 > zhān; #8B9D +讞 > yàn; #8B9E +讟 > dú; #8B9F +讠 > yán; #8BA0 +计 > jì; #8BA1 +订 > dìng; #8BA2 +讣 > fù; #8BA3 +认 > rèn; #8BA4 +讥 > jī; #8BA5 +讦 > jié; #8BA6 +讧 > hóng; #8BA7 +讨 > tăo; #8BA8 +让 > ràng; #8BA9 +讪 > shàn; #8BAA +讫 > qì; #8BAB +讬 > tūo; #8BAC +训 > xùn; #8BAD +议 > yì; #8BAE +讯 > xùn; #8BAF +记 > jì; #8BB0 +讱 > rèn; #8BB1 +讲 > jiăng; #8BB2 +讳 > hùi; #8BB3 +讴 > ōu; #8BB4 +讵 > jù; #8BB5 +讶 > yà; #8BB6 +讷 > nè; #8BB7 +许 > xŭ; #8BB8 +讹 > é; #8BB9 +论 > lùn; #8BBA +讻 > xīong; #8BBB +讼 > sòng; #8BBC +讽 > fēng; #8BBD +设 > shè; #8BBE +访 > făng; #8BBF +诀 > jué; #8BC0 +证 > zhèng; #8BC1 +诂 > gŭ; #8BC2 +诃 > hē; #8BC3 +评 > píng; #8BC4 +诅 > zŭ; #8BC5 +识 > shì; #8BC6 +诇 > xìong; #8BC7 +诈 > zhà; #8BC8 +诉 > sù; #8BC9 +诊 > zhĕn; #8BCA +诋 > dĭ; #8BCB +诌 > zōu; #8BCC +词 > cí; #8BCD +诎 > qù; #8BCE +诏 > zhào; #8BCF +诐 > bì; #8BD0 +译 > yì; #8BD1 +诒 > yí; #8BD2 +诓 > kuāng; #8BD3 +诔 > lĕi; #8BD4 +试 > shì; #8BD5 +诖 > guà; #8BD6 +诗 > shī; #8BD7 +诘 > jié; #8BD8 +诙 > hūi; #8BD9 +诚 > chéng; #8BDA +诛 > zhū; #8BDB +诜 > shēn; #8BDC +话 > huà; #8BDD +诞 > dàn; #8BDE +诟 > gòu; #8BDF +诠 > quán; #8BE0 +诡 > gŭi; #8BE1 +询 > xún; #8BE2 +诣 > yì; #8BE3 +诤 > zhēng; #8BE4 +该 > gāi; #8BE5 +详 > xiáng; #8BE6 +诧 > chà; #8BE7 +诨 > hùn; #8BE8 +诩 > xŭ; #8BE9 +诪 > zhōu; #8BEA +诫 > jiè; #8BEB +诬 > wú; #8BEC +语 > yŭ; #8BED +诮 > qiào; #8BEE +误 > wù; #8BEF +诰 > gào; #8BF0 +诱 > yòu; #8BF1 +诲 > hùi; #8BF2 +诳 > kuáng; #8BF3 +说 > shūo; #8BF4 +诵 > sòng; #8BF5 +诶 > āi; #8BF6 +请 > qĭng; #8BF7 +诸 > zhū; #8BF8 +诹 > zōu; #8BF9 +诺 > nùo; #8BFA +读 > dú; #8BFB +诼 > zhúo; #8BFC +诽 > fĕi; #8BFD +课 > kè; #8BFE +诿 > wĕi; #8BFF +谀 > yú; #8C00 +谁 > shúi; #8C01 +谂 > shĕn; #8C02 +调 > diào; #8C03 +谄 > chăn; #8C04 +谅 > liàng; #8C05 +谆 > zhūn; #8C06 +谇 > sùi; #8C07 +谈 > tán; #8C08 +谉 > shĕn; #8C09 +谊 > yí; #8C0A +谋 > móu; #8C0B +谌 > chén; #8C0C +谍 > dié; #8C0D +谎 > huăng; #8C0E +谏 > jiàn; #8C0F +谐 > xié; #8C10 +谑 > nǜe; #8C11 +谒 > yè; #8C12 +谓 > wèi; #8C13 +谔 > è; #8C14 +谕 > yù; #8C15 +谖 > xuān; #8C16 +谗 > chán; #8C17 +谘 > zī; #8C18 +谙 > ān; #8C19 +谚 > yàn; #8C1A +谛 > dì; #8C1B +谜 > mí; #8C1C +谝 > pián; #8C1D +谞 > xŭ; #8C1E +谟 > mó; #8C1F +谠 > dăng; #8C20 +谡 > sù; #8C21 +谢 > xiè; #8C22 +谣 > yáo; #8C23 +谤 > bàng; #8C24 +谥 > shì; #8C25 +谦 > qiān; #8C26 +谧 > mì; #8C27 +谨 > jĭn; #8C28 +谩 > mán; #8C29 +谪 > zhé; #8C2A +谫 > jiăn; #8C2B +谬 > mìu; #8C2C +谭 > tán; #8C2D +谮 > zèn; #8C2E +谯 > qiáo; #8C2F +谰 > lán; #8C30 +谱 > pŭ; #8C31 +谲 > jué; #8C32 +谳 > yàn; #8C33 +谴 > qiăn; #8C34 +谵 > zhān; #8C35 +谶 > chèn; #8C36 +谷 > gŭ; #8C37 +谸 > qiān; #8C38 +谹 > hóng; #8C39 +谺 > xiā; #8C3A +谻 > jué; #8C3B +谼 > hóng; #8C3C +谽 > hān; #8C3D +谾 > hōng; #8C3E +谿 > xī; #8C3F +豀 > xī; #8C40 +豁 > hùo; #8C41 +豂 > liáo; #8C42 +豃 > hăn; #8C43 +豄 > dú; #8C44 +豅 > lóng; #8C45 +豆 > dòu; #8C46 +豇 > jiāng; #8C47 +豈 > qĭ; #8C48 +豉 > shì; #8C49 +豊 > lĭ; #8C4A +豋 > dēng; #8C4B +豌 > wān; #8C4C +豍 > bī; #8C4D +豎 > shù; #8C4E +豏 > xiàn; #8C4F +豐 > fēng; #8C50 +豑 > zhì; #8C51 +豒 > zhì; #8C52 +豓 > yàn; #8C53 +豔 > yàn; #8C54 +豕 > shĭ; #8C55 +豖 > chù; #8C56 +豗 > hūi; #8C57 +豘 > tún; #8C58 +豙 > yì; #8C59 +豚 > tún; #8C5A +豛 > yì; #8C5B +豜 > jiān; #8C5C +豝 > bā; #8C5D +豞 > hòu; #8C5E +豟 > è; #8C5F +豠 > cú; #8C60 +象 > xiàng; #8C61 +豢 > huàn; #8C62 +豣 > jiān; #8C63 +豤 > kĕn; #8C64 +豥 > gāi; #8C65 +豦 > qú; #8C66 +豧 > fū; #8C67 +豨 > xī; #8C68 +豩 > bīn; #8C69 +豪 > háo; #8C6A +豫 > yù; #8C6B +豬 > zhū; #8C6C +豭 > jiā; #8C6D +豯 > xī; #8C6F +豰 > bó; #8C70 +豱 > wēn; #8C71 +豲 > huán; #8C72 +豳 > bīn; #8C73 +豴 > dí; #8C74 +豵 > zōng; #8C75 +豶 > fén; #8C76 +豷 > yì; #8C77 +豸 > zhì; #8C78 +豹 > bào; #8C79 +豺 > chái; #8C7A +豻 > hàn; #8C7B +豼 > pí; #8C7C +豽 > nà; #8C7D +豾 > pī; #8C7E +豿 > gŏu; #8C7F +貀 > nà; #8C80 +貁 > yòu; #8C81 +貂 > diāo; #8C82 +貃 > mò; #8C83 +貄 > sì; #8C84 +貅 > xīu; #8C85 +貆 > huán; #8C86 +貇 > kūn; #8C87 +貈 > hé; #8C88 +貉 > hé; #8C89 +貊 > mò; #8C8A +貋 > hàn; #8C8B +貌 > mào; #8C8C +貍 > lí; #8C8D +貎 > ní; #8C8E +貏 > bĭ; #8C8F +貐 > yŭ; #8C90 +貑 > jiā; #8C91 +貒 > tuān; #8C92 +貓 > māo; #8C93 +貔 > pí; #8C94 +貕 > xī; #8C95 +貖 > è; #8C96 +貗 > jù; #8C97 +貘 > mò; #8C98 +貙 > chū; #8C99 +貚 > tán; #8C9A +貛 > huān; #8C9B +貜 > jué; #8C9C +貝 > bèi; #8C9D +貞 > zhēn; #8C9E +貟 > yuán; #8C9F +負 > fù; #8CA0 +財 > cái; #8CA1 +貢 > gòng; #8CA2 +貣 > tè; #8CA3 +貤 > yí; #8CA4 +貥 > háng; #8CA5 +貦 > wàn; #8CA6 +貧 > pín; #8CA7 +貨 > hùo; #8CA8 +販 > fàn; #8CA9 +貪 > tān; #8CAA +貫 > guàn; #8CAB +責 > zé; #8CAC +貭 > zhí; #8CAD +貮 > èr; #8CAE +貯 > zhŭ; #8CAF +貰 > shì; #8CB0 +貱 > bì; #8CB1 +貲 > zī; #8CB2 +貳 > èr; #8CB3 +貴 > gùi; #8CB4 +貵 > piăn; #8CB5 +貶 > biăn; #8CB6 +買 > măi; #8CB7 +貸 > dài; #8CB8 +貹 > shèng; #8CB9 +貺 > kuàng; #8CBA +費 > fèi; #8CBB +貼 > tiē; #8CBC +貽 > yí; #8CBD +貾 > chí; #8CBE +貿 > mào; #8CBF +賀 > hè; #8CC0 +賁 > bì; #8CC1 +賂 > lù; #8CC2 +賃 > rèn; #8CC3 +賄 > hùi; #8CC4 +賅 > gāi; #8CC5 +賆 > pián; #8CC6 +資 > zī; #8CC7 +賈 > jiă; #8CC8 +賉 > xù; #8CC9 +賊 > zéi; #8CCA +賋 > jiăo; #8CCB +賌 > gài; #8CCC +賍 > zāng; #8CCD +賎 > jiàn; #8CCE +賏 > yìng; #8CCF +賐 > xùn; #8CD0 +賑 > zhèn; #8CD1 +賒 > shē; #8CD2 +賓 > bīn; #8CD3 +賔 > bīn; #8CD4 +賕 > qíu; #8CD5 +賖 > shē; #8CD6 +賗 > chuàn; #8CD7 +賘 > zāng; #8CD8 +賙 > zhōu; #8CD9 +賚 > lài; #8CDA +賛 > zàn; #8CDB +賜 > sì; #8CDC +賝 > chēn; #8CDD +賞 > shăng; #8CDE +賟 > tiăn; #8CDF +賠 > péi; #8CE0 +賡 > gēng; #8CE1 +賢 > xián; #8CE2 +賣 > mài; #8CE3 +賤 > jiàn; #8CE4 +賥 > sùi; #8CE5 +賦 > fù; #8CE6 +賧 > tàn; #8CE7 +賨 > cóng; #8CE8 +賩 > cóng; #8CE9 +質 > zhí; #8CEA +賫 > jī; #8CEB +賬 > zhàng; #8CEC +賭 > dŭ; #8CED +賮 > jìn; #8CEE +賯 > xīong; #8CEF +賰 > shŭn; #8CF0 +賱 > yŭn; #8CF1 +賲 > băo; #8CF2 +賳 > zāi; #8CF3 +賴 > lài; #8CF4 +賵 > fèng; #8CF5 +賶 > càng; #8CF6 +賷 > jī; #8CF7 +賸 > shèng; #8CF8 +賹 > ài; #8CF9 +賺 > zhuàn; #8CFA +賻 > fù; #8CFB +購 > gòu; #8CFC +賽 > sài; #8CFD +賾 > zé; #8CFE +賿 > liáo; #8CFF +贀 > wèi; #8D00 +贁 > bài; #8D01 +贂 > chĕn; #8D02 +贃 > zhuàn; #8D03 +贄 > zhì; #8D04 +贅 > zhùi; #8D05 +贆 > biāo; #8D06 +贇 > yūn; #8D07 +贈 > zèng; #8D08 +贉 > tăn; #8D09 +贊 > zàn; #8D0A +贋 > yàn; #8D0B +贍 > shàn; #8D0D +贎 > wàn; #8D0E +贏 > yíng; #8D0F +贐 > jìn; #8D10 +贑 > găn; #8D11 +贒 > xián; #8D12 +贓 > zāng; #8D13 +贔 > bì; #8D14 +贕 > dú; #8D15 +贖 > shú; #8D16 +贗 > yàn; #8D17 +贙 > xuàn; #8D19 +贚 > lòng; #8D1A +贛 > gàn; #8D1B +贜 > zāng; #8D1C +贝 > bèi; #8D1D +贞 > zhēn; #8D1E +负 > fù; #8D1F +贠 > yuán; #8D20 +贡 > gòng; #8D21 +财 > cái; #8D22 +责 > zé; #8D23 +贤 > xián; #8D24 +败 > bài; #8D25 +账 > zhàng; #8D26 +货 > hùo; #8D27 +质 > zhí; #8D28 +贩 > fàn; #8D29 +贪 > tān; #8D2A +贫 > pín; #8D2B +贬 > biăn; #8D2C +购 > gòu; #8D2D +贮 > zhŭ; #8D2E +贯 > guàn; #8D2F +贰 > èr; #8D30 +贱 > jiàn; #8D31 +贲 > bì; #8D32 +贳 > shì; #8D33 +贴 > tiē; #8D34 +贵 > gùi; #8D35 +贶 > kuàng; #8D36 +贷 > dài; #8D37 +贸 > mào; #8D38 +费 > fèi; #8D39 +贺 > hè; #8D3A +贻 > yí; #8D3B +贼 > zéi; #8D3C +贽 > zhì; #8D3D +贾 > jiă; #8D3E +贿 > hùi; #8D3F +赀 > zī; #8D40 +赁 > rèn; #8D41 +赂 > lù; #8D42 +赃 > zāng; #8D43 +资 > zī; #8D44 +赅 > gāi; #8D45 +赆 > jìn; #8D46 +赇 > qíu; #8D47 +赈 > zhèn; #8D48 +赉 > lài; #8D49 +赊 > shē; #8D4A +赋 > fù; #8D4B +赌 > dŭ; #8D4C +赍 > jī; #8D4D +赎 > shú; #8D4E +赏 > shăng; #8D4F +赐 > sì; #8D50 +赑 > bì; #8D51 +赒 > zhōu; #8D52 +赓 > gēng; #8D53 +赔 > péi; #8D54 +赕 > tàn; #8D55 +赖 > lài; #8D56 +赗 > fèng; #8D57 +赘 > zhùi; #8D58 +赙 > fù; #8D59 +赚 > zhuàn; #8D5A +赛 > sài; #8D5B +赜 > zé; #8D5C +赝 > yàn; #8D5D +赞 > zàn; #8D5E +赟 > yūn; #8D5F +赠 > zèng; #8D60 +赡 > shàn; #8D61 +赢 > yíng; #8D62 +赣 > gàn; #8D63 +赤 > chì; #8D64 +赥 > xì; #8D65 +赦 > shè; #8D66 +赧 > năn; #8D67 +赨 > xíong; #8D68 +赩 > xì; #8D69 +赪 > chēng; #8D6A +赫 > hè; #8D6B +赬 > chēng; #8D6C +赭 > zhĕ; #8D6D +赮 > xiá; #8D6E +赯 > táng; #8D6F +走 > zŏu; #8D70 +赱 > zŏu; #8D71 +赲 > lì; #8D72 +赳 > jĭu; #8D73 +赴 > fù; #8D74 +赵 > zhào; #8D75 +赶 > găn; #8D76 +起 > qĭ; #8D77 +赸 > shàn; #8D78 +赹 > qíong; #8D79 +赺 > qín; #8D7A +赻 > xiăn; #8D7B +赼 > cī; #8D7C +赽 > jué; #8D7D +赾 > qĭn; #8D7E +赿 > chí; #8D7F +趀 > cī; #8D80 +趁 > chèn; #8D81 +趂 > chèn; #8D82 +趃 > dié; #8D83 +趄 > jū; #8D84 +超 > chāo; #8D85 +趆 > dī; #8D86 +趇 > sè; #8D87 +趈 > zhān; #8D88 +趉 > zhú; #8D89 +越 > yuè; #8D8A +趋 > qū; #8D8B +趌 > jié; #8D8C +趍 > chí; #8D8D +趎 > chú; #8D8E +趏 > guā; #8D8F +趐 > xuè; #8D90 +趑 > cī; #8D91 +趒 > tiáo; #8D92 +趓 > dŭo; #8D93 +趔 > liè; #8D94 +趕 > găn; #8D95 +趖 > sūo; #8D96 +趗 > cù; #8D97 +趘 > xí; #8D98 +趙 > zhào; #8D99 +趚 > sù; #8D9A +趛 > yĭn; #8D9B +趜 > jú; #8D9C +趝 > jiàn; #8D9D +趞 > què; #8D9E +趟 > tàng; #8D9F +趠 > chùo; #8DA0 +趡 > cŭi; #8DA1 +趢 > lù; #8DA2 +趣 > qù; #8DA3 +趤 > dàng; #8DA4 +趥 > qīu; #8DA5 +趦 > zī; #8DA6 +趧 > tí; #8DA7 +趨 > qū; #8DA8 +趩 > chì; #8DA9 +趪 > huáng; #8DAA +趫 > qiáo; #8DAB +趬 > qiáo; #8DAC +趭 > yào; #8DAD +趮 > zào; #8DAE +趯 > tì; #8DAF +趱 > zăn; #8DB1 +趲 > zăn; #8DB2 +足 > zú; #8DB3 +趴 > pā; #8DB4 +趵 > bào; #8DB5 +趶 > kù; #8DB6 +趷 > kē; #8DB7 +趸 > dŭn; #8DB8 +趹 > jué; #8DB9 +趺 > fū; #8DBA +趻 > chĕn; #8DBB +趼 > jiăn; #8DBC +趽 > fàng; #8DBD +趾 > zhĭ; #8DBE +趿 > sà; #8DBF +跀 > yuè; #8DC0 +跁 > pá; #8DC1 +跂 > qí; #8DC2 +跃 > yuè; #8DC3 +跄 > qiāng; #8DC4 +跅 > tùo; #8DC5 +跆 > tái; #8DC6 +跇 > yì; #8DC7 +跈 > niăn; #8DC8 +跉 > líng; #8DC9 +跊 > mèi; #8DCA +跋 > bá; #8DCB +跌 > diē; #8DCC +跍 > kū; #8DCD +跎 > túo; #8DCE +跏 > jiā; #8DCF +跐 > cĭ; #8DD0 +跑 > păo; #8DD1 +跒 > qiă; #8DD2 +跓 > zhù; #8DD3 +跔 > jū; #8DD4 +跕 > dié; #8DD5 +跖 > zhī; #8DD6 +跗 > fū; #8DD7 +跘 > pán; #8DD8 +跙 > jŭ; #8DD9 +跚 > shān; #8DDA +跛 > bŏ; #8DDB +跜 > ní; #8DDC +距 > jù; #8DDD +跞 > lì; #8DDE +跟 > gēn; #8DDF +跠 > yí; #8DE0 +跡 > jī; #8DE1 +跢 > dài; #8DE2 +跣 > xiăn; #8DE3 +跤 > jiāo; #8DE4 +跥 > dùo; #8DE5 +跦 > zhū; #8DE6 +跧 > zhuān; #8DE7 +跨 > kuà; #8DE8 +跩 > zhuăi; #8DE9 +跪 > gùi; #8DEA +跫 > qíong; #8DEB +跬 > kŭi; #8DEC +跭 > xiáng; #8DED +跮 > chì; #8DEE +路 > lù; #8DEF +跰 > bèng; #8DF0 +跱 > zhì; #8DF1 +跲 > jiá; #8DF2 +跳 > tiào; #8DF3 +跴 > căi; #8DF4 +践 > jiàn; #8DF5 +跶 > tà; #8DF6 +跷 > qiāo; #8DF7 +跸 > bì; #8DF8 +跹 > xiān; #8DF9 +跺 > dùo; #8DFA +跻 > jī; #8DFB +跼 > jú; #8DFC +跽 > jì; #8DFD +跾 > shú; #8DFE +跿 > tú; #8DFF +踀 > chù; #8E00 +踁 > jìng; #8E01 +踂 > niè; #8E02 +踃 > xiāo; #8E03 +踄 > bó; #8E04 +踅 > chì; #8E05 +踆 > qūn; #8E06 +踇 > mŏu; #8E07 +踈 > shū; #8E08 +踉 > láng; #8E09 +踊 > yŏng; #8E0A +踋 > jiăo; #8E0B +踌 > chóu; #8E0C +踍 > qiāo; #8E0D +踏 > tà; #8E0F +踐 > jiàn; #8E10 +踑 > qí; #8E11 +踒 > wō; #8E12 +踓 > wĕi; #8E13 +踔 > zhúo; #8E14 +踕 > jié; #8E15 +踖 > jí; #8E16 +踗 > niē; #8E17 +踘 > jú; #8E18 +踙 > jū; #8E19 +踚 > lún; #8E1A +踛 > lù; #8E1B +踜 > lèng; #8E1C +踝 > huái; #8E1D +踞 > jù; #8E1E +踟 > chí; #8E1F +踠 > wăn; #8E20 +踡 > quán; #8E21 +踢 > tī; #8E22 +踣 > bó; #8E23 +踤 > zú; #8E24 +踥 > qiè; #8E25 +踦 > jĭ; #8E26 +踧 > cù; #8E27 +踨 > zōng; #8E28 +踩 > căi; #8E29 +踪 > zōng; #8E2A +踫 > pèng; #8E2B +踬 > zhì; #8E2C +踭 > zhēng; #8E2D +踮 > diăn; #8E2E +踯 > zhí; #8E2F +踰 > yú; #8E30 +踱 > dùo; #8E31 +踲 > dùn; #8E32 +踳 > chŭn; #8E33 +踴 > yŏng; #8E34 +踵 > zhŏng; #8E35 +踶 > dì; #8E36 +踷 > zhĕ; #8E37 +踸 > chĕn; #8E38 +踹 > chuài; #8E39 +踺 > jiàn; #8E3A +踻 > guā; #8E3B +踼 > táng; #8E3C +踽 > jŭ; #8E3D +踾 > fú; #8E3E +踿 > zú; #8E3F +蹀 > dié; #8E40 +蹁 > pián; #8E41 +蹂 > róu; #8E42 +蹃 > nùo; #8E43 +蹄 > tí; #8E44 +蹅 > chă; #8E45 +蹆 > tŭi; #8E46 +蹇 > jiăn; #8E47 +蹈 > dào; #8E48 +蹉 > cūo; #8E49 +蹊 > xī; #8E4A +蹋 > tà; #8E4B +蹌 > qiāng; #8E4C +蹍 > zhăn; #8E4D +蹎 > diān; #8E4E +蹏 > tí; #8E4F +蹐 > jí; #8E50 +蹑 > niè; #8E51 +蹒 > mán; #8E52 +蹓 > līu; #8E53 +蹔 > zhàn; #8E54 +蹕 > bì; #8E55 +蹖 > chōng; #8E56 +蹗 > lù; #8E57 +蹘 > liáo; #8E58 +蹙 > cù; #8E59 +蹚 > tāng; #8E5A +蹛 > dài; #8E5B +蹜 > sūo; #8E5C +蹝 > xĭ; #8E5D +蹞 > kŭi; #8E5E +蹟 > jī; #8E5F +蹠 > zhí; #8E60 +蹡 > qiāng; #8E61 +蹢 > dí; #8E62 +蹣 > mán; #8E63 +蹤 > zōng; #8E64 +蹥 > lián; #8E65 +蹦 > bèng; #8E66 +蹧 > zāo; #8E67 +蹨 > niăn; #8E68 +蹩 > bié; #8E69 +蹪 > túi; #8E6A +蹫 > jú; #8E6B +蹬 > dèng; #8E6C +蹭 > cèng; #8E6D +蹮 > xiān; #8E6E +蹯 > fán; #8E6F +蹰 > chú; #8E70 +蹱 > zhōng; #8E71 +蹲 > dūn; #8E72 +蹳 > bō; #8E73 +蹴 > cù; #8E74 +蹵 > zú; #8E75 +蹶 > jué; #8E76 +蹷 > jué; #8E77 +蹸 > lìn; #8E78 +蹹 > tà; #8E79 +蹺 > qiāo; #8E7A +蹻 > qiāo; #8E7B +蹼 > pú; #8E7C +蹽 > liāo; #8E7D +蹾 > dūn; #8E7E +蹿 > cuān; #8E7F +躀 > kuàng; #8E80 +躁 > zào; #8E81 +躂 > tà; #8E82 +躃 > bì; #8E83 +躄 > bì; #8E84 +躅 > zhú; #8E85 +躆 > jù; #8E86 +躇 > chú; #8E87 +躈 > qiào; #8E88 +躉 > dŭn; #8E89 +躊 > chóu; #8E8A +躋 > jī; #8E8B +躌 > wŭ; #8E8C +躍 > yuè; #8E8D +躎 > niăn; #8E8E +躏 > lìn; #8E8F +躐 > liè; #8E90 +躑 > zhí; #8E91 +躒 > lì; #8E92 +躓 > zhì; #8E93 +躔 > chán; #8E94 +躕 > chú; #8E95 +躖 > duàn; #8E96 +躗 > wèi; #8E97 +躘 > lóng; #8E98 +躙 > lìn; #8E99 +躚 > xiān; #8E9A +躛 > wèi; #8E9B +躜 > zuān; #8E9C +躝 > lán; #8E9D +躞 > xiè; #8E9E +躟 > ráng; #8E9F +躠 > xiĕ; #8EA0 +躡 > niè; #8EA1 +躢 > tà; #8EA2 +躣 > qú; #8EA3 +躤 > jiè; #8EA4 +躥 > cuān; #8EA5 +躦 > zuān; #8EA6 +躧 > xĭ; #8EA7 +躨 > kúi; #8EA8 +躩 > jué; #8EA9 +躪 > lìn; #8EAA +身 > shēn; #8EAB +躬 > gōng; #8EAC +躭 > dān; #8EAD +躯 > qū; #8EAF +躰 > tĭ; #8EB0 +躱 > dŭo; #8EB1 +躲 > dŭo; #8EB2 +躳 > gōng; #8EB3 +躴 > láng; #8EB4 +躶 > lŭo; #8EB6 +躷 > ăi; #8EB7 +躸 > jī; #8EB8 +躹 > jú; #8EB9 +躺 > tăng; #8EBA +躽 > yăn; #8EBD +躿 > kāng; #8EBF +軀 > qū; #8EC0 +軁 > lóu; #8EC1 +軂 > lào; #8EC2 +軃 > tŭo; #8EC3 +軄 > zhí; #8EC4 +軆 > tĭ; #8EC6 +軇 > dào; #8EC7 +軉 > yù; #8EC9 +車 > chē; #8ECA +軋 > yà; #8ECB +軌 > gŭi; #8ECC +軍 > jūn; #8ECD +軎 > wèi; #8ECE +軏 > yuè; #8ECF +軐 > xìn; #8ED0 +軑 > dì; #8ED1 +軒 > xuān; #8ED2 +軓 > fàn; #8ED3 +軔 > rèn; #8ED4 +軕 > shān; #8ED5 +軖 > qiáng; #8ED6 +軗 > shū; #8ED7 +軘 > tún; #8ED8 +軙 > chén; #8ED9 +軚 > dài; #8EDA +軛 > è; #8EDB +軜 > nà; #8EDC +軝 > qí; #8EDD +軞 > máo; #8EDE +軟 > ruăn; #8EDF +軠 > rèn; #8EE0 +軡 > făn; #8EE1 +転 > zhuăn; #8EE2 +軣 > hōng; #8EE3 +軤 > hū; #8EE4 +軥 > qú; #8EE5 +軦 > huàng; #8EE6 +軧 > dĭ; #8EE7 +軨 > líng; #8EE8 +軩 > dài; #8EE9 +軪 > āo; #8EEA +軫 > zhĕn; #8EEB +軬 > fàn; #8EEC +軭 > kuāng; #8EED +軮 > ăng; #8EEE +軯 > pēng; #8EEF +軰 > bèi; #8EF0 +軱 > gū; #8EF1 +軲 > kū; #8EF2 +軳 > páo; #8EF3 +軴 > zhù; #8EF4 +軵 > rŏng; #8EF5 +軶 > è; #8EF6 +軷 > bá; #8EF7 +軸 > zhóu; #8EF8 +軹 > zhĭ; #8EF9 +軺 > yáo; #8EFA +軻 > kē; #8EFB +軼 > yì; #8EFC +軽 > qīng; #8EFD +軾 > shì; #8EFE +軿 > píng; #8EFF +輀 > ér; #8F00 +輁 > qíong; #8F01 +輂 > jú; #8F02 +較 > jiào; #8F03 +輄 > guāng; #8F04 +輅 > lù; #8F05 +輆 > kăi; #8F06 +輇 > quán; #8F07 +輈 > zhōu; #8F08 +載 > zài; #8F09 +輊 > zhì; #8F0A +輋 > shē; #8F0B +輌 > liàng; #8F0C +輍 > yù; #8F0D +輎 > shāo; #8F0E +輏 > yóu; #8F0F +輐 > huăn; #8F10 +輑 > yŭn; #8F11 +輒 > zhé; #8F12 +輓 > wăn; #8F13 +輔 > fŭ; #8F14 +輕 > qīng; #8F15 +輖 > zhōu; #8F16 +輗 > ní; #8F17 +輘 > líng; #8F18 +輙 > zhé; #8F19 +輚 > zhàn; #8F1A +輛 > liàng; #8F1B +輜 > zī; #8F1C +輝 > hūi; #8F1D +輞 > wăng; #8F1E +輟 > chùo; #8F1F +輠 > gŭo; #8F20 +輡 > kăn; #8F21 +輢 > yĭ; #8F22 +輣 > péng; #8F23 +輤 > qiàn; #8F24 +輥 > gŭn; #8F25 +輦 > niăn; #8F26 +輧 > pián; #8F27 +輨 > guăn; #8F28 +輩 > bèi; #8F29 +輪 > lún; #8F2A +輫 > pái; #8F2B +輬 > liáng; #8F2C +輭 > ruăn; #8F2D +輮 > róu; #8F2E +輯 > jí; #8F2F +輰 > yáng; #8F30 +輱 > xián; #8F31 +輲 > chuán; #8F32 +輳 > còu; #8F33 +輴 > qūn; #8F34 +輵 > gé; #8F35 +輶 > yóu; #8F36 +輷 > hōng; #8F37 +輸 > shū; #8F38 +輹 > fù; #8F39 +輺 > zī; #8F3A +輻 > fú; #8F3B +輼 > wēn; #8F3C +輽 > bèn; #8F3D +輾 > zhăn; #8F3E +輿 > yú; #8F3F +轀 > wēn; #8F40 +轁 > tāo; #8F41 +轂 > gŭ; #8F42 +轃 > zhēn; #8F43 +轄 > xiá; #8F44 +轅 > yuán; #8F45 +轆 > lù; #8F46 +轇 > jīu; #8F47 +轈 > cháo; #8F48 +轉 > zhuăn; #8F49 +轊 > wèi; #8F4A +轋 > hún; #8F4B +轍 > chè; #8F4D +轎 > jiào; #8F4E +轏 > zhàn; #8F4F +轐 > pú; #8F50 +轑 > lăo; #8F51 +轒 > fén; #8F52 +轓 > fān; #8F53 +轔 > lín; #8F54 +轕 > gé; #8F55 +轖 > sè; #8F56 +轗 > kăn; #8F57 +轘 > huàn; #8F58 +轙 > yĭ; #8F59 +轚 > jí; #8F5A +轛 > dùi; #8F5B +轜 > ér; #8F5C +轝 > yú; #8F5D +轞 > xiàn; #8F5E +轟 > hōng; #8F5F +轠 > lĕi; #8F60 +轡 > pèi; #8F61 +轢 > lì; #8F62 +轣 > lì; #8F63 +轤 > lú; #8F64 +轥 > lìn; #8F65 +车 > chē; #8F66 +轧 > yà; #8F67 +轨 > gŭi; #8F68 +轩 > xuān; #8F69 +轪 > dì; #8F6A +轫 > rèn; #8F6B +转 > zhuăn; #8F6C +轭 > è; #8F6D +轮 > lún; #8F6E +软 > ruăn; #8F6F +轰 > hōng; #8F70 +轱 > kū; #8F71 +轲 > kē; #8F72 +轳 > lú; #8F73 +轴 > zhóu; #8F74 +轵 > zhĭ; #8F75 +轶 > yì; #8F76 +轷 > hū; #8F77 +轸 > zhĕn; #8F78 +轹 > lì; #8F79 +轺 > yáo; #8F7A +轻 > qīng; #8F7B +轼 > shì; #8F7C +载 > zài; #8F7D +轾 > zhì; #8F7E +轿 > jiào; #8F7F +辀 > zhōu; #8F80 +辁 > quán; #8F81 +辂 > lù; #8F82 +较 > jiào; #8F83 +辄 > zhé; #8F84 +辅 > fŭ; #8F85 +辆 > liàng; #8F86 +辇 > niăn; #8F87 +辈 > bèi; #8F88 +辉 > hūi; #8F89 +辊 > gŭn; #8F8A +辋 > wăng; #8F8B +辌 > liáng; #8F8C +辍 > chùo; #8F8D +辎 > zī; #8F8E +辏 > còu; #8F8F +辐 > fú; #8F90 +辑 > jí; #8F91 +辒 > wēn; #8F92 +输 > shū; #8F93 +辔 > pèi; #8F94 +辕 > yuán; #8F95 +辖 > xiá; #8F96 +辗 > zhăn; #8F97 +辘 > lù; #8F98 +辙 > chè; #8F99 +辚 > lín; #8F9A +辛 > xīn; #8F9B +辜 > gū; #8F9C +辝 > cí; #8F9D +辞 > cí; #8F9E +辟 > pì; #8F9F +辠 > zùi; #8FA0 +辡 > biàn; #8FA1 +辢 > là; #8FA2 +辣 > là; #8FA3 +辤 > cí; #8FA4 +辥 > xuē; #8FA5 +辦 > bàn; #8FA6 +辧 > biàn; #8FA7 +辨 > biàn; #8FA8 +辩 > biàn; #8FA9 +辫 > biàn; #8FAB +辬 > bān; #8FAC +辭 > cí; #8FAD +辮 > biàn; #8FAE +辯 > biàn; #8FAF +辰 > chén; #8FB0 +辱 > rù; #8FB1 +農 > nóng; #8FB2 +辳 > nóng; #8FB3 +辴 > zhĕn; #8FB4 +辵 > chùo; #8FB5 +辶 > chùo; #8FB6 +辸 > réng; #8FB8 +边 > biān; #8FB9 +辺 > biān; #8FBA +辽 > liáo; #8FBD +达 > dá; #8FBE +辿 > chān; #8FBF +迀 > gān; #8FC0 +迁 > qiān; #8FC1 +迂 > yū; #8FC2 +迃 > yū; #8FC3 +迄 > qì; #8FC4 +迅 > xùn; #8FC5 +迆 > yĭ; #8FC6 +过 > gùo; #8FC7 +迈 > mài; #8FC8 +迉 > qí; #8FC9 +迊 > zā; #8FCA +迋 > wàng; #8FCB +迌 > jia; #8FCC +迍 > zhūn; #8FCD +迎 > yíng; #8FCE +迏 > tì; #8FCF +运 > yùn; #8FD0 +近 > jìn; #8FD1 +迒 > háng; #8FD2 +迓 > yà; #8FD3 +返 > făn; #8FD4 +迕 > wù; #8FD5 +迖 > dá; #8FD6 +迗 > é; #8FD7 +还 > huán; #8FD8 +这 > zhè; #8FD9 +进 > jìn; #8FDB +远 > yuăn; #8FDC +违 > wéi; #8FDD +连 > lián; #8FDE +迟 > chí; #8FDF +迠 > chè; #8FE0 +迡 > nì; #8FE1 +迢 > tiáo; #8FE2 +迣 > zhì; #8FE3 +迤 > yĭ; #8FE4 +迥 > jĭong; #8FE5 +迦 > jiā; #8FE6 +迧 > chén; #8FE7 +迨 > dài; #8FE8 +迩 > ĕr; #8FE9 +迪 > dí; #8FEA +迫 > pò; #8FEB +迬 > wăng; #8FEC +迭 > dié; #8FED +迮 > zé; #8FEE +迯 > táo; #8FEF +述 > shù; #8FF0 +迱 > túo; #8FF1 +迳 > jìng; #8FF3 +迴 > húi; #8FF4 +迵 > tóng; #8FF5 +迶 > yòu; #8FF6 +迷 > mí; #8FF7 +迸 > bèng; #8FF8 +迹 > jī; #8FF9 +迺 > năi; #8FFA +迻 > yí; #8FFB +迼 > jié; #8FFC +追 > zhūi; #8FFD +迾 > liè; #8FFE +迿 > xùn; #8FFF +退 > tùi; #9000 +送 > sòng; #9001 +适 > guā; #9002 +逃 > táo; #9003 +逄 > páng; #9004 +逅 > hòu; #9005 +逆 > nì; #9006 +逇 > dùn; #9007 +逈 > jĭong; #9008 +选 > xuăn; #9009 +逊 > xùn; #900A +逋 > bū; #900B +逌 > yóu; #900C +逍 > xiāo; #900D +逎 > qíu; #900E +透 > tòu; #900F +逐 > zhú; #9010 +逑 > qíu; #9011 +递 > dì; #9012 +逓 > dì; #9013 +途 > tú; #9014 +逕 > jìng; #9015 +逖 > tì; #9016 +逗 > dòu; #9017 +逘 > yĭ; #9018 +這 > zhè; #9019 +通 > tōng; #901A +逛 > guàng; #901B +逜 > wù; #901C +逝 > shì; #901D +逞 > chĕng; #901E +速 > sù; #901F +造 > zào; #9020 +逡 > qūn; #9021 +逢 > féng; #9022 +連 > lián; #9023 +逤 > sùo; #9024 +逥 > húi; #9025 +逦 > lĭ; #9026 +逨 > lái; #9028 +逩 > bèn; #9029 +逪 > cùo; #902A +逫 > jué; #902B +逬 > bèng; #902C +逭 > huàn; #902D +逮 > dài; #902E +逯 > lù; #902F +逰 > yóu; #9030 +週 > zhōu; #9031 +進 > jìn; #9032 +逳 > yù; #9033 +逴 > chùo; #9034 +逵 > kúi; #9035 +逶 > wēi; #9036 +逷 > tì; #9037 +逸 > yì; #9038 +逹 > dá; #9039 +逺 > yuăn; #903A +逻 > lúo; #903B +逼 > bī; #903C +逽 > nùo; #903D +逾 > yú; #903E +逿 > dàng; #903F +遀 > súi; #9040 +遁 > dùn; #9041 +遂 > sùi; #9042 +遃 > yăn; #9043 +遄 > chuán; #9044 +遅 > chí; #9045 +遆 > tí; #9046 +遇 > yù; #9047 +遈 > shí; #9048 +遉 > zhēn; #9049 +遊 > yóu; #904A +運 > yùn; #904B +遌 > è; #904C +遍 > biàn; #904D +過 > gùo; #904E +遏 > è; #904F +遐 > xiá; #9050 +遑 > huáng; #9051 +遒 > qíu; #9052 +道 > dào; #9053 +達 > dá; #9054 +違 > wéi; #9055 +遗 > yí; #9057 +遘 > gòu; #9058 +遙 > yáo; #9059 +遚 > chù; #905A +遛 > líu; #905B +遜 > xùn; #905C +遝 > tà; #905D +遞 > dì; #905E +遟 > chí; #905F +遠 > yuăn; #9060 +遡 > sù; #9061 +遢 > tà; #9062 +遣 > qiăn; #9063 +遥 > yáo; #9065 +遦 > guàn; #9066 +遧 > zhāng; #9067 +遨 > áo; #9068 +適 > shì; #9069 +遪 > cè; #906A +遫 > chì; #906B +遬 > sù; #906C +遭 > zāo; #906D +遮 > zhē; #906E +遯 > dùn; #906F +遰 > dì; #9070 +遱 > lóu; #9071 +遲 > chí; #9072 +遳 > cūo; #9073 +遴 > lín; #9074 +遵 > zūn; #9075 +遶 > rào; #9076 +遷 > qiān; #9077 +選 > xuăn; #9078 +遹 > yù; #9079 +遺 > yí; #907A +遻 > wù; #907B +遼 > liáo; #907C +遽 > jù; #907D +遾 > shì; #907E +避 > bì; #907F +邀 > yāo; #9080 +邁 > mài; #9081 +邂 > xiè; #9082 +邃 > sùi; #9083 +還 > huán; #9084 +邅 > zhān; #9085 +邆 > téng; #9086 +邇 > ĕr; #9087 +邈 > miăo; #9088 +邉 > biān; #9089 +邊 > biān; #908A +邋 > lá; #908B +邌 > lí; #908C +邍 > yuán; #908D +邎 > yáo; #908E +邏 > lúo; #908F +邐 > lĭ; #9090 +邑 > yì; #9091 +邒 > tíng; #9092 +邓 > dèng; #9093 +邔 > qĭ; #9094 +邕 > yōng; #9095 +邖 > shān; #9096 +邗 > hán; #9097 +邘 > yú; #9098 +邙 > máng; #9099 +邚 > rú; #909A +邛 > qíong; #909B +邝 > kuàng; #909D +邞 > fū; #909E +邟 > kàng; #909F +邠 > bīn; #90A0 +邡 > fāng; #90A1 +邢 > xíng; #90A2 +那 > nà; #90A3 +邤 > xin; #90A4 +邥 > shĕn; #90A5 +邦 > bāng; #90A6 +邧 > yuán; #90A7 +邨 > cūn; #90A8 +邩 > hŭo; #90A9 +邪 > xié; #90AA +邫 > bāng; #90AB +邬 > wū; #90AC +邭 > jù; #90AD +邮 > yóu; #90AE +邯 > hán; #90AF +邰 > tái; #90B0 +邱 > qīu; #90B1 +邲 > bì; #90B2 +邳 > péi; #90B3 +邴 > bĭng; #90B4 +邵 > shào; #90B5 +邶 > bèi; #90B6 +邷 > wă; #90B7 +邸 > dĭ; #90B8 +邹 > zōu; #90B9 +邺 > yè; #90BA +邻 > lín; #90BB +邼 > kuāng; #90BC +邽 > gūi; #90BD +邾 > zhū; #90BE +邿 > shī; #90BF +郀 > kū; #90C0 +郁 > yù; #90C1 +郂 > gāi; #90C2 +郃 > gé; #90C3 +郄 > xì; #90C4 +郅 > zhì; #90C5 +郆 > jí; #90C6 +郇 > xún; #90C7 +郈 > hòu; #90C8 +郉 > xíng; #90C9 +郊 > jiāo; #90CA +郋 > xí; #90CB +郌 > gūi; #90CC +郍 > núo; #90CD +郎 > láng; #90CE +郏 > jiá; #90CF +郐 > kuài; #90D0 +郑 > zhèng; #90D1 +郓 > yùn; #90D3 +郔 > yán; #90D4 +郕 > chéng; #90D5 +郖 > dōu; #90D6 +郗 > chī; #90D7 +郘 > lǚ; #90D8 +郙 > fŭ; #90D9 +郚 > wú; #90DA +郛 > fú; #90DB +郜 > gào; #90DC +郝 > hăo; #90DD +郞 > láng; #90DE +郟 > jiá; #90DF +郠 > gĕng; #90E0 +郡 > jùn; #90E1 +郢 > yĭng; #90E2 +郣 > bó; #90E3 +郤 > xì; #90E4 +郥 > bèi; #90E5 +郦 > lì; #90E6 +郧 > yún; #90E7 +部 > bù; #90E8 +郩 > xiáo; #90E9 +郪 > qī; #90EA +郫 > pí; #90EB +郬 > qīng; #90EC +郭 > gūo; #90ED +郮 > zhou; #90EE +郯 > tán; #90EF +郰 > zōu; #90F0 +郱 > píng; #90F1 +郲 > lái; #90F2 +郳 > ní; #90F3 +郴 > chēn; #90F4 +郵 > yóu; #90F5 +郶 > bù; #90F6 +郷 > xiāng; #90F7 +郸 > dān; #90F8 +郹 > jú; #90F9 +郺 > yōng; #90FA +郻 > qiāo; #90FB +郼 > yī; #90FC +都 > dū; #90FD +郾 > yăn; #90FE +郿 > méi; #90FF +鄀 > rùo; #9100 +鄁 > bèi; #9101 +鄂 > è; #9102 +鄃 > yú; #9103 +鄄 > juàn; #9104 +鄅 > yŭ; #9105 +鄆 > yùn; #9106 +鄇 > hòu; #9107 +鄈 > kúi; #9108 +鄉 > xiāng; #9109 +鄊 > xiāng; #910A +鄋 > sōu; #910B +鄌 > táng; #910C +鄍 > míng; #910D +鄎 > xì; #910E +鄏 > rù; #910F +鄐 > chù; #9110 +鄑 > zī; #9111 +鄒 > zōu; #9112 +鄓 > jú; #9113 +鄔 > wū; #9114 +鄕 > xiāng; #9115 +鄖 > yún; #9116 +鄗 > hào; #9117 +鄘 > yōng; #9118 +鄙 > bĭ; #9119 +鄚 > mò; #911A +鄛 > cháo; #911B +鄜 > fū; #911C +鄝 > liăo; #911D +鄞 > yín; #911E +鄟 > zhuān; #911F +鄠 > hù; #9120 +鄡 > qiāo; #9121 +鄢 > yān; #9122 +鄣 > zhāng; #9123 +鄤 > fàn; #9124 +鄥 > qiāo; #9125 +鄦 > xŭ; #9126 +鄧 > dèng; #9127 +鄨 > bì; #9128 +鄩 > xín; #9129 +鄪 > bì; #912A +鄫 > céng; #912B +鄬 > wéi; #912C +鄭 > zhèng; #912D +鄮 > mào; #912E +鄯 > shàn; #912F +鄰 > lín; #9130 +鄱 > pó; #9131 +鄲 > dān; #9132 +鄳 > méng; #9133 +鄴 > yè; #9134 +鄵 > cāo; #9135 +鄶 > kuài; #9136 +鄷 > fēng; #9137 +鄸 > méng; #9138 +鄹 > zōu; #9139 +鄺 > kuàng; #913A +鄻 > lián; #913B +鄼 > zàn; #913C +鄽 > chán; #913D +鄾 > yōu; #913E +鄿 > qí; #913F +酀 > yān; #9140 +酁 > chán; #9141 +酂 > zàn; #9142 +酃 > líng; #9143 +酄 > huān; #9144 +酅 > xī; #9145 +酆 > fēng; #9146 +酇 > zàn; #9147 +酈 > lì; #9148 +酉 > yŏu; #9149 +酊 > dĭng; #914A +酋 > qíu; #914B +酌 > zhúo; #914C +配 > pèi; #914D +酎 > zhòu; #914E +酏 > yí; #914F +酐 > hăng; #9150 +酑 > yŭ; #9151 +酒 > jĭu; #9152 +酓 > yăn; #9153 +酔 > zùi; #9154 +酕 > máo; #9155 +酖 > dān; #9156 +酗 > xù; #9157 +酘 > tóu; #9158 +酙 > zhēn; #9159 +酚 > fēn; #915A +酝 > yùn; #915D +酞 > tài; #915E +酟 > tiān; #915F +酠 > qiă; #9160 +酡 > túo; #9161 +酢 > zùo; #9162 +酣 > hān; #9163 +酤 > gū; #9164 +酥 > sū; #9165 +酦 > pò; #9166 +酧 > chóu; #9167 +酨 > zài; #9168 +酩 > míng; #9169 +酪 > lùo; #916A +酫 > chùo; #916B +酬 > chóu; #916C +酭 > yòu; #916D +酮 > tóng; #916E +酯 > zhĭ; #916F +酰 > xiān; #9170 +酱 > jiàng; #9171 +酲 > chéng; #9172 +酳 > yìn; #9173 +酴 > tú; #9174 +酵 > xiào; #9175 +酶 > méi; #9176 +酷 > kù; #9177 +酸 > suān; #9178 +酹 > lèi; #9179 +酺 > pú; #917A +酻 > zùi; #917B +酼 > hăi; #917C +酽 > yàn; #917D +酾 > xĭ; #917E +酿 > niàng; #917F +醀 > wéi; #9180 +醁 > lù; #9181 +醂 > lăn; #9182 +醃 > yān; #9183 +醄 > táo; #9184 +醅 > pēi; #9185 +醆 > zhăn; #9186 +醇 > chún; #9187 +醈 > tán; #9188 +醉 > zùi; #9189 +醊 > chùo; #918A +醋 > cù; #918B +醌 > kūn; #918C +醍 > tí; #918D +醎 > mián; #918E +醏 > dū; #918F +醐 > hú; #9190 +醑 > xŭ; #9191 +醒 > xĭng; #9192 +醓 > tăn; #9193 +醔 > jīu; #9194 +醕 > chún; #9195 +醖 > yùn; #9196 +醗 > pò; #9197 +醘 > kè; #9198 +醙 > sōu; #9199 +醚 > mí; #919A +醛 > quán; #919B +醜 > chŏu; #919C +醝 > cúo; #919D +醞 > yùn; #919E +醟 > yòng; #919F +醠 > àng; #91A0 +醡 > zhà; #91A1 +醢 > hăi; #91A2 +醣 > táng; #91A3 +醤 > jiàng; #91A4 +醥 > piăo; #91A5 +醦 > shăn; #91A6 +醧 > yù; #91A7 +醨 > lí; #91A8 +醩 > záo; #91A9 +醪 > láo; #91AA +醫 > yī; #91AB +醬 > jiàng; #91AC +醭 > pū; #91AD +醮 > jiào; #91AE +醯 > xī; #91AF +醰 > tán; #91B0 +醱 > pò; #91B1 +醲 > nóng; #91B2 +醳 > yì; #91B3 +醴 > lĭ; #91B4 +醵 > jù; #91B5 +醶 > jiào; #91B6 +醷 > yì; #91B7 +醸 > niàng; #91B8 +醹 > rú; #91B9 +醺 > xūn; #91BA +醻 > chóu; #91BB +醼 > yàn; #91BC +醽 > líng; #91BD +醾 > mí; #91BE +醿 > mí; #91BF +釀 > niàng; #91C0 +釁 > xìn; #91C1 +釂 > jiào; #91C2 +釃 > xĭ; #91C3 +釄 > mí; #91C4 +釅 > yàn; #91C5 +釆 > biàn; #91C6 +采 > căi; #91C7 +釈 > shì; #91C8 +釉 > yòu; #91C9 +释 > shì; #91CA +釋 > shì; #91CB +里 > lĭ; #91CC +重 > zhòng; #91CD +野 > yĕ; #91CE +量 > liàng; #91CF +釐 > lí; #91D0 +金 > jīn; #91D1 +釒 > jīn' 'zì' 'páng; #91D2 +釓 > qíu; #91D3 +釔 > yĭ; #91D4 +釕 > diăo; #91D5 +釖 > dāo; #91D6 +釗 > zhāo; #91D7 +釘 > dīng; #91D8 +釙 > pò; #91D9 +釚 > qíu; #91DA +釛 > hé; #91DB +釜 > fŭ; #91DC +針 > zhēn; #91DD +釞 > zhí; #91DE +釟 > bā; #91DF +釠 > luàn; #91E0 +釡 > fŭ; #91E1 +釢 > nái; #91E2 +釣 > diào; #91E3 +釤 > shàn; #91E4 +釥 > qiăo; #91E5 +釦 > kòu; #91E6 +釧 > chuàn; #91E7 +釨 > zĭ; #91E8 +釩 > fán; #91E9 +釪 > yú; #91EA +釫 > huá; #91EB +釬 > hàn; #91EC +釭 > gōng; #91ED +釮 > qí; #91EE +釯 > máng; #91EF +釰 > rì; #91F0 +釱 > dì; #91F1 +釲 > sì; #91F2 +釳 > xì; #91F3 +釴 > yì; #91F4 +釵 > chāi; #91F5 +釶 > shī; #91F6 +釷 > tŭ; #91F7 +釸 > xì; #91F8 +釹 > nǚ; #91F9 +釺 > qiān; #91FA +釼 > jiàn; #91FC +釽 > pī; #91FD +釾 > yé; #91FE +釿 > yín; #91FF +鈀 > bă; #9200 +鈁 > fāng; #9201 +鈂 > chén; #9202 +鈃 > xíng; #9203 +鈄 > tŏu; #9204 +鈅 > yuè; #9205 +鈆 > yán; #9206 +鈇 > fū; #9207 +鈈 > pī; #9208 +鈉 > nà; #9209 +鈊 > xīn; #920A +鈋 > é; #920B +鈌 > jué; #920C +鈍 > dùn; #920D +鈎 > gōu; #920E +鈏 > yĭn; #920F +鈐 > qián; #9210 +鈑 > băn; #9211 +鈒 > jí; #9212 +鈓 > rén; #9213 +鈔 > chāo; #9214 +鈕 > nĭu; #9215 +鈖 > fēn; #9216 +鈗 > yŭn; #9217 +鈘 > jĭ; #9218 +鈙 > qín; #9219 +鈚 > pí; #921A +鈛 > gūo; #921B +鈜 > hóng; #921C +鈝 > yín; #921D +鈞 > jūn; #921E +鈟 > shī; #921F +鈠 > yì; #9220 +鈡 > zhōng; #9221 +鈢 > niē; #9222 +鈣 > gài; #9223 +鈤 > rì; #9224 +鈥 > húo; #9225 +鈦 > tài; #9226 +鈧 > kàng; #9227 +鈬 > dúo; #922C +鈭 > zī; #922D +鈮 > nĭ; #922E +鈯 > tú; #922F +鈰 > shì; #9230 +鈱 > mín; #9231 +鈲 > gū; #9232 +鈳 > ē; #9233 +鈴 > líng; #9234 +鈵 > bìng; #9235 +鈶 > yí; #9236 +鈷 > gū; #9237 +鈸 > bá; #9238 +鈹 > pī; #9239 +鈺 > yù; #923A +鈻 > sì; #923B +鈼 > zúo; #923C +鈽 > bù; #923D +鈾 > yóu; #923E +鈿 > diàn; #923F +鉀 > jiă; #9240 +鉁 > zhēn; #9241 +鉂 > shĭ; #9242 +鉃 > shì; #9243 +鉄 > tiĕ; #9244 +鉅 > jù; #9245 +鉆 > zhān; #9246 +鉇 > shī; #9247 +鉈 > shé; #9248 +鉉 > xuàn; #9249 +鉊 > zhāo; #924A +鉋 > bào; #924B +鉌 > hé; #924C +鉍 > bì; #924D +鉎 > shēng; #924E +鉏 > chú; #924F +鉐 > shí; #9250 +鉑 > bó; #9251 +鉒 > zhù; #9252 +鉓 > chì; #9253 +鉔 > zā; #9254 +鉕 > pō; #9255 +鉖 > tóng; #9256 +鉗 > qián; #9257 +鉘 > fú; #9258 +鉙 > zhăi; #9259 +鉚 > lĭu; #925A +鉛 > qiān; #925B +鉜 > fú; #925C +鉝 > lì; #925D +鉞 > yuè; #925E +鉟 > pī; #925F +鉠 > yāng; #9260 +鉡 > bàn; #9261 +鉢 > bō; #9262 +鉣 > jié; #9263 +鉤 > gōu; #9264 +鉥 > shù; #9265 +鉦 > zhēng; #9266 +鉧 > mŭ; #9267 +鉨 > nĭ; #9268 +鉩 > niē; #9269 +鉪 > dì; #926A +鉫 > jiā; #926B +鉬 > mù; #926C +鉭 > dàn; #926D +鉮 > shēn; #926E +鉯 > yĭ; #926F +鉰 > sī; #9270 +鉱 > kuàng; #9271 +鉲 > kă; #9272 +鉳 > bĕi; #9273 +鉴 > jiàn; #9274 +鉵 > tóng; #9275 +鉶 > xíng; #9276 +鉷 > hóng; #9277 +鉸 > jiăo; #9278 +鉹 > chĭ; #9279 +鉺 > èr; #927A +鉻 > gè; #927B +鉼 > bĭng; #927C +鉽 > shì; #927D +鉾 > móu; #927E +鉿 > jiá; #927F +銀 > yín; #9280 +銁 > jūn; #9281 +銂 > zhōu; #9282 +銃 > chòng; #9283 +銄 > shàng; #9284 +銅 > tóng; #9285 +銆 > mò; #9286 +銇 > lèi; #9287 +銈 > jī; #9288 +銉 > yù; #9289 +銊 > xù; #928A +銋 > rén; #928B +銌 > zùn; #928C +銍 > zhì; #928D +銎 > qīong; #928E +銏 > shàn; #928F +銐 > chì; #9290 +銑 > xiăn; #9291 +銒 > xíng; #9292 +銓 > quán; #9293 +銔 > pī; #9294 +銕 > tiĕ; #9295 +銖 > zhū; #9296 +銗 > hóu; #9297 +銘 > míng; #9298 +銙 > kuă; #9299 +銚 > yáo; #929A +銛 > xiān; #929B +銜 > xián; #929C +銝 > xīu; #929D +銞 > jūn; #929E +銟 > chā; #929F +銠 > lăo; #92A0 +銡 > jí; #92A1 +銢 > pĭ; #92A2 +銣 > rŭ; #92A3 +銤 > mĭ; #92A4 +銥 > yĭ; #92A5 +銦 > yīn; #92A6 +銧 > guāng; #92A7 +銨 > ān; #92A8 +銩 > diōu; #92A9 +銪 > yŏu; #92AA +銫 > sè; #92AB +銬 > kào; #92AC +銭 > qián; #92AD +銮 > luán; #92AE +銰 > āi; #92B0 +銱 > diào; #92B1 +銲 > hàn; #92B2 +銳 > rùi; #92B3 +銴 > shì; #92B4 +銵 > kēng; #92B5 +銶 > qíu; #92B6 +銷 > xiāo; #92B7 +銸 > zhé; #92B8 +銹 > xìu; #92B9 +銺 > zàng; #92BA +銻 > tì; #92BB +銼 > cùo; #92BC +銽 > guā; #92BD +銾 > gŏng; #92BE +銿 > zhōng; #92BF +鋀 > dòu; #92C0 +鋁 > lǚ; #92C1 +鋂 > méi; #92C2 +鋃 > láng; #92C3 +鋄 > wăn; #92C4 +鋅 > xīn; #92C5 +鋆 > yún; #92C6 +鋇 > bèi; #92C7 +鋈 > wù; #92C8 +鋉 > sù; #92C9 +鋊 > yù; #92CA +鋋 > chán; #92CB +鋌 > tĭng; #92CC +鋍 > bó; #92CD +鋎 > hàn; #92CE +鋏 > jiá; #92CF +鋐 > hóng; #92D0 +鋑 > cuān; #92D1 +鋒 > fēng; #92D2 +鋓 > chān; #92D3 +鋔 > wăn; #92D4 +鋕 > zhì; #92D5 +鋖 > sī; #92D6 +鋗 > xuān; #92D7 +鋘 > wú; #92D8 +鋙 > wú; #92D9 +鋚 > tiáo; #92DA +鋛 > gŏng; #92DB +鋜 > zhúo; #92DC +鋝 > lǜe; #92DD +鋞 > xíng; #92DE +鋟 > qiān; #92DF +鋠 > shèn; #92E0 +鋡 > hán; #92E1 +鋢 > lǜe; #92E2 +鋣 > xié; #92E3 +鋤 > chú; #92E4 +鋥 > zhèng; #92E5 +鋦 > jú; #92E6 +鋧 > xiàn; #92E7 +鋨 > tiĕ; #92E8 +鋩 > máng; #92E9 +鋪 > pū; #92EA +鋫 > lí; #92EB +鋬 > pàn; #92EC +鋭 > rùi; #92ED +鋮 > chéng; #92EE +鋯 > gào; #92EF +鋰 > lĭ; #92F0 +鋱 > tè; #92F1 +鋳 > zhù; #92F3 +鋵 > tū; #92F5 +鋶 > lĭu; #92F6 +鋷 > zùi; #92F7 +鋸 > jù; #92F8 +鋹 > chăng; #92F9 +鋺 > yuān; #92FA +鋻 > jiàn; #92FB +鋼 > gāng; #92FC +鋽 > diào; #92FD +鋾 > táo; #92FE +鋿 > cháng; #92FF +錀 > lún; #9300 +錁 > kuă; #9301 +錂 > líng; #9302 +錃 > bēi; #9303 +錄 > lù; #9304 +錅 > lí; #9305 +錆 > qiāng; #9306 +錇 > póu; #9307 +錈 > juàn; #9308 +錉 > mín; #9309 +錊 > zùi; #930A +錋 > péng; #930B +錌 > àn; #930C +錍 > pí; #930D +錎 > xiàn; #930E +錏 > yà; #930F +錐 > zhūi; #9310 +錑 > lèi; #9311 +錒 > ā; #9312 +錓 > kōng; #9313 +錔 > tà; #9314 +錕 > kūn; #9315 +錖 > dŭ; #9316 +錗 > wèi; #9317 +錘 > chúi; #9318 +錙 > zī; #9319 +錚 > zhēng; #931A +錛 > bēn; #931B +錜 > niē; #931C +錝 > cóng; #931D +錞 > qún; #931E +錟 > tán; #931F +錠 > dìng; #9320 +錡 > qí; #9321 +錢 > qián; #9322 +錣 > zhúo; #9323 +錤 > qí; #9324 +錥 > yù; #9325 +錦 > jĭn; #9326 +錧 > guăn; #9327 +錨 > máo; #9328 +錩 > chāng; #9329 +錪 > tiăn; #932A +錫 > xí; #932B +錬 > liàn; #932C +錭 > táo; #932D +錮 > gù; #932E +錯 > cùo; #932F +錰 > shù; #9330 +錱 > zhēn; #9331 +録 > lù; #9332 +錳 > mĕng; #9333 +錴 > lù; #9334 +錵 > huā; #9335 +錶 > biăo; #9336 +錷 > gá; #9337 +錸 > lái; #9338 +錹 > kĕn; #9339 +錼 > nài; #933C +錽 > wăn; #933D +錾 > zàn; #933E +鍀 > dé; #9340 +鍁 > xiān; #9341 +鍃 > hūo; #9343 +鍄 > liàng; #9344 +鍆 > mén; #9346 +鍇 > kăi; #9347 +鍈 > yīng; #9348 +鍉 > dī; #9349 +鍊 > liàn; #934A +鍋 > gūo; #934B +鍌 > xiăn; #934C +鍍 > dù; #934D +鍎 > tú; #934E +鍏 > wéi; #934F +鍐 > cōng; #9350 +鍑 > fù; #9351 +鍒 > róu; #9352 +鍓 > jí; #9353 +鍔 > è; #9354 +鍕 > róu; #9355 +鍖 > chĕn; #9356 +鍗 > tí; #9357 +鍘 > zhá; #9358 +鍙 > hòng; #9359 +鍚 > yáng; #935A +鍛 > duàn; #935B +鍜 > xiā; #935C +鍝 > yú; #935D +鍞 > kēng; #935E +鍟 > xīng; #935F +鍠 > huáng; #9360 +鍡 > wĕi; #9361 +鍢 > fù; #9362 +鍣 > zhāo; #9363 +鍤 > chá; #9364 +鍥 > qiè; #9365 +鍦 > shé; #9366 +鍧 > hōng; #9367 +鍨 > kúi; #9368 +鍩 > tiăn; #9369 +鍪 > móu; #936A +鍫 > qiāo; #936B +鍬 > qiāo; #936C +鍭 > hóu; #936D +鍮 > tōu; #936E +鍯 > cōng; #936F +鍰 > huán; #9370 +鍱 > yè; #9371 +鍲 > mín; #9372 +鍳 > jiàn; #9373 +鍴 > duān; #9374 +鍵 > jiàn; #9375 +鍶 > sōng; #9376 +鍷 > kūi; #9377 +鍸 > hú; #9378 +鍹 > xuān; #9379 +鍺 > dŭo; #937A +鍻 > jié; #937B +鍼 > zhēn; #937C +鍽 > biān; #937D +鍾 > zhōng; #937E +鍿 > zī; #937F +鎀 > xīu; #9380 +鎁 > yé; #9381 +鎂 > mĕi; #9382 +鎃 > pài; #9383 +鎄 > āi; #9384 +鎅 > jiè; #9385 +鎇 > méi; #9387 +鎈 > chūo; #9388 +鎉 > tà; #9389 +鎊 > bàng; #938A +鎋 > xiá; #938B +鎌 > lián; #938C +鎍 > sŭo; #938D +鎎 > xì; #938E +鎏 > líu; #938F +鎐 > zú; #9390 +鎑 > yè; #9391 +鎒 > nòu; #9392 +鎓 > wēng; #9393 +鎔 > róng; #9394 +鎕 > táng; #9395 +鎖 > sŭo; #9396 +鎗 > qiāng; #9397 +鎘 > gé; #9398 +鎙 > shùo; #9399 +鎚 > chúi; #939A +鎛 > bó; #939B +鎜 > pán; #939C +鎝 > sà; #939D +鎞 > bì; #939E +鎟 > săng; #939F +鎠 > gāng; #93A0 +鎡 > zī; #93A1 +鎢 > wù; #93A2 +鎣 > yìng; #93A3 +鎤 > huăng; #93A4 +鎥 > tiáo; #93A5 +鎦 > líu; #93A6 +鎧 > kăi; #93A7 +鎨 > sŭn; #93A8 +鎩 > shā; #93A9 +鎪 > sōu; #93AA +鎫 > wàn; #93AB +鎬 > hào; #93AC +鎭 > zhèn; #93AD +鎮 > zhèn; #93AE +鎯 > lŭo; #93AF +鎰 > yì; #93B0 +鎱 > yuán; #93B1 +鎲 > tăng; #93B2 +鎳 > niè; #93B3 +鎴 > xí; #93B4 +鎵 > jiā; #93B5 +鎶 > gē; #93B6 +鎷 > mă; #93B7 +鎸 > juān; #93B8 +鎻 > sŭo; #93BB +鎿 > ná; #93BF +鏀 > lŭ; #93C0 +鏁 > sŭo; #93C1 +鏂 > ōu; #93C2 +鏃 > zú; #93C3 +鏄 > tuán; #93C4 +鏅 > xīu; #93C5 +鏆 > guàn; #93C6 +鏇 > xuàn; #93C7 +鏈 > liàn; #93C8 +鏉 > shòu; #93C9 +鏊 > áo; #93CA +鏋 > măn; #93CB +鏌 > mò; #93CC +鏍 > lúo; #93CD +鏎 > bì; #93CE +鏏 > wèi; #93CF +鏐 > líu; #93D0 +鏑 > dí; #93D1 +鏒 > qiāo; #93D2 +鏓 > cōng; #93D3 +鏔 > yí; #93D4 +鏕 > lù; #93D5 +鏖 > áo; #93D6 +鏗 > kēng; #93D7 +鏘 > qiāng; #93D8 +鏙 > cūi; #93D9 +鏚 > qì; #93DA +鏛 > cháng; #93DB +鏜 > tāng; #93DC +鏝 > màn; #93DD +鏞 > yōng; #93DE +鏟 > chăn; #93DF +鏠 > fēng; #93E0 +鏡 > jìng; #93E1 +鏢 > biāo; #93E2 +鏣 > shù; #93E3 +鏤 > lòu; #93E4 +鏥 > xìu; #93E5 +鏦 > cōng; #93E6 +鏧 > lóng; #93E7 +鏨 > zàn; #93E8 +鏩 > jiàn; #93E9 +鏪 > cáo; #93EA +鏫 > lí; #93EB +鏬 > xià; #93EC +鏭 > xī; #93ED +鏮 > kāng; #93EE +鏰 > bèng; #93F0 +鏳 > zhēng; #93F3 +鏴 > lù; #93F4 +鏵 > huá; #93F5 +鏶 > jí; #93F6 +鏷 > pú; #93F7 +鏸 > hùi; #93F8 +鏹 > qiāng; #93F9 +鏺 > pō; #93FA +鏻 > lín; #93FB +鏼 > sŭo; #93FC +鏽 > xìu; #93FD +鏾 > săn; #93FE +鏿 > chēng; #93FF +鐀 > kùi; #9400 +鐁 > sī; #9401 +鐂 > lìu; #9402 +鐃 > náo; #9403 +鐄 > héng; #9404 +鐅 > piĕ; #9405 +鐆 > sùi; #9406 +鐇 > fán; #9407 +鐈 > qiáo; #9408 +鐉 > quān; #9409 +鐊 > yáng; #940A +鐋 > tàng; #940B +鐌 > xiàng; #940C +鐍 > jué; #940D +鐎 > jiāo; #940E +鐏 > zūn; #940F +鐐 > liáo; #9410 +鐑 > jié; #9411 +鐒 > láo; #9412 +鐓 > dùi; #9413 +鐔 > tán; #9414 +鐕 > zān; #9415 +鐖 > jī; #9416 +鐗 > jiăn; #9417 +鐘 > zhōng; #9418 +鐙 > dēng; #9419 +鐚 > yà; #941A +鐛 > yìng; #941B +鐜 > dùi; #941C +鐝 > jué; #941D +鐞 > nòu; #941E +鐟 > tì; #941F +鐠 > pŭ; #9420 +鐡 > tiĕ; #9421 +鐤 > dĭng; #9424 +鐥 > shàn; #9425 +鐦 > kāi; #9426 +鐧 > jiăn; #9427 +鐨 > fèi; #9428 +鐩 > sùi; #9429 +鐪 > lŭ; #942A +鐫 > juān; #942B +鐬 > hùi; #942C +鐭 > yù; #942D +鐮 > lián; #942E +鐯 > zhúo; #942F +鐰 > qiāo; #9430 +鐱 > qiān; #9431 +鐲 > zhúo; #9432 +鐳 > léi; #9433 +鐴 > bì; #9434 +鐵 > tiĕ; #9435 +鐶 > huán; #9436 +鐷 > yè; #9437 +鐸 > dúo; #9438 +鐹 > gŭo; #9439 +鐺 > dāng; #943A +鐻 > jù; #943B +鐼 > fén; #943C +鐽 > dá; #943D +鐾 > bèi; #943E +鐿 > yì; #943F +鑀 > ài; #9440 +鑁 > zōng; #9441 +鑂 > xùn; #9442 +鑃 > diào; #9443 +鑄 > zhù; #9444 +鑅 > héng; #9445 +鑆 > zhùi; #9446 +鑇 > jī; #9447 +鑈 > niē; #9448 +鑉 > tà; #9449 +鑊 > hùo; #944A +鑋 > qìng; #944B +鑌 > bīn; #944C +鑍 > yīng; #944D +鑎 > kùi; #944E +鑏 > níng; #944F +鑐 > xū; #9450 +鑑 > jiàn; #9451 +鑒 > jiàn; #9452 +鑔 > chă; #9454 +鑕 > zhì; #9455 +鑖 > miè; #9456 +鑗 > lí; #9457 +鑘 > léi; #9458 +鑙 > jī; #9459 +鑚 > zuàn; #945A +鑛 > kuàng; #945B +鑜 > shàng; #945C +鑝 > péng; #945D +鑞 > là; #945E +鑟 > dú; #945F +鑠 > shùo; #9460 +鑡 > chùo; #9461 +鑢 > lǜ; #9462 +鑣 > biāo; #9463 +鑤 > bào; #9464 +鑥 > lŭ; #9465 +鑨 > lóng; #9468 +鑩 > è; #9469 +鑪 > lú; #946A +鑫 > xīn; #946B +鑬 > jiàn; #946C +鑭 > làn; #946D +鑮 > bó; #946E +鑯 > jiān; #946F +鑰 > yào; #9470 +鑱 > chán; #9471 +鑲 > xiāng; #9472 +鑳 > jiàn; #9473 +鑴 > xī; #9474 +鑵 > guàn; #9475 +鑶 > cáng; #9476 +鑷 > niè; #9477 +鑸 > lĕi; #9478 +鑹 > cuàn; #9479 +鑺 > qú; #947A +鑻 > pàn; #947B +鑼 > lúo; #947C +鑽 > zuàn; #947D +鑾 > luán; #947E +鑿 > záo; #947F +钀 > niè; #9480 +钁 > jué; #9481 +钂 > tăng; #9482 +钃 > shŭ; #9483 +钄 > lán; #9484 +钅 > jīn; #9485 +钆 > qíu; #9486 +钇 > yĭ; #9487 +针 > zhēn; #9488 +钉 > dīng; #9489 +钊 > zhāo; #948A +钋 > pò; #948B +钌 > diăo; #948C +钍 > tŭ; #948D +钎 > qiān; #948E +钏 > chuàn; #948F +钐 > shàn; #9490 +钑 > jí; #9491 +钒 > fán; #9492 +钓 > diào; #9493 +钔 > mén; #9494 +钕 > nǚ; #9495 +钖 > xí; #9496 +钗 > chāi; #9497 +钘 > xíng; #9498 +钙 > gài; #9499 +钚 > bù; #949A +钛 > tài; #949B +钜 > jù; #949C +钝 > dùn; #949D +钞 > chāo; #949E +钟 > zhōng; #949F +钠 > nà; #94A0 +钡 > bèi; #94A1 +钢 > gāng; #94A2 +钣 > băn; #94A3 +钤 > qián; #94A4 +钥 > yào; #94A5 +钦 > qīn; #94A6 +钧 > jūn; #94A7 +钨 > wù; #94A8 +钩 > gōu; #94A9 +钪 > kàng; #94AA +钫 > fāng; #94AB +钬 > húo; #94AC +钭 > tŏu; #94AD +钮 > nĭu; #94AE +钯 > bă; #94AF +钰 > yù; #94B0 +钱 > qián; #94B1 +钲 > zhēng; #94B2 +钳 > qián; #94B3 +钴 > gū; #94B4 +钵 > bō; #94B5 +钶 > ē; #94B6 +钷 > pō; #94B7 +钸 > bù; #94B8 +钹 > bá; #94B9 +钺 > yuè; #94BA +钻 > zuàn; #94BB +钼 > mù; #94BC +钽 > dàn; #94BD +钾 > jiă; #94BE +钿 > diàn; #94BF +铀 > yóu; #94C0 +铁 > tiĕ; #94C1 +铂 > bó; #94C2 +铃 > líng; #94C3 +铄 > shùo; #94C4 +铅 > qiān; #94C5 +铆 > lĭu; #94C6 +铇 > bào; #94C7 +铈 > shì; #94C8 +铉 > xuàn; #94C9 +铊 > shé; #94CA +铋 > bì; #94CB +铌 > nĭ; #94CC +铍 > pī; #94CD +铎 > dúo; #94CE +铏 > xíng; #94CF +铐 > kào; #94D0 +铑 > lăo; #94D1 +铒 > èr; #94D2 +铓 > máng; #94D3 +铔 > yà; #94D4 +铕 > yŏu; #94D5 +铖 > chéng; #94D6 +铗 > jiá; #94D7 +铘 > yé; #94D8 +铙 > náo; #94D9 +铚 > zhì; #94DA +铛 > dāng; #94DB +铜 > tóng; #94DC +铝 > lǚ; #94DD +铞 > diào; #94DE +铟 > yīn; #94DF +铠 > kăi; #94E0 +铡 > zhá; #94E1 +铢 > zhū; #94E2 +铣 > xiăn; #94E3 +铤 > tĭng; #94E4 +铥 > dīu; #94E5 +铦 > xiān; #94E6 +铧 > huá; #94E7 +铨 > quán; #94E8 +铩 > shā; #94E9 +铪 > jiá; #94EA +铫 > yáo; #94EB +铬 > gè; #94EC +铭 > míng; #94ED +铮 > zhēng; #94EE +铯 > sè; #94EF +铰 > jiăo; #94F0 +铱 > yĭ; #94F1 +铲 > chăn; #94F2 +铳 > chòng; #94F3 +铴 > tàng; #94F4 +铵 > ān; #94F5 +银 > yín; #94F6 +铷 > rŭ; #94F7 +铸 > zhù; #94F8 +铹 > láo; #94F9 +铺 > pū; #94FA +铻 > wú; #94FB +铼 > lái; #94FC +铽 > tè; #94FD +链 > liàn; #94FE +铿 > kēng; #94FF +销 > xiāo; #9500 +锁 > sŭo; #9501 +锂 > lĭ; #9502 +锃 > zhèng; #9503 +锄 > chú; #9504 +锅 > gūo; #9505 +锆 > gào; #9506 +锇 > tiĕ; #9507 +锈 > xìu; #9508 +锉 > cùo; #9509 +锊 > lǜe; #950A +锋 > fēng; #950B +锌 > xīn; #950C +锍 > lĭu; #950D +锎 > kāi; #950E +锏 > jiăn; #950F +锐 > rùi; #9510 +锑 > tì; #9511 +锒 > láng; #9512 +锓 > qiān; #9513 +锔 > jú; #9514 +锕 > ā; #9515 +锖 > qiāng; #9516 +锗 > dŭo; #9517 +锘 > tiăn; #9518 +错 > cùo; #9519 +锚 > máo; #951A +锛 > bēn; #951B +锜 > qí; #951C +锝 > dé; #951D +锞 > kuă; #951E +锟 > kūn; #951F +锠 > chāng; #9520 +锡 > xí; #9521 +锢 > gù; #9522 +锣 > lúo; #9523 +锤 > chúi; #9524 +锥 > zhūi; #9525 +锦 > jĭn; #9526 +锧 > zhì; #9527 +锨 > xiān; #9528 +锩 > juàn; #9529 +锪 > hūo; #952A +锫 > póu; #952B +锬 > tán; #952C +锭 > dìng; #952D +键 > jiàn; #952E +锯 > jù; #952F +锰 > mĕng; #9530 +锱 > zī; #9531 +锲 > qiè; #9532 +锳 > yīng; #9533 +锴 > kăi; #9534 +锵 > qiāng; #9535 +锶 > sōng; #9536 +锷 > è; #9537 +锸 > chá; #9538 +锹 > qiāo; #9539 +锺 > zhōng; #953A +锻 > duàn; #953B +锼 > sōu; #953C +锽 > huáng; #953D +锾 > huán; #953E +锿 > āi; #953F +镀 > dù; #9540 +镁 > mĕi; #9541 +镂 > lòu; #9542 +镃 > zī; #9543 +镄 > fèi; #9544 +镅 > méi; #9545 +镆 > mò; #9546 +镇 > zhèn; #9547 +镈 > bó; #9548 +镉 > gé; #9549 +镊 > niè; #954A +镋 > tăng; #954B +镌 > juān; #954C +镍 > niè; #954D +镎 > ná; #954E +镏 > líu; #954F +镐 > hào; #9550 +镑 > bàng; #9551 +镒 > yì; #9552 +镓 > jiā; #9553 +镔 > bīn; #9554 +镕 > róng; #9555 +镖 > biāo; #9556 +镗 > tāng; #9557 +镘 > màn; #9558 +镙 > lúo; #9559 +镚 > bèng; #955A +镛 > yōng; #955B +镜 > jìng; #955C +镝 > dí; #955D +镞 > zú; #955E +镟 > xuàn; #955F +镠 > líu; #9560 +镡 > tán; #9561 +镢 > jué; #9562 +镣 > liáo; #9563 +镤 > pú; #9564 +镥 > lŭ; #9565 +镦 > dùi; #9566 +镧 > làn; #9567 +镨 > pŭ; #9568 +镩 > cuàn; #9569 +镪 > qiāng; #956A +镫 > dēng; #956B +镬 > hùo; #956C +镭 > léi; #956D +镮 > huán; #956E +镯 > zhúo; #956F +镰 > lián; #9570 +镱 > yì; #9571 +镲 > chă; #9572 +镳 > biāo; #9573 +镴 > là; #9574 +镵 > chán; #9575 +镶 > xiāng; #9576 +長 > cháng; #9577 +镸 > cháng; #9578 +镹 > jĭu; #9579 +镺 > ăo; #957A +镻 > dié; #957B +镼 > qū; #957C +镽 > liăo; #957D +镾 > mí; #957E +长 > cháng; #957F +門 > mén; #9580 +閁 > mà; #9581 +閂 > shuān; #9582 +閃 > shăn; #9583 +閄 > hùo; #9584 +閅 > mén; #9585 +閆 > yàn; #9586 +閇 > bì; #9587 +閈 > hàn; #9588 +閉 > bì; #9589 +開 > kāi; #958B +閌 > kàng; #958C +閍 > bēng; #958D +閎 > hóng; #958E +閏 > rùn; #958F +閐 > sàn; #9590 +閑 > xián; #9591 +閒 > xián; #9592 +間 > jiān; #9593 +閔 > mĭn; #9594 +閕 > xiā; #9595 +閗 > dòu; #9597 +閘 > zhá; #9598 +閙 > nào; #9599 +閚 > jian; #959A +閛 > pēng; #959B +閜 > xiă; #959C +閝 > líng; #959D +閞 > biàn; #959E +閟 > bì; #959F +閠 > rùn; #95A0 +閡 > hé; #95A1 +関 > guān; #95A2 +閣 > gé; #95A3 +閤 > gé; #95A4 +閥 > fá; #95A5 +閦 > chù; #95A6 +閧 > hòng; #95A7 +閨 > gūi; #95A8 +閩 > mĭn; #95A9 +閫 > kŭn; #95AB +閬 > lăng; #95AC +閭 > lǘ; #95AD +閮 > tíng; #95AE +閯 > shà; #95AF +閰 > jú; #95B0 +閱 > yuè; #95B1 +閲 > yuè; #95B2 +閳 > chăn; #95B3 +閴 > qù; #95B4 +閵 > lìn; #95B5 +閶 > chāng; #95B6 +閷 > shài; #95B7 +閸 > kŭn; #95B8 +閹 > yān; #95B9 +閺 > mín; #95BA +閻 > yán; #95BB +閼 > è; #95BC +閽 > hūn; #95BD +閾 > yù; #95BE +閿 > wén; #95BF +闀 > xiàng; #95C0 +闁 > bao; #95C1 +闂 > xiàng; #95C2 +闃 > qù; #95C3 +闄 > yăo; #95C4 +闅 > wén; #95C5 +闆 > băn; #95C6 +闇 > àn; #95C7 +闈 > wéi; #95C8 +闉 > yīn; #95C9 +闊 > kùo; #95CA +闋 > què; #95CB +闌 > lán; #95CC +闍 > dū; #95CD +闐 > tián; #95D0 +闑 > niè; #95D1 +闒 > tà; #95D2 +闓 > kăi; #95D3 +闔 > hé; #95D4 +闕 > què; #95D5 +闖 > chuăng; #95D6 +闗 > guān; #95D7 +闘 > dòu; #95D8 +闙 > qĭ; #95D9 +闚 > kūi; #95DA +闛 > táng; #95DB +關 > guān; #95DC +闝 > piáo; #95DD +闞 > kàn; #95DE +闟 > xì; #95DF +闠 > hùi; #95E0 +闡 > chăn; #95E1 +闢 > pì; #95E2 +闣 > dàng; #95E3 +闤 > huán; #95E4 +闥 > tà; #95E5 +闦 > wén; #95E6 +门 > mén; #95E8 +闩 > shuān; #95E9 +闪 > shăn; #95EA +闫 > yàn; #95EB +闬 > hàn; #95EC +闭 > bì; #95ED +问 > wèn; #95EE +闯 > chuăng; #95EF +闰 > rùn; #95F0 +闱 > wéi; #95F1 +闲 > xián; #95F2 +闳 > hóng; #95F3 +间 > jiān; #95F4 +闵 > mĭn; #95F5 +闶 > kàng; #95F6 +闷 > mèn; #95F7 +闸 > zhá; #95F8 +闹 > nào; #95F9 +闺 > gūi; #95FA +闻 > wén; #95FB +闼 > tà; #95FC +闽 > mĭn; #95FD +闾 > lǘ; #95FE +闿 > kăi; #95FF +阀 > fá; #9600 +阁 > gé; #9601 +阂 > hé; #9602 +阃 > kŭn; #9603 +阄 > jīu; #9604 +阅 > yuè; #9605 +阆 > lăng; #9606 +阇 > dū; #9607 +阈 > yù; #9608 +阉 > yān; #9609 +阊 > chāng; #960A +阋 > xì; #960B +阌 > wén; #960C +阍 > hūn; #960D +阎 > yán; #960E +阏 > è; #960F +阐 > chăn; #9610 +阑 > lán; #9611 +阒 > qù; #9612 +阓 > hùi; #9613 +阔 > kùo; #9614 +阕 > què; #9615 +阖 > gé; #9616 +阗 > tián; #9617 +阘 > tà; #9618 +阙 > què; #9619 +阚 > kàn; #961A +阛 > huán; #961B +阜 > fù; #961C +阝 > fù; #961D +阞 > lè; #961E +队 > dùi; #961F +阠 > xìn; #9620 +阡 > qiān; #9621 +阢 > wù; #9622 +阣 > yì; #9623 +阤 > túo; #9624 +阥 > yīn; #9625 +阦 > yáng; #9626 +阧 > dŏu; #9627 +阨 > è; #9628 +阩 > shēng; #9629 +阪 > băn; #962A +阫 > péi; #962B +阬 > kēng; #962C +阭 > yŭn; #962D +阮 > ruăn; #962E +阯 > zhĭ; #962F +阰 > pí; #9630 +阱 > jĭng; #9631 +防 > fáng; #9632 +阳 > yáng; #9633 +阴 > yīn; #9634 +阵 > zhèn; #9635 +阶 > jiē; #9636 +阷 > chēng; #9637 +阸 > è; #9638 +阹 > qū; #9639 +阺 > dĭ; #963A +阻 > zŭ; #963B +阼 > zùo; #963C +阽 > diàn; #963D +阾 > lĭng; #963E +阿 > ā; #963F +陀 > túo; #9640 +陁 > túo; #9641 +陂 > pō; #9642 +陃 > bĭng; #9643 +附 > fù; #9644 +际 > jì; #9645 +陆 > lù; #9646 +陇 > lŏng; #9647 +陈 > chén; #9648 +陉 > xíng; #9649 +陊 > dùo; #964A +陋 > lòu; #964B +陌 > mò; #964C +降 > jiàng; #964D +陎 > shū; #964E +陏 > dùo; #964F +限 > xiàn; #9650 +陑 > ér; #9651 +陒 > gŭi; #9652 +陓 > yū; #9653 +陔 > gāi; #9654 +陕 > shăn; #9655 +陖 > xùn; #9656 +陗 > qiào; #9657 +陘 > xíng; #9658 +陙 > chún; #9659 +陚 > fù; #965A +陛 > bì; #965B +陜 > xiá; #965C +陝 > shăn; #965D +陞 > shēng; #965E +陟 > zhì; #965F +陠 > pū; #9660 +陡 > dŏu; #9661 +院 > yuàn; #9662 +陣 > zhèn; #9663 +除 > chú; #9664 +陥 > xiàn; #9665 +陧 > niè; #9667 +陨 > yŭn; #9668 +险 > xiăn; #9669 +陪 > péi; #966A +陫 > péi; #966B +陬 > zōu; #966C +陭 > yī; #966D +陮 > dŭi; #966E +陯 > lún; #966F +陰 > yīn; #9670 +陱 > jū; #9671 +陲 > chúi; #9672 +陳 > chén; #9673 +陴 > pí; #9674 +陵 > líng; #9675 +陶 > táo; #9676 +陷 > xiàn; #9677 +陸 > lù; #9678 +陹 > sheng; #9679 +険 > xiăn; #967A +陻 > yīn; #967B +陼 > zhŭ; #967C +陽 > yáng; #967D +陾 > réng; #967E +陿 > shăn; #967F +隀 > chóng; #9680 +隁 > yàn; #9681 +隂 > yīn; #9682 +隃 > yú; #9683 +隄 > tí; #9684 +隅 > yú; #9685 +隆 > lóng; #9686 +隇 > wēi; #9687 +隈 > wēi; #9688 +隉 > niè; #9689 +隊 > dùi; #968A +隋 > súi; #968B +隌 > ăn; #968C +隍 > huáng; #968D +階 > jiē; #968E +随 > súi; #968F +隐 > yĭn; #9690 +隑 > gāi; #9691 +隒 > yăn; #9692 +隓 > hūi; #9693 +隔 > gé; #9694 +隕 > yŭn; #9695 +隖 > wù; #9696 +隗 > wĕi; #9697 +隘 > ài; #9698 +隙 > xì; #9699 +隚 > táng; #969A +際 > jì; #969B +障 > zhàng; #969C +隝 > dăo; #969D +隞 > áo; #969E +隟 > xì; #969F +隠 > yĭn; #96A0 +隢 > rào; #96A2 +隣 > lín; #96A3 +隤 > túi; #96A4 +隥 > dèng; #96A5 +隦 > pĭ; #96A6 +隧 > sùi; #96A7 +隨 > súi; #96A8 +隩 > yù; #96A9 +險 > xiăn; #96AA +隫 > fēn; #96AB +隬 > nĭ; #96AC +隭 > ér; #96AD +隮 > jī; #96AE +隯 > dăo; #96AF +隰 > xí; #96B0 +隱 > yĭn; #96B1 +隲 > é; #96B2 +隳 > hūi; #96B3 +隴 > lŏng; #96B4 +隵 > xī; #96B5 +隶 > lì; #96B6 +隷 > lì; #96B7 +隸 > lì; #96B8 +隹 > zhūi; #96B9 +隺 > hè; #96BA +隻 > zhī; #96BB +隼 > zhŭn; #96BC +隽 > jùn; #96BD +难 > nán; #96BE +隿 > yì; #96BF +雀 > què; #96C0 +雁 > yàn; #96C1 +雂 > qián; #96C2 +雃 > yă; #96C3 +雄 > xíong; #96C4 +雅 > yă; #96C5 +集 > jí; #96C6 +雇 > gù; #96C7 +雈 > huán; #96C8 +雉 > zhì; #96C9 +雊 > gòu; #96CA +雋 > jùn; #96CB +雌 > cí; #96CC +雍 > yōng; #96CD +雎 > jū; #96CE +雏 > chú; #96CF +雐 > hū; #96D0 +雑 > zá; #96D1 +雒 > lùo; #96D2 +雓 > yú; #96D3 +雔 > chóu; #96D4 +雕 > diāo; #96D5 +雖 > sūi; #96D6 +雗 > hàn; #96D7 +雘 > hùo; #96D8 +雙 > shuāng; #96D9 +雚 > guàn; #96DA +雛 > chú; #96DB +雜 > zá; #96DC +雝 > yōng; #96DD +雞 > jī; #96DE +雟 > xī; #96DF +雠 > chóu; #96E0 +雡 > lìu; #96E1 +離 > lí; #96E2 +難 > nán; #96E3 +雤 > xué; #96E4 +雥 > zá; #96E5 +雦 > jí; #96E6 +雧 > jí; #96E7 +雨 > yŭ; #96E8 +雩 > yú; #96E9 +雪 > xuĕ; #96EA +雫 > nă; #96EB +雬 > fŏu; #96EC +雭 > sè; #96ED +雮 > mù; #96EE +雯 > wén; #96EF +雰 > fēn; #96F0 +雱 > páng; #96F1 +雲 > yún; #96F2 +雳 > lì; #96F3 +雴 > lì; #96F4 +雵 > ăng; #96F5 +零 > líng; #96F6 +雷 > léi; #96F7 +雸 > án; #96F8 +雹 > báo; #96F9 +雺 > méng; #96FA +電 > diàn; #96FB +雼 > dàng; #96FC +雽 > xíng; #96FD +雾 > wù; #96FE +雿 > zhào; #96FF +需 > xū; #9700 +霁 > jì; #9701 +霂 > mù; #9702 +霃 > chén; #9703 +霄 > xiāo; #9704 +霅 > zhá; #9705 +霆 > tíng; #9706 +震 > zhèn; #9707 +霈 > pèi; #9708 +霉 > méi; #9709 +霊 > líng; #970A +霋 > qī; #970B +霌 > chōu; #970C +霍 > hùo; #970D +霎 > shà; #970E +霏 > fēi; #970F +霐 > wēng; #9710 +霑 > zhān; #9711 +霒 > yīn; #9712 +霓 > ní; #9713 +霔 > chòu; #9714 +霕 > tún; #9715 +霖 > lín; #9716 +霘 > dòng; #9718 +霙 > yīng; #9719 +霚 > wù; #971A +霛 > líng; #971B +霜 > shuāng; #971C +霝 > líng; #971D +霞 > xiá; #971E +霟 > hóng; #971F +霠 > yīn; #9720 +霡 > mò; #9721 +霢 > mài; #9722 +霣 > yŭn; #9723 +霤 > lìu; #9724 +霥 > mèng; #9725 +霦 > bīn; #9726 +霧 > wù; #9727 +霨 > wèi; #9728 +霩 > hùo; #9729 +霪 > yín; #972A +霫 > xí; #972B +霬 > yì; #972C +霭 > ăi; #972D +霮 > dàn; #972E +霯 > dèng; #972F +霰 > xiàn; #9730 +霱 > yù; #9731 +露 > lù; #9732 +霳 > lóng; #9733 +霴 > dài; #9734 +霵 > jí; #9735 +霶 > páng; #9736 +霷 > yáng; #9737 +霸 > bà; #9738 +霹 > pī; #9739 +霺 > wéi; #973A +霼 > xĭ; #973C +霽 > jì; #973D +霾 > mái; #973E +霿 > mèng; #973F +靀 > méng; #9740 +靁 > léi; #9741 +靂 > lì; #9742 +靃 > hùo; #9743 +靄 > ăi; #9744 +靅 > fèi; #9745 +靆 > dài; #9746 +靇 > lóng; #9747 +靈 > líng; #9748 +靉 > ài; #9749 +靊 > fēng; #974A +靋 > lì; #974B +靌 > băo; #974C +靎 > hè; #974E +靏 > hè; #974F +靐 > bìng; #9750 +靑 > qīng; #9751 +青 > qīng; #9752 +靓 > jìng; #9753 +靔 > tiān; #9754 +靕 > zhēn; #9755 +靖 > jìng; #9756 +靗 > chèng; #9757 +靘 > qìng; #9758 +静 > jìng; #9759 +靚 > jìng; #975A +靛 > diàn; #975B +靜 > jìng; #975C +靝 > tiān; #975D +非 > fēi; #975E +靟 > fēi; #975F +靠 > kào; #9760 +靡 > mĭ; #9761 +面 > miàn; #9762 +靣 > miàn; #9763 +靤 > pào; #9764 +靥 > yè; #9765 +靦 > tiăn; #9766 +靧 > hùi; #9767 +靨 > yè; #9768 +革 > gé; #9769 +靪 > dīng; #976A +靫 > chā; #976B +靬 > jiān; #976C +靭 > rèn; #976D +靮 > dí; #976E +靯 > dù; #976F +靰 > wù; #9770 +靱 > rèn; #9771 +靲 > qín; #9772 +靳 > jìn; #9773 +靴 > xuē; #9774 +靵 > nĭu; #9775 +靶 > bă; #9776 +靷 > yĭn; #9777 +靸 > să; #9778 +靹 > nà; #9779 +靺 > mò; #977A +靻 > zŭ; #977B +靼 > dá; #977C +靽 > bàn; #977D +靾 > yì; #977E +靿 > yào; #977F +鞀 > táo; #9780 +鞁 > túo; #9781 +鞂 > jiá; #9782 +鞃 > hóng; #9783 +鞄 > páo; #9784 +鞅 > yăng; #9785 +鞇 > yīn; #9787 +鞈 > jiá; #9788 +鞉 > táo; #9789 +鞊 > jí; #978A +鞋 > xié; #978B +鞌 > ān; #978C +鞍 > ān; #978D +鞎 > hén; #978E +鞏 > gŏng; #978F +鞑 > dá; #9791 +鞒 > qiāo; #9792 +鞓 > tīng; #9793 +鞔 > wăn; #9794 +鞕 > yìng; #9795 +鞖 > sūi; #9796 +鞗 > tiáo; #9797 +鞘 > qiào; #9798 +鞙 > xuàn; #9799 +鞚 > kòng; #979A +鞛 > bĕng; #979B +鞜 > tà; #979C +鞝 > zhăng; #979D +鞞 > bĭng; #979E +鞟 > kùo; #979F +鞠 > jú; #97A0 +鞡 > la; #97A1 +鞢 > xiè; #97A2 +鞣 > róu; #97A3 +鞤 > bāng; #97A4 +鞥 > yì; #97A5 +鞦 > qīu; #97A6 +鞧 > qīu; #97A7 +鞨 > hé; #97A8 +鞩 > xiào; #97A9 +鞪 > mù; #97AA +鞫 > jú; #97AB +鞬 > jiān; #97AC +鞭 > biān; #97AD +鞮 > dī; #97AE +鞯 > jiān; #97AF +鞱 > tāo; #97B1 +鞲 > gōu; #97B2 +鞳 > tà; #97B3 +鞴 > bèi; #97B4 +鞵 > xié; #97B5 +鞶 > pán; #97B6 +鞷 > gé; #97B7 +鞸 > bì; #97B8 +鞹 > kùo; #97B9 +鞺 > tang; #97BA +鞻 > lóu; #97BB +鞼 > gùi; #97BC +鞽 > qiáo; #97BD +鞾 > xuē; #97BE +鞿 > jī; #97BF +韀 > jiān; #97C0 +韁 > jiāng; #97C1 +韂 > chàn; #97C2 +韃 > dá; #97C3 +韄 > hùo; #97C4 +韅 > xiăn; #97C5 +韆 > qiān; #97C6 +韇 > dú; #97C7 +韈 > wà; #97C8 +韉 > jiān; #97C9 +韊 > lán; #97CA +韋 > wéi; #97CB +韌 > rèn; #97CC +韍 > fú; #97CD +韎 > mèi; #97CE +韏 > juàn; #97CF +韐 > gé; #97D0 +韑 > wĕi; #97D1 +韒 > qiào; #97D2 +韓 > hán; #97D3 +韔 > chàng; #97D4 +韖 > róu; #97D6 +韗 > xùn; #97D7 +韘 > shè; #97D8 +韙 > wĕi; #97D9 +韚 > gé; #97DA +韛 > bèi; #97DB +韜 > tāo; #97DC +韝 > gōu; #97DD +韞 > yùn; #97DE +韠 > bì; #97E0 +韡 > wĕi; #97E1 +韢 > hùi; #97E2 +韣 > dú; #97E3 +韤 > wà; #97E4 +韥 > dú; #97E5 +韦 > wéi; #97E6 +韧 > rèn; #97E7 +韨 > fú; #97E8 +韩 > hán; #97E9 +韪 > wĕi; #97EA +韫 > yùn; #97EB +韬 > tāo; #97EC +韭 > jĭu; #97ED +韮 > jĭu; #97EE +韯 > xiān; #97EF +韰 > xiè; #97F0 +韱 > xiān; #97F1 +韲 > jī; #97F2 +音 > yīn; #97F3 +韴 > zá; #97F4 +韵 > yùn; #97F5 +韶 > sháo; #97F6 +韷 > lè; #97F7 +韸 > péng; #97F8 +韹 > héng; #97F9 +韺 > yīng; #97FA +韻 > yùn; #97FB +韼 > péng; #97FC +韽 > yīn; #97FD +韾 > yīn; #97FE +響 > xiăng; #97FF +頀 > hù; #9800 +頁 > yè; #9801 +頂 > dĭng; #9802 +頃 > qĭng; #9803 +頄 > pàn; #9804 +項 > xiàng; #9805 +順 > shùn; #9806 +頇 > hān; #9807 +須 > xū; #9808 +頉 > yí; #9809 +頊 > xù; #980A +頋 > gù; #980B +頌 > sòng; #980C +頍 > kŭi; #980D +頎 > qí; #980E +頏 > háng; #980F +預 > yù; #9810 +頑 > wán; #9811 +頒 > bān; #9812 +頓 > dùn; #9813 +頔 > dí; #9814 +頕 > dān; #9815 +頖 > pàn; #9816 +頗 > pŏ; #9817 +領 > lĭng; #9818 +頙 > cè; #9819 +頚 > jĭng; #981A +頛 > lĕi; #981B +頜 > hé; #981C +頝 > qiāo; #981D +頞 > è; #981E +頟 > é; #981F +頠 > wĕi; #9820 +頡 > jié; #9821 +頢 > guā; #9822 +頣 > shĕn; #9823 +頤 > yí; #9824 +頥 > shĕn; #9825 +頦 > hái; #9826 +頧 > dūi; #9827 +頨 > piān; #9828 +頩 > pīng; #9829 +頪 > lèi; #982A +頫 > fŭ; #982B +頬 > jiá; #982C +頭 > tóu; #982D +頮 > hùi; #982E +頯 > kúi; #982F +頰 > jiá; #9830 +頱 > lè; #9831 +頲 > tian; #9832 +頳 > chēng; #9833 +頴 > yĭng; #9834 +頵 > jūn; #9835 +頶 > hú; #9836 +頷 > hàn; #9837 +頸 > jĭng; #9838 +頹 > túi; #9839 +頺 > túi; #983A +頻 > pín; #983B +頼 > lài; #983C +頽 > túi; #983D +頾 > zī; #983E +頿 > zī; #983F +顀 > chúi; #9840 +顁 > dìng; #9841 +顂 > lài; #9842 +顃 > yán; #9843 +顄 > hàn; #9844 +顅 > jiān; #9845 +顆 > kē; #9846 +顇 > cùi; #9847 +顈 > jĭong; #9848 +顉 > qīn; #9849 +顊 > yí; #984A +顋 > sāi; #984B +題 > tí; #984C +額 > é; #984D +顎 > è; #984E +顏 > yán; #984F +顐 > hún; #9850 +顑 > kăn; #9851 +顒 > yóng; #9852 +顓 > zhuān; #9853 +顔 > yán; #9854 +顕 > xiăn; #9855 +顖 > xìn; #9856 +顗 > yĭ; #9857 +願 > yuàn; #9858 +顙 > săng; #9859 +顚 > diān; #985A +顛 > diān; #985B +顜 > jiăng; #985C +顝 > kū; #985D +類 > lèi; #985E +顟 > liáo; #985F +顠 > piào; #9860 +顡 > yì; #9861 +顢 > mán; #9862 +顣 > qī; #9863 +顤 > rào; #9864 +顥 > hào; #9865 +顦 > qiáo; #9866 +顧 > gù; #9867 +顨 > xùn; #9868 +顩 > qiān; #9869 +顪 > hūi; #986A +顫 > zhàn; #986B +顬 > rú; #986C +顭 > hōng; #986D +顮 > bīn; #986E +顯 > xiăn; #986F +顰 > pín; #9870 +顱 > lú; #9871 +顲 > lăn; #9872 +顳 > niè; #9873 +顴 > quán; #9874 +页 > yè; #9875 +顶 > dĭng; #9876 +顷 > qĭng; #9877 +顸 > hān; #9878 +项 > xiàng; #9879 +顺 > shùn; #987A +须 > xū; #987B +顼 > xù; #987C +顽 > wán; #987D +顾 > gù; #987E +顿 > dùn; #987F +颀 > qí; #9880 +颁 > bān; #9881 +颂 > sòng; #9882 +颃 > háng; #9883 +预 > yù; #9884 +颅 > lú; #9885 +领 > lĭng; #9886 +颇 > pŏ; #9887 +颈 > jĭng; #9888 +颉 > jié; #9889 +颊 > jiá; #988A +颋 > tian; #988B +颌 > hàn; #988C +颍 > yĭng; #988D +颎 > jĭong; #988E +颏 > hái; #988F +颐 > yí; #9890 +频 > pín; #9891 +颒 > hùi; #9892 +颓 > túi; #9893 +颔 > hàn; #9894 +颕 > yĭng; #9895 +颖 > yĭng; #9896 +颗 > kē; #9897 +题 > tí; #9898 +颙 > yóng; #9899 +颚 > è; #989A +颛 > zhuān; #989B +颜 > yán; #989C +额 > é; #989D +颞 > niè; #989E +颟 > mán; #989F +颠 > diān; #98A0 +颡 > săng; #98A1 +颢 > hào; #98A2 +颣 > lèi; #98A3 +颤 > zhàn; #98A4 +颥 > rú; #98A5 +颦 > pín; #98A6 +颧 > quán; #98A7 +風 > fēng; #98A8 +颩 > biāo; #98A9 +颫 > fú; #98AB +颬 > xiā; #98AC +颭 > zhăn; #98AD +颮 > biāo; #98AE +颯 > sà; #98AF +颰 > bá; #98B0 +颱 > tái; #98B1 +颲 > liè; #98B2 +颳 > guā; #98B3 +颴 > xuàn; #98B4 +颵 > shào; #98B5 +颶 > jù; #98B6 +颷 > bī; #98B7 +颸 > sī; #98B8 +颹 > wĕi; #98B9 +颺 > yáng; #98BA +颻 > yáo; #98BB +颼 > sōu; #98BC +颽 > kăi; #98BD +颾 > sāo; #98BE +颿 > fán; #98BF +飀 > líu; #98C0 +飁 > xí; #98C1 +飂 > liáo; #98C2 +飃 > piāo; #98C3 +飄 > piāo; #98C4 +飅 > líu; #98C5 +飆 > biāo; #98C6 +飇 > biāo; #98C7 +飈 > biăo; #98C8 +飉 > liáo; #98C9 +飋 > sè; #98CB +飌 > fēng; #98CC +飍 > biāo; #98CD +风 > fēng; #98CE +飏 > yáng; #98CF +飐 > zhăn; #98D0 +飑 > biāo; #98D1 +飒 > sà; #98D2 +飓 > jù; #98D3 +飔 > sī; #98D4 +飕 > sōu; #98D5 +飖 > yáo; #98D6 +飗 > líu; #98D7 +飘 > piāo; #98D8 +飙 > biāo; #98D9 +飚 > biāo; #98DA +飛 > fēi; #98DB +飜 > fān; #98DC +飝 > fēi; #98DD +飞 > fēi; #98DE +食 > shí; #98DF +飠 > shí; #98E0 +飡 > cān; #98E1 +飢 > jī; #98E2 +飣 > dìng; #98E3 +飤 > sì; #98E4 +飥 > tūo; #98E5 +飦 > zhān; #98E6 +飧 > sūn; #98E7 +飨 > xiăng; #98E8 +飩 > tún; #98E9 +飪 > rèn; #98EA +飫 > yù; #98EB +飬 > juàn; #98EC +飭 > chì; #98ED +飮 > yĭn; #98EE +飯 > fàn; #98EF +飰 > fàn; #98F0 +飱 > sūn; #98F1 +飲 > yĭn; #98F2 +飳 > zhù; #98F3 +飴 > yí; #98F4 +飵 > zhăi; #98F5 +飶 > bì; #98F6 +飷 > jiĕ; #98F7 +飸 > tāo; #98F8 +飹 > lĭu; #98F9 +飺 > cí; #98FA +飻 > tiè; #98FB +飼 > sì; #98FC +飽 > băo; #98FD +飾 > shì; #98FE +飿 > dùo; #98FF +餀 > hài; #9900 +餁 > rèn; #9901 +餂 > tiăn; #9902 +餃 > jiăo; #9903 +餄 > jiá; #9904 +餅 > bĭng; #9905 +餆 > yáo; #9906 +餇 > tóng; #9907 +餈 > cí; #9908 +餉 > xiăng; #9909 +養 > yăng; #990A +餋 > yăng; #990B +餌 > ĕr; #990C +餍 > yàn; #990D +餎 > le; #990E +餏 > yī; #990F +餐 > cān; #9910 +餑 > bó; #9911 +餒 > nĕi; #9912 +餓 > è; #9913 +餔 > bū; #9914 +餕 > jùn; #9915 +餖 > dòu; #9916 +餗 > sù; #9917 +餘 > yú; #9918 +餙 > shì; #9919 +餚 > yáo; #991A +餛 > hún; #991B +餜 > gŭo; #991C +餝 > shì; #991D +餞 > jiàn; #991E +餟 > zhùi; #991F +餠 > bĭng; #9920 +餡 > xiàn; #9921 +餢 > bù; #9922 +餣 > yè; #9923 +餤 > tán; #9924 +餥 > fĕi; #9925 +餦 > zhāng; #9926 +餧 > wèi; #9927 +館 > guăn; #9928 +餩 > è; #9929 +餪 > nuăn; #992A +餫 > hún; #992B +餬 > hú; #992C +餭 > huáng; #992D +餮 > tiè; #992E +餯 > hùi; #992F +餰 > jiān; #9930 +餱 > hóu; #9931 +餲 > hé; #9932 +餳 > xíng; #9933 +餴 > fēn; #9934 +餵 > wèi; #9935 +餶 > gŭ; #9936 +餷 > chā; #9937 +餸 > sòng; #9938 +餹 > táng; #9939 +餺 > bó; #993A +餻 > gāo; #993B +餼 > xì; #993C +餽 > kùi; #993D +餾 > lìu; #993E +餿 > sōu; #993F +饀 > táo; #9940 +饁 > yè; #9941 +饂 > yún; #9942 +饃 > mó; #9943 +饄 > táng; #9944 +饅 > mán; #9945 +饆 > bì; #9946 +饇 > yù; #9947 +饈 > xīu; #9948 +饉 > jĭn; #9949 +饊 > săn; #994A +饋 > kùi; #994B +饌 > zhuàn; #994C +饍 > shàn; #994D +饎 > chì; #994E +饏 > dàn; #994F +饐 > yì; #9950 +饑 > jī; #9951 +饒 > ráo; #9952 +饓 > chēng; #9953 +饔 > yōng; #9954 +饕 > tāo; #9955 +饖 > hùi; #9956 +饗 > xiăng; #9957 +饘 > zhān; #9958 +饙 > fēn; #9959 +饚 > hài; #995A +饛 > méng; #995B +饜 > yàn; #995C +饝 > mó; #995D +饞 > chán; #995E +饟 > xiăng; #995F +饠 > lúo; #9960 +饡 > zuàn; #9961 +饢 > năng; #9962 +饣 > shí; #9963 +饤 > dìng; #9964 +饥 > jī; #9965 +饦 > tūo; #9966 +饧 > xíng; #9967 +饨 > tún; #9968 +饩 > xì; #9969 +饪 > rèn; #996A +饫 > yù; #996B +饬 > chì; #996C +饭 > fàn; #996D +饮 > yĭn; #996E +饯 > jiàn; #996F +饰 > shì; #9970 +饱 > băo; #9971 +饲 > sì; #9972 +饳 > dùo; #9973 +饴 > yí; #9974 +饵 > ĕr; #9975 +饶 > ráo; #9976 +饷 > xiăng; #9977 +饸 > jiá; #9978 +饹 > le; #9979 +饺 > jiăo; #997A +饻 > yī; #997B +饼 > bĭng; #997C +饽 > bó; #997D +饾 > dòu; #997E +饿 > è; #997F +馀 > yú; #9980 +馁 > nĕi; #9981 +馂 > jùn; #9982 +馃 > gŭo; #9983 +馄 > hún; #9984 +馅 > xiàn; #9985 +馆 > guăn; #9986 +馇 > chā; #9987 +馈 > kùi; #9988 +馉 > gŭ; #9989 +馊 > sōu; #998A +馋 > chán; #998B +馌 > yè; #998C +馍 > mó; #998D +馎 > bó; #998E +馏 > lìu; #998F +馐 > xīu; #9990 +馑 > jĭn; #9991 +馒 > mán; #9992 +馓 > săn; #9993 +馔 > zhuàn; #9994 +馕 > năng; #9995 +首 > shŏu; #9996 +馗 > kúi; #9997 +馘 > gúo; #9998 +香 > xiāng; #9999 +馚 > fén; #999A +馛 > bá; #999B +馜 > nĭ; #999C +馝 > bì; #999D +馞 > bó; #999E +馟 > tú; #999F +馠 > hān; #99A0 +馡 > fēi; #99A1 +馢 > jiān; #99A2 +馣 > ān; #99A3 +馤 > ăi; #99A4 +馥 > fù; #99A5 +馦 > xiān; #99A6 +馧 > wēn; #99A7 +馨 > xīn; #99A8 +馩 > fén; #99A9 +馪 > bīn; #99AA +馫 > xīng; #99AB +馬 > mă; #99AC +馭 > yù; #99AD +馮 > féng; #99AE +馯 > hàn; #99AF +馰 > dì; #99B0 +馱 > túo; #99B1 +馲 > tūo; #99B2 +馳 > chí; #99B3 +馴 > xún; #99B4 +馵 > zhù; #99B5 +馶 > zhī; #99B6 +馷 > pèi; #99B7 +馸 > xìn; #99B8 +馹 > rì; #99B9 +馺 > sà; #99BA +馻 > yĭn; #99BB +馼 > wén; #99BC +馽 > zhí; #99BD +馾 > dàn; #99BE +馿 > lǘ; #99BF +駀 > yóu; #99C0 +駁 > bó; #99C1 +駂 > băo; #99C2 +駃 > kuài; #99C3 +駄 > túo; #99C4 +駅 > yì; #99C5 +駆 > qū; #99C6 +駈 > qū; #99C8 +駉 > jīong; #99C9 +駊 > bŏ; #99CA +駋 > zhāo; #99CB +駌 > yuān; #99CC +駍 > pēng; #99CD +駎 > zhòu; #99CE +駏 > jù; #99CF +駐 > zhù; #99D0 +駑 > nú; #99D1 +駒 > jū; #99D2 +駓 > pí; #99D3 +駔 > zăng; #99D4 +駕 > jià; #99D5 +駖 > líng; #99D6 +駗 > zhēn; #99D7 +駘 > tái; #99D8 +駙 > fù; #99D9 +駚 > yăng; #99DA +駛 > shĭ; #99DB +駜 > bì; #99DC +駝 > túo; #99DD +駞 > túo; #99DE +駟 > sì; #99DF +駠 > líu; #99E0 +駡 > mà; #99E1 +駢 > pián; #99E2 +駣 > táo; #99E3 +駤 > zhì; #99E4 +駥 > róng; #99E5 +駦 > téng; #99E6 +駧 > dòng; #99E7 +駨 > xún; #99E8 +駩 > quán; #99E9 +駪 > shēn; #99EA +駫 > jīong; #99EB +駬 > ĕr; #99EC +駭 > hài; #99ED +駮 > bó; #99EE +駯 > zhu; #99EF +駰 > yīn; #99F0 +駱 > lùo; #99F1 +駳 > dàn; #99F3 +駴 > xiè; #99F4 +駵 > líu; #99F5 +駶 > jú; #99F6 +駷 > sŏng; #99F7 +駸 > qīn; #99F8 +駹 > máng; #99F9 +駺 > liáng; #99FA +駻 > hàn; #99FB +駼 > tú; #99FC +駽 > xuàn; #99FD +駾 > tùi; #99FE +駿 > jùn; #99FF +騀 > é; #9A00 +騁 > chĕng; #9A01 +騂 > xīn; #9A02 +騃 > ái; #9A03 +騄 > lù; #9A04 +騅 > zhūi; #9A05 +騆 > zhōu; #9A06 +騇 > shĕ; #9A07 +騈 > pián; #9A08 +騉 > kūn; #9A09 +騊 > táo; #9A0A +騋 > lái; #9A0B +騌 > zōng; #9A0C +騍 > kè; #9A0D +騎 > qí; #9A0E +騏 > qí; #9A0F +騐 > yàn; #9A10 +騑 > fēi; #9A11 +騒 > sāo; #9A12 +験 > yăn; #9A13 +騔 > jié; #9A14 +騕 > yăo; #9A15 +騖 > wù; #9A16 +騗 > piàn; #9A17 +騘 > cōng; #9A18 +騙 > piàn; #9A19 +騚 > qián; #9A1A +騛 > fēi; #9A1B +騜 > huáng; #9A1C +騝 > jiān; #9A1D +騞 > hùo; #9A1E +騟 > yù; #9A1F +騠 > tí; #9A20 +騡 > quán; #9A21 +騢 > xiá; #9A22 +騣 > zōng; #9A23 +騤 > kúi; #9A24 +騥 > róu; #9A25 +騦 > sī; #9A26 +騧 > guā; #9A27 +騨 > túo; #9A28 +騩 > kùi; #9A29 +騪 > sōu; #9A2A +騫 > qiān; #9A2B +騬 > chéng; #9A2C +騭 > zhì; #9A2D +騮 > líu; #9A2E +騯 > páng; #9A2F +騰 > téng; #9A30 +騱 > xī; #9A31 +騲 > căo; #9A32 +騳 > dú; #9A33 +騴 > yàn; #9A34 +騵 > yuán; #9A35 +騶 > zōu; #9A36 +騷 > sāo; #9A37 +騸 > shàn; #9A38 +騹 > lí; #9A39 +騺 > zhì; #9A3A +騻 > shuăng; #9A3B +騼 > lù; #9A3C +騽 > xí; #9A3D +騾 > lúo; #9A3E +騿 > zhāng; #9A3F +驀 > mò; #9A40 +驁 > áo; #9A41 +驂 > cān; #9A42 +驃 > piào; #9A43 +驄 > cōng; #9A44 +驅 > qū; #9A45 +驆 > bì; #9A46 +驇 > zhì; #9A47 +驈 > yù; #9A48 +驉 > xū; #9A49 +驊 > huá; #9A4A +驋 > bō; #9A4B +驌 > sù; #9A4C +驍 > xiāo; #9A4D +驎 > lín; #9A4E +驏 > chăn; #9A4F +驐 > dūn; #9A50 +驑 > líu; #9A51 +驒 > túo; #9A52 +驓 > zēng; #9A53 +驔 > tán; #9A54 +驕 > jiāo; #9A55 +驖 > tiĕ; #9A56 +驗 > yàn; #9A57 +驘 > lúo; #9A58 +驙 > zhān; #9A59 +驚 > jīng; #9A5A +驛 > yì; #9A5B +驜 > yè; #9A5C +驝 > tūo; #9A5D +驞 > bīn; #9A5E +驟 > zòu; #9A5F +驠 > yàn; #9A60 +驡 > péng; #9A61 +驢 > lǘ; #9A62 +驣 > téng; #9A63 +驤 > xiāng; #9A64 +驥 > jì; #9A65 +驦 > shuāng; #9A66 +驧 > jú; #9A67 +驨 > xī; #9A68 +驩 > huān; #9A69 +驪 > lí; #9A6A +驫 > biāo; #9A6B +马 > mă; #9A6C +驭 > yù; #9A6D +驮 > túo; #9A6E +驯 > xún; #9A6F +驰 > chí; #9A70 +驱 > qū; #9A71 +驲 > rì; #9A72 +驳 > bó; #9A73 +驴 > lǘ; #9A74 +驵 > zăng; #9A75 +驶 > shĭ; #9A76 +驷 > sì; #9A77 +驸 > fù; #9A78 +驹 > jū; #9A79 +驺 > zōu; #9A7A +驻 > zhù; #9A7B +驼 > túo; #9A7C +驽 > nú; #9A7D +驾 > jià; #9A7E +驿 > yì; #9A7F +骀 > tái; #9A80 +骁 > xiāo; #9A81 +骂 > mà; #9A82 +骃 > yīn; #9A83 +骄 > jiāo; #9A84 +骅 > huá; #9A85 +骆 > lùo; #9A86 +骇 > hài; #9A87 +骈 > pián; #9A88 +骉 > biāo; #9A89 +骊 > lí; #9A8A +骋 > chĕng; #9A8B +验 > yàn; #9A8C +骍 > xīn; #9A8D +骎 > qīn; #9A8E +骏 > jùn; #9A8F +骐 > qí; #9A90 +骑 > qí; #9A91 +骒 > kè; #9A92 +骓 > zhūi; #9A93 +骔 > zōng; #9A94 +骕 > sù; #9A95 +骖 > cān; #9A96 +骗 > piàn; #9A97 +骘 > zhì; #9A98 +骙 > kúi; #9A99 +骚 > sāo; #9A9A +骛 > wù; #9A9B +骜 > áo; #9A9C +骝 > líu; #9A9D +骞 > qiān; #9A9E +骟 > shàn; #9A9F +骠 > piào; #9AA0 +骡 > lúo; #9AA1 +骢 > cōng; #9AA2 +骣 > chăn; #9AA3 +骤 > zòu; #9AA4 +骥 > jì; #9AA5 +骦 > shuāng; #9AA6 +骧 > xiāng; #9AA7 +骨 > gŭ; #9AA8 +骩 > wĕi; #9AA9 +骪 > wĕi; #9AAA +骫 > wĕi; #9AAB +骬 > yú; #9AAC +骭 > gàn; #9AAD +骮 > yì; #9AAE +骯 > āng; #9AAF +骰 > tóu; #9AB0 +骱 > xiè; #9AB1 +骲 > bāo; #9AB2 +骳 > bì; #9AB3 +骴 > chī; #9AB4 +骵 > tĭ; #9AB5 +骶 > dĭ; #9AB6 +骷 > kū; #9AB7 +骸 > hái; #9AB8 +骹 > qiāo; #9AB9 +骺 > gòu; #9ABA +骻 > kuà; #9ABB +骼 > gé; #9ABC +骽 > tŭi; #9ABD +骾 > gĕng; #9ABE +骿 > pián; #9ABF +髀 > bì; #9AC0 +髁 > kē; #9AC1 +髂 > kà; #9AC2 +髃 > yú; #9AC3 +髄 > sŭi; #9AC4 +髅 > lóu; #9AC5 +髆 > bó; #9AC6 +髇 > xiāo; #9AC7 +髈 > páng; #9AC8 +髉 > bō; #9AC9 +髊 > cī; #9ACA +髋 > kuān; #9ACB +髌 > bìn; #9ACC +髍 > mó; #9ACD +髎 > liáo; #9ACE +髏 > lóu; #9ACF +髐 > náo; #9AD0 +髑 > dú; #9AD1 +髒 > zāng; #9AD2 +髓 > sŭi; #9AD3 +體 > tĭ; #9AD4 +髕 > bìn; #9AD5 +髖 > kuān; #9AD6 +髗 > lú; #9AD7 +高 > gāo; #9AD8 +髙 > gāo; #9AD9 +髚 > qiào; #9ADA +髛 > kāo; #9ADB +髜 > qiāo; #9ADC +髝 > lào; #9ADD +髞 > zào; #9ADE +髟 > biāo; #9ADF +髠 > kūn; #9AE0 +髡 > kūn; #9AE1 +髢 > tì; #9AE2 +髣 > făng; #9AE3 +髤 > xīu; #9AE4 +髥 > rán; #9AE5 +髦 > máo; #9AE6 +髧 > dàn; #9AE7 +髨 > kūn; #9AE8 +髩 > bìn; #9AE9 +髪 > fà; #9AEA +髫 > tiáo; #9AEB +髬 > peng; #9AEC +髭 > zī; #9AED +髮 > fă; #9AEE +髯 > rán; #9AEF +髰 > tì; #9AF0 +髱 > pào; #9AF1 +髲 > pī; #9AF2 +髳 > máo; #9AF3 +髴 > fú; #9AF4 +髵 > ér; #9AF5 +髶 > róng; #9AF6 +髷 > qū; #9AF7 +髸 > gong; #9AF8 +髹 > xīu; #9AF9 +髺 > guà; #9AFA +髻 > jì; #9AFB +髼 > péng; #9AFC +髽 > zhuā; #9AFD +髾 > shāo; #9AFE +髿 > shā; #9AFF +鬀 > tì; #9B00 +鬁 > lì; #9B01 +鬂 > bìn; #9B02 +鬃 > zōng; #9B03 +鬄 > tì; #9B04 +鬅 > péng; #9B05 +鬆 > sōng; #9B06 +鬇 > zhēng; #9B07 +鬈 > quán; #9B08 +鬉 > zōng; #9B09 +鬊 > shùn; #9B0A +鬋 > jiān; #9B0B +鬌 > dŭo; #9B0C +鬍 > hú; #9B0D +鬎 > là; #9B0E +鬏 > jīu; #9B0F +鬐 > qí; #9B10 +鬑 > lián; #9B11 +鬒 > zhĕn; #9B12 +鬓 > bìn; #9B13 +鬔 > péng; #9B14 +鬕 > mò; #9B15 +鬖 > sān; #9B16 +鬗 > màn; #9B17 +鬘 > mán; #9B18 +鬙 > sēng; #9B19 +鬚 > xū; #9B1A +鬛 > liè; #9B1B +鬜 > qiān; #9B1C +鬝 > qiān; #9B1D +鬞 > nóng; #9B1E +鬟 > huán; #9B1F +鬠 > kuài; #9B20 +鬡 > níng; #9B21 +鬢 > bìn; #9B22 +鬣 > liè; #9B23 +鬤 > ráng; #9B24 +鬥 > dòu; #9B25 +鬦 > dòu; #9B26 +鬧 > nào; #9B27 +鬨 > hōng; #9B28 +鬩 > xì; #9B29 +鬪 > dòu; #9B2A +鬫 > hăn; #9B2B +鬬 > dòu; #9B2C +鬭 > dòu; #9B2D +鬮 > jīu; #9B2E +鬯 > chàng; #9B2F +鬰 > yù; #9B30 +鬱 > yù; #9B31 +鬲 > lì; #9B32 +鬳 > juàn; #9B33 +鬴 > fŭ; #9B34 +鬵 > qián; #9B35 +鬶 > gūi; #9B36 +鬷 > zōng; #9B37 +鬸 > lìu; #9B38 +鬹 > gūi; #9B39 +鬺 > shāng; #9B3A +鬻 > yù; #9B3B +鬼 > gŭi; #9B3C +鬽 > mèi; #9B3D +鬾 > jì; #9B3E +鬿 > qí; #9B3F +魀 > jiè; #9B40 +魁 > kúi; #9B41 +魂 > hún; #9B42 +魃 > bá; #9B43 +魄 > pò; #9B44 +魅 > mèi; #9B45 +魆 > xù; #9B46 +魇 > yăn; #9B47 +魈 > xiāo; #9B48 +魉 > liăng; #9B49 +魊 > yù; #9B4A +魋 > túi; #9B4B +魌 > qī; #9B4C +魍 > wăng; #9B4D +魎 > liăng; #9B4E +魏 > wèi; #9B4F +魐 > jiān; #9B50 +魑 > chī; #9B51 +魒 > piāo; #9B52 +魓 > bì; #9B53 +魔 > mó; #9B54 +魕 > jĭ; #9B55 +魖 > xū; #9B56 +魗 > chŏu; #9B57 +魘 > yăn; #9B58 +魙 > zhăn; #9B59 +魚 > yú; #9B5A +魛 > dāo; #9B5B +魜 > rén; #9B5C +魝 > jì; #9B5D +魟 > gōng; #9B5F +魠 > túo; #9B60 +魡 > diào; #9B61 +魢 > jĭ; #9B62 +魣 > xù; #9B63 +魤 > é; #9B64 +魥 > è; #9B65 +魦 > shā; #9B66 +魧 > háng; #9B67 +魨 > tún; #9B68 +魩 > mò; #9B69 +魪 > jiè; #9B6A +魫 > shĕn; #9B6B +魬 > făn; #9B6C +魭 > yuán; #9B6D +魮 > bí; #9B6E +魯 > lŭ; #9B6F +魰 > wén; #9B70 +魱 > hú; #9B71 +魲 > lú; #9B72 +魳 > zá; #9B73 +魴 > fáng; #9B74 +魵 > fén; #9B75 +魶 > nà; #9B76 +魷 > yóu; #9B77 +魺 > hé; #9B7A +魻 > xiá; #9B7B +魼 > qū; #9B7C +魽 > hān; #9B7D +魾 > pí; #9B7E +魿 > líng; #9B7F +鮀 > túo; #9B80 +鮁 > bō; #9B81 +鮂 > qíu; #9B82 +鮃 > píng; #9B83 +鮄 > fú; #9B84 +鮅 > bì; #9B85 +鮆 > jì; #9B86 +鮇 > wèi; #9B87 +鮈 > jū; #9B88 +鮉 > diāo; #9B89 +鮊 > bó; #9B8A +鮋 > yóu; #9B8B +鮌 > gŭn; #9B8C +鮍 > pī; #9B8D +鮎 > nián; #9B8E +鮏 > xīng; #9B8F +鮐 > tái; #9B90 +鮑 > bào; #9B91 +鮒 > fù; #9B92 +鮓 > zhă; #9B93 +鮔 > jù; #9B94 +鮕 > gū; #9B95 +鮙 > tà; #9B99 +鮚 > jié; #9B9A +鮛 > shù; #9B9B +鮜 > hòu; #9B9C +鮝 > xiăng; #9B9D +鮞 > ér; #9B9E +鮟 > àn; #9B9F +鮠 > wéi; #9BA0 +鮡 > tiāo; #9BA1 +鮢 > zhū; #9BA2 +鮣 > yìn; #9BA3 +鮤 > liè; #9BA4 +鮥 > lùo; #9BA5 +鮦 > tóng; #9BA6 +鮧 > yí; #9BA7 +鮨 > qí; #9BA8 +鮩 > bìng; #9BA9 +鮪 > wĕi; #9BAA +鮫 > jiăo; #9BAB +鮬 > bù; #9BAC +鮭 > gūi; #9BAD +鮮 > xiān; #9BAE +鮯 > gé; #9BAF +鮰 > húi; #9BB0 +鮳 > kăo; #9BB3 +鮵 > dúo; #9BB5 +鮶 > jūn; #9BB6 +鮷 > tí; #9BB7 +鮸 > măn; #9BB8 +鮹 > xiāo; #9BB9 +鮺 > ză; #9BBA +鮻 > shā; #9BBB +鮼 > qīn; #9BBC +鮽 > yú; #9BBD +鮾 > nĕi; #9BBE +鮿 > zhé; #9BBF +鯀 > gŭn; #9BC0 +鯁 > gĕng; #9BC1 +鯂 > su; #9BC2 +鯃 > wú; #9BC3 +鯄 > qíu; #9BC4 +鯅 > tíng; #9BC5 +鯆 > fŭ; #9BC6 +鯇 > wăn; #9BC7 +鯈 > yóu; #9BC8 +鯉 > lĭ; #9BC9 +鯊 > shā; #9BCA +鯋 > shā; #9BCB +鯌 > gào; #9BCC +鯍 > méng; #9BCD +鯒 > yŏng; #9BD2 +鯓 > ní; #9BD3 +鯔 > zī; #9BD4 +鯕 > qí; #9BD5 +鯖 > qīng; #9BD6 +鯗 > xiăng; #9BD7 +鯘 > nĕi; #9BD8 +鯙 > chún; #9BD9 +鯚 > jì; #9BDA +鯛 > diāo; #9BDB +鯜 > qiè; #9BDC +鯝 > gù; #9BDD +鯞 > zhŏu; #9BDE +鯟 > dōng; #9BDF +鯠 > lái; #9BE0 +鯡 > fēi; #9BE1 +鯢 > ní; #9BE2 +鯣 > yì; #9BE3 +鯤 > kūn; #9BE4 +鯥 > lù; #9BE5 +鯦 > jìu; #9BE6 +鯧 > chāng; #9BE7 +鯨 > jīng; #9BE8 +鯩 > lún; #9BE9 +鯪 > líng; #9BEA +鯫 > zōu; #9BEB +鯬 > lí; #9BEC +鯭 > mĕng; #9BED +鯮 > zōng; #9BEE +鯯 > zhì; #9BEF +鯰 > nián; #9BF0 +鯴 > shī; #9BF4 +鯵 > shēn; #9BF5 +鯶 > hŭn; #9BF6 +鯷 > shì; #9BF7 +鯸 > hóu; #9BF8 +鯹 > xīng; #9BF9 +鯺 > zhū; #9BFA +鯻 > là; #9BFB +鯼 > zōng; #9BFC +鯽 > jì; #9BFD +鯾 > biān; #9BFE +鯿 > biān; #9BFF +鰀 > huàn; #9C00 +鰁 > quán; #9C01 +鰂 > zé; #9C02 +鰃 > wēi; #9C03 +鰄 > wēi; #9C04 +鰅 > yú; #9C05 +鰆 > qūn; #9C06 +鰇 > róu; #9C07 +鰈 > dié; #9C08 +鰉 > huáng; #9C09 +鰊 > liàn; #9C0A +鰋 > yăn; #9C0B +鰌 > qíu; #9C0C +鰍 > qīu; #9C0D +鰎 > jiàn; #9C0E +鰏 > bì; #9C0F +鰐 > è; #9C10 +鰑 > yáng; #9C11 +鰒 > fù; #9C12 +鰓 > sāi; #9C13 +鰔 > jiăn; #9C14 +鰕 > xiá; #9C15 +鰖 > tŭo; #9C16 +鰗 > hú; #9C17 +鰙 > rùo; #9C19 +鰛 > wēn; #9C1B +鰜 > jiān; #9C1C +鰝 > hào; #9C1D +鰞 > wū; #9C1E +鰟 > fáng; #9C1F +鰠 > sāo; #9C20 +鰡 > líu; #9C21 +鰢 > mă; #9C22 +鰣 > shí; #9C23 +鰤 > shī; #9C24 +鰥 > yín; #9C25 +鰦 > z̄; #9C26 +鰧 > téng; #9C27 +鰨 > tà; #9C28 +鰩 > yáo; #9C29 +鰪 > gé; #9C2A +鰫 > róng; #9C2B +鰬 > qián; #9C2C +鰭 > qí; #9C2D +鰮 > wēn; #9C2E +鰯 > rùo; #9C2F +鰱 > lián; #9C31 +鰲 > áo; #9C32 +鰳 > lè; #9C33 +鰴 > hūi; #9C34 +鰵 > mĭn; #9C35 +鰶 > jì; #9C36 +鰷 > tiáo; #9C37 +鰸 > qū; #9C38 +鰹 > jiān; #9C39 +鰺 > sāo; #9C3A +鰻 > mán; #9C3B +鰼 > xí; #9C3C +鰽 > qíu; #9C3D +鰾 > biào; #9C3E +鰿 > jī; #9C3F +鱀 > jì; #9C40 +鱁 > zhú; #9C41 +鱂 > jiāng; #9C42 +鱃 > qīu; #9C43 +鱄 > zhuān; #9C44 +鱅 > yóng; #9C45 +鱆 > zhāng; #9C46 +鱇 > kāng; #9C47 +鱈 > xuĕ; #9C48 +鱉 > biē; #9C49 +鱊 > jué; #9C4A +鱋 > qū; #9C4B +鱌 > xiàng; #9C4C +鱍 > bō; #9C4D +鱎 > jiāo; #9C4E +鱏 > xún; #9C4F +鱐 > sù; #9C50 +鱑 > huáng; #9C51 +鱒 > zùn; #9C52 +鱓 > shàn; #9C53 +鱔 > shàn; #9C54 +鱕 > fān; #9C55 +鱖 > jué; #9C56 +鱗 > lín; #9C57 +鱘 > xún; #9C58 +鱙 > miáo; #9C59 +鱚 > xĭ; #9C5A +鱝 > fèn; #9C5D +鱞 > guān; #9C5E +鱟 > hòu; #9C5F +鱠 > kuài; #9C60 +鱡 > zéi; #9C61 +鱢 > sāo; #9C62 +鱣 > zhān; #9C63 +鱤 > găn; #9C64 +鱥 > gùi; #9C65 +鱦 > shéng; #9C66 +鱧 > lĭ; #9C67 +鱨 > cháng; #9C68 +鱬 > rú; #9C6C +鱭 > jì; #9C6D +鱮 > xù; #9C6E +鱯 > hùo; #9C6F +鱱 > lì; #9C71 +鱲 > liè; #9C72 +鱳 > lì; #9C73 +鱴 > miè; #9C74 +鱵 > zhēn; #9C75 +鱶 > xiăng; #9C76 +鱷 > è; #9C77 +鱸 > lú; #9C78 +鱹 > guàn; #9C79 +鱺 > lí; #9C7A +鱻 > xiān; #9C7B +鱼 > yú; #9C7C +鱽 > dāo; #9C7D +鱾 > jĭ; #9C7E +鱿 > yóu; #9C7F +鲀 > tún; #9C80 +鲁 > lŭ; #9C81 +鲂 > fáng; #9C82 +鲃 > bā; #9C83 +鲄 > hé; #9C84 +鲅 > bō; #9C85 +鲆 > píng; #9C86 +鲇 > nián; #9C87 +鲈 > lú; #9C88 +鲉 > yóu; #9C89 +鲊 > zhă; #9C8A +鲋 > fù; #9C8B +鲌 > bó; #9C8C +鲍 > bào; #9C8D +鲎 > hòu; #9C8E +鲏 > pī; #9C8F +鲐 > tái; #9C90 +鲑 > gūi; #9C91 +鲒 > jié; #9C92 +鲓 > kăo; #9C93 +鲔 > wĕi; #9C94 +鲕 > ér; #9C95 +鲖 > tóng; #9C96 +鲗 > zé; #9C97 +鲘 > hòu; #9C98 +鲙 > kuài; #9C99 +鲚 > jì; #9C9A +鲛 > jiăo; #9C9B +鲜 > xiān; #9C9C +鲝 > ză; #9C9D +鲞 > xiăng; #9C9E +鲟 > xún; #9C9F +鲠 > gĕng; #9CA0 +鲡 > lí; #9CA1 +鲢 > lián; #9CA2 +鲣 > jiān; #9CA3 +鲤 > lĭ; #9CA4 +鲥 > shí; #9CA5 +鲦 > tiáo; #9CA6 +鲧 > gŭn; #9CA7 +鲨 > shā; #9CA8 +鲩 > wăn; #9CA9 +鲪 > jūn; #9CAA +鲫 > jì; #9CAB +鲬 > yŏng; #9CAC +鲭 > qīng; #9CAD +鲮 > líng; #9CAE +鲯 > qí; #9CAF +鲰 > zōu; #9CB0 +鲱 > fēi; #9CB1 +鲲 > kūn; #9CB2 +鲳 > chāng; #9CB3 +鲴 > gù; #9CB4 +鲵 > ní; #9CB5 +鲶 > nián; #9CB6 +鲷 > diāo; #9CB7 +鲸 > jīng; #9CB8 +鲹 > shēn; #9CB9 +鲺 > shī; #9CBA +鲻 > zī; #9CBB +鲼 > fèn; #9CBC +鲽 > dié; #9CBD +鲾 > bì; #9CBE +鲿 > cháng; #9CBF +鳀 > shì; #9CC0 +鳁 > wēn; #9CC1 +鳂 > wēi; #9CC2 +鳃 > sāi; #9CC3 +鳄 > è; #9CC4 +鳅 > qīu; #9CC5 +鳆 > fù; #9CC6 +鳇 > huáng; #9CC7 +鳈 > quán; #9CC8 +鳉 > jiāng; #9CC9 +鳊 > biān; #9CCA +鳋 > sāo; #9CCB +鳌 > áo; #9CCC +鳍 > qí; #9CCD +鳎 > tà; #9CCE +鳏 > yín; #9CCF +鳐 > yáo; #9CD0 +鳑 > fáng; #9CD1 +鳒 > jiān; #9CD2 +鳓 > lè; #9CD3 +鳔 > biào; #9CD4 +鳕 > xuĕ; #9CD5 +鳖 > biē; #9CD6 +鳗 > mán; #9CD7 +鳘 > mĭn; #9CD8 +鳙 > yóng; #9CD9 +鳚 > wèi; #9CDA +鳛 > xí; #9CDB +鳜 > jué; #9CDC +鳝 > shàn; #9CDD +鳞 > lín; #9CDE +鳟 > zùn; #9CDF +鳠 > hùo; #9CE0 +鳡 > găn; #9CE1 +鳢 > lĭ; #9CE2 +鳣 > zhān; #9CE3 +鳤 > guăn; #9CE4 +鳥 > niăo; #9CE5 +鳦 > yĭ; #9CE6 +鳧 > fú; #9CE7 +鳨 > lì; #9CE8 +鳩 > jīu; #9CE9 +鳪 > bŭ; #9CEA +鳫 > yàn; #9CEB +鳬 > fú; #9CEC +鳭 > diāo; #9CED +鳮 > jī; #9CEE +鳯 > fèng; #9CEF +鳱 > gān; #9CF1 +鳲 > shī; #9CF2 +鳳 > fèng; #9CF3 +鳴 > míng; #9CF4 +鳵 > băo; #9CF5 +鳶 > yuān; #9CF6 +鳷 > zhī; #9CF7 +鳸 > hù; #9CF8 +鳹 > qín; #9CF9 +鳺 > fū; #9CFA +鳻 > fēn; #9CFB +鳼 > wén; #9CFC +鳽 > jiān; #9CFD +鳾 > shī; #9CFE +鳿 > yù; #9CFF +鴀 > fŏu; #9D00 +鴁 > yiāo; #9D01 +鴂 > juè; #9D02 +鴃 > jué; #9D03 +鴄 > pī; #9D04 +鴅 > huān; #9D05 +鴆 > zhèn; #9D06 +鴇 > băo; #9D07 +鴈 > yàn; #9D08 +鴉 > yā; #9D09 +鴊 > zhèng; #9D0A +鴋 > fāng; #9D0B +鴌 > fèng; #9D0C +鴍 > wén; #9D0D +鴎 > ōu; #9D0E +鴏 > tè; #9D0F +鴐 > jiā; #9D10 +鴑 > nú; #9D11 +鴒 > líng; #9D12 +鴓 > miè; #9D13 +鴔 > fú; #9D14 +鴕 > túo; #9D15 +鴖 > wén; #9D16 +鴗 > lì; #9D17 +鴘 > biàn; #9D18 +鴙 > zhì; #9D19 +鴚 > gē; #9D1A +鴛 > yuān; #9D1B +鴜 > zī; #9D1C +鴝 > qú; #9D1D +鴞 > xiāo; #9D1E +鴟 > zhī; #9D1F +鴠 > dàn; #9D20 +鴡 > jū; #9D21 +鴢 > yòu; #9D22 +鴣 > gū; #9D23 +鴤 > zhōng; #9D24 +鴥 > yù; #9D25 +鴦 > yāng; #9D26 +鴧 > ròng; #9D27 +鴨 > yā; #9D28 +鴩 > tiĕ; #9D29 +鴪 > yù; #9D2A +鴬 > yīng; #9D2C +鴭 > zhūi; #9D2D +鴮 > wū; #9D2E +鴯 > ér; #9D2F +鴰 > guā; #9D30 +鴱 > ài; #9D31 +鴲 > zhī; #9D32 +鴳 > yàn; #9D33 +鴴 > héng; #9D34 +鴵 > jiāo; #9D35 +鴶 > jí; #9D36 +鴷 > liè; #9D37 +鴸 > zhū; #9D38 +鴹 > rén; #9D39 +鴺 > yí; #9D3A +鴻 > hóng; #9D3B +鴼 > lùo; #9D3C +鴽 > rú; #9D3D +鴾 > móu; #9D3E +鴿 > gē; #9D3F +鵀 > rèn; #9D40 +鵁 > jiāo; #9D41 +鵂 > xīu; #9D42 +鵃 > zhōu; #9D43 +鵄 > zhī; #9D44 +鵅 > lùo; #9D45 +鵉 > luán; #9D49 +鵊 > jiá; #9D4A +鵋 > jì; #9D4B +鵌 > yú; #9D4C +鵍 > huān; #9D4D +鵎 > tŭo; #9D4E +鵏 > bū; #9D4F +鵐 > wú; #9D50 +鵑 > juān; #9D51 +鵒 > yù; #9D52 +鵓 > bó; #9D53 +鵔 > xùn; #9D54 +鵕 > xùn; #9D55 +鵖 > bì; #9D56 +鵗 > xī; #9D57 +鵘 > jùn; #9D58 +鵙 > jú; #9D59 +鵚 > tú; #9D5A +鵛 > jīng; #9D5B +鵜 > tí; #9D5C +鵝 > é; #9D5D +鵞 > é; #9D5E +鵟 > kuáng; #9D5F +鵠 > hú; #9D60 +鵡 > wŭ; #9D61 +鵢 > shēn; #9D62 +鵣 > lài; #9D63 +鵦 > lù; #9D66 +鵧 > píng; #9D67 +鵨 > shū; #9D68 +鵩 > fú; #9D69 +鵪 > ān; #9D6A +鵫 > zhào; #9D6B +鵬 > péng; #9D6C +鵭 > qín; #9D6D +鵮 > qiān; #9D6E +鵯 > bēi; #9D6F +鵰 > diāo; #9D70 +鵱 > lù; #9D71 +鵲 > què; #9D72 +鵳 > jiān; #9D73 +鵴 > jú; #9D74 +鵵 > tù; #9D75 +鵶 > yā; #9D76 +鵷 > yuān; #9D77 +鵸 > qí; #9D78 +鵹 > lí; #9D79 +鵺 > yè; #9D7A +鵻 > zhūi; #9D7B +鵼 > kōng; #9D7C +鵽 > zhùi; #9D7D +鵾 > kūn; #9D7E +鵿 > shēng; #9D7F +鶀 > qí; #9D80 +鶁 > jīng; #9D81 +鶂 > yì; #9D82 +鶃 > yì; #9D83 +鶄 > jīng; #9D84 +鶅 > zī; #9D85 +鶆 > lái; #9D86 +鶇 > dōng; #9D87 +鶈 > qī; #9D88 +鶉 > chún; #9D89 +鶊 > gēng; #9D8A +鶋 > jū; #9D8B +鶌 > qū; #9D8C +鶏 > jī; #9D8F +鶐 > shù; #9D90 +鶒 > chì; #9D92 +鶓 > miáo; #9D93 +鶔 > róu; #9D94 +鶕 > ān; #9D95 +鶖 > qīu; #9D96 +鶗 > tí; #9D97 +鶘 > hú; #9D98 +鶙 > tí; #9D99 +鶚 > è; #9D9A +鶛 > jiē; #9D9B +鶜 > máo; #9D9C +鶝 > fú; #9D9D +鶞 > chūn; #9D9E +鶟 > tú; #9D9F +鶠 > yăn; #9DA0 +鶡 > hé; #9DA1 +鶢 > yuán; #9DA2 +鶣 > piān; #9DA3 +鶤 > yùn; #9DA4 +鶥 > méi; #9DA5 +鶦 > hú; #9DA6 +鶧 > yīng; #9DA7 +鶨 > dùn; #9DA8 +鶩 > mù; #9DA9 +鶪 > jú; #9DAA +鶬 > cāng; #9DAC +鶭 > făng; #9DAD +鶮 > gù; #9DAE +鶯 > yīng; #9DAF +鶰 > yuán; #9DB0 +鶱 > xuān; #9DB1 +鶲 > wēng; #9DB2 +鶳 > shī; #9DB3 +鶴 > hè; #9DB4 +鶵 > chú; #9DB5 +鶶 > táng; #9DB6 +鶷 > xià; #9DB7 +鶸 > rùo; #9DB8 +鶹 > líu; #9DB9 +鶺 > jí; #9DBA +鶻 > gú; #9DBB +鶼 > jiān; #9DBC +鶽 > zhŭn; #9DBD +鶾 > hàn; #9DBE +鶿 > zī; #9DBF +鷀 > zī; #9DC0 +鷁 > nì; #9DC1 +鷂 > yào; #9DC2 +鷃 > yàn; #9DC3 +鷄 > jī; #9DC4 +鷅 > lì; #9DC5 +鷆 > tián; #9DC6 +鷇 > kòu; #9DC7 +鷈 > tī; #9DC8 +鷉 > tī; #9DC9 +鷊 > nì; #9DCA +鷋 > tú; #9DCB +鷌 > mă; #9DCC +鷍 > jiāo; #9DCD +鷎 > gāo; #9DCE +鷏 > tián; #9DCF +鷐 > chén; #9DD0 +鷑 > lì; #9DD1 +鷒 > zhuān; #9DD2 +鷓 > zhè; #9DD3 +鷔 > áo; #9DD4 +鷕 > yăo; #9DD5 +鷖 > yī; #9DD6 +鷗 > ōu; #9DD7 +鷘 > chì; #9DD8 +鷙 > zhì; #9DD9 +鷚 > liáo; #9DDA +鷛 > róng; #9DDB +鷜 > lóu; #9DDC +鷝 > bì; #9DDD +鷞 > shuāng; #9DDE +鷟 > zhúo; #9DDF +鷠 > yú; #9DE0 +鷡 > wú; #9DE1 +鷢 > jué; #9DE2 +鷣 > yín; #9DE3 +鷤 > quán; #9DE4 +鷥 > sī; #9DE5 +鷦 > jiāo; #9DE6 +鷧 > yì; #9DE7 +鷨 > huā; #9DE8 +鷩 > bì; #9DE9 +鷪 > yīng; #9DEA +鷫 > sù; #9DEB +鷬 > huáng; #9DEC +鷭 > fán; #9DED +鷮 > jiāo; #9DEE +鷯 > liáo; #9DEF +鷰 > yàn; #9DF0 +鷱 > kāo; #9DF1 +鷲 > jìu; #9DF2 +鷳 > xián; #9DF3 +鷴 > xián; #9DF4 +鷵 > tú; #9DF5 +鷶 > măi; #9DF6 +鷷 > zūn; #9DF7 +鷸 > yù; #9DF8 +鷹 > yīng; #9DF9 +鷺 > lù; #9DFA +鷻 > tuán; #9DFB +鷼 > xián; #9DFC +鷽 > xué; #9DFD +鷾 > yì; #9DFE +鷿 > pì; #9DFF +鸀 > shú; #9E00 +鸁 > lúo; #9E01 +鸂 > qī; #9E02 +鸃 > yí; #9E03 +鸄 > jí; #9E04 +鸅 > zhé; #9E05 +鸆 > yú; #9E06 +鸇 > zhān; #9E07 +鸈 > yè; #9E08 +鸉 > yáng; #9E09 +鸊 > pì; #9E0A +鸋 > níng; #9E0B +鸌 > hùo; #9E0C +鸍 > mí; #9E0D +鸎 > yīng; #9E0E +鸏 > méng; #9E0F +鸐 > dí; #9E10 +鸑 > yuè; #9E11 +鸒 > yú; #9E12 +鸓 > lĕi; #9E13 +鸔 > bào; #9E14 +鸕 > lú; #9E15 +鸖 > hè; #9E16 +鸗 > lóng; #9E17 +鸘 > shuāng; #9E18 +鸙 > yuè; #9E19 +鸚 > yīng; #9E1A +鸛 > guàn; #9E1B +鸜 > qú; #9E1C +鸝 > lí; #9E1D +鸞 > luán; #9E1E +鸟 > niăo; #9E1F +鸠 > jīu; #9E20 +鸡 > jī; #9E21 +鸢 > yuān; #9E22 +鸣 > míng; #9E23 +鸤 > shī; #9E24 +鸥 > ōu; #9E25 +鸦 > yā; #9E26 +鸧 > cāng; #9E27 +鸨 > băo; #9E28 +鸩 > zhèn; #9E29 +鸪 > gū; #9E2A +鸫 > dōng; #9E2B +鸬 > lú; #9E2C +鸭 > yā; #9E2D +鸮 > xiāo; #9E2E +鸯 > yāng; #9E2F +鸰 > líng; #9E30 +鸱 > zhī; #9E31 +鸲 > qú; #9E32 +鸳 > yuān; #9E33 +鸴 > xué; #9E34 +鸵 > túo; #9E35 +鸶 > sī; #9E36 +鸷 > zhì; #9E37 +鸸 > ér; #9E38 +鸹 > guā; #9E39 +鸺 > xīu; #9E3A +鸻 > héng; #9E3B +鸼 > zhōu; #9E3C +鸽 > gē; #9E3D +鸾 > luán; #9E3E +鸿 > hóng; #9E3F +鹀 > wú; #9E40 +鹁 > bó; #9E41 +鹂 > lí; #9E42 +鹃 > juān; #9E43 +鹄 > hú; #9E44 +鹅 > é; #9E45 +鹆 > yù; #9E46 +鹇 > xián; #9E47 +鹈 > tí; #9E48 +鹉 > wŭ; #9E49 +鹊 > què; #9E4A +鹋 > miáo; #9E4B +鹌 > ān; #9E4C +鹍 > kūn; #9E4D +鹎 > bēi; #9E4E +鹏 > péng; #9E4F +鹐 > qiān; #9E50 +鹑 > chún; #9E51 +鹒 > gēng; #9E52 +鹓 > yuān; #9E53 +鹔 > sù; #9E54 +鹕 > hú; #9E55 +鹖 > hé; #9E56 +鹗 > è; #9E57 +鹘 > gú; #9E58 +鹙 > qīu; #9E59 +鹚 > zī; #9E5A +鹛 > méi; #9E5B +鹜 > mù; #9E5C +鹝 > nì; #9E5D +鹞 > yào; #9E5E +鹟 > wēng; #9E5F +鹠 > líu; #9E60 +鹡 > jí; #9E61 +鹢 > nì; #9E62 +鹣 > jiān; #9E63 +鹤 > hè; #9E64 +鹥 > yī; #9E65 +鹦 > yīng; #9E66 +鹧 > zhè; #9E67 +鹨 > liáo; #9E68 +鹩 > liáo; #9E69 +鹪 > jiāo; #9E6A +鹫 > jìu; #9E6B +鹬 > yù; #9E6C +鹭 > lù; #9E6D +鹮 > xuán; #9E6E +鹯 > zhān; #9E6F +鹰 > yīng; #9E70 +鹱 > hùo; #9E71 +鹲 > méng; #9E72 +鹳 > guàn; #9E73 +鹴 > shuāng; #9E74 +鹵 > lŭ; #9E75 +鹶 > jīn; #9E76 +鹷 > líng; #9E77 +鹸 > jiăn; #9E78 +鹹 > xián; #9E79 +鹺 > cúo; #9E7A +鹻 > jiăn; #9E7B +鹼 > jiăn; #9E7C +鹽 > yán; #9E7D +鹾 > cúo; #9E7E +鹿 > lù; #9E7F +麀 > yōu; #9E80 +麁 > cū; #9E81 +麂 > jĭ; #9E82 +麃 > biāo; #9E83 +麄 > cū; #9E84 +麅 > biāo; #9E85 +麆 > zhù; #9E86 +麇 > jūn; #9E87 +麈 > zhŭ; #9E88 +麉 > jiān; #9E89 +麊 > mí; #9E8A +麋 > mí; #9E8B +麌 > wú; #9E8C +麍 > líu; #9E8D +麎 > chén; #9E8E +麏 > jūn; #9E8F +麐 > lín; #9E90 +麑 > ní; #9E91 +麒 > qí; #9E92 +麓 > lù; #9E93 +麔 > jìu; #9E94 +麕 > jūn; #9E95 +麖 > jīng; #9E96 +麗 > lì; #9E97 +麘 > xiāng; #9E98 +麙 > yán; #9E99 +麚 > jiā; #9E9A +麛 > mí; #9E9B +麜 > lì; #9E9C +麝 > shè; #9E9D +麞 > zhāng; #9E9E +麟 > lín; #9E9F +麠 > jīng; #9EA0 +麡 > jī; #9EA1 +麢 > líng; #9EA2 +麣 > yán; #9EA3 +麤 > cū; #9EA4 +麥 > mài; #9EA5 +麦 > mài; #9EA6 +麧 > gē; #9EA7 +麨 > chăo; #9EA8 +麩 > fū; #9EA9 +麪 > miăn; #9EAA +麫 > miăn; #9EAB +麬 > fū; #9EAC +麭 > pào; #9EAD +麮 > qù; #9EAE +麯 > qú; #9EAF +麰 > móu; #9EB0 +麱 > fū; #9EB1 +麲 > xiàn; #9EB2 +麳 > lái; #9EB3 +麴 > qú; #9EB4 +麵 > miàn; #9EB5 +麷 > fēng; #9EB7 +麸 > fū; #9EB8 +麹 > qú; #9EB9 +麺 > miàn; #9EBA +麻 > má; #9EBB +麼 > mo; #9EBC +麽 > mo; #9EBD +麾 > hūi; #9EBE +黀 > zōu; #9EC0 +黁 > nēn; #9EC1 +黂 > fén; #9EC2 +黃 > huáng; #9EC3 +黄 > huáng; #9EC4 +黅 > jīn; #9EC5 +黆 > guāng; #9EC6 +黇 > tiān; #9EC7 +黈 > tŏu; #9EC8 +黉 > héng; #9EC9 +黊 > xī; #9ECA +黋 > kuăng; #9ECB +黌 > héng; #9ECC +黍 > shŭ; #9ECD +黎 > lí; #9ECE +黏 > nián; #9ECF +黐 > chī; #9ED0 +黑 > hēi; #9ED1 +黒 > hēi; #9ED2 +黓 > yì; #9ED3 +黔 > qián; #9ED4 +黕 > dān; #9ED5 +黖 > xì; #9ED6 +黗 > tuăn; #9ED7 +默 > mò; #9ED8 +黙 > mò; #9ED9 +黚 > qián; #9EDA +黛 > dài; #9EDB +黜 > chù; #9EDC +黝 > yŏu; #9EDD +點 > diăn; #9EDE +黟 > yī; #9EDF +黠 > xiá; #9EE0 +黡 > yăn; #9EE1 +黢 > qū; #9EE2 +黣 > mĕi; #9EE3 +黤 > yăn; #9EE4 +黥 > jīng; #9EE5 +黦 > yù; #9EE6 +黧 > lí; #9EE7 +黨 > dăng; #9EE8 +黩 > dú; #9EE9 +黪 > căn; #9EEA +黫 > yīn; #9EEB +黬 > àn; #9EEC +黭 > yān; #9EED +黮 > tăn; #9EEE +黯 > àn; #9EEF +黰 > zhĕn; #9EF0 +黱 > dài; #9EF1 +黲 > căn; #9EF2 +黳 > yī; #9EF3 +黴 > méi; #9EF4 +黵 > dăn; #9EF5 +黶 > yăn; #9EF6 +黷 > dú; #9EF7 +黸 > lú; #9EF8 +黹 > zhĭ; #9EF9 +黺 > fĕn; #9EFA +黻 > fù; #9EFB +黼 > fŭ; #9EFC +黽 > mĭn; #9EFD +黾 > mĭn; #9EFE +黿 > yuán; #9EFF +鼀 > cù; #9F00 +鼁 > qù; #9F01 +鼂 > cháo; #9F02 +鼃 > wā; #9F03 +鼄 > zhū; #9F04 +鼅 > zhī; #9F05 +鼆 > máng; #9F06 +鼇 > áo; #9F07 +鼈 > biē; #9F08 +鼉 > túo; #9F09 +鼊 > bì; #9F0A +鼋 > yuán; #9F0B +鼌 > cháo; #9F0C +鼍 > túo; #9F0D +鼎 > dĭng; #9F0E +鼏 > mì; #9F0F +鼐 > nài; #9F10 +鼑 > dĭng; #9F11 +鼒 > zī; #9F12 +鼓 > gŭ; #9F13 +鼔 > gŭ; #9F14 +鼕 > dōng; #9F15 +鼖 > fén; #9F16 +鼗 > táo; #9F17 +鼘 > yuān; #9F18 +鼙 > pí; #9F19 +鼚 > chāng; #9F1A +鼛 > gāo; #9F1B +鼜 > qì; #9F1C +鼝 > yuān; #9F1D +鼞 > tāng; #9F1E +鼟 > tēng; #9F1F +鼠 > shŭ; #9F20 +鼡 > shŭ; #9F21 +鼢 > fén; #9F22 +鼣 > fèi; #9F23 +鼤 > wén; #9F24 +鼥 > bá; #9F25 +鼦 > diāo; #9F26 +鼧 > túo; #9F27 +鼨 > tóng; #9F28 +鼩 > qú; #9F29 +鼪 > shēng; #9F2A +鼫 > shí; #9F2B +鼬 > yòu; #9F2C +鼭 > shí; #9F2D +鼮 > tíng; #9F2E +鼯 > wú; #9F2F +鼰 > niàn; #9F30 +鼱 > jīng; #9F31 +鼲 > hún; #9F32 +鼳 > jú; #9F33 +鼴 > yăn; #9F34 +鼵 > tú; #9F35 +鼶 > tí; #9F36 +鼷 > xī; #9F37 +鼸 > xiăn; #9F38 +鼹 > yăn; #9F39 +鼺 > léi; #9F3A +鼻 > bí; #9F3B +鼼 > yăo; #9F3C +鼽 > qíu; #9F3D +鼾 > hān; #9F3E +鼿 > wū; #9F3F +齀 > wù; #9F40 +齁 > hóu; #9F41 +齂 > xì; #9F42 +齃 > gé; #9F43 +齄 > zhā; #9F44 +齅 > xìu; #9F45 +齆 > wèng; #9F46 +齇 > zhā; #9F47 +齈 > nóng; #9F48 +齉 > nàng; #9F49 +齊 > qí; #9F4A +齋 > zhāi; #9F4B +齌 > jì; #9F4C +齍 > zī; #9F4D +齎 > jī; #9F4E +齏 > jī; #9F4F +齐 > qí; #9F50 +齑 > jī; #9F51 +齒 > chĭ; #9F52 +齓 > chèn; #9F53 +齔 > chèn; #9F54 +齕 > hé; #9F55 +齖 > yá; #9F56 +齗 > kĕn; #9F57 +齘 > xiè; #9F58 +齙 > páo; #9F59 +齚 > cùo; #9F5A +齛 > shì; #9F5B +齜 > zī; #9F5C +齝 > chī; #9F5D +齞 > niàn; #9F5E +齟 > jŭ; #9F5F +齠 > tiáo; #9F60 +齡 > líng; #9F61 +齢 > líng; #9F62 +齣 > chū; #9F63 +齤 > quán; #9F64 +齥 > xiè; #9F65 +齦 > kĕn; #9F66 +齧 > niè; #9F67 +齨 > jìu; #9F68 +齩 > yăo; #9F69 +齪 > chùo; #9F6A +齫 > kŭn; #9F6B +齬 > yŭ; #9F6C +齭 > chŭ; #9F6D +齮 > yĭ; #9F6E +齯 > ní; #9F6F +齰 > cùo; #9F70 +齱 > zōu; #9F71 +齲 > qŭ; #9F72 +齳 > nĕn; #9F73 +齴 > xiăn; #9F74 +齵 > óu; #9F75 +齶 > è; #9F76 +齷 > wò; #9F77 +齸 > yì; #9F78 +齹 > chūo; #9F79 +齺 > zōu; #9F7A +齻 > diān; #9F7B +齼 > chŭ; #9F7C +齽 > jìn; #9F7D +齾 > yà; #9F7E +齿 > chĭ; #9F7F +龀 > chèn; #9F80 +龁 > hé; #9F81 +龂 > kĕn; #9F82 +龃 > jŭ; #9F83 +龄 > líng; #9F84 +龅 > páo; #9F85 +龆 > tiáo; #9F86 +龇 > zī; #9F87 +龈 > kĕn; #9F88 +龉 > yŭ; #9F89 +龊 > chùo; #9F8A +龋 > qŭ; #9F8B +龌 > wò; #9F8C +龍 > lóng; #9F8D +龎 > páng; #9F8E +龏 > gōng; #9F8F +龐 > páng; #9F90 +龑 > yăn; #9F91 +龒 > lóng; #9F92 +龓 > lóng; #9F93 +龔 > gōng; #9F94 +龕 > kān; #9F95 +龖 > tà; #9F96 +龗 > líng; #9F97 +龘 > tà; #9F98 +龙 > lóng; #9F99 +龚 > gōng; #9F9A +龛 > kān; #9F9B +龜 > gūi; #9F9C +龝 > qīu; #9F9D +龞 > biē; #9F9E +龟 > gūi; #9F9F +龠 > yuè; #9FA0 +龡 > chùi; #9FA1 +龢 > hé; #9FA2 +龣 > jué; #9FA3 +龤 > xié; #9FA4 +龥 > yù; #9FA5 +癩 > là; #F90E +兀 > wù; #FA0C +嗀 > hùo; #FA0D +塚 > zhŏng; #FA10 +晴 > qíng; #FA12 +凞 > xī; #FA15 +猪 > zhū; #FA16 +益 > yì; #FA17 +礼 > lĭ; #FA18 +神 > shén; #FA19 +祥 > xiáng; #FA1A +福 > fú; #FA1B +靖 > jìng; #FA1C +精 > jīng; #FA1D +羽 > yŭ; #FA1E +諸 > zhū; #FA22 +逸 > yì; #FA25 +都 > dū; #FA26 +飯 > fàn; #FA2A +飼 > sì; #FA2B +館 > guăn; #FA2C +鶴 > hè; #FA2D + +# eof diff --git a/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt new file mode 100644 index 00000000000..fe353f3a024 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt @@ -0,0 +1,6366 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2001, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +# Date: Tue Jan 23 12:42:02 2001 +#-------------------------------------------------------------------- + +# Kanji-English + +丁>'[male adult]'; +七>'[seven]'; +万>'[ten thousand]'; +丈>'[unit of length equal 3.3 meters]'; +三>'[three]'; +上>'[top]'; +下>'[under]'; +不>'[no]'; +与>'[and]'; +丐>'[beggar]'; +丑>'[clown]'; +且>'[moreover]'; +丕>'[great]'; +世>'[generation]'; +丗>'[thirty]'; +丘>'[hill]'; +丙>'[third of heavenly stems]'; +丞>'[assist]'; +両>'[two]'; +並>'[equal to]'; +个>'[numerary adjunct]'; +中>'[central]'; +丱>'[child''s hairstyle bound in two tufts]'; +串>'[string]'; +丶>'[dot]'; +丸>'[small round object]'; +丹>'[cinnabar (native HgS)]'; +主>'[master]'; +丼>'[bowl of food]'; +丿>'[line]'; +乂>'[govern]'; +乃>'[then]'; +久>'[long time (ago)]'; +之>'[''s (marks preceding phrase as modifier of following phrase)]'; +乍>'[suddenly]'; +乎>'[interrogative or exclamatory final particle]'; +乏>'[lack]'; +乕>'[tiger]'; +乖>'[rebel]'; +乗>'[ride]'; +乘>'[ride]'; +乙>'[second heaven''s stem]'; +九>'[nine]'; +乞>'[beg]'; +也>'[also]'; +乢>'[lid]'; +乱>'[confusion]'; +乳>'[breast]'; +乾>'[dry]'; +亀>'[turtle or tortoise]'; +亂>'[confusion]'; +亅>'[hook]'; +了>'[to finish]'; +予>'[I]'; +争>'[dispute]'; +亊>'[affair]'; +事>'[affair]'; +二>'[two]'; +于>'[in]'; +云>'[say]'; +互>'[mutually]'; +五>'[five]'; +井>'[well]'; +亘>'[extend across]'; +亙>'[extend across]'; +些>'[little]'; +亜>'[asia]'; +亞>'[asia]'; +亟>'[urgently]'; +亠>'[head]'; +亡>'[death]'; +亢>'[high]'; +交>'[mix]'; +亥>'[last of 12 earth branches]'; +亦>'[also]'; +亨>'[smoothly]'; +享>'[enjoy]'; +京>'[capital city]'; +亭>'[pavilion]'; +亮>'[bright]'; +亰>'[capital city]'; +亳>'[name of district in Anhui]'; +亶>'[sincere]'; +人>'[man]'; +什>'[file of ten soldiers]'; +仁>'[humaneness]'; +仂>'[surplus or excess]'; +仄>'[slanting]'; +仆>'[fall forward]'; +仇>'[enemy]'; +今>'[now]'; +介>'[forerunner]'; +仍>'[yet]'; +从>'[from]'; +仏>'[buddha]'; +仔>'[small thing]'; +仕>'[official]'; +他>'[other]'; +仗>'[rely upon]'; +付>'[give]'; +仙>'[Taoist super-being]'; +仝>'[together]'; +仞>'[ancient unit of measure (8 feet)]'; +仟>'[one thousand]'; +代>'[replace]'; +令>'[command]'; +以>'[by means of]'; +仭>'[ancient unit of measure (8 feet)]'; +仮>'[falsehood]'; +仰>'[raise the head to look]'; +仲>'[middle brother]'; +件>'[numerary adjunct for article]'; +价>'[price]'; +任>'[trust to]'; +企>'[plan a project]'; +伉>'[compare]'; +伊>'[third person pronoun]'; +伍>'[five]'; +伎>'[talent]'; +伏>'[crouch]'; +伐>'[cut down]'; +休>'[rest]'; +会>'[assemble]'; +伜>'[deputy]'; +伝>'[summon]'; +伯>'[older brother]'; +估>'[merchant]'; +伴>'[companion]'; +伶>'[lonely]'; +伸>'[extend]'; +伺>'[serve]'; +似>'[resemble]'; +伽>'[transcription of sanskrit gha in buddhist texts ('ëmâæ' \"samgha\")]'; +佃>'[tenant farmer]'; +但>'[only]'; +佇>'[wait]'; +位>'[throne]'; +低>'[low]'; +住>'[reside]'; +佐>'[assist]'; +佑>'[help]'; +体>'[body]'; +何>'[what]'; +佗>'[other]'; +余>'[I]'; +佚>'[indulge in pleasures]'; +佛>'[buddha (contraction of MC 'bhiêtdha')]'; +作>'[make]'; +佝>'[rickets]'; +佞>'[flattery]'; +佩>'[belt ornament]'; +佯>'[pretend]'; +佰>'[hundred]'; +佳>'[good]'; +併>'[combine]'; +佶>'[strong]'; +佻>'[frivolous]'; +佼>'[beautiful]'; +使>'[cause]'; +侃>'[upright and strong]'; +來>'[come]'; +侈>'[luxurious]'; +例>'[precedent]'; +侍>'[serve]'; +侏>'[small]'; +侑>'[help]'; +侖>'[logical reasons]'; +侘>'[disappointed]'; +供>'[supply]'; +依>'[rely on]'; +侠>'[chivalrous person]'; +価>'[price]'; +侫>'[flattery]'; +侭>'[complete]'; +侮>'[insult]'; +侯>'[marquis]'; +侵>'[invade]'; +侶>'[companion]'; +便>'[convenience]'; +係>'[bind]'; +促>'[urge]'; +俄>'[sudden(ly)]'; +俊>'[talented]'; +俎>'[chopping board or block]'; +俐>'[smooth]'; +俑>'[wooden figure buried with dead]'; +俔>'[like]'; +俗>'[social customs]'; +俘>'[prisoner of war]'; +俚>'[rustic]'; +俛>'[make effort]'; +保>'[protect]'; +俟>'[wait for]'; +信>'[trust]'; +俣>'[big]'; +#"俣>'[big]'", +俥>'[rickshaw]'; +修>'[study]'; +俯>'[bow down]'; +俳>'[actor]'; +俵>'[divide]'; +俶>'[start]'; +俸>'[wages]'; +俺>'[personal pronoun]'; +俾>'[so that]'; +倅>'[deputy]'; +倆>'[clever]'; +倉>'[granary]'; +個>'[numerary adjunct]'; +倍>'[times]'; +倏>'[hastily]'; +們>'[adjunct pronoun indicate plural]'; +倒>'[fall over]'; +倔>'[stubborn]'; +倖>'[lucky]'; +候>'[wait]'; +倚>'[rely on]'; +借>'[borrow]'; +倡>'[guide]'; +倣>'[imitate]'; +値>'[price]'; +倥>'[boorish]'; +倦>'[be tired of]'; +倨>'[arrogant]'; +倩>'[beautiful]'; +倪>'[feeble]'; +倫>'[normal human relationships]'; +倬>'[noticeable]'; +倭>'[dwarf]'; +倶>'[all]'; +倹>'[temperate]'; +偃>'[cease]'; +假>'[falsehood]'; +偈>'[brave]'; +偉>'[great]'; +偏>'[inclined one side]'; +偐>'[false]'; +偕>'[together]'; +偖>'[rip up]'; +做>'[work]'; +停>'[stop]'; +健>'[strong]'; +偬>'[urgent]'; +偲>'[talented]'; +側>'[side]'; +偵>'[spy]'; +偶>'[accidentally]'; +偸>'[to steal]'; +偽>'[false]'; +傀>'[great]'; +傅>'[tutor]'; +傍>'[by side of]'; +傑>'[hero]'; +傘>'[umbrella]'; +備>'[prepare]'; +傚>'[imitate]'; +催>'[press]'; +傭>'[hire]'; +傲>'[proud]'; +傳>'[summon]'; +傴>'[humpback]'; +債>'[debt]'; +傷>'[wound]'; +傾>'[upset]'; +僂>'[humpback]'; +僅>'[only]'; +僉>'[all]'; +僊>'[Taoist super-being]'; +働>'[labor]'; +像>'[picture]'; +僑>'[sojourn]'; +僕>'[slave]'; +僖>'[joy]'; +僚>'[companion]'; +僞>'[false]'; +僣>'[assume]'; +僥>'[be lucky]'; +僧>'[buddhist priest]'; +僭>'[assume]'; +僮>'[page]'; +僵>'[stiff and motionless]'; +價>'[price]'; +僻>'[out-of-the-way]'; +儀>'[ceremony]'; +儁>'[outstanding]'; +儂>'[I]'; +億>'[hundred million]'; +儉>'[temperate]'; +儒>'[confucian scholar]'; +儔>'[companion]'; +儕>'[a company]'; +#"儕>'[a company]'", +儘>'[utmost]'; +#"儘>'[utmost]'", +償>'[repay]'; +儡>'[puppet]'; +優>'[superior]'; +儲>'[save money]'; +儷>'[spouse]'; +儺>'[rich]'; +儻>'[if]'; +儼>'[grave]'; +儿>'[son]'; +兀>'[to cut off the feet]'; +允>'[to grant]'; +元>'[first]'; +兄>'[elder brother]'; +充>'[fill]'; +兆>'[omen]'; +兇>'[atrocious]'; +先>'[first]'; +光>'[light]'; +克>'[gram]'; +兌>'[cash]'; +免>'[spare]'; +兎>'[rabbit]'; +児>'[son]'; +兒>'[son]'; +兔>'[rabbit]'; +党>'[political party]'; +兜>'[pouch]'; +兢>'[fearful]'; +入>'[enter]'; +全>'[maintain]'; +兩>'[two]'; +兪>'[surname]'; +八>'[eight]'; +公>'[fair]'; +六>'[number six]'; +兮>'[exclamatory particle]'; +共>'[together with]'; +兵>'[soldier]'; +其>'[his]'; +具>'[tool]'; +典>'[law]'; +兼>'[unite]'; +冀>'[hope for]'; +冂>'[wide]'; +内>'[inside]'; +円>'[yen]'; +冉>'[tender]'; +冊>'[book]'; +册>'[book]'; +再>'[again]'; +冏>'[[not found in dictionary]]'; +冐>'[risk]'; +冑>'[helmet]'; +冒>'[risk]'; +冓>'[a secluded place]'; +冕>'[crown]'; +冖>'[cover]'; +冗>'[excessive]'; +写>'[write]'; +冠>'[cap]'; +冢>'[burial mound]'; +冤>'[grievance]'; +冥>'[dark]'; +冦>'[bandits]'; +冨>'[abundant]'; +冩>'[write]'; +冪>'[cover-cloth]'; +冫>'[ice]'; +冬>'[winter]'; +冰>'[ice]'; +冱>'[freezing]'; +冲>'[soar]'; +决>'[decide]'; +冴>'[freezing]'; +况>'[condition]'; +冶>'[smelt]'; +冷>'[cold]'; +冽>'[cold and raw]'; +凄>'[bitter cold]'; +凅>'[dried up]'; +准>'[approve]'; +凉>'[cool]'; +凋>'[be withered]'; +凌>'[pure]'; +凍>'[freeze]'; +凖>'[rule]'; +凛>'[to shiver with cold or fear]'; +凜>'[shiver with cold or fear]'; +凝>'[coagulate]'; +几>'[small table]'; +凡>'[all]'; +処>'[place]'; +凧>'[kite]'; +凩>'[wintry wind]'; +凪>'[calm]'; +凭>'[lean on]'; +凰>'[female phoenix]'; +凱>'[triumphant]'; +凵>'[receptacle]'; +凶>'[culprit]'; +凸>'[protrude]'; +凹>'[concave]'; +出>'[go out]'; +函>'[correspondence]'; +凾>'[correspondence]'; +刀>'[knife]'; +刃>'[edged tool]'; +刄>'[edged tool]'; +分>'[divide]'; +切>'[cut]'; +刈>'[cut off]'; +刊>'[publication]'; +刋>'[publication]'; +刎>'[behead]'; +刑>'[punishment]'; +刔>'[scoop out]'; +列>'[line]'; +初>'[beginning]'; +判>'[judge]'; +別>'[separate]'; +刧>'[disaster]'; +利>'[gains]'; +刪>'[to cut]'; +刮>'[shave]'; +到>'[go to]'; +刳>'[cut out]'; +制>'[system]'; +刷>'[brush]'; +券>'[certificate]'; +刹>'[temple]'; +刺>'[stab]'; +刻>'[carve]'; +剃>'[shave]'; +剄>'[cut throat]'; +則>'[rule]'; +削>'[scrape off]'; +剋>'[subdue]'; +剌>'[slash]'; +前>'[in front]'; +剏>'[establish]'; +剔>'[pick out]'; +剖>'[split in two]'; +剛>'[hard]'; +剞>'[carving or engraving knife]'; +剣>'[sword]'; +剤>'[medicinal preparation]'; +剥>'[peel]'; +剩>'[leftovers]'; +剪>'[scissors]'; +副>'[assist]'; +剰>'[leftovers]'; +剱>'[sword]'; +割>'[cut]'; +剳>'[brief note]'; +剴>'[sharpen]'; +創>'[establish]'; +剽>'[rob]'; +剿>'[destroy]'; +劃>'[divide]'; +劇>'[theatrical plays]'; +劈>'[cut apart]'; +劉>'[surname]'; +劍>'[sword]'; +劑>'[medicinal preparation]'; +劒>'[sword]'; +劔>'[sword]'; +力>'[power]'; +功>'[achievement]'; +加>'[add to]'; +劣>'[bad]'; +助>'[help]'; +努>'[exert]'; +劫>'[take by force]'; +劬>'[be diligent]'; +劭>'[encourage]'; +励>'[strive]'; +労>'[labor]'; +劵>'[certificate]'; +効>'[efficacious]'; +劼>'[be discreet]'; +劾>'[examine into]'; +勁>'[strong]'; +勃>'[suddenly]'; +勅>'[imperial degree]'; +勇>'[brave]'; +勉>'[endeavor]'; +勍>'[strong]'; +勒>'[strangle]'; +動>'[move]'; +勗>'[enjoin]'; +勘>'[investigate]'; +務>'[affairs]'; +勝>'[victory]'; +勞>'[labor]'; +募>'[levy]'; +勠>'[join forces]'; +勢>'[power]'; +勣>'[achievements]'; +勤>'[industrious]'; +勦>'[destroy]'; +勧>'[recommend]'; +勲>'[meritorious deed]'; +勳>'[meritorious deed]'; +勵>'[strive]'; +勸>'[recommend]'; +勹>'[wrap]'; +勺>'[spoon]'; +勾>'[hook]'; +勿>'[must not]'; +匁>'[Japanese unit of weight (1/1000 of a kan)]'; +匂>'[fragrance]'; +包>'[wrap]'; +匆>'[hastily]'; +匈>'[breast]'; +匍>'[crawl]'; +匏>'[gourd]'; +匐>'[fall prostrate]'; +匕>'[spoon]'; +化>'[change]'; +北>'[north]'; +匙>'[spoon]'; +匚>'[box]'; +匝>'[full circle]'; +匠>'[craftsman]'; +匡>'[correct]'; +匣>'[small box]'; +匪>'[bandits]'; +匯>'[concourse]'; +匱>'[to lack]'; +匳>'[ladies toilet case with mirror]'; +匸>'[box]'; +匹>'[bolt of cloth]'; +区>'[area]'; +医>'[cure]'; +匿>'[hide]'; +區>'[area]'; +十>'[ten]'; +千>'[thousand]'; +卅>'[thirty]'; +卆>'[soldier]'; +升>'[arise]'; +午>'[noon]'; +卉>'[general term for plants]'; +半>'[half]'; +卍>'[swastika - fourth of auspicious]'; +卑>'[humble]'; +卒>'[soldier]'; +卓>'[profound]'; +協>'[be united]'; +南>'[south]'; +#"南>'[south]'", +博>'[gamble]'; +卜>'[fortune telling]'; +卞>'[be impatient]'; +占>'[divine]'; +卦>'[fortune telling]'; +卩>'[seal]'; +卮>'[measuring cup]'; +卯>'[4th of Earth Branches]'; +印>'[print]'; +危>'[dangerous]'; +即>'[promptly]'; +却>'[still]'; +卵>'[egg]'; +卷>'[scroll]'; +卸>'[lay down]'; +卻>'[still]'; +卿>'[noble]'; +厂>'[factory]'; +厄>'[adversity]'; +厖>'[bulky]'; +厘>'[thousandth part of tael]'; +厚>'[thick]'; +原>'[source]'; +厠>'[mingle with]'; +厥>'[personal pronoun - he]'; +厦>'[big building]'; +厨>'[kitchen]'; +厩>'[stable]'; +厭>'[dislike]'; +厮>'[servant]'; +厰>'[factory]'; +厳>'[strict]'; +厶>'[private]'; +去>'[go away]'; +参>'[take part in]'; +參>'[take part in]'; +又>'[and]'; +叉>'[crotch]'; +及>'[extend]'; +友>'[friend]'; +双>'[set of two]'; +反>'[reverse]'; +収>'[gather together]'; +叔>'[father''s younger brother]'; +取>'[take]'; +受>'[receive]'; +叙>'[express]'; +叛>'[rebel]'; +叟>'[old man]'; +叡>'[astute]'; +叢>'[bush]'; +口>'[mouth]'; +古>'[old]'; +句>'[sentence]'; +叨>'[talkative]'; +叩>'[knock]'; +只>'[only]'; +叫>'[cry]'; +召>'[imperial decree]'; +叭>'[trumpet]'; +叮>'[exhort or enjoin repeatedly]'; +可>'[may]'; +台>'[platform]'; +叱>'[scold]'; +史>'[history]'; +右>'[right]'; +叶>'[to harmonize]'; +号>'[mark]'; +司>'[take charge of]'; +#"叹>'[sigh]'", +吁>'[interjection \"Alas!\"]'; +吃>'[eat]'; +各>'[each]'; +合>'[combine]'; +吉>'[lucky]'; +吊>'[condole]'; +吋>'[inch]'; +同>'[same]'; +名>'[name]'; +后>'[queen]'; +吏>'[government official]'; +吐>'[vomit]'; +向>'[toward]'; +君>'[sovereign]'; +吝>'[stingy]'; +吟>'[sing]'; +吠>'[bark]'; +否>'[not]'; +吩>'[order]'; +含>'[hold in mouth]'; +听>'[hear]'; +吭>'[throat]'; +吮>'[suck with mouth]'; +吶>'[raise voice]'; +吸>'[inhale]'; +吹>'[blow]'; +吻>'[kiss]'; +吼>'[roar]'; +吽>'[\"OM\"]'; +吾>'[i]'; +呀>'[particle used express surprise]'; +呂>'[surname]'; +呆>'[dull]'; +呈>'[submit]'; +呉>'[one of warring states]'; +告>'[tell]'; +呎>'[foot]'; +呑>'[swallow]'; +#"呜>'[sound of crying]'", +周>'[zhou dynasty]'; +呪>'[curse]'; +#"呰>'[................................]'", +呱>'[wail]'; +味>'[taste]'; +呵>'[scold]'; +呶>'[talkative]'; +呷>'[suck]'; +呻>'[groan]'; +呼>'[breathe sigh]'; +命>'[life]'; +咀>'[suck]'; +咄>'[noise of rage]'; +咆>'[roar]'; +咋>'[why? how? what?]'; +和>'[harmony]'; +咎>'[fault]'; +咏>'[sing song or poem]'; +咐>'[instruct]'; +咒>'[curse]'; +咢>'[sound]'; +咤>'[scold]'; +咥>'[sound of cat]'; +咨>'[inquire]'; +咫>'[foot measure of Zhou dynasty]'; +咬>'[bite]'; +咯>'[final particle]'; +咲>'[smile]'; +咳>'[cough]'; +咸>'[together]'; +咼>'[chat]'; +咽>'[throat]'; +咾>'[a noise]'; +哀>'[sad]'; +品>'[article]'; +哂>'[smile]'; +哄>'[coax]'; +哇>'[vomit]'; +哈>'[sound of laughter]'; +哉>'[final exclamatory particle]'; +#"哗>'[rushing sound]'", +員>'[member]'; +哢>'[syllable]'; +哥>'[elder brother]'; +哦>'[oh? really? is that so?]'; +哨>'[whistle]'; +哩>'[mile]'; +哭>'[weep]'; +哮>'[cough]'; +哲>'[wise]'; +哺>'[chew food]'; +哽>'[choke]'; +唄>'[final particle of assertion pathaka]'; +唆>'[make mischief]'; +唇>'[lips]'; +唏>'[weep or sob]'; +唐>'[tang dynasty]'; +唔>'[hold in mouth]'; +唖>'[dumb]'; +售>'[sell]'; +唯>'[only]'; +唱>'[sing]'; +唳>'[cry of bird]'; +唸>'[recite]'; +唹>'[to smile at]'; +唾>'[spit]'; +啀>'[gnaw]'; +啄>'[to peck]'; +#"啄>'[to peck]'", +商>'[commerce]'; +啌>'[animal disease]'; +問>'[ask (about)]'; +啓>'[open]'; +啖>'[eat]'; +啗>'[eat]'; +啜>'[sip]'; +#"啜>'[sip]'", +啣>'[hold in mouth]'; +啻>'[only]'; +啼>'[weep]'; +啾>'[wailing of child]'; +喀>'[vomit]'; +喃>'[keep talking]'; +善>'[good]'; +喇>'[horn]'; +喉>'[throat]'; +喊>'[shout]'; +喋>'[nag]'; +喘>'[pant]'; +喙>'[beak]'; +喚>'[call]'; +喜>'[like]'; +喝>'[drink]'; +喞>'[chirping of insects]'; +喟>'[heave sigh]'; +喧>'[lively]'; +喨>'[wail]'; +喩>'[metaphor]'; +喪>'[mourning]'; +喫>'[eat]'; +喬>'[tall]'; +單>'[single]'; +喰>'[to eat]'; +営>'[encampment]'; +嗄>'[hoarse of voice]'; +嗅>'[smell]'; +嗇>'[miserly]'; +嗔>'[be angry at]'; +嗚>'[sound of crying]'; +嗜>'[be fond of]'; +嗟>'[sigh]'; +嗣>'[to connect]'; +嗤>'[laugh at]'; +嗷>'[loud clamor]'; +嗹>'[chatter]'; +嗽>'[cough]'; +嗾>'[to set a dog on]'; +嘆>'[sigh]'; +嘉>'[excellent]'; +嘔>'[vomit]'; +嘖>'[interjection of approval or admi]'; +嘗>'[taste]'; +嘘>'[exhale]'; +嘛>'[final exclamatory particle]'; +嘩>'[rushing sound]'; +嘯>'[roar]'; +嘱>'[order]'; +嘲>'[ridicule]'; +嘴>'[mouth]'; +嘶>'[neighing of a horse]'; +嘸>'[unclear]'; +噂>'[meet]'; +噌>'[scold]'; +噎>'[choke]'; +噐>'[receptacle]'; +噛>'[bite]'; +噤>'[close]'; +器>'[receptacle]'; +噪>'[be noisy]'; +噫>'[belch]'; +噬>'[bite]'; +噴>'[spurt]'; +噸>'[metric ton]'; +噺>'[story]'; +嚀>'[enjoin]'; +嚆>'[give forth sound]'; +嚇>'[scare]'; +嚊>'[to pant]'; +嚏>'[sneeze]'; +嚔>'[sneeze]'; +#"嚜>'[be silent]'", +嚢>'[bag]'; +嚥>'[swallow]'; +嚮>'[guide]'; +嚴>'[strict]'; +嚶>'[seek friends]'; +嚼>'[prattle]'; +囀>'[sing]'; +囁>'[move lip when speaking]'; +囂>'[be noisy]'; +#"囂>'[be noisy]'", +囈>'[talk in one''s sleep]'; +#"囍>'[double happiness]'", +囑>'[order]'; +囓>'[gnaw]'; +囗>'[erect]'; +囘>'[return]'; +囚>'[prisoner]'; +四>'[four]'; +回>'[return]'; +因>'[cause]'; +団>'[sphere]'; +囮>'[inveigle]'; +困>'[surround]'; +囲>'[surround]'; +図>'[diagram]'; +囹>'[prison]'; +固>'[become solid]'; +国>'[nation]'; +囿>'[pen up]'; +圀>'[nation]'; +圃>'[garden]'; +圄>'[prison]'; +圈>'[to circle]'; +圉>'[stable]'; +國>'[nation]'; +圍>'[surround]'; +圏>'[to circle]'; +園>'[garden]'; +圓>'[circle]'; +圖>'[diagram]'; +團>'[sphere]'; +圜>'[circle]'; +土>'[soil]'; +圦>'[(kokuji) water gate]'; +#"圦>'[(kokuji) water gate]'", +在>'[be at]'; +圭>'[jade pointed at top]'; +地>'[earth]'; +#"圳>'[furrow in field]'", +#"圳>'[furrow in field]'", +圻>'[border]'; +址>'[site]'; +坂>'[hillside]'; +均>'[equal]'; +坊>'[neighborhood]'; +坎>'[pit]'; +坏>'[rotten]'; +坐>'[sit]'; +坑>'[pit]'; +坡>'[slope]'; +坤>'[earth]'; +坦>'[flat]'; +坩>'[earthenware]'; +坪>'[level ground]'; +坿>'[mound]'; +垂>'[let down]'; +#"垆>'[black clods of earth]'", +#"垉>'[................................]'", +型>'[pattern]'; +垓>'[border]'; +垠>'[boundary]'; +垢>'[dirt]'; +垣>'[low wall]'; +垤>'[ant-hill]'; +#"垩>'[holy]'", +#"垮>'[be defeated]'", +#"垲>'[high and dry place]'", +埀>'[let down]'; +埃>'[fine dust]'; +埆>'[stony]'; +埋>'[bury]'; +城>'[castle]'; +埒>'[enclosure]'; +埓>'[enclosure]'; +埔>'[plain]'; +#"埔>'[plain]'", +埜>'[open country]'; +域>'[district]'; +埠>'[port city]'; +#"埣>'[................................]'", +埴>'[soil with large clay content]'; +執>'[hold in hand]'; +培>'[bank up with dirt]'; +基>'[foundation]'; +埼>'[headland]'; +堀>'[cave]'; +堂>'[hall]'; +堅>'[hard]'; +堆>'[heap]'; +堊>'[white earth]'; +堋>'[bury]'; +堕>'[fall]'; +堙>'[bury]'; +堝>'[crucible]'; +堡>'[fort]'; +堤>'[dike]'; +堪>'[adequately capable of]'; +堯>'[a legendary ancient emperor-sage]'; +堰>'[dam]'; +報>'[report]'; +場>'[open space]'; +堵>'[wall]'; +堺>'[person''s name]'; +堽>'[mound]'; +塀>'[wall]'; +塁>'[rampart]'; +塊>'[piece]'; +塋>'[grave]'; +塑>'[model in clay]'; +塒>'[roost]'; +塔>'[tower]'; +塗>'[smear]'; +塘>'[pond]'; +塙>'[truly]'; +塚>'[cemetery]'; +塞>'[stop up]'; +塢>'[entrenchment]'; +塩>'[salt]'; +填>'[fill in]'; +#"塭>'[[not found in any dictionary]]'", +塲>'[open space]'; +塵>'[dust]'; +塹>'[moat]'; +塾>'[village school]'; +境>'[boundery]'; +墅>'[villa]'; +墓>'[grave]'; +増>'[increase]'; +墜>'[fall down]'; +墟>'[high mound]'; +墨>'[ink]'; +墫>'[cup]'; +墮>'[fall]'; +墳>'[grave]'; +#"墳>'[grave]'", +#"墳>'[grave]'", +墺>'[4 walls]'; +墻>'[wall]'; +墾>'[cultivate]'; +壁>'[partition wall]'; +壅>'[to obstruct]'; +壇>'[altar]'; +壊>'[bad]'; +壌>'[soil]'; +壑>'[bed of torrent]'; +壓>'[press]'; +壕>'[trench]'; +#"壖>'[open space along water]'", +壘>'[rampart]'; +壙>'[tomb]'; +壜>'[earthen jar or jug]'; +壞>'[bad]'; +壟>'[grave]'; +壤>'[soil]'; +#"壥>'[................................]'", +士>'[scholar]'; +壬>'[ninth of ten celestial stems]'; +壮>'[big]'; +壯>'[big]'; +声>'[sound]'; +壱>'[number one]'; +売>'[sell]'; +壷>'[jar]'; +壹>'[number one]'; +壺>'[jar]'; +壻>'[son-in-law]'; +壼>'[palace corridor or passageway]'; +壽>'[old age]'; +夂>'[go]'; +変>'[change]'; +夊>'[Radical No. 35]'; +夏>'[summer]'; +夐>'[long]'; +夕>'[evening]'; +外>'[out]'; +夘>'[4th of Earth Branches]'; +夙>'[early in morning]'; +多>'[much]'; +夛>'[much]'; +夜>'[night]'; +夢>'[dream]'; +夥>'[companion]'; +大>'[big]'; +天>'[sky]'; +太>'[very]'; +夫>'[man]'; +夬>'[parted]'; +夭>'[young]'; +央>'[center]'; +失>'[lose]'; +夲>'[advance quickly]'; +夷>'[ancient barbarian tribes]'; +夸>'[extravagant]'; +夾>'[be wedged or inserted between]'; +奄>'[ere long]'; +奇>'[strange]'; +奈>'[but]'; +奉>'[offer]'; +奎>'[stride of man]'; +奏>'[memorialize emperor]'; +奐>'[be numerous]'; +契>'[deed]'; +奔>'[run fast]'; +奕>'[in sequence]'; +套>'[case]'; +奘>'[large]'; +奚>'[where? what? how? why?]'; +奠>'[pay respect]'; +奢>'[extravagant]'; +奥>'[mysterious]'; +奧>'[mysterious]'; +奨>'[prize]'; +奩>'[lady''s vanity case]'; +奪>'[take by force]'; +奬>'[prize]'; +奮>'[strive]'; +女>'[woman]'; +奴>'[slave]'; +奸>'[crafty]'; +好>'[good]'; +妁>'[act as go-between]'; +如>'[if]'; +妃>'[wife]'; +妄>'[absurd]'; +妊>'[conceive]'; +妍>'[beautiful]'; +妓>'[prostitute]'; +妖>'[strange]'; +妙>'[mysterious]'; +#"妙>'[mysterious]'", +妝>'[adorn oneself]'; +妣>'[one''s deceased mother]'; +妥>'[satisfactory]'; +妨>'[interfere with]'; +妬>'[jealous]'; +妲>'[concubine of last ruler of shang]'; +妹>'[younger sister]'; +妻>'[wife]'; +妾>'[concubine]'; +姆>'[child''s governess]'; +姉>'[elder sister]'; +始>'[begin]'; +姐>'[elder sister]'; +姑>'[father''s sister]'; +姓>'[one''s family name]'; +委>'[appoint]'; +姙>'[conceive]'; +姚>'[handsome]'; +姜>'[surname]'; +姥>'[maternal grandmother]'; +姦>'[adultery]'; +姨>'[mother/wife''s sister]'; +姪>'[niece]'; +姫>'[beauty]'; +#"姱>'[beautiful]'", +姻>'[relatives by marriage]'; +姿>'[one''s manner]'; +威>'[pomp]'; +娃>'[baby]'; +娉>'[beautiful]'; +娑>'[dance]'; +娘>'[mother]'; +#"娚>'[................................]'", +娜>'[elegant]'; +娟>'[beautiful]'; +娠>'[pregnant]'; +娥>'[be beautiful]'; +娩>'[give birth child]'; +娯>'[pleasure]'; +娵>'[star]'; +娶>'[marry]'; +娼>'[prostitute]'; +婀>'[be beautiful]'; +婁>'[surname]'; +婆>'[old woman]'; +婉>'[amiable]'; +婚>'[get married]'; +婢>'[servant girl]'; +婦>'[married women]'; +婪>'[covet]'; +婬>'[obscene]'; +婿>'[son-in-law]'; +媒>'[go-between]'; +媚>'[charming]'; +媛>'[beauty]'; +媼>'[old woman]'; +媽>'[mother]'; +媾>'[marry]'; +嫁>'[marry]'; +嫂>'[sister-in-law]'; +嫉>'[jealousy]'; +嫋>'[slender and delicate]'; +嫌>'[hate]'; +嫐>'[frolic]'; +嫖>'[patronize prostitutes]'; +嫗>'[old woman]'; +嫡>'[legal wife]'; +嫣>'[charming]'; +嫦>'[name of a moon goddess]'; +嫩>'[soft]'; +嫺>'[refined]'; +嫻>'[elegant]'; +嬉>'[enjoy]'; +嬋>'[beautiful]'; +嬌>'[seductive and loveable]'; +嬖>'[favorite]'; +嬢>'[troubled]'; +嬪>'[court lady]'; +嬬>'[mistress]'; +嬰>'[baby]'; +嬲>'[frolic]'; +#"嬴>'[to win]'", +嬾>'[lazy]'; +孀>'[widow]'; +孃>'[troubled]'; +孅>'[slender]'; +子>'[offspring]'; +孑>'[remaining]'; +孔>'[opening]'; +孕>'[be pregnant]'; +字>'[letter]'; +存>'[exist]'; +孚>'[brood over eggs]'; +孛>'[comet]'; +孜>'[be as diligent as possible]'; +孝>'[filial piety]'; +孟>'[first in series]'; +季>'[quarter of year]'; +孤>'[orphan]'; +孥>'[one''s children]'; +学>'[learning]'; +孩>'[baby]'; +孫>'[grandchild]'; +孰>'[who? which? what? which one?]'; +孱>'[weak]'; +孳>'[breed in large numbers]'; +孵>'[sit on eggs]'; +學>'[learning]'; +孺>'[child]'; +宀>'[roof]'; +它>'[it]'; +宅>'[residence]'; +宇>'[house]'; +守>'[defend]'; +安>'[peaceful]'; +宋>'[Song dynasty]'; +完>'[complete]'; +宍>'[flesh]'; +宏>'[wide]'; +宕>'[stone quarry]'; +宗>'[lineage]'; +官>'[official]'; +宙>'[time as concept]'; +定>'[decide]'; +宛>'[seem]'; +宜>'[suitable]'; +宝>'[treasure]'; +実>'[real]'; +客>'[guest]'; +宣>'[declare]'; +室>'[room]'; +宥>'[forgive]'; +宦>'[officialdom]'; +宮>'[palace]'; +宰>'[to slaughter]'; +害>'[injure]'; +宴>'[entertain]'; +宵>'[night]'; +家>'[house]'; +宸>'[imperial]'; +容>'[looks]'; +宿>'[stop]'; +寂>'[still]'; +寃>'[grievance]'; +寄>'[send]'; +寅>'[respect]'; +密>'[dense]'; +寇>'[bandits]'; +#"寉>'[................................]'", +富>'[abundant]'; +寐>'[sleep]'; +寒>'[cold]'; +寓>'[residence]'; +寔>'[real]'; +寛>'[broad]'; +寝>'[sleep]'; +寞>'[silent]'; +察>'[examine]'; +寡>'[widowed]'; +寢>'[sleep]'; +寤>'[few]'; +寥>'[few]'; +實>'[real]'; +寧>'[repose]'; +寨>'[stockade]'; +審>'[examine]'; +寫>'[write]'; +寮>'[shanty]'; +寰>'[great domain]'; +寳>'[treasure]'; +寵>'[favorite]'; +寶>'[treasure]'; +寸>'[inch]'; +寺>'[court]'; +対>'[correct]'; +寿>'[old age]'; +封>'[letter]'; +専>'[monopolize]'; +射>'[shoot]'; +尅>'[subdue]'; +将>'[will]'; +將>'[will]'; +專>'[monopolize]'; +尉>'[officer]'; +尊>'[respect]'; +尋>'[seek]'; +對>'[correct]'; +導>'[direct]'; +小>'[small]'; +少>'[few]'; +尓>'[you]'; +尖>'[sharp]'; +尚>'[still]'; +尠>'[very few]'; +尢>'[weak]'; +尤>'[especially]'; +尨>'[shaggy haired dog]'; +尭>'[a legendary ancient emperor-sage]'; +就>'[just]'; +尸>'[corpse]'; +尹>'[govern]'; +尺>'[chinese measure approx. \"foot\"]'; +尻>'[end of spine]'; +尼>'[buddhist nun]'; +尽>'[exhaust]'; +尾>'[tail]'; +尿>'[urine]'; +局>'[bureau]'; +屁>'[break wind]'; +居>'[live]'; +屆>'[numerary adjunct for time]'; +屈>'[bend]'; +届>'[numerary adjunct for time]'; +屋>'[house]'; +屍>'[corpse]'; +屎>'[excrement]'; +屏>'[folding screen]'; +屐>'[wooden shoes]'; +屑>'[bits]'; +屓>'[gigantic strength]'; +展>'[open]'; +属>'[class]'; +屠>'[butcher]'; +屡>'[frequently]'; +層>'[storey]'; +履>'[footwear]'; +屬>'[class]'; +屮>'[sprout]'; +屯>'[village]'; +山>'[mountain]'; +屶>'[lofty]'; +屹>'[to rise high]'; +岌>'[perilous]'; +岐>'[high]'; +岑>'[steep]'; +岔>'[diverge]'; +岡>'[ridge or crest of hill]'; +岨>'[uneven]'; +岩>'[cliff]'; +岫>'[mountain peak]'; +岬>'[cape]'; +岱>'[daishan one of five sacred mount]'; +岳>'[mountain peak]'; +#"岶>'[................................]'", +岷>'[min mountain]'; +岸>'[bank]'; +#"岺>'[mountain ridge]'", +#"岺>'[mountain ridge]'", +岾>'[mountain pass (korean)]'; +#"峄>'[range of peaks]'", +峇>'[cave]'; +峙>'[stand erect]'; +峠>'[mountain pass]'; +峡>'[gorge]'; +峨>'[lofty]'; +峩>'[lofty]'; +峪>'[valley]'; +峭>'[steep]'; +峯>'[peak]'; +峰>'[peak]'; +島>'[island]'; +#"峺>'[................................]'", +峻>'[high]'; +峽>'[gorge]'; +崇>'[esteem]'; +崋>'[flowery]'; +崎>'[rough]'; +崑>'[Kunlun mountains in Jiang Su province.]'; +崔>'[high]'; +崕>'[cliff]'; +崖>'[cliff]'; +崗>'[post]'; +崘>'[kunlun mountains in jiangsu]'; +崙>'[kunlun mountains in jiangsu]'; +崚>'[hilly]'; +崛>'[towering]'; +崟>'[cliffs]'; +崢>'[high]'; +崩>'[rupture]'; +嵋>'[omei mountain in sichuan]'; +嵌>'[inlay]'; +嵎>'[mountain recess]'; +嵐>'[mountain mist]'; +嵒>'[cliff]'; +嵜>'[rough]'; +嵩>'[high]'; +嵬>'[high]'; +嵯>'[high]'; +嵳>'[high]'; +嵶>'[low part of a mountain]'; +嶂>'[cliff]'; +嶄>'[high]'; +嶇>'[steep]'; +嶋>'[island]'; +嶌>'[island]'; +#"嶐>'[................................]'", +嶝>'[path leading up a mountain]'; +嶢>'[high or tall]'; +#"嶬>'[................................]'", +嶮>'[high]'; +嶷>'[range of mountains in hunan prov]'; +嶺>'[mountain ridge]'; +嶼>'[island]'; +嶽>'[mountain peak]'; +巉>'[steep]'; +巌>'[cliff]'; +巍>'[high]'; +巒>'[mountain range]'; +巓>'[summit of mountain]'; +巖>'[cliff]'; +巛>'[river]'; +川>'[stream]'; +州>'[administrative division]'; +巡>'[patrol]'; +巣>'[nest]'; +工>'[labor]'; +左>'[left]'; +巧>'[skillful]'; +巨>'[large]'; +巫>'[wizard]'; +差>'[differ]'; +己>'[self]'; +已>'[already]'; +巳>'[sixth of twelve branches]'; +巴>'[greatly desire]'; +巵>'[measuring cup]'; +巷>'[alley]'; +巻>'[scroll]'; +巽>'[5th of the 8 trigrams]'; +巾>'[kerchief]'; +市>'[market]'; +布>'[cotton cloth]'; +帆>'[sail]'; +帋>'[paper]'; +希>'[rare]'; +帑>'[a treasury]'; +帖>'[invitation card]'; +帙>'[book cover]'; +帚>'[broom]'; +帛>'[silks]'; +帝>'[supreme ruler]'; +帥>'[commander]'; +師>'[teacher]'; +席>'[seat]'; +帯>'[belt]'; +帰>'[return]'; +帳>'[tent]'; +帶>'[belt]'; +帷>'[tent]'; +常>'[common]'; +帽>'[hat]'; +幀>'[picture]'; +幃>'[curtain that forms wall]'; +幄>'[tent]'; +幅>'[piece]'; +幇>'[help]'; +幌>'[curtain]'; +幎>'[cover-cloth]'; +幔>'[curtain]'; +幕>'[curtain]'; +幗>'[women''s headgear]'; +幟>'[flag]'; +幡>'[pennant]'; +幢>'[carriage curtain]'; +幣>'[currency]'; +幤>'[evil]'; +干>'[oppose]'; +平>'[flat]'; +年>'[year]'; +幵>'[even level. to raise in both hands]'; +并>'[combine]'; +幸>'[luck(ily)]'; +幹>'[trunk of tree or of human body]'; +幺>'[one]'; +幻>'[illusion]'; +幼>'[infant]'; +幽>'[quiet]'; +幾>'[how many? how much? (a)few]'; +广>'[wide]'; +庁>'[hall]'; +広>'[broad]'; +庄>'[village]'; +庇>'[cover]'; +床>'[bed]'; +序>'[series]'; +底>'[bottom]'; +庖>'[kitchen]'; +店>'[shop]'; +庚>'[seventh of ten cyclical stems]'; +府>'[prefecture]'; +庠>'[village school]'; +度>'[degree]'; +座>'[seat]'; +庫>'[armory]'; +庭>'[courtyard]'; +庵>'[buddhist monastery or nunnery]'; +庶>'[numerous]'; +康>'[peaceful]'; +庸>'[usual]'; +廁>'[toilet]'; +廂>'[side-room]'; +廃>'[abrogate]'; +廈>'[big building]'; +廉>'[upright]'; +廊>'[corridor]'; +廏>'[stable]'; +廐>'[stable]'; +廓>'[broad]'; +廖>'[surname]'; +廚>'[kitchen]'; +廛>'[store]'; +廝>'[servant]'; +廟>'[temple]'; +廠>'[factory]'; +廡>'[corridor]'; +廢>'[abrogate]'; +廣>'[broad]'; +廨>'[government office]'; +廩>'[granary]'; +廬>'[hut]'; +廰>'[hall]'; +廱>'[harmonious]'; +廳>'[hall]'; +廴>'[go]'; +延>'[delay]'; +廷>'[court]'; +廸>'[enlighten]'; +建>'[build]'; +廻>'[circle around]'; +廼>'[then]'; +廾>'[two hands]'; +廿>'[twenty]'; +弁>'[conical cap worn under zhou dyna]'; +弃>'[reject]'; +弄>'[do]'; +弉>'[large]'; +弊>'[evil]'; +弋>'[catch]'; +弌>'[number one]'; +弍>'[number two]'; +式>'[style]'; +弐>'[number two]'; +弑>'[to kill one''s superior]'; +弓>'[bow]'; +弔>'[condole]'; +引>'[pull]'; +弖>'[phonetic for \"te\" (Japanese)]'; +弗>'[not]'; +弘>'[enlarge]'; +弛>'[loosen]'; +弟>'[young brother]'; +弥>'[extensive]'; +弦>'[string]'; +弧>'[wooden bow]'; +弩>'[cross-bow]'; +弭>'[stop]'; +弯>'[bend]'; +弱>'[weak]'; +張>'[stretch]'; +強>'[strong]'; +弸>'[bow stretched full]'; +弼>'[aid]'; +#"弼>'[aid]'", +#"彁>'[................................]'", +彈>'[pellet]'; +彊>'[stubborn]'; +彌>'[extensive]'; +彎>'[bend]'; +彑>'[snout]'; +当>'[bear]'; +彖>'[a hog]'; +彗>'[broomstick]'; +彙>'[collect]'; +彜>'[yi]'; +彝>'[yi]'; +彡>'[hair]'; +形>'[form]'; +彦>'[elegant]'; +彩>'[hue]'; +彪>'[tiger]'; +彫>'[carve]'; +彬>'[cultivated]'; +彭>'[name of ancient country]'; +彰>'[clear]'; +影>'[shadow]'; +彳>'[step with left foot]'; +彷>'[like]'; +役>'[service]'; +彼>'[that]'; +彿>'[resembling]'; +往>'[go]'; +征>'[invade]'; +徂>'[go]'; +徃>'[go]'; +径>'[narrow path]'; +待>'[treat]'; +徇>'[comply with]'; +很>'[very]'; +徊>'[linger]'; +律>'[statute]'; +後>'[behind]'; +徐>'[slowly]'; +徑>'[narrow path]'; +徒>'[disciple]'; +従>'[from]'; +得>'[obtain]'; +徘>'[walk back and forth]'; +徙>'[move one''s abode]'; +從>'[from]'; +徠>'[induce]'; +御>'[drive]'; +徨>'[doubtful]'; +復>'[return]'; +循>'[obey]'; +徭>'[conscript labor]'; +微>'[small]'; +徳>'[virtue]'; +徴>'[summon]'; +徹>'[penetrate]'; +徼>'[frontier]'; +徽>'[a badge]'; +心>'[heart]'; +必>'[surely]'; +忌>'[jealous]'; +忍>'[endure]'; +忖>'[guess]'; +志>'[purpose]'; +忘>'[forget]'; +忙>'[busy]'; +応>'[should]'; +忝>'[disgrace]'; +忠>'[loyalty]'; +忤>'[insubordinate]'; +快>'[rapid]'; +忰>'[suffer]'; +忱>'[truth]'; +念>'[think of]'; +忸>'[blush]'; +忻>'[delightful]'; +忽>'[suddenly]'; +忿>'[get angry]'; +怎>'[what? why? how?]'; +怏>'[discontented]'; +#"怐>'[................................]'", +怒>'[anger]'; +怕>'[fear]'; +怖>'[terror]'; +怙>'[rely on]'; +怛>'[grieved]'; +怜>'[pity]'; +思>'[think]'; +怠>'[idle]'; +怡>'[harmony]'; +急>'[quick]'; +怦>'[eager]'; +性>'[nature]'; +怨>'[hatred]'; +怩>'[shy]'; +怪>'[strange]'; +怫>'[sorry]'; +怯>'[lacking in courage]'; +怱>'[hastily]'; +怺>'[to endure]'; +恁>'[that]'; +恂>'[careful]'; +恃>'[rely on]'; +恆>'[constant]'; +恊>'[be united]'; +恋>'[love]'; +恍>'[seemingly]'; +恐>'[fear]'; +恒>'[constant]'; +恕>'[forgive]'; +恙>'[illness]'; +恚>'[anger]'; +恟>'[scared]'; +恠>'[strange]'; +恢>'[restore]'; +恣>'[indulge oneself]'; +恤>'[show pity]'; +恥>'[shame]'; +恨>'[hatred]'; +恩>'[kindness]'; +恪>'[respectful]'; +恫>'[in pain]'; +恬>'[quiet]'; +恭>'[respectful]'; +息>'[rest]'; +恰>'[just]'; +恵>'[favor]'; +#"恶>'[evil]'", +悁>'[irritable]'; +悃>'[sincere]'; +悄>'[silent]'; +悉>'[know]'; +悋>'[stingy]'; +悌>'[brotherly]'; +悍>'[courageous]'; +悒>'[sorrowful]'; +悔>'[repent]'; +悖>'[be contradictory to]'; +#"悖>'[be contradictory to]'", +悚>'[be afraid]'; +悛>'[repent]'; +悟>'[apprehend]'; +悠>'[long]'; +患>'[suffer]'; +悦>'[pleased]'; +悧>'[smooth]'; +悩>'[angered]'; +悪>'[evil]'; +悲>'[sorrow]'; +悳>'[ethics]'; +悴>'[suffer]'; +悵>'[disappointed]'; +悶>'[gloomy]'; +悸>'[fearful]'; +悼>'[grieve]'; +悽>'[sorrowful]'; +情>'[feeling]'; +惆>'[distressed]'; +惇>'[be kind]'; +惑>'[confuse]'; +惓>'[careful]'; +惘>'[disconcerted]'; +惚>'[absent-minded]'; +惜>'[pity]'; +惟>'[but]'; +惠>'[favor]'; +惡>'[evil]'; +惣>'[overall [questionable variant]]'; +惧>'[fear]'; +惨>'[sad]'; +惰>'[indolent]'; +惱>'[angered]'; +想>'[think]'; +惴>'[afraid]'; +惶>'[fearful]'; +惷>'[wriggle]'; +惹>'[irritate]'; +惺>'[intelligent]'; +惻>'[feel anguish]'; +愀>'[change one''s countenance]'; +愁>'[anxiety]'; +愃>'[relax]'; +愆>'[fault]'; +愈>'[more and more]'; +愉>'[pleasant]'; +愍>'[pity]'; +愎>'[obstinate]'; +意>'[thought]'; +愕>'[startled]'; +愚>'[stupid]'; +愛>'[love]'; +感>'[feel]'; +愡>'[absent-minded]'; +愧>'[ashamed]'; +愨>'[sincerity]'; +愬>'[accuse]'; +愴>'[sad]'; +愼>'[act with care]'; +愽>'[gamble]'; +愾>'[anger]'; +愿>'[sincere]'; +慂>'[urge]'; +慄>'[shiver]'; +慇>'[careful]'; +慈>'[kind]'; +慊>'[to resent]'; +態>'[manner]'; +慌>'[nervous]'; +慍>'[angry]'; +慎>'[act with care]'; +#"慓>'[................................]'", +慕>'[long for]'; +慘>'[sad]'; +慙>'[ashamed]'; +慚>'[ashamed]'; +慝>'[do evil in secret]'; +慟>'[sadness]'; +慢>'[slow(ly)]'; +慣>'[habit]'; +慥>'[sincere]'; +慧>'[bright]'; +慨>'[sigh]'; +慫>'[to alarm]'; +慮>'[be concerned]'; +#"慯>'[................................]'", +慰>'[comfort]'; +慱>'[sad]'; +慳>'[miserly]'; +慴>'[fear]'; +慵>'[indolent]'; +慶>'[congratulate]'; +慷>'[ardent]'; +慾>'[lust]'; +憂>'[sad]'; +憇>'[rest]'; +憊>'[tired]'; +憎>'[hate]'; +憐>'[pity]'; +憑>'[lean on]'; +憔>'[be worn-out]'; +憖>'[cautious]'; +憙>'[like]'; +憚>'[dread]'; +憤>'[resent]'; +憧>'[irresolute]'; +憩>'[rest]'; +憫>'[pity]'; +憬>'[rouse]'; +憮>'[regretful]'; +憲>'[constitution]'; +憶>'[remember]'; +憺>'[peace]'; +憾>'[regret]'; +懃>'[courteous]'; +懆>'[anxious]'; +懇>'[sincere]'; +懈>'[idle]'; +應>'[should]'; +懊>'[vexed]'; +懋>'[splendid]'; +懌>'[enjoy]'; +懍>'[be afraid of]'; +懐>'[bosom]'; +懣>'[be sick at heart]'; +懦>'[weak]'; +懲>'[punish]'; +懴>'[regret]'; +懶>'[lazy]'; +懷>'[bosom]'; +懸>'[hang]'; +懺>'[regret]'; +懼>'[fear]'; +懽>'[happy]'; +懾>'[afraid]'; +懿>'[virtuous]'; +戀>'[love]'; +戈>'[halberd]'; +戉>'[a battle-axe]'; +戊>'[fifth of ten celestial stems]'; +戌>'[eleventh of terrestrial branches]'; +戍>'[defend borders]'; +戎>'[arms]'; +成>'[completed]'; +我>'[our]'; +戒>'[warn]'; +戔>'[small]'; +或>'[or]'; +戚>'[relative]'; +戛>'[lance]'; +戝>'[pirate]'; +戞>'[lance]'; +戟>'[halberd with crescent blade]'; +戡>'[subjugate]'; +戦>'[war]'; +截>'[cut off]'; +戮>'[kill]'; +戯>'[theatrical play]'; +戰>'[war]'; +戲>'[theatrical play]'; +戳>'[prick]'; +戴>'[wear on top]'; +戸>'[door]'; +戻>'[perverse]'; +房>'[house]'; +所>'[place]'; +扁>'[flat]'; +扇>'[fan]'; +扈>'[escort]'; +扉>'[door panel]'; +手>'[hand]'; +才>'[talent]'; +扎>'[pull up]'; +打>'[strike]'; +払>'[shake off]'; +托>'[hold up with palm]'; +扛>'[carry on shoulders]'; +扞>'[ward off]'; +扠>'[pick up with fork or pincers]'; +扣>'[knock]'; +扨>'[pick up with fork or pincers]'; +扮>'[dress up]'; +扱>'[collect]'; +扶>'[support]'; +批>'[comment]'; +扼>'[grasp]'; +找>'[search]'; +承>'[inherit]'; +技>'[skill]'; +#"抂>'[................................]'", +抃>'[to clap hands]'; +抄>'[copy]'; +抉>'[choose]'; +把>'[hold]'; +抑>'[press down]'; +抒>'[express]'; +抓>'[scratch]'; +抔>'[take or hold up in both hands]'; +投>'[throw]'; +抖>'[tremble]'; +抗>'[resist]'; +折>'[break off]'; +抛>'[throw (away)]'; +抜>'[uproot]'; +択>'[select]'; +披>'[wear]'; +抬>'[lift]'; +抱>'[embrace]'; +抵>'[resist]'; +抹>'[smear]'; +抻>'[pull]'; +押>'[mortgage]'; +抽>'[draw out]'; +拂>'[shake off]'; +担>'[carry]'; +拆>'[break up]'; +拇>'[thumb]'; +拈>'[pick up with fingers]'; +拉>'[pull]'; +拊>'[slap]'; +拌>'[mix]'; +拍>'[clap]'; +拏>'[take]'; +拐>'[kidnap]'; +拑>'[to clamp]'; +拒>'[ward off with hand]'; +拓>'[expand]'; +拔>'[uproot]'; +拗>'[obstinate]'; +拘>'[restrain]'; +拙>'[stupid]'; +招>'[beckon]'; +拜>'[do obeisance]'; +拝>'[do obeisance]'; +拠>'[occupy]'; +拡>'[expand]'; +括>'[include]'; +拭>'[wipe away stains with cloth]'; +拮>'[laboring hard]'; +拯>'[help]'; +拱>'[fold hands on breast]'; +拳>'[fist]'; +#"拴>'[bind with rope]'", +拶>'[press]'; +拷>'[torture and interrogate]'; +拾>'[pick up]'; +拿>'[take]'; +持>'[sustain]'; +挂>'[hang]'; +指>'[finger]'; +挈>'[assist]'; +按>'[put hand on]'; +挌>'[fight]'; +挑>'[load carried on shoulders]'; +挙>'[raise]'; +挟>'[clasp under arm]'; +#"挥>'[direct]'", +挨>'[near]'; +挫>'[push down]'; +振>'[raise]'; +挺>'[stand upright]'; +挽>'[pull]'; +挾>'[clasp under arm]'; +挿>'[insert]'; +捉>'[grasp]'; +捌>'[break open]'; +捍>'[ward off]'; +捏>'[pick with fingers]'; +捐>'[contribute]'; +捕>'[arrest]'; +捗>'[make progress]'; +捜>'[search]'; +捧>'[hold up in two hands]'; +捨>'[discard]'; +捩>'[twist with hands]'; +捫>'[stoke]'; +据>'[occupy]'; +捲>'[curl]'; +捶>'[strike with stick]'; +捷>'[win]'; +捺>'[press down heavily with fringers]'; +捻>'[twist with fingers]'; +掀>'[lift]'; +掃>'[sweep]'; +授>'[give to]'; +掉>'[turn]'; +掌>'[palm of hand]'; +掎>'[drag aside]'; +掏>'[take out]'; +排>'[row]'; +掖>'[stick in]'; +掘>'[dig]'; +掛>'[hang]'; +#"掟>'[................................]'", +掠>'[rob]'; +採>'[gather]'; +探>'[find]'; +掣>'[drag]'; +接>'[receive]'; +控>'[accuse]'; +推>'[push]'; +掩>'[cover]'; +措>'[place]'; +掫>'[be on night watch]'; +掬>'[grasp with both hands]'; +#"掱>'[pickpocket]'", +掴>'[box one''s ears]'; +#"掴>'[box one''s ears]'", +掻>'[scratch lightly]'; +掾>'[a general designation of officials]'; +揀>'[choose]'; +揃>'[shear]'; +揄>'[lift]'; +揆>'[prime minister]'; +揉>'[rub]'; +描>'[copy]'; +提>'[hold in hand]'; +插>'[insert]'; +揖>'[salute]'; +揚>'[scatter]'; +換>'[change]'; +握>'[grasp]'; +揣>'[put things under clothes]'; +揩>'[rub and wipe]'; +揮>'[direct]'; +援>'[aid]'; +揶>'[make fun of]'; +揺>'[wag]'; +搆>'[pull]'; +損>'[diminish]'; +搏>'[seize]'; +搓>'[trample]'; +搖>'[wag]'; +搗>'[hull]'; +搜>'[search]'; +搦>'[grasp]'; +搨>'[rub]'; +搬>'[transfer]'; +搭>'[join together]'; +搴>'[extract]'; +搶>'[plunder]'; +携>'[lead by hand]'; +搾>'[press]'; +摂>'[take in]'; +摎>'[to strangle]'; +摘>'[pluck]'; +摧>'[destroy]'; +摩>'[rub]'; +摯>'[sincere]'; +摶>'[roll around with hand]'; +摸>'[gently touch with hand]'; +摺>'[fold]'; +撃>'[strike]'; +撈>'[scoop out of water]'; +撒>'[release]'; +撓>'[scratch]'; +撕>'[rip]'; +撚>'[twirl in fingers]'; +撞>'[knock against]'; +撤>'[omit]'; +撥>'[move]'; +撩>'[lift up]'; +撫>'[pat]'; +播>'[sow]'; +撮>'[little bit]'; +撰>'[compose]'; +撲>'[pound]'; +撹>'[disturb]'; +撻>'[flog]'; +撼>'[move]'; +擁>'[embrace]'; +擂>'[rub]'; +擅>'[monopolize]'; +擇>'[select]'; +操>'[conduct]'; +擒>'[catch]'; +擔>'[carry]'; +擘>'[thumb]'; +據>'[occupy]'; +擠>'[crowd]'; +擡>'[carry]'; +擢>'[pull up]'; +擣>'[hull]'; +擦>'[wipe]'; +擧>'[raise]'; +擬>'[draft]'; +擯>'[exclude]'; +擱>'[place]'; +擲>'[throw]'; +擴>'[expand]'; +#"擶>'[................................]'", +擺>'[put]'; +擽>'[tickle]'; +擾>'[disturb]'; +攀>'[climb]'; +攅>'[save]'; +攘>'[seize]'; +攜>'[lead by hand]'; +攝>'[take in]'; +攣>'[tangled]'; +攤>'[spread out]'; +攪>'[disturb]'; +攫>'[snatch away]'; +攬>'[grasp]'; +支>'[disperse]'; +攴>'[rap]'; +攵>'[rap]'; +收>'[gather together]'; +攷>'[examine]'; +攸>'[distant]'; +改>'[change]'; +攻>'[attack]'; +放>'[put]'; +政>'[government]'; +故>'[ancient]'; +效>'[result]'; +敍>'[express]'; +敏>'[fast]'; +救>'[save]'; +敕>'[an imperial order or decree]'; +敖>'[ramble]'; +敗>'[be defeated]'; +敘>'[express]'; +教>'[teach]'; +敝>'[break]'; +敞>'[roomy]'; +敢>'[dare]'; +散>'[scatter]'; +敦>'[esteem]'; +敬>'[respect]'; +数>'[number]'; +敲>'[strike]'; +整>'[orderly]'; +敵>'[enemy]'; +敷>'[spread]'; +數>'[number]'; +斂>'[draw back]'; +斃>'[kill]'; +文>'[literature]'; +斈>'[learning]'; +斉>'[even]'; +斌>'[refined]'; +斎>'[vegetarian diet]'; +斐>'[graceful]'; +斑>'[mottled]'; +斗>'[chinese peck]'; +料>'[consider]'; +斛>'[dry measure 10 or 5 times of dou]'; +斜>'[slanting]'; +斟>'[pour wine or tea into cup]'; +斡>'[revolve]'; +斤>'[catty]'; +斥>'[scold]'; +斧>'[axe]'; +斫>'[cut]'; +斬>'[cut]'; +断>'[sever]'; +斯>'[this]'; +新>'[new]'; +斷>'[sever]'; +方>'[square]'; +於>'[in]'; +施>'[grant]'; +旁>'[side]'; +旃>'[silk banner with bent pole]'; +旄>'[a kind of ancient flag]'; +旅>'[trip]'; +旆>'[flag ornament]'; +旋>'[revolve]'; +旌>'[banner or flag adorned with feat]'; +族>'[family clan]'; +旒>'[fringes of pearls on crowns]'; +旗>'[banner]'; +旙>'[a pennant]'; +旛>'[a pennant]'; +无>'[negative]'; +旡>'[choke on something eaten]'; +既>'[already]'; +日>'[sun]'; +旦>'[dawn]'; +旧>'[old]'; +旨>'[purpose]'; +早>'[early]'; +旬>'[ten-day period]'; +旭>'[rising sun]'; +旱>'[drought]'; +旺>'[prosper]'; +旻>'[heaven]'; +昂>'[rise]'; +昃>'[afternoon]'; +昆>'[elder brother]'; +昇>'[rise]'; +昊>'[summer time]'; +昌>'[light of sun]'; +明>'[bright]'; +昏>'[dusk]'; +易>'[change]'; +昔>'[formerly]'; +昜>'[to open out]'; +星>'[star]'; +映>'[project]'; +春>'[spring]'; +昧>'[obscure]'; +昨>'[yesterday]'; +昭>'[bright]'; +是>'[indeed]'; +昴>'[one of the 28 constellations]'; +昵>'[intimate]'; +昶>'[a long day. bright. extended. clear]'; +昼>'[daytime]'; +昿>'[extensive]'; +晁>'[morning]'; +時>'[time]'; +晃>'[bright]'; +晄>'[bright]'; +晉>'[advance]'; +晋>'[advance]'; +晏>'[peaceful]'; +晒>'[dry in sun]'; +晝>'[daytime]'; +晞>'[dry]'; +晟>'[clear]'; +晢>'[light of stars]'; +晤>'[have interview with]'; +晦>'[dark]'; +晧>'[daybreak]'; +晨>'[early morning]'; +晩>'[night]'; +普>'[universal]'; +景>'[scenery]'; +晰>'[clear]'; +晴>'[clear weather]'; +晶>'[crystal]'; +智>'[wisdom]'; +暁>'[dawn]'; +#"暂>'[temporary]'", +暄>'[warm]'; +暇>'[leisure]'; +暈>'[halo in sky]'; +暉>'[sunshine]'; +暎>'[sun beginning decline]'; +暑>'[hot]'; +暖>'[warm]'; +暗>'[dark]'; +暘>'[rising sun]'; +暝>'[dark]'; +暢>'[smoothly]'; +暦>'[calendar]'; +暫>'[temporary]'; +暮>'[evening]'; +暴>'[violent]'; +暸>'[bright]'; +暹>'[rise]'; +暼>'[take fleeting glance at]'; +暾>'[morning sun]'; +曁>'[and]'; +曄>'[bright]'; +曇>'[become cloudy]'; +曉>'[dawn]'; +曖>'[obscure]'; +曙>'[bright]'; +曚>'[twilight just before sun rises]'; +曜>'[glorious]'; +曝>'[sun]'; +曠>'[extensive]'; +曦>'[sunlight]'; +曩>'[in ancient times]'; +曰>'[say]'; +曲>'[crooked]'; +曳>'[trail]'; +更>'[more]'; +曵>'[trail]'; +曷>'[why? what? where?]'; +書>'[book]'; +曹>'[ministry officials]'; +曼>'[long]'; +曽>'[already]'; +曾>'[already]'; +替>'[change]'; +最>'[most]'; +會>'[assemble]'; +月>'[moon]'; +有>'[have]'; +朋>'[friend]'; +服>'[clothes]'; +朏>'[light of crescent moon]'; +朔>'[first day of lunar month]'; +朕>'[pronoun \"i\"]'; +朖>'[clear]'; +朗>'[clear]'; +望>'[look at or forward]'; +朝>'[dynasty]'; +朞>'[full year]'; +期>'[period of time]'; +朦>'[condition or appearance of moon]'; +朧>'[condition or appearance of moon]'; +木>'[tree]'; +未>'[not yet]'; +末>'[final]'; +本>'[root]'; +札>'[letter]'; +朮>'[skill]'; +朱>'[cinnabar]'; +朴>'[simple]'; +朶>'[cluster of flowers]'; +#"朶>'[cluster of flowers]'", +#"朶>'[cluster of flowers]'", +机>'[desk]'; +朽>'[decayed]'; +朿>'[stab]'; +#"杀>'[kill]'", +杆>'[pole]'; +杉>'[various species of pine and fir]'; +李>'[plum]'; +杏>'[apricot]'; +材>'[material]'; +村>'[village]'; +杓>'[handle of cup]'; +杖>'[cane]'; +杙>'[a tiny wooden post]'; +杜>'[stop]'; +杞>'[willow]'; +束>'[bind]'; +杠>'[lever]'; +条>'[clause]'; +杢>'[woodworker]'; +#"杢>'[woodworker]'", +杤>'[type of oak]'; +来>'[come]'; +杪>'[tip of twig]'; +杭>'[cross stream]'; +杯>'[cup]'; +杰>'[hero]'; +東>'[east]'; +杲>'[bright sun]'; +杳>'[obscure]'; +杵>'[pestle]'; +杷>'[loquat]'; +杼>'[shuttle of loom]'; +松>'[pine tree]'; +板>'[plank]'; +#"枅>'[................................]'", +枇>'[loquat]'; +枉>'[useless]'; +枋>'[sandalwood]'; +枌>'[variety of elm with small seeds]'; +析>'[split wood]'; +枕>'[pillow]'; +林>'[forest]'; +枚>'[stalk of shrub]'; +果>'[fruit]'; +枝>'[branches]'; +#"枟>'[wood streaks]'", +#"枟>'[wood streaks]'", +枢>'[door hinge]'; +#"枦>'[................................]'", +枩>'[pine tree]'; +枯>'[dried out]'; +枳>'[trifoliate orange]'; +枴>'[cane]'; +架>'[rack]'; +枷>'[cangue scaffold]'; +枸>'[kind of aspen found in sichuan]'; +枹>'[drumstick]'; +柁>'[large tie-beams]'; +柄>'[handle]'; +#"柆>'[................................]'", +#"柈>'[container]'", +柎>'[calyx of flower]'; +柏>'[cypress]'; +某>'[certain thing or person]'; +柑>'[tangerine]'; +染>'[dye]'; +柔>'[soft]'; +柘>'[a thorny tree]'; +柚>'[pumelo]'; +柝>'[watchman''s rattle]'; +柞>'[oak]'; +柢>'[root]'; +柤>'[hawthorn]'; +#"柧>'[................................]'", +柩>'[coffin which contains corpse]'; +柬>'[letter]'; +柮>'[flat pieces of wood]'; +柯>'[axe-handle]'; +柱>'[pillar]'; +柳>'[willow tree]'; +柴>'[firewood]'; +柵>'[fence]'; +査>'[investigate]'; +柾>'[straight grain]'; +柿>'[persimmon]'; +栂>'[a kind of evergreen tree]'; +栃>'[type of oak]'; +栄>'[glory]'; +栓>'[wooden peg]'; +栖>'[perch]'; +栗>'[chestnut tree]'; +栞>'[publication]'; +校>'[school]'; +栢>'[cypress]'; +栩>'[species of oak]'; +株>'[numerary adjunct for trees]'; +栫>'[fence]'; +栲>'[mangrove]'; +栴>'[sandalwood]'; +核>'[seed]'; +根>'[root]'; +格>'[pattern]'; +栽>'[cultivate]'; +桀>'[chicken roost]'; +桁>'[cross-beams of roof]'; +桂>'[cassia or cinnamon]'; +桃>'[peach]'; +框>'[frame]'; +案>'[table]'; +#"桍>'[................................]'", +桎>'[fetters]'; +桐>'[name applied various trees]'; +桑>'[mulberry tree]'; +桓>'[variety of tree]'; +桔>'[chinese bellflower]'; +#"桙>'[................................]'", +桜>'[cherry]'; +桝>'[................]'; +#"桝>'[................]'", +档>'[shelf]'; +桧>'[chinese cypress]'; +桴>'[raft]'; +桶>'[pail]'; +桷>'[rafter]'; +#"桾>'[................................]'", +桿>'[pole]'; +梁>'[bridge]'; +梃>'[a club]'; +梅>'[plums]'; +梍>'[tree name]'; +梏>'[handcuffs]'; +梓>'[catalpa ovata]'; +梔>'[gardenia]'; +梗>'[stem of flower]'; +#"梘>'[bamboo tube]'", +條>'[clause]'; +梟>'[owl thus]'; +梠>'[small beam supporting rafters at]'; +梢>'[pointed tip of something long like a branch]'; +梦>'[dream]'; +梧>'[sterculia platanifolia]'; +梨>'[pear]'; +梭>'[weaver''s shuttle]'; +梯>'[ladder]'; +械>'[weapons]'; +梱>'[doorsill]'; +梳>'[comb]'; +梵>'[buddhist]'; +梶>'[oar]'; +梹>'[the areca-nut]'; +#"梹>'[the areca-nut]'", +梼>'[block of wood]'; +棄>'[reject]'; +#"棆>'[................................]'", +棉>'[cotton]'; +棊>'[chess]'; +棋>'[chess]'; +棍>'[stick]'; +棒>'[stick]'; +#"棔>'[................................]'", +棕>'[hemp palm]'; +棗>'[date tree]'; +棘>'[jujube tree]'; +棚>'[tent]'; +棟>'[main beams supporting house]'; +棠>'[crab apple tree]'; +#"棡>'[................................]'", +棣>'[kerria japonica plant]'; +棧>'[warehouse]'; +森>'[forest]'; +棯>'[jujube tree]'; +棲>'[perch]'; +棹>'[oar]'; +棺>'[coffin]'; +椀>'[bowl]'; +椁>'[outer-coffin]'; +椄>'[to graft]'; +椅>'[chair]'; +椈>'[cedar]'; +椋>'[fruit]'; +椌>'[instrument]'; +植>'[plant]'; +椎>'[hammer]'; +椏>'[the forking branch of a tree]'; +椒>'[pepper]'; +#"椓>'[strike]'", +#"椚>'[................................]'", +椛>'[type of birch]'; +検>'[check]'; +#"椡>'[................................]'", +#"椢>'[................................]'", +#"椣>'[................................]'", +#"椥>'[................................]'", +#"椦>'[................................]'", +#"椨>'[................................]'", +椪>'[machilus nanmu]'; +椰>'[palm tree]'; +椴>'[poplar]'; +椶>'[palm tree]'; +椹>'[a chopping board]'; +椽>'[beams]'; +椿>'[father]'; +楊>'[willow]'; +楓>'[maple tree]'; +楔>'[wedge]'; +楕>'[oval-shaped]'; +楙>'[name of plant]'; +楚>'[name of feudal state]'; +#"楜>'[................................]'", +楝>'[melia japonica]'; +楞>'[used for ceylon in buddhist text]'; +楠>'[name of tree]'; +楡>'[elm tree]'; +楢>'[tinder]'; +楪>'[small dish]'; +楫>'[oar]'; +業>'[profession]'; +楮>'[mulberry]'; +楯>'[shield]'; +楳>'[plums]'; +#"楴>'[................................]'", +極>'[extreme]'; +楷>'[model style of chinese writing]'; +楸>'[mallotus japonicus]'; +楹>'[column]'; +楼>'[building of two or more stories]'; +楽>'[happy]'; +#"楽>'[happy]'", +#"榀>'[[not found in dictionary]]'", +概>'[generally]'; +#"榉>'[type of elm]'", +榎>'[small evergreen shrub]'; +#"榑>'[................................]'", +榔>'[betel-nut tree]'; +榕>'[banyan tree]'; +榛>'[hazelnut]'; +榜>'[placard]'; +#"榠>'[................................]'", +榧>'[type of yew]'; +榮>'[glory]'; +榱>'[rafter]'; +榲>'[pillar]'; +榴>'[pomegranate]'; +榻>'[cot]'; +榾>'[pieces of wood]'; +榿>'[alder]'; +槁>'[wither]'; +槃>'[tray]'; +槇>'[tip of a tree]'; +槊>'[spear]'; +構>'[frame]'; +槌>'[hammer]'; +槍>'[spear]'; +槎>'[raft]'; +槐>'[locust tree]'; +槓>'[lever]'; +様>'[shape]'; +#"様>'[shape]'", +#"槛>'[threshold]'", +#"槛>'[threshold]'", +槧>'[wooden tablet]'; +槨>'[outer-coffin]'; +#"槫>'[................................]'", +槭>'[maple]'; +槲>'[type of oak]'; +槹>'[spar]'; +槻>'[zelkova tree]'; +槽>'[trough]'; +槿>'[hibiscus]'; +樂>'[happy]'; +樅>'[fir tree]'; +樊>'[a railing]'; +樋>'[tree name]'; +#"樌>'[................................]'", +#"樒>'[................................]'", +樓>'[building of two or more stories]'; +#"樓>'[building of two or more stories]'", +樗>'[kind of tree with useless timber]'; +標>'[mark]'; +樛>'[bending branches]'; +樞>'[door hinge]'; +樟>'[camphor tree]'; +模>'[model]'; +#"樢>'[................................]'", +樣>'[shape]'; +権>'[power]'; +横>'[across]'; +#"横>'[across]'", +#"横>'[across]'", +樵>'[woodcutter]'; +樶>'[c]'; +樸>'[simple]'; +樹>'[tree]'; +樺>'[type of birch]'; +樽>'[goblet]'; +橄>'[olive]'; +橇>'[a sledge for transportation]'; +橈>'[bent or twisted piece of wood]'; +橋>'[bridge]'; +橘>'[orange]'; +橙>'[orange]'; +機>'[machine]'; +橡>'[chestnut oak]'; +橢>'[oval-shaped]'; +橦>'[tree]'; +#"橱>'[cabinet]'", +#"橵>'[wood placed under roof tiles]'", +#"橿>'[................................]'", +檀>'[sandalwood]'; +檄>'[call arms]'; +檍>'[ilex]'; +檎>'[small red apple]'; +檐>'[eaves of house]'; +檗>'[tree]'; +檜>'[chinese cypress]'; +檠>'[stand for lamp]'; +檢>'[check]'; +檣>'[mast]'; +檪>'[chestnut-leaved oak]'; +檬>'[type of locust oracacia]'; +檮>'[block of wood]'; +檳>'[betelnut]'; +檸>'[lemon]'; +檻>'[threshold]'; +#"櫁>'[................................]'", +櫂>'[oar]'; +櫃>'[cupboard]'; +#"櫑>'[................................]'", +櫓>'[oar]'; +櫚>'[palm]'; +櫛>'[comb out]'; +櫞>'[citrus]'; +櫟>'[chestnut-leaved oak]'; +櫨>'[supporting block]'; +櫪>'[type of oak]'; +櫺>'[carved or patterned window sills]'; +櫻>'[cherry]'; +欄>'[railing]'; +欅>'[zelkova]'; +權>'[power]'; +欒>'[name of tree]'; +欖>'[olive]'; +欝>'[luxuriant]'; +#"欞>'[the lattice of a window a sill]'", +欠>'[owe]'; +次>'[order]'; +欣>'[happy]'; +欧>'[translit.: europe]'; +欲>'[desire]'; +欷>'[sob]'; +欸>'[sighs]'; +欹>'[fierce dog]'; +欺>'[cheat]'; +欽>'[respect]'; +款>'[item]'; +歃>'[smear one''s mouth with blood of a victim when taking an oath]'; +歇>'[rest]'; +歉>'[deficient]'; +歌>'[song]'; +歎>'[sigh]'; +歐>'[translit.: europe]'; +歓>'[happy]'; +歔>'[blow through nose]'; +歙>'[to suck]'; +歛>'[draw back]'; +歟>'[final particle used express ques]'; +歡>'[happy]'; +止>'[stop]'; +正>'[right]'; +此>'[this]'; +武>'[military]'; +歩>'[step]'; +歪>'[slant]'; +歯>'[teeth]'; +歳>'[year]'; +歴>'[take place]'; +歸>'[return]'; +歹>'[bad]'; +死>'[die]'; +歿>'[die]'; +殀>'[die young]'; +殃>'[misfortune]'; +殄>'[to end]'; +殆>'[dangerous]'; +殉>'[die for cause]'; +殊>'[different]'; +残>'[injure]'; +殍>'[to starve to death]'; +殕>'[[not found in dictionary]]'; +殖>'[breed]'; +殘>'[injure]'; +殞>'[die]'; +殤>'[die young]'; +殪>'[die]'; +殫>'[utmost]'; +殯>'[encoffin]'; +殱>'[annihilate]'; +殲>'[annihilate]'; +殳>'[name of old weapon]'; +殴>'[beat]'; +段>'[section]'; +殷>'[many]'; +殺>'[kill]'; +殻>'[casing]'; +殼>'[casing]'; +殿>'[hall]'; +毀>'[destroy]'; +毅>'[resolute]'; +毆>'[beat]'; +毋>'[do not]'; +母>'[mother]'; +毎>'[every]'; +毒>'[poison]'; +毓>'[give birth to]'; +比>'[compare]'; +毘>'[help]'; +毛>'[hair]'; +#"毟>'[................................]'", +毫>'[fine hair]'; +毬>'[ball]'; +毯>'[rug]'; +毳>'[fine hair or fur on animals]'; +氈>'[felt]'; +氏>'[clan]'; +民>'[people]'; +氓>'[people]'; +气>'[steam]'; +気>'[air]'; +氛>'[gas]'; +氣>'[air]'; +氤>'[hanging fog]'; +水>'[water]'; +氷>'[ice]'; +永>'[long]'; +氾>'[overflow]'; +汀>'[sandbar]'; +汁>'[juice]'; +求>'[seek]'; +汎>'[float]'; +汐>'[night tides]'; +汕>'[basket for catching fish]'; +汗>'[perspiration]'; +汚>'[filthy]'; +汝>'[you]'; +汞>'[element mercury]'; +江>'[large river]'; +池>'[pool]'; +#"汢>'[................................]'", +汨>'[Mi(luo) river in hunan province where Qu Yuan drowned himself]'; +汪>'[vast]'; +汰>'[excessive]'; +汲>'[draw water from well]'; +#"汲>'[draw water from well]'", +決>'[decide]'; +汽>'[steam]'; +汾>'[river in shanxi province]'; +沁>'[soak into]'; +沂>'[river in southeast shandong flow]'; +沃>'[water]'; +沈>'[sink]'; +沌>'[chaotic]'; +沍>'[freezing]'; +沐>'[bathe]'; +沒>'[not]'; +沓>'[connected]'; +沖>'[pour]'; +沙>'[sand]'; +沚>'[islet in stream]'; +沛>'[abundant]'; +没>'[not]'; +沢>'[marsh]'; +沫>'[froth]'; +沮>'[stop]'; +沱>'[rivers]'; +河>'[river]'; +沸>'[boil]'; +油>'[oil]'; +沺>'[turbulent]'; +治>'[govern]'; +沼>'[lake]'; +沽>'[buy and sell]'; +沾>'[moisten]'; +沿>'[follow course]'; +況>'[condition]'; +泄>'[leak]'; +泅>'[swim]'; +泉>'[spring]'; +泊>'[anchor vessel]'; +泌>'[to seep out]'; +泓>'[clear]'; +法>'[law]'; +泗>'[mucous]'; +泙>'[roar]'; +泛>'[drift]'; +泝>'[go upstream]'; +泡>'[bubbles]'; +波>'[waves]'; +泣>'[cry]'; +泥>'[mud]'; +注>'[concentrate]'; +泪>'[tears]'; +泯>'[destroy]'; +泰>'[great]'; +泱>'[great]'; +泳>'[dive]'; +洋>'[ocean]'; +洌>'[clear]'; +洒>'[sprinkle]'; +洗>'[wash]'; +洙>'[name of a river in shandong]'; +洛>'[river in shaanxi province]'; +洞>'[cave]'; +洟>'[snivel]'; +津>'[ferry]'; +洩>'[leak]'; +洪>'[vast]'; +洫>'[to ditch]'; +洲>'[continent]'; +洳>'[damp]'; +洵>'[true]'; +洶>'[the rush of water]'; +洸>'[sparkle]'; +活>'[live]'; +洽>'[spread]'; +派>'[school of thought]'; +流>'[flow]'; +浄>'[pure]'; +浅>'[shallow]'; +浙>'[zhejiang province]'; +浚>'[dredge]'; +浜>'[creek]'; +浣>'[to wash]'; +浤>'[beating of ocean]'; +浦>'[bank of river]'; +浩>'[great]'; +浪>'[wave]'; +浬>'[nautical mile]'; +浮>'[float]'; +浴>'[bathe]'; +海>'[sea]'; +浸>'[soak]'; +浹>'[saturate]'; +涅>'[blacken]'; +消>'[vanish]'; +涌>'[surge up]'; +涎>'[saliva]'; +涓>'[brook]'; +涕>'[tear]'; +涙>'[tears]'; +涛>'[large waves]'; +涜>'[ditch]'; +涯>'[shore]'; +液>'[sap]'; +涵>'[soak]'; +涸>'[dried up]'; +涼>'[cool]'; +淀>'[shallow water]'; +淅>'[water used wash rice]'; +淆>'[confused]'; +淇>'[river in henan province]'; +淋>'[drip]'; +淌>'[trickle]'; +淑>'[good]'; +淒>'[bitter cold]'; +#"淕>'[................................]'", +淘>'[wash in sieve]'; +淙>'[gurgling sound of water]'; +淞>'[name of a river in Jiangsu]'; +淡>'[weak]'; +淤>'[mud]'; +淦>'[river in jiangxi province: water]'; +淨>'[pure]'; +淪>'[be lost]'; +淫>'[obscene]'; +淬>'[temper]'; +淮>'[river in anhui province]'; +深>'[deep]'; +淳>'[cyanogen]'; +淵>'[gulf]'; +混>'[mix]'; +淹>'[drown]'; +淺>'[shallow]'; +添>'[append]'; +清>'[clear]'; +渇>'[thirsty]'; +済>'[help]'; +渉>'[ford stream]'; +渊>'[surge up]'; +渋>'[astringent]'; +渓>'[mountain stream]'; +渕>'[surge up]'; +渙>'[scatter]'; +渚>'[small sand bank]'; +減>'[decrease]'; +渝>'[change]'; +渟>'[(of water) not flowing]'; +渠>'[ditch]'; +渡>'[cross]'; +渣>'[refuse]'; +渤>'[swelling]'; +渥>'[moisten]'; +渦>'[swirl]'; +温>'[lukewarm]'; +渫>'[beating of ocean]'; +測>'[measure]'; +渭>'[name of a river in shaanxi]'; +渮>'[river in shandong province]'; +港>'[port]'; +游>'[swim]'; +渺>'[endlessly long]'; +渾>'[muddy]'; +湃>'[sound of waves]'; +湊>'[piece together]'; +湍>'[rapid water current]'; +湎>'[flushed with drink]'; +湖>'[lake]'; +湘>'[hunan province]'; +湛>'[deep]'; +湟>'[river in qinghai province]'; +湧>'[well up]'; +湫>'[a small pond]'; +湮>'[bury]'; +湯>'[hot water]'; +湲>'[flow]'; +#"湳>'[[not found in dictionary]]'", +湾>'[bay]'; +湿>'[wet]'; +#"湿>'[wet]'", +#"湿>'[wet]'", +溌>'[pour]'; +溏>'[pool]'; +源>'[spring]'; +準>'[rule]'; +溘>'[abruptly]'; +溜>'[slide]'; +溝>'[ditch]'; +溟>'[drizzling rain]'; +溢>'[overflow]'; +溥>'[big]'; +溪>'[mountain stream]'; +溯>'[go upstream]'; +溲>'[urinate]'; +溶>'[melt]'; +溷>'[privy]'; +溺>'[drown]'; +溽>'[moist]'; +滂>'[torrential]'; +滄>'[blue]'; +滅>'[extinguish]'; +滉>'[deep]'; +滋>'[grow]'; +滌>'[wash]'; +滑>'[slip]'; +滓>'[sediment]'; +滔>'[overflow]'; +滕>'[ county in shandong province]'; +滝>'[raining]'; +滞>'[block up]'; +滬>'[shanghai]'; +滯>'[block up]'; +滲>'[soak through]'; +滴>'[drip]'; +滷>'[thick gravy]'; +滸>'[riverbank]'; +滾>'[turn]'; +滿>'[fill]'; +漁>'[to fish]'; +漂>'[float]'; +漆>'[varnish]'; +漉>'[filter]'; +漏>'[leak]'; +漑>'[water]'; +漓>'[river in guangxi province]'; +演>'[perform]'; +漕>'[transport by water]'; +漠>'[desert]'; +漢>'[chinese people]'; +漣>'[flowing water]'; +漫>'[overflow of water]'; +漬>'[soak]'; +漱>'[gargle]'; +漲>'[rise in price]'; +漸>'[gradually]'; +漾>'[overflow]'; +漿>'[any thick fluid]'; +潁>'[river in anhui]'; +潅>'[pour]'; +潔>'[clean]'; +潘>'[surname]'; +潛>'[hide]'; +潜>'[hide]'; +潟>'[land inundated with salt from ti]'; +潤>'[soft]'; +潦>'[to flood]'; +潭>'[deep pool]'; +潮>'[tide]'; +潯>'[steep bank by stream]'; +潰>'[flooding river]'; +潴>'[pond]'; +潸>'[weep]'; +潺>'[sound of flowing water]'; +潼>'[high]'; +澀>'[astringent]'; +澁>'[astringent]'; +澂>'[clear and still water]'; +澄>'[purify water by allowing sedimen]'; +澆>'[spray]'; +澎>'[splatter]'; +澑>'[slide]'; +澗>'[brook]'; +澡>'[wash]'; +澣>'[cleanse]'; +澤>'[marsh]'; +#"澪>'[................................]'", +澱>'[sediment]'; +澳>'[inlet]'; +澹>'[calm]'; +激>'[arouse]'; +濁>'[muddy]'; +濂>'[waterfall]'; +濃>'[thick]'; +濆>'[river bank]'; +濔>'[many]'; +濕>'[wet]'; +濘>'[mud]'; +濛>'[drizzling]'; +濟>'[help]'; +濠>'[moat]'; +濡>'[immerse]'; +濤>'[large waves]'; +濫>'[flood]'; +濬>'[dredge]'; +濮>'[county in Henan province]'; +濯>'[wash out]'; +濱>'[beach]'; +濳>'[hide]'; +濶>'[broad]'; +濺>'[sprinkle]'; +濾>'[strain out]'; +瀁>'[waves]'; +瀉>'[drain off]'; +瀋>'[juice]'; +瀏>'[clear]'; +瀑>'[waterfall]'; +瀕>'[approach]'; +瀘>'[river in jiangxi province]'; +瀚>'[vast]'; +瀛>'[sea]'; +瀝>'[trickle]'; +瀞>'[pool in a river]'; +瀟>'[sound of beating wind and rain]'; +瀦>'[pond]'; +瀧>'[raining]'; +瀬>'[swift current]'; +瀰>'[overflow]'; +瀲>'[waves]'; +瀾>'[overflowing]'; +灌>'[pour]'; +灑>'[sprinkle]'; +灘>'[bank]'; +灣>'[bay]'; +火>'[fire]'; +灯>'[lantern]'; +灰>'[ashes]'; +灸>'[cauterize with moxa]'; +灼>'[burn]'; +災>'[calamity]'; +炉>'[fireplace]'; +炊>'[cook]'; +炎>'[flame]'; +炒>'[fry]'; +炙>'[roast]'; +炬>'[torch]'; +炭>'[charcoal]'; +炮>'[large gun]'; +炯>'[bright]'; +炳>'[bright]'; +炸>'[fry in oil]'; +点>'[dot]'; +為>'[do]'; +烈>'[fiery]'; +烋>'[boast]'; +烏>'[crow]'; +烙>'[brand]'; +烝>'[rise]'; +烟>'[smoke]'; +烱>'[bright]'; +烹>'[boil]'; +烽>'[signal fire]'; +焉>'[thereupon]'; +焔>'[flame]'; +焙>'[dry over slow fire]'; +焚>'[burn]'; +焜>'[fire]'; +無>'[negative]'; +焦>'[burned]'; +然>'[yes]'; +焼>'[burn]'; +煉>'[smelt]'; +煌>'[bright]'; +煎>'[fry in fat or oil]'; +煕>'[bright]'; +煖>'[warm]'; +煙>'[smoke]'; +煢>'[alone]'; +煤>'[coal]'; +煥>'[shining]'; +煦>'[kind]'; +照>'[shine]'; +煩>'[bother]'; +煬>'[roast]'; +煮>'[cook]'; +煽>'[stir up]'; +熄>'[put out]'; +熈>'[bright]'; +熊>'[bear]'; +熏>'[smoke]'; +熔>'[melt]'; +#"熕>'[................................]'", +熙>'[bright]'; +熟>'[well cooked]'; +熨>'[iron]'; +熬>'[cook down]'; +熱>'[hot]'; +熹>'[dim light]'; +熾>'[burning hot]'; +燃>'[burn]'; +燈>'[lantern]'; +燉>'[heat with fire]'; +燎>'[burn]'; +燐>'[phosphorus]'; +燒>'[burn]'; +燔>'[to roast]'; +燕>'[swallow (bird)]'; +#"燗>'[................................]'", +營>'[encampment]'; +燠>'[warm]'; +燥>'[dry]'; +燦>'[vivid]'; +燧>'[flintstone]'; +燬>'[burn down]'; +燭>'[candle]'; +燮>'[harmonize]'; +#"燵>'[................................]'", +燹>'[fire]'; +燻>'[smoke]'; +燼>'[cinders]'; +燿>'[shine]'; +爆>'[crackle]'; +爍>'[shine]'; +爐>'[fireplace]'; +爛>'[rotten]'; +爨>'[oven]'; +爪>'[claw]'; +爬>'[crawl]'; +爭>'[dispute]'; +爰>'[lead on to]'; +爲>'[do]'; +爵>'[feudal title or rank]'; +父>'[father]'; +爺>'[father]'; +爻>'[diagrams for divination]'; +爼>'[chopping board or block]'; +爽>'[happy]'; +爾>'[you]'; +爿>'[half of tree trunk]'; +牀>'[bed]'; +牆>'[wall]'; +片>'[slice]'; +版>'[printing blocks]'; +牋>'[memorandum]'; +牌>'[signboard]'; +牒>'[documents]'; +牘>'[writing tablet]'; +牙>'[tooth]'; +牛>'[cow]'; +牝>'[female of species]'; +牟>'[make]'; +牡>'[male of animals]'; +牢>'[prison]'; +牧>'[tend cattle]'; +物>'[thing]'; +牲>'[sacrificial animal]'; +牴>'[gore]'; +特>'[special]'; +牽>'[drag]'; +牾>'[to oppose]'; +犀>'[rhinoceros]'; +犁>'[plow]'; +犂>'[plow]'; +犇>'[run fast]'; +犒>'[entertain victorious soldiers]'; +犖>'[brindled ox]'; +犠>'[sacrifice]'; +犢>'[calf]'; +犧>'[sacrifice]'; +犬>'[dog]'; +犯>'[commit crime]'; +犲>'[wolf]'; +状>'[form]'; +犹>'[like]'; +狂>'[insane]'; +狃>'[to covet]'; +狄>'[tribe from northern china]'; +狆>'[pekinese dog]'; +狎>'[be familiar with]'; +狐>'[species of fox]'; +狒>'[baboon]'; +狗>'[dog]'; +狙>'[ape]'; +#"狛>'[................................]'", +狠>'[vicious]'; +狡>'[cunning]'; +狢>'[animal name]'; +狩>'[winter hunting]'; +独>'[alone]'; +狭>'[narrow]'; +狷>'[rash]'; +狸>'[fox]'; +狹>'[narrow]'; +狼>'[wolf]'; +狽>'[legendary animal with short fore]'; +猊>'[lion]'; +猖>'[mad]'; +猗>'[exclamation of admiration]'; +猛>'[violent]'; +猜>'[guess]'; +猝>'[abruptly]'; +猟>'[hunt]'; +猥>'[vulgar]'; +猩>'[species of orangutan]'; +猪>'[pig]'; +猫>'[cat]'; +献>'[offer]'; +#"猯>'[................................]'", +猴>'[monkey]'; +猶>'[like]'; +猷>'[plan]'; +猾>'[crafty]'; +猿>'[ape]'; +獄>'[prison]'; +獅>'[lion]'; +獎>'[prize]'; +獏>'[the panther]'; +獗>'[unruly]'; +獣>'[beast]'; +獨>'[alone]'; +獪>'[sly]'; +獰>'[ferocious appearance]'; +獲>'[obtain]'; +獵>'[hunt]'; +獸>'[beast]'; +獺>'[otter]'; +獻>'[offer]'; +玄>'[deep]'; +率>'[to lead]'; +玉>'[jade]'; +王>'[king]'; +玖>'[black-colored jade]'; +玩>'[play with]'; +玲>'[tinkling of jade]'; +玳>'[tortoise shell]'; +玻>'[glass]'; +珀>'[amber]'; +珂>'[inferior kind of jade]'; +珈>'[ornament attached woman''s hairpi]'; +珊>'[coral]'; +珍>'[precious]'; +珎>'[precious]'; +珞>'[kind of necklace]'; +珠>'[precious stone]'; +珥>'[ear ornament]'; +珪>'[jade table conferred upon feudal]'; +班>'[class]'; +珮>'[jade ornament]'; +珱>'[necklace made of precious stones]'; +#"珸>'[................................]'", +現>'[appear]'; +球>'[ball]'; +琅>'[variety of white carnelian]'; +理>'[reason]'; +琉>'[sparkling stone]'; +琢>'[polish jade]'; +琥>'[jewel in shape of tiger]'; +琲>'[necklace]'; +琳>'[beautiful jade]'; +琴>'[chinese lute or guitar]'; +琵>'[guitar-like instrument]'; +琶>'[guitar-like instrument]'; +琺>'[enamel]'; +琿>'[bright]'; +瑁>'[fine piece of jade]'; +瑕>'[flaw in gem]'; +瑙>'[agate]'; +瑚>'[coral]'; +瑛>'[luster of gem]'; +瑜>'[flawless gem or jewel]'; +瑞>'[felicitous omen]'; +瑟>'[large stringed musical instrument]'; +瑠>'[precious stone]'; +瑣>'[fragments]'; +瑤>'[precious jade]'; +瑩>'[lustre of gems]'; +瑪>'[agate]'; +瑯>'[kind of white cornelian]'; +瑰>'[extraordinary]'; +瑳>'[luster of gem]'; +瑶>'[precious jade]'; +瑾>'[brilliance of gems]'; +璃>'[glass]'; +璋>'[jade plaything]'; +璞>'[unpolished gem]'; +璢>'[precious stone]'; +璧>'[piece of jade with hole in it]'; +環>'[jade ring or bracelet]'; +璽>'[imperial signet]'; +瓊>'[jade]'; +瓏>'[gem cut like dragon]'; +瓔>'[necklace made of precious stones]'; +瓜>'[melon]'; +瓠>'[bottle gourd]'; +瓢>'[ladle made from dried gourd]'; +瓣>'[petal]'; +瓦>'[tile]'; +瓧>'[decagram]'; +瓩>'[kilowatt]'; +瓮>'[earthen jar]'; +瓰>'[[not found in dictionary]]'; +瓱>'[milligram]'; +#"瓲>'[................................]'", +瓶>'[jug]'; +瓷>'[crockery]'; +瓸>'[hectogram]'; +甃>'[brick wall of a well]'; +甄>'[examine]'; +甅>'[centigram]'; +甌>'[bowl]'; +甍>'[rafters supporting roof tiles]'; +甎>'[brick]'; +甑>'[boiler for steaming rice]'; +甓>'[glazed tiles]'; +甕>'[earthen jar]'; +甘>'[sweetness]'; +甚>'[great extent]'; +甜>'[sweet]'; +甞>'[taste]'; +生>'[life]'; +産>'[give birth]'; +甥>'[sister''s child]'; +甦>'[be reborn]'; +用>'[use]'; +甫>'[begin]'; +甬>'[path]'; +田>'[field]'; +由>'[cause]'; +甲>'[armor]'; +申>'[to state to a superior]'; +男>'[male]'; +甸>'[suburbs of capital]'; +町>'[raised path between fields]'; +画>'[painting]'; +甼>'[raised path between fields]'; +畄>'[stop]'; +畆>'[chinese land measure]'; +#"畉>'[................................]'", +畊>'[plow]'; +畋>'[till land]'; +界>'[boundary]'; +#"畍>'[................................]'", +畏>'[fear]'; +畑>'[dry (as opposed to rice) field]'; +畔>'[boundary path dividing fields]'; +留>'[stop]'; +畚>'[straw basket]'; +畛>'[border]'; +畜>'[livestock]'; +畝>'[chinese land measure]'; +畠>'[garden]'; +畢>'[end]'; +畤>'[place for worshipping the haven]'; +略>'[approximately]'; +畦>'[sections in vegetable farm]'; +畧>'[approximately]'; +#"畩>'[................................]'", +番>'[take turns]'; +畫>'[delineate]'; +#"畭>'[................................]'", +異>'[different]'; +畳>'[repeat]'; +畴>'[farmland]'; +當>'[bear]'; +畷>'[raised path between fields]'; +畸>'[odd]'; +畿>'[imperial domain]'; +疂>'[repeat]'; +疆>'[boundary]'; +疇>'[farmland]'; +疉>'[repeat]'; +疊>'[repeat]'; +疋>'[roll]'; +疎>'[neglect]'; +疏>'[neglect]'; +疑>'[doubt]'; +疔>'[carbuncle]'; +疚>'[chronic disease]'; +疝>'[hernia]'; +疣>'[wart]'; +疥>'[scabies]'; +疫>'[epidemic]'; +疱>'[acne]'; +疲>'[feel tired]'; +疳>'[childhood diseases]'; +疵>'[flaw]'; +疸>'[jaundice]'; +疹>'[measles]'; +疼>'[aches]'; +疽>'[ulcer]'; +疾>'[illness]'; +痂>'[scab]'; +痃>'[indigestion]'; +病>'[illness]'; +症>'[disease]'; +痊>'[be healed]'; +痍>'[wound]'; +痒>'[itch]'; +痔>'[hemorrhoids]'; +痕>'[scar]'; +痘>'[smallpox]'; +痙>'[convulsions]'; +痛>'[pain]'; +痞>'[dyspepsia]'; +痢>'[dysentry]'; +痣>'[spots]'; +痩>'[thin]'; +痰>'[phlegm]'; +痲>'[pock-marked]'; +痳>'[pock-marked]'; +痴>'[foolish]'; +痺>'[paralysis]'; +痼>'[chronic disease]'; +痾>'[chronic illness]'; +痿>'[paralysis]'; +瘁>'[feel tired]'; +瘉>'[get well]'; +瘋>'[crazy]'; +瘍>'[ulcers]'; +瘟>'[epidemic]'; +瘠>'[thin]'; +瘡>'[tumor]'; +瘢>'[scar]'; +瘤>'[tumor]'; +瘧>'[intermittent fever]'; +瘰>'[scrofula]'; +瘴>'[malaria pestilential vapors]'; +瘻>'[fistula]'; +療>'[be healed]'; +癆>'[consumption]'; +癇>'[epilepsy]'; +癈>'[abrogate]'; +癌>'[cancer]'; +癒>'[get well]'; +癖>'[craving]'; +癘>'[sore]'; +癜>'[erythema]'; +癡>'[silly]'; +癢>'[itch]'; +癧>'[scrofulous lumps or swellings]'; +癨>'[quickly]'; +癩>'[leprosy]'; +癪>'[spasms]'; +癬>'[ringworms]'; +癰>'[carbuncle]'; +癲>'[crazy]'; +癶>'[legs]'; +癸>'[last of ten celestial stems]'; +発>'[issue]'; +登>'[rise]'; +發>'[issue]'; +白>'[white]'; +百>'[one hundred]'; +皀>'[kernel]'; +皃>'[countenance]'; +的>'[possessive]'; +皆>'[all]'; +皇>'[royal]'; +皈>'[follow]'; +皋>'[the high land along a river]'; +皎>'[white]'; +皐>'[the high land along a river]'; +皓>'[bright]'; +皖>'[anhui province]'; +皙>'[white]'; +皚>'[brilliant white]'; +皮>'[skin]'; +皰>'[pimples]'; +皴>'[chapped]'; +皷>'[drum]'; +皸>'[crack]'; +皹>'[crack]'; +皺>'[wrinkles]'; +皿>'[shallow container]'; +盂>'[basin]'; +盃>'[glass]'; +盆>'[basin]'; +盈>'[fill]'; +益>'[profit]'; +盍>'[what? why not? correspond]'; +盒>'[small box or case]'; +盖>'[cover]'; +盗>'[rob]'; +盛>'[abundant]'; +盜>'[rob]'; +盞>'[small cup or container]'; +盟>'[swear]'; +盡>'[exhaust]'; +監>'[supervise]'; +盤>'[tray]'; +盥>'[wash]'; +盧>'[cottage]'; +盪>'[to toss about]'; +目>'[eye]'; +盲>'[blind]'; +直>'[straight]'; +相>'[mutual]'; +盻>'[glare]'; +盾>'[shield]'; +省>'[province]'; +眄>'[to look askance]'; +眇>'[blind in one eye]'; +眈>'[gloat]'; +眉>'[eyebrows]'; +看>'[look]'; +県>'[county]'; +眛>'[dim]'; +#"眞>'[real]'", +真>'[real]'; +眠>'[close eyes]'; +#"眤>'[................................]'", +眥>'[eye sockets]'; +眦>'[corner of the eyes]'; +眩>'[confuse]'; +眷>'[take interest in]'; +眸>'[pupil of eye]'; +眺>'[look at]'; +眼>'[eye]'; +着>'[make move]'; +睇>'[look at]'; +睚>'[corner of eye]'; +睛>'[eyeball]'; +睡>'[sleep]'; +督>'[supervise]'; +睥>'[look askance at]'; +睦>'[friendly]'; +睨>'[look askance at]'; +睫>'[eyelashes]'; +睹>'[look at]'; +睾>'[testicle]'; +睿>'[shrewd]'; +瞋>'[glare with anger]'; +瞎>'[blind]'; +瞑>'[close eyes]'; +瞞>'[deceive]'; +瞠>'[look at]'; +瞥>'[take fleeting glance at]'; +瞬>'[wink]'; +瞭>'[bright]'; +瞰>'[watch]'; +瞳>'[pupil of eye]'; +瞶>'[dim]'; +#"瞶>'[dim]'", +瞻>'[look]'; +瞼>'[eyelid]'; +瞽>'[blind]'; +瞿>'[surname]'; +矇>'[stupid]'; +矍>'[look about in firght or alarm]'; +矗>'[straight]'; +矚>'[watch carefully]'; +矛>'[spear]'; +矜>'[pity]'; +矢>'[arrow]'; +矣>'[particle of completed action]'; +知>'[know]'; +矧>'[much more]'; +矩>'[carpenter''s square]'; +短>'[short]'; +矮>'[short]'; +矯>'[correct]'; +石>'[stone]'; +矼>'[stone bridge]'; +砂>'[sand]'; +砌>'[stone steps]'; +砒>'[arsenic]'; +研>'[grind]'; +砕>'[break]'; +砠>'[rocky]'; +砥>'[whetstone]'; +砦>'[stockade]'; +砧>'[anvil]'; +砲>'[gun]'; +破>'[break]'; +砺>'[whetstone]'; +砿>'[mine]'; +硅>'[silicon]'; +硝>'[saltpeter]'; +硫>'[sulfur]'; +硬>'[hard]'; +硯>'[inkstone]'; +#"硲>'[................................]'", +#"硴>'[................................]'", +硼>'[borax]'; +碁>'[chess]'; +碆>'[arrow-tip]'; +碇>'[anchor]'; +碌>'[rough]'; +碍>'[obstruct]'; +碎>'[break]'; +碑>'[stone tablet]'; +碓>'[pestle]'; +#"碕>'[................................]'", +碗>'[bowl]'; +碚>'[suburb]'; +碣>'[stone tablet]'; +碧>'[jade]'; +碩>'[great]'; +碪>'[stone slab used for washing clot]'; +碯>'[agate]'; +#"碵>'[................................]'", +確>'[sure]'; +碼>'[number]'; +碾>'[roller]'; +磁>'[magnetic]'; +磅>'[pound]'; +#"磆>'[................................]'", +磊>'[pile of rocks or stones]'; +磋>'[polish]'; +磐>'[large rock]'; +磑>'[stone mill]'; +磔>'[downward stroke slanting righ]'; +磚>'[tile]'; +磧>'[sand and gravel]'; +磨>'[grind]'; +磬>'[musical instrument]'; +磯>'[jetty]'; +磴>'[steps on ledge]'; +磽>'[barren land]'; +礁>'[reef]'; +#"礇>'[................................]'", +礎>'[foundation stone]'; +#"礎>'[foundation stone]'", +#"礒>'[................................]'", +礙>'[obstruct]'; +礦>'[mine]'; +礪>'[whetstone]'; +礫>'[gravel]'; +礬>'[alum]'; +示>'[show]'; +礼>'[social custom]'; +社>'[god of the soil and altars to him]'; +祀>'[to sacrifice]'; +祁>'[pray]'; +祇>'[only]'; +祈>'[pray]'; +祉>'[happiness]'; +祐>'[divine intervention]'; +祓>'[exorcise]'; +祕>'[mysterious]'; +祖>'[ancestor]'; +祗>'[respect]'; +祚>'[throne]'; +祝>'[pray for happiness or blessings]'; +神>'[spirit]'; +祟>'[evil spirit]'; +祠>'[ancestral temple]'; +祢>'[one''s deceased father]'; +祥>'[good luck]'; +票>'[slip of paper or bamboo]'; +祭>'[sacrifice to]'; +祷>'[pray]'; +祺>'[good luck]'; +祿>'[blessing]'; +禀>'[report to]'; +禁>'[restrict]'; +禄>'[blessing]'; +禅>'[meditation]'; +禊>'[semi-annual ceremony of purifica]'; +禍>'[misfortune]'; +禎>'[lucky]'; +福>'[happiness]'; +禝>'[[not found in dictionary]]'; +禦>'[defend]'; +禧>'[happiness]'; +禪>'[meditation]'; +禮>'[social custom]'; +禰>'[one''s deceased father]'; +禳>'[pray or sacrifice]'; +禹>'[legendary hsia dynasty founder]'; +禺>'[district]'; +禽>'[birds]'; +禾>'[grain still on stalk]'; +禿>'[bald]'; +秀>'[ear of grain]'; +私>'[private]'; +秉>'[grasp]'; +秋>'[autumn]'; +科>'[section]'; +秒>'[beard of grain or corn]'; +秕>'[empty grain or rice husk]'; +秘>'[secret]'; +租>'[rent]'; +#"秡>'[................................]'", +秣>'[fodder]'; +秤>'[balance]'; +秦>'[feudal state of qin]'; +秧>'[rice seedlings]'; +秩>'[order]'; +秬>'[black millet]'; +称>'[call]'; +移>'[change place]'; +稀>'[rare]'; +稈>'[stalk of grain]'; +程>'[journey]'; +稍>'[little]'; +税>'[taxes]'; +稔>'[ripe grain]'; +稗>'[darnels]'; +#"稘>'[................................]'", +稙>'[grain ready for grinding]'; +稚>'[young]'; +稜>'[corner]'; +稟>'[report to]'; +稠>'[dense]'; +種>'[seed]'; +稱>'[call]'; +稲>'[rice growing in field]'; +稷>'[god of cereals]'; +稻>'[rice growing in field]'; +稼>'[sow grain]'; +稽>'[examine]'; +稾>'[draft]'; +稿>'[draft]'; +穀>'[corn]'; +穂>'[ear of grain]'; +#"穃>'[................................]'", +穆>'[majestic]'; +穉>'[young grain]'; +積>'[accumulate]'; +穎>'[rice tassel]'; +#"穎>'[rice tassel]'", +穐>'[fall]'; +穗>'[ear of grain]'; +穡>'[farm]'; +穢>'[dirty]'; +穣>'[stalks of grain]'; +穩>'[stable]'; +穫>'[harvest]'; +穰>'[stalks of grain]'; +穴>'[cave]'; +究>'[examine]'; +穹>'[high and vast]'; +空>'[empty]'; +穽>'[hole]'; +穿>'[penetrate]'; +突>'[suddenly]'; +窃>'[secretly]'; +窄>'[narrow]'; +窈>'[obscure]'; +窒>'[stop up]'; +窓>'[window]'; +窕>'[slender]'; +窖>'[pit]'; +窗>'[window]'; +窘>'[embrassassed]'; +窟>'[hole]'; +窩>'[nest]'; +窪>'[hollow]'; +窮>'[poor]'; +窯>'[kiln]'; +窰>'[kiln]'; +窶>'[poor]'; +窺>'[peep]'; +窿>'[mine shaft]'; +竃>'[furnace]'; +竄>'[run away]'; +竅>'[hole]'; +竇>'[surname]'; +竈>'[furnace]'; +竊>'[secretly]'; +立>'[stand]'; +竍>'[decaliter]'; +竏>'[kiloliter]'; +竒>'[strange]'; +竓>'[milliliter]'; +竕>'[deciliter]'; +站>'[stand up]'; +竚>'[stand and wait for long time]'; +竜>'[dragon]'; +竝>'[combine]'; +竟>'[finally]'; +章>'[composition]'; +竡>'[hectoliter]'; +竢>'[wait for]'; +竣>'[terminate]'; +童>'[child]'; +竦>'[revere]'; +竪>'[perpendicular]'; +竭>'[put forth great effort]'; +端>'[end]'; +竰>'[centiliter]'; +競>'[contend]'; +竸>'[contend]'; +竹>'[bamboo]'; +竺>'[india]'; +竿>'[bamboo pole]'; +#"笂>'[................................]'", +笄>'[hairpin]'; +笆>'[bamboo fence]'; +笈>'[bamboo box used carry books]'; +笊>'[ladle]'; +笋>'[bamboo shoots]'; +笏>'[tablet held by someone having au]'; +笑>'[smile]'; +#"笘>'[................................]'", +笙>'[small gourd-shaped musical instrument]'; +笛>'[bamboo flute]'; +笞>'[bamboo rod used for beatings]'; +笠>'[bamboo hat]'; +笥>'[a hamper]'; +符>'[i.d. tag]'; +笨>'[foolish]'; +第>'[sequence]'; +笳>'[a reed leaf whistle]'; +笵>'[a bamboo form]'; +#"笶>'[................................]'", +笹>'[small bamboo]'; +筅>'[bamboo brush]'; +筆>'[writing brush]'; +筈>'[arrow end]'; +等>'[rank]'; +筋>'[muscles]'; +筌>'[bamboo fish trap]'; +筍>'[bamboo shoot]'; +筏>'[raft]'; +筐>'[bamboo basket or chest]'; +筑>'[ancient lute]'; +筒>'[thick piece of bamboo]'; +答>'[answer]'; +策>'[scheme]'; +筝>'[stringed musical instrument]'; +筥>'[round-shaped bamboo basket for]'; +筧>'[bamboo water pipe]'; +筬>'[reed of a loom]'; +筮>'[divination with stalks of plants]'; +筰>'[cable]'; +筱>'[dwarf bamboo]'; +筴>'[type of grass used in divination]'; +筵>'[bamboo mat]'; +筺>'[bamboo basket or chest]'; +箆>'[fine-toothed comb]'; +箇>'[numerary adjunct]'; +箋>'[note]'; +箍>'[hoop]'; +箏>'[stringed musical instrument]'; +箒>'[broom]'; +箔>'[reed screen]'; +箕>'[sieve]'; +算>'[count]'; +箘>'[fine bamboo]'; +箙>'[quiver]'; +箚>'[brief note]'; +箜>'[ancient string music instrument]'; +箝>'[tweezers]'; +#"箟>'[................................]'", +管>'[pipe]'; +箪>'[small bamboo basket for holding]'; +箭>'[arrow]'; +箱>'[case]'; +箴>'[needle]'; +箸>'[chopsticks]'; +節>'[knot]'; +篁>'[bamboo grove]'; +範>'[pattern]'; +篆>'[seal script]'; +篇>'[chapter]'; +築>'[build]'; +篋>'[ratton box]'; +篌>'[ancient music instrument]'; +篏>'[inlay]'; +篝>'[bamboo basket]'; +篠>'[dwarf bamboo]'; +篤>'[deep]'; +篥>'[bulgle]'; +篦>'[fine-toothed comb]'; +篩>'[sieve]'; +篭>'[cage]'; +篳>'[wicker]'; +#"篶>'[................................]'", +篷>'[awning]'; +簀>'[bed mat]'; +簇>'[swarm]'; +簍>'[bamboo basket]'; +簑>'[a coir raincoat]'; +簒>'[usurp]'; +#"簓>'[................................]'", +簔>'[a coir raincoat]'; +#"簗>'[................................]'", +簟>'[bamboo mat]'; +簡>'[simple]'; +簣>'[bamboo basket for carrying earth]'; +簧>'[reed of woodwind instrument]'; +簪>'[hairpin]'; +簫>'[musical instrument like pan-pipes]'; +簷>'[eaves of house]'; +簸>'[winnower]'; +簽>'[sign]'; +簾>'[a blind]'; +簿>'[register]'; +籀>'[recite]'; +籃>'[basket]'; +籌>'[chip]'; +籍>'[record]'; +籏>'[flag]'; +籐>'[climbing plants]'; +籔>'[bamboo basket]'; +籖>'[tally]'; +籘>'[climbing plants]'; +籟>'[bamboo flute]'; +籠>'[cage]'; +籤>'[tally]'; +籥>'[key]'; +籬>'[bamboo or wooden fence]'; +米>'[hulled or husked uncooked rice]'; +籵>'[dm]'; +籾>'[unhulled rice]'; +粁>'[km]'; +粂>'[surname]'; +粃>'[empty husks of grain]'; +粉>'[powder]'; +粋>'[pure]'; +粍>'[mm]'; +#"粐>'[................................]'", +粒>'[grain]'; +粕>'[lees]'; +粗>'[rough]'; +粘>'[viscous]'; +粛>'[pay respects]'; +粟>'[unhusked millet]'; +#"粡>'[................................]'", +粢>'[grain offered in ritual sacrific]'; +粤>'[Guangdong and Guangxi provinces]'; +粥>'[rice gruel]'; +粧>'[toilet]'; +粨>'[hm]'; +#"粫>'[................................]'", +#"粭>'[................................]'", +粮>'[food]'; +粱>'[better varieties of millet]'; +粲>'[polish]'; +粳>'[non-glutinous rice]'; +粹>'[pure]'; +粽>'[dumpling made of glutinous rice]'; +精>'[essence]'; +#"糀>'[................................]'", +#"糂>'[................................]'", +糅>'[blend]'; +糊>'[paste]'; +糎>'[mm]'; +糒>'[food for a journey]'; +糖>'[sugar]'; +#"糘>'[................................]'", +糜>'[rice gruel]'; +糞>'[manure]'; +糟>'[sediment]'; +糠>'[chaff]'; +糢>'[rice snacks]'; +糧>'[food]'; +糯>'[glutinous rice]'; +糲>'[unpolished rice]'; +糴>'[purchase grains]'; +糶>'[sell grains]'; +糸>'[silk]'; +糺>'[to collaborate]'; +系>'[system]'; +糾>'[investigate]'; +紀>'[record]'; +紂>'[name of an emperor]'; +約>'[treaty]'; +紅>'[red]'; +紆>'[bend]'; +紊>'[confused]'; +紋>'[line]'; +納>'[admit]'; +紐>'[knot]'; +純>'[pure]'; +紕>'[spoiled silk]'; +紗>'[gauze]'; +紘>'[string]'; +紙>'[paper]'; +級>'[level]'; +紛>'[in disorder]'; +紜>'[confused]'; +素>'[white (silk)]'; +紡>'[spin]'; +索>'[large rope]'; +紫>'[purple]'; +紬>'[kind of thin silk]'; +紮>'[tie]'; +累>'[tired]'; +細>'[fine]'; +紲>'[bridle]'; +紳>'[girdle]'; +紵>'[ramie]'; +紹>'[continue]'; +紺>'[dark blue color]'; +紿>'[cheat]'; +終>'[end]'; +絃>'[string on musical instrument]'; +組>'[class]'; +絅>'[unlined garment]'; +絆>'[loop]'; +#"絋>'[................................]'", +経>'[classic works]'; +絎>'[baste]'; +絏>'[rope]'; +結>'[knot]'; +絖>'[fine silks]'; +絛>'[silk braid]'; +絞>'[twist]'; +絡>'[enmesh]'; +絢>'[variegated]'; +絣>'[to baste for sewing]'; +給>'[give]'; +絨>'[silk]'; +絮>'[waste cotton]'; +統>'[govern]'; +絲>'[silk]'; +絳>'[deep red]'; +絵>'[draw]'; +絶>'[cut]'; +絹>'[kind of thick stiff silk]'; +#"絽>'[................................]'", +綉>'[embroider]'; +綏>'[soothe]'; +經>'[classic works]'; +継>'[continue]'; +続>'[continue]'; +#"綛>'[................................]'", +綜>'[arrange threads for weaving]'; +#"綟>'[................................]'", +綢>'[silk cloth]'; +綣>'[affectionate]'; +綫>'[line]'; +綬>'[silk ribbon attached as a seal]'; +維>'[maintain]'; +綮>'[embroidered banner]'; +綯>'[braid]'; +綰>'[to string together]'; +綱>'[heavy rope]'; +網>'[net]'; +綴>'[patch together]'; +綵>'[varicolored silk]'; +綸>'[green silk thread or tassel]'; +綺>'[fine thin silk]'; +綻>'[ripped seam]'; +綽>'[graceful]'; +綾>'[thin silk]'; +綿>'[cotton wad]'; +緇>'[black silk]'; +緊>'[tense]'; +緋>'[scarlet]'; +総>'[collect]'; +緑>'[green]'; +緒>'[end of thread]'; +#"緕>'[................................]'", +緘>'[seal]'; +線>'[thread]'; +緜>'[cotton wad]'; +緝>'[to sew in close stitches]'; +緞>'[satin]'; +締>'[tie]'; +緡>'[fishing-line]'; +緤>'[cord]'; +編>'[knit]'; +緩>'[slow]'; +緬>'[distant]'; +緯>'[woof]'; +緲>'[indistinct]'; +練>'[practice]'; +緻>'[delicate]'; +縁>'[hem]'; +縄>'[rope]'; +#"縄>'[rope]'", +縉>'[red silk]'; +縊>'[hang]'; +縋>'[climd down rope]'; +#"縑>'[fine silk]'", +縛>'[to tie]'; +縞>'[white raw silk]'; +縟>'[decorative]'; +縡>'[matter]'; +縢>'[bind]'; +縣>'[county]'; +縦>'[indulge in]'; +縫>'[sew]'; +縮>'[contract]'; +縱>'[indulge in]'; +縲>'[chain or rope used bind criminal]'; +縵>'[plain silk]'; +縷>'[thread]'; +縹>'[light blue silk]'; +#"縺>'[................................]'", +縻>'[halter for ox]'; +總>'[collect]'; +績>'[spin]'; +繁>'[complicated]'; +繃>'[bind]'; +繆>'[wind around]'; +繊>'[fine]'; +繋>'[attach]'; +繍>'[embroider]'; +織>'[weave]'; +繕>'[repair]'; +繖>'[umbrella]'; +繙>'[interpret]'; +繚>'[wind round]'; +#"繝>'[................................]'", +繞>'[entwine]'; +繦>'[string of copper coins]'; +#"繧>'[................................]'", +繩>'[rope]'; +繪>'[draw]'; +繭>'[cocoon]'; +繰>'[to reel silk from cocoons]'; +繹>'[unravel or unreel silk]'; +繻>'[fine silk guaze]'; +繼>'[continue]'; +繽>'[flourishing]'; +#"繿>'[................................]'", +纂>'[edit]'; +#"纃>'[................................]'", +纈>'[patterned silk]'; +#"纉>'[................................]'", +續>'[continue]'; +纎>'[fine]'; +纏>'[wrap]'; +#"纐>'[................................]'", +纒>'[wrap]'; +纓>'[chin strap]'; +纔>'[talent]'; +纖>'[fine]'; +纛>'[a banner]'; +纜>'[hawser]'; +缶>'[earthen crock or jar]'; +缸>'[earthen jug]'; +缺>'[be short of]'; +罅>'[crack]'; +罌>'[long necked jar or bottle]'; +罍>'[large earthenware wine jar]'; +罎>'[an earthenware jar]'; +罐>'[jar]'; +网>'[net]'; +罔>'[net]'; +罕>'[rare]'; +罘>'[screen used in ancient times]'; +罟>'[net]'; +罠>'[animal trap]'; +#"罧>'[................................]'", +罨>'[medical compress]'; +罩>'[basket for catching fish]'; +罪>'[crime]'; +罫>'[hinder]'; +置>'[place]'; +罰>'[penalty]'; +署>'[public office]'; +罵>'[accuse]'; +罷>'[cease]'; +罸>'[penalty]'; +罹>'[sorrow]'; +#"羂>'[................................]'", +羃>'[cover-cloth]'; +羅>'[net for catching birds]'; +羆>'[brown bear]'; +羇>'[inn]'; +羈>'[halter]'; +羊>'[sheep]'; +羌>'[qiang nationality]'; +美>'[beautiful]'; +羔>'[lamb]'; +羚>'[species of antelope]'; +羝>'[ram]'; +羞>'[disgrace]'; +羣>'[group]'; +群>'[group]'; +羨>'[envy]'; +義>'[right conduct]'; +羮>'[soup]'; +羯>'[wether]'; +羲>'[ancient emperor]'; +羶>'[rank odor]'; +羸>'[weak]'; +羹>'[soup]'; +羽>'[feather]'; +翁>'[old man]'; +翅>'[wings]'; +翆>'[color green]'; +翊>'[flying]'; +翌>'[bright]'; +習>'[practice]'; +翔>'[soar]'; +翕>'[agree]'; +翠>'[color green]'; +翡>'[kingfisher]'; +翦>'[scissors]'; +翩>'[fly]'; +翫>'[careless]'; +翰>'[writing brush]'; +翳>'[shade]'; +翹>'[turn up]'; +翻>'[flip over]'; +翼>'[wings]'; +耀>'[shine]'; +老>'[old]'; +考>'[examine]'; +耄>'[elderly person]'; +者>'[that which]'; +耆>'[man of sixty]'; +耋>'[aged]'; +而>'[and]'; +耐>'[endure]'; +耒>'[handle of plow]'; +耕>'[plow]'; +耗>'[consume]'; +耘>'[weed]'; +耙>'[rake]'; +耜>'[spade-shaped tool]'; +耡>'[hoe]'; +耨>'[hoe]'; +耳>'[ear]'; +耶>'[used in transliteration]'; +耻>'[shame]'; +耽>'[indulge in]'; +耿>'[bright]'; +聆>'[listen]'; +聊>'[somewhat]'; +聒>'[clamor]'; +聖>'[holy]'; +聘>'[engage]'; +聚>'[assemble]'; +聞>'[hear]'; +聟>'[son-in-law]'; +聡>'[intelligent]'; +#"聢>'[................................]'", +聨>'[connect]'; +聯>'[connect]'; +聰>'[intelligent]'; +聲>'[sound]'; +聳>'[urge on]'; +聴>'[hear]'; +聶>'[whisper]'; +職>'[duty]'; +聹>'[earwax]'; +聽>'[hear]'; +聾>'[deaf]'; +聿>'[writing brush]'; +肄>'[learn]'; +肅>'[pay respects]'; +肆>'[indulge]'; +肇>'[begin]'; +肉>'[flesh]'; +肋>'[ribs]'; +肌>'[muscle tissue]'; +肓>'[region between heart and diaphragm]'; +肖>'[look like]'; +肘>'[elbow]'; +肚>'[belly]'; +肛>'[anus]'; +肝>'[liver]'; +股>'[thighs]'; +肢>'[human limbs]'; +肥>'[fat]'; +肩>'[shoulders]'; +肪>'[animal fat]'; +肬>'[wart]'; +肭>'[fat]'; +肯>'[willing]'; +肱>'[forearm]'; +育>'[produce]'; +肴>'[cooked or prepared meat]'; +肺>'[lungs]'; +胃>'[stomach]'; +胄>'[helmet]'; +胆>'[gall bladder]'; +背>'[back]'; +胎>'[unborn child]'; +胖>'[fat]'; +胙>'[food offered in sacrificial serv]'; +胚>'[embryo]'; +胛>'[the shoulder]'; +胝>'[callous]'; +胞>'[womb]'; +胡>'[recklessly]'; +胤>'[heir]'; +胥>'[all]'; +胯>'[pelvis]'; +胱>'[bladder]'; +胴>'[the large intestine]'; +胸>'[breast]'; +胼>'[callus]'; +能>'[be able]'; +脂>'[fat]'; +脅>'[ribs]'; +脆>'[crisp]'; +脇>'[ribs]'; +脈>'[blood vessels]'; +脉>'[blood vessels]'; +脊>'[spine]'; +脚>'[leg]'; +脛>'[shinbone]'; +脣>'[lips]'; +脩>'[dried meat (used as teachers payment in ancient times)]'; +脯>'[dried meat]'; +脱>'[take off]'; +脳>'[brain]'; +脹>'[swell]'; +脾>'[spleen]'; +腆>'[prosperous]'; +腋>'[armpit]'; +腎>'[kidneys]'; +腐>'[rot]'; +腑>'[bowels]'; +腓>'[calf]'; +腔>'[chest cavity]'; +腕>'[wrist]'; +腟>'[vagina]'; +腥>'[raw meat]'; +腦>'[brain]'; +腫>'[swell]'; +腮>'[lower part of face]'; +腰>'[waist]'; +腱>'[tendons]'; +腴>'[fat]'; +腸>'[intestines]'; +腹>'[stomach]'; +腺>'[gland]'; +腿>'[legs]'; +膀>'[upper arm]'; +膂>'[backbone]'; +膃>'[fat]'; +膈>'[diaphragm]'; +膊>'[shoulders]'; +膏>'[grease]'; +膓>'[intestines]'; +膕>'[hollow]'; +膚>'[skin]'; +膜>'[membrane]'; +膝>'[knee]'; +膠>'[glue]'; +膣>'[vagina]'; +#"膤>'[................................]'", +膨>'[swell]'; +膩>'[greasy]'; +膰>'[cook meat for sacrifice or offer]'; +膳>'[meals]'; +膵>'[pancreas]'; +#"膸>'[................................]'", +膺>'[breast]'; +膽>'[gall bladder]'; +膾>'[minced meat or fish]'; +膿>'[pus]'; +臀>'[buttocks]'; +臂>'[arm]'; +臆>'[chest]'; +臈>'[year end sacrifice]'; +臉>'[face]'; +臍>'[abdominal area of crab]'; +臑>'[soft]'; +臓>'[internal organs]'; +臘>'[year end sacrifice]'; +臙>'[rouge]'; +臚>'[arrange in order]'; +臟>'[internal organs]'; +臠>'[small lump of meat]'; +臣>'[minister]'; +臥>'[lie down]'; +臧>'[good]'; +臨>'[draw near]'; +自>'[self]'; +臭>'[smell]'; +至>'[reach]'; +致>'[send]'; +臺>'[tower]'; +臻>'[reach]'; +臼>'[mortar]'; +臾>'[moment]'; +舁>'[carry on one''s shoulder]'; +舂>'[grind in mortar]'; +舅>'[mother''s brother]'; +與>'[and]'; +興>'[thrive]'; +舉>'[raise]'; +舊>'[old]'; +舌>'[tongue]'; +舍>'[house]'; +舎>'[house]'; +舐>'[lick with tongue]'; +舒>'[open up]'; +舖>'[store]'; +舗>'[store]'; +舘>'[a mansion]'; +舛>'[oppose]'; +舜>'[legendary ruler]'; +舞>'[dance]'; +舟>'[boat]'; +舩>'[boat]'; +航>'[sail]'; +舫>'[fancy boat]'; +般>'[sort]'; +舮>'[bow or prow of boat]'; +舳>'[stern of ship]'; +舵>'[rudder]'; +舶>'[large]'; +舷>'[sides of boat]'; +舸>'[large boat]'; +船>'[ship]'; +艀>'[[not found in dictionary]]'; +艇>'[small boat]'; +艘>'[counter for ships]'; +艙>'[hold of ship]'; +艚>'[ship]'; +#"艝>'[................................]'", +艟>'[ancient warship]'; +艢>'[a mast]'; +艤>'[to moor a boat to the bank]'; +艦>'[warship]'; +艨>'[long and narrow war-boat]'; +艪>'[oar]'; +艫>'[bow or prow of boat]'; +艮>'[seventh of eight diagrams]'; +良>'[good]'; +艱>'[difficult]'; +色>'[color]'; +艶>'[beautiful]'; +艷>'[beautiful]'; +艸>'[grass]'; +艾>'[artemisia]'; +芋>'[taro]'; +芍>'[peony]'; +芒>'[miscanthus sinensis]'; +芙>'[hibiscus]'; +芝>'[purplish mushroom thought promot]'; +芟>'[mow]'; +芥>'[mustard plant]'; +芦>'[rushes]'; +芫>'[daphne genkwa]'; +芬>'[fragrance]'; +芭>'[plantain or banana palm]'; +芯>'[pith from rush (juncus effusus)]'; +花>'[flower]'; +芳>'[fragrant]'; +芸>'[rue]'; +芹>'[celery]'; +芻>'[mow]'; +芽>'[bud]'; +苅>'[cut off]'; +苑>'[pasture]'; +苒>'[lush]'; +苓>'[fungus]'; +苔>'[moss]'; +苗>'[sprouts]'; +苙>'[pigsty]'; +苛>'[small]'; +苜>'[clover]'; +苞>'[variety of rush]'; +苟>'[careless]'; +苡>'[barley]'; +苣>'[kind of lettuce]'; +若>'[if]'; +苦>'[bitter]'; +苧>'[china grass]'; +苫>'[rush or straw matting]'; +英>'[petal]'; +#"苳>'[................................]'", +苴>'[sackcloth]'; +苹>'[artemisia]'; +苺>'[berries]'; +苻>'[kind of herb]'; +茂>'[thick]'; +范>'[surname]'; +茄>'[eggplant]'; +茅>'[reeds]'; +茆>'[species of grass]'; +茉>'[white jasmine]'; +茎>'[stem]'; +茖>'[allium victorialis]'; +茗>'[tea]'; +#"茗>'[tea]'", +茜>'[madder]'; +#"茣>'[................................]'", +茨>'[caltrop]'; +茫>'[vast]'; +茯>'[china root]'; +茱>'[dogwood]'; +茲>'[now]'; +茴>'[fennel]'; +茵>'[cushion]'; +茶>'[tea]'; +茸>'[soft]'; +茹>'[roots]'; +荀>'[surname]'; +荅>'[answer: small bean]'; +草>'[grass]'; +荊>'[thorns]'; +荏>'[beans]'; +荐>'[repeat]'; +荒>'[wasteland]'; +荘>'[village]'; +荳>'[beans]'; +#"荵>'[................................]'", +荷>'[lotus]'; +荻>'[reed]'; +荼>'[bitter vegetable]'; +莅>'[attend]'; +#"莇>'[................................]'", +莉>'[white jasmine]'; +莊>'[village]'; +莎>'[kind of sedge grass]'; +莓>'[moss]'; +莖>'[stem]'; +莚>'[bamboo mat]'; +莞>'[smiling]'; +#"莟>'[................................]'", +莠>'[weeds]'; +莢>'[pods of leguminous plants]'; +莨>'[herb]'; +莪>'[artemisia]'; +莫>'[do not]'; +莱>'[goosefoot]'; +莵>'[dodder]'; +莽>'[thicket]'; +菁>'[flower of leek family]'; +菅>'[coarse grass]'; +菊>'[chrysanthemum]'; +菌>'[mushroom]'; +菎>'[beautiful jade]'; +菓>'[fruits]'; +菖>'[iris]'; +菘>'[celery]'; +菜>'[vegetables]'; +菟>'[dodder]'; +菠>'[spinach and similar greens]'; +菩>'[herb]'; +菫>'[celery]'; +華>'[flowery]'; +菰>'[wild rice]'; +菱>'[water-chestnut]'; +菲>'[fragrant]'; +菴>'[small buddhist monastery]'; +#"菷>'[................................]'", +菻>'[artemisia]'; +菽>'[beans and peas]'; +萃>'[dense]'; +萄>'[grapes]'; +萇>'[averrhora carambola]'; +萋>'[luxuriant foliage]'; +萌>'[bud]'; +萍>'[duckweed]'; +萎>'[wither]'; +#"萓>'[................................]'", +萠>'[bud]'; +#"萢>'[................................]'", +萩>'[scandent hop]'; +#"萪>'[................................]'", +萬>'[ten thousand]'; +萱>'[day-lily]'; +萵>'[lettuce]'; +萸>'[dogwood]'; +萼>'[calyx of flower]'; +落>'[fall]'; +葆>'[reserve]'; +葉>'[leaf]'; +#"葎>'[................................]'", +著>'[manifest]'; +葛>'[edible bean]'; +葡>'[grapes]'; +葢>'[cover]'; +董>'[direct]'; +葦>'[reed]'; +葩>'[flowers]'; +葫>'[bottle-gourd]'; +葬>'[bury]'; +葭>'[bulrush]'; +#"葭>'[bulrush]'", +葯>'[leaf of angelica plant]'; +葱>'[scallions]'; +葵>'[sunflower]'; +葷>'[meat diet]'; +葹>'[kind of chrysanthemum]'; +葺>'[thatch]'; +蒂>'[peduncle or stem of plants]'; +#"蒄>'[................................]'", +蒋>'[surname]'; +蒐>'[collect]'; +蒔>'[transplant]'; +蒙>'[cover]'; +蒜>'[garlic]'; +蒟>'[betel pepper]'; +蒡>'[burdock]'; +蒭>'[to cutgrass]'; +蒲>'[type of rush]'; +蒸>'[steam]'; +蒹>'[reed]'; +蒻>'[rushes]'; +蒼>'[blue]'; +蒿>'[mugwort]'; +蓁>'[abundant]'; +蓄>'[store]'; +蓆>'[straw mat]'; +蓉>'[hibiscus]'; +蓊>'[luxuriant vegetation]'; +蓋>'[cover]'; +蓍>'[milfoil]'; +蓐>'[straw bed mat]'; +蓑>'[rain coat made of straw]'; +蓖>'[castor-oil plant]'; +#"蓙>'[................................]'", +蓚>'[oxalic (used in compounds)]'; +蓬>'[type of raspberry]'; +蓮>'[lotus]'; +蓴>'[edible water plant]'; +蓼>'[smartweed]'; +蓿>'[clover]'; +蔀>'[screen]'; +蔆>'[water-chestnut]'; +蔑>'[disdain]'; +蔓>'[creeping plants]'; +蔔>'[radish]'; +蔕>'[peduncle or stem of plants]'; +蔗>'[sugar cane]'; +蔘>'[ginsen]'; +蔚>'[luxuriant]'; +蔟>'[frame on which silkworms spin]'; +蔡>'[surname]'; +蔦>'[parasitic plants]'; +蔬>'[vegetables]'; +蔭>'[shade]'; +蔵>'[hide]'; +蔽>'[cover]'; +#"蕀>'[................................]'", +蕁>'[nettle]'; +蕃>'[foreign things]'; +蕈>'[mushrooms]'; +蕉>'[banana]'; +蕊>'[unopened flowers]'; +蕋>'[unopened flowers]'; +蕎>'[buckwheat]'; +蕕>'[caryopteris divaricata]'; +#"蕗>'[................................]'", +蕘>'[fuel]'; +蕚>'[calyx of flower]'; +蕣>'[hibiscus]'; +蕨>'[pteris aquilina]'; +蕩>'[pond]'; +蕪>'[luxurious growth of weeds]'; +蕭>'[common artemisia]'; +蕷>'[yam]'; +蕾>'[buds]'; +薀>'[the hippuris or mare''s tail plant]'; +薄>'[thin]'; +薇>'[osmunda regalis]'; +薈>'[luxuriant]'; +薊>'[circium]'; +薐>'[spinach]'; +薑>'[ginger]'; +薔>'[rose]'; +薗>'[garden]'; +薙>'[weed]'; +薛>'[kind of marsh grass]'; +薜>'[evergreen shrubs]'; +薤>'[allium bakeri]'; +薦>'[offer]'; +薨>'[death of prince]'; +薩>'[transliteration of \"sat\" of boddhisattva etc.]'; +薪>'[fuel]'; +薫>'[a medicinal herb]'; +薬>'[drugs]'; +薮>'[marsh]'; +薯>'[yam]'; +薹>'[cyperus rotundus]'; +薺>'[water-chestnuts]'; +藁>'[straw]'; +藉>'[mat]'; +藍>'[blue]'; +藏>'[hide]'; +藐>'[disregard]'; +藕>'[lotus root]'; +藜>'[chenopodium album]'; +藝>'[art]'; +藤>'[rattan]'; +藥>'[drugs]'; +藩>'[fence]'; +藪>'[marsh]'; +藷>'[yam]'; +藹>'[lush]'; +藺>'[rush used in making mats]'; +藻>'[splendid]'; +藾>'[shade]'; +蘂>'[stamen or pistil]'; +蘆>'[rushes]'; +蘇>'[thyme]'; +蘊>'[collect]'; +蘋>'[apple]'; +蘓>'[thyme]'; +蘖>'[stump]'; +蘗>'[stump]'; +蘚>'[moss]'; +蘢>'[tall grass]'; +蘭>'[orchid]'; +蘯>'[to toss about]'; +#"蘯>'[to toss about]'", +蘿>'[type of creeping plant]'; +虍>'[tiger]'; +虎>'[tiger]'; +虐>'[cruel]'; +虔>'[act with reverence]'; +處>'[place]'; +虚>'[false]'; +虜>'[capture]'; +虞>'[concerned about]'; +號>'[mark]'; +虧>'[lose]'; +虫>'[insects]'; +虱>'[louse]'; +虹>'[rainbow]'; +虻>'[horsefly]'; +蚊>'[mosquito]'; +蚋>'[gnat]'; +蚌>'[oysters]'; +蚓>'[earthworm]'; +蚕>'[silkworms]'; +蚣>'[centipede]'; +蚤>'[flea]'; +蚩>'[worm]'; +蚪>'[tadpole]'; +蚫>'[abalone]'; +蚯>'[earthworm]'; +蚰>'[millipede]'; +蚶>'[kind of clam]'; +蛄>'[mole cricket]'; +蛆>'[maggots]'; +蛇>'[snake]'; +蛉>'[dragonfly]'; +蛋>'[eggs]'; +蛍>'[glow-worm]'; +蛎>'[oyster]'; +蛔>'[tapeworm]'; +蛙>'[frog]'; +蛛>'[spider]'; +蛞>'[snail]'; +蛟>'[scaly dragon with four legs]'; +蛤>'[clam]'; +蛩>'[cricket]'; +#"蛩>'[cricket]'", +蛭>'[leech]'; +蛮>'[barbarians]'; +蛯>'[shrimp]'; +蛸>'[long legged spider]'; +蛹>'[chrysalis]'; +蛻>'[molt]'; +蛾>'[moth]'; +蜀>'[name of an ancient state]'; +蜂>'[bee]'; +蜃>'[marine monster which can change its shape]'; +蜆>'[a variety of bivalves]'; +蜈>'[centipede]'; +蜉>'[mayfly]'; +蜊>'[clam]'; +蜍>'[toad]'; +蜑>'[egg]'; +蜒>'[millipede]'; +蜘>'[spider]'; +蜚>'[cockroach]'; +蜜>'[honey]'; +蜥>'[lizard]'; +蜩>'[cicada]'; +蜴>'[lizard]'; +蜷>'[creep like worm]'; +蜻>'[dragonfly]'; +蜿>'[creep]'; +蝉>'[cicada]'; +蝋>'[wax]'; +蝌>'[tadpole]'; +蝎>'[scorpion]'; +蝓>'[snail]'; +蝕>'[nibble away]'; +蝗>'[kind of locust]'; +蝙>'[bat]'; +蝟>'[hedgehog]'; +蝠>'[kind of bat]'; +蝣>'[mayfly]'; +蝦>'[shrimp]'; +蝨>'[louse]'; +#"蝨>'[louse]'", +蝮>'[venomous snake]'; +蝴>'[butterfly]'; +蝶>'[butterfly]'; +蝸>'[snail]'; +蝿>'[flies]'; +螂>'[mantis]'; +融>'[melt]'; +螟>'[kind of caterpillar]'; +螢>'[glow-worm]'; +螫>'[poison]'; +螯>'[nippers]'; +螳>'[mantis]'; +螺>'[spiral shell]'; +螻>'[gryllotalpa africana]'; +螽>'[katydid]'; +蟀>'[cricket]'; +蟄>'[to hibernate]'; +蟆>'[frog]'; +蟇>'[frog]'; +蟋>'[cricket]'; +#"蟋>'[cricket]'", +蟒>'[python]'; +蟠>'[coil]'; +蟯>'[worms]'; +蟲>'[worms]'; +蟶>'[razor clam]'; +蟷>'[mantis]'; +蟹>'[crab]'; +蟻>'[ants]'; +蟾>'[toad]'; +蠅>'[flies]'; +蠍>'[scorpion]'; +蠎>'[python]'; +蠏>'[crab]'; +蠑>'[lizard]'; +蠕>'[eumenes polifomis]'; +蠖>'[measuring worm]'; +蠡>'[wood-boring insect]'; +蠢>'[wriggle]'; +蠣>'[oyster]'; +蠧>'[moth]'; +蠱>'[posion]'; +蠶>'[silkworms]'; +蠹>'[moth]'; +蠻>'[barbarians]'; +血>'[blood]'; +衂>'[to be defeated]'; +衄>'[epistaxis]'; +衆>'[multitude]'; +行>'[go]'; +衍>'[overflow]'; +衒>'[brag]'; +術>'[art]'; +街>'[street]'; +衙>'[public office]'; +衛>'[guard]'; +衝>'[rush against]'; +衞>'[guard]'; +衡>'[measure]'; +衢>'[highway]'; +衣>'[clothes]'; +表>'[show]'; +衫>'[shirt]'; +衰>'[decline]'; +衲>'[mend]'; +衵>'[chemise]'; +衷>'[heart]'; +衽>'[lapel]'; +衾>'[coverlet]'; +衿>'[collar or lapel of garment]'; +袁>'[robe]'; +袂>'[sleeves]'; +袈>'[buddhist cassock]'; +袋>'[pocket]'; +袍>'[long gown]'; +袒>'[strip]'; +袖>'[sleeve]'; +袗>'[unlined garments]'; +#"袙>'[................................]'", +袞>'[ceremonial dress worn by emperor]'; +袢>'[robe]'; +袤>'[longitude]'; +被>'[passive indicator \"by\"]'; +#"袮>'[................................]'", +#"袰>'[................................]'", +袱>'[piece of cloth used wrap bundles]'; +袴>'[pants]'; +袵>'[lapel]'; +袷>'[lined garment]'; +袿>'[gown]'; +裁>'[cut out]'; +裂>'[split]'; +#"裂>'[split]'", +#"裂>'[split]'", +装>'[dress]'; +裏>'[inside]'; +裔>'[progeny]'; +裕>'[abundant]'; +裘>'[fur garments]'; +裙>'[skirt]'; +補>'[mend]'; +裝>'[dress]'; +裟>'[a cassock or robe of a monk]'; +裡>'[inside]'; +裨>'[aid]'; +裲>'[waistcoat]'; +裳>'[clothes]'; +裴>'[surname]'; +裸>'[bare]'; +裹>'[wrap]'; +裼>'[to take off one''s top]'; +製>'[make]'; +裾>'[lapel]'; +褂>'[jacket]'; +#"褃>'[a seam in a garment]'", +複>'[repeat]'; +褊>'[cramped]'; +褌>'[trousers]'; +褐>'[coarse woolen cloth]'; +褒>'[praise]'; +褓>'[swaddling cloth]'; +褝>'[unlined garment]'; +#"褞>'[................................]'", +褥>'[mattress]'; +褪>'[strip]'; +褫>'[strip]'; +褶>'[pleat]'; +褸>'[lapel]'; +褻>'[dirty]'; +襁>'[swaddling clothes]'; +襃>'[commend]'; +襄>'[aid]'; +襌>'[unlined garment]'; +襍>'[mixed]'; +襖>'[outer garments]'; +襞>'[fold]'; +襟>'[lapel]'; +襠>'[crotch or seat of pants]'; +襤>'[ragged]'; +襦>'[short coat]'; +襪>'[socks]'; +襭>'[tuck up hem of garment and wrap]'; +襯>'[underwear]'; +襲>'[raid]'; +襴>'[a one piece garment]'; +#"襶>'[ignorant]'", +襾>'[cover]'; +西>'[west(ern)]'; +要>'[necessary]'; +覃>'[reach to]'; +覆>'[cover]'; +覇>'[rule by might rather than right]'; +覈>'[investigate]'; +覊>'[halter]'; +見>'[see]'; +規>'[rules]'; +覓>'[seek]'; +視>'[look at]'; +覗>'[peek]'; +覘>'[peek]'; +覚>'[wake up from sleep]'; +覡>'[wizard]'; +覦>'[desire strongly]'; +覧>'[look at]'; +覩>'[see]'; +親>'[relatives]'; +覬>'[covet]'; +覯>'[meet or see unexpectedly]'; +覲>'[have imperial audience]'; +観>'[see]'; +覺>'[wake up from sleep]'; +覽>'[look at]'; +覿>'[see]'; +觀>'[see]'; +角>'[horn]'; +觚>'[jug]'; +觜>'[beak]'; +觝>'[gore]'; +解>'[loosen]'; +触>'[butt]'; +觧>'[loosen]'; +觴>'[wine vessel]'; +觸>'[touch]'; +言>'[words]'; +訂>'[draw up agreement]'; +訃>'[obituary]'; +計>'[plan]'; +訊>'[inquire]'; +訌>'[confusion]'; +討>'[ask for]'; +訐>'[expose other''s secrets]'; +訓>'[teach]'; +訖>'[finish]'; +託>'[entrust]'; +記>'[record]'; +訛>'[swindle]'; +訝>'[express surprise]'; +訟>'[accuse]'; +訣>'[take leave of]'; +訥>'[slow of speech]'; +訪>'[visit]'; +設>'[build]'; +許>'[allow]'; +訳>'[translate]'; +訴>'[accuse]'; +訶>'[scold loudly]'; +診>'[examine patient]'; +註>'[explain]'; +証>'[prove]'; +詁>'[exegesis]'; +詆>'[slander]'; +詈>'[scold]'; +詐>'[cheat]'; +詑>'[cheat]'; +詒>'[bequeath]'; +詔>'[decree]'; +評>'[appraise]'; +詛>'[curse]'; +詞>'[words]'; +詠>'[sing]'; +詢>'[inquire into]'; +詣>'[reach]'; +試>'[test]'; +詩>'[poetry]'; +詫>'[be surprised]'; +詬>'[abuse]'; +詭>'[deceive]'; +詮>'[explain]'; +詰>'[question]'; +話>'[speech]'; +該>'[should]'; +詳>'[detailed]'; +詼>'[tease]'; +誂>'[tempt]'; +誄>'[eulogize]'; +誅>'[execute]'; +誇>'[exaggerate]'; +誉>'[fame]'; +誌>'[write down]'; +認>'[recognize]'; +誑>'[deceive]'; +誓>'[swear]'; +誕>'[bear children]'; +誘>'[persuade]'; +誚>'[criticize]'; +語>'[language]'; +誠>'[sincere]'; +誡>'[warn]'; +誣>'[make false accusation]'; +誤>'[err]'; +誥>'[inform]'; +誦>'[recite]'; +誨>'[teach]'; +説>'[speak]'; +読>'[read]'; +誰>'[who? whom? whose? anyone?]'; +課>'[lesson]'; +誹>'[slander]'; +誼>'[friendship]'; +調>'[transfer]'; +諂>'[flatter]'; +諄>'[patient]'; +談>'[talk]'; +請>'[ask]'; +諌>'[remonstrate]'; +諍>'[to expostulate]'; +諏>'[consult]'; +諒>'[excuse]'; +論>'[debate]'; +諚>'[(kokuji) command]'; +諛>'[flatter]'; +諜>'[intelligence report]'; +諞>'[brag]'; +諠>'[noisy]'; +諡>'[posthumous name]'; +諢>'[jokes]'; +諤>'[honest speech]'; +諦>'[careful]'; +諧>'[harmonize]'; +諫>'[remonstrate]'; +諭>'[proclaim]'; +諮>'[consult]'; +諱>'[conceal]'; +諳>'[versed in]'; +諷>'[recite]'; +諸>'[several]'; +諺>'[proverb]'; +諾>'[promise]'; +謀>'[plan]'; +謁>'[visit]'; +謂>'[say]'; +謄>'[copy]'; +謇>'[stutter]'; +謌>'[slander]'; +謎>'[riddle]'; +謐>'[calm]'; +謔>'[jeer]'; +謖>'[rise up]'; +謗>'[slander]'; +謙>'[humble]'; +謚>'[to confer posthumous titles]'; +講>'[explain]'; +謝>'[thank]'; +謠>'[sing]'; +謡>'[sing]'; +謦>'[t speak softly]'; +謨>'[scheme]'; +謫>'[charge]'; +謬>'[error]'; +謳>'[sing]'; +謹>'[prudent]'; +謾>'[deceive]'; +譁>'[noise]'; +證>'[proof]'; +譌>'[false]'; +譎>'[cunning]'; +譏>'[ridicule]'; +譖>'[to slander]'; +識>'[recognize]'; +譚>'[surname]'; +譛>'[to slander]'; +譜>'[register]'; +譟>'[clamor]'; +警>'[guard]'; +譫>'[talkative]'; +譬>'[metaphor]'; +譯>'[translate]'; +議>'[consult]'; +#"譱>'[................................]'", +譲>'[allow]'; +譴>'[reprimand]'; +護>'[protect]'; +譽>'[fame]'; +讀>'[read]'; +讃>'[praise]'; +變>'[change]'; +讌>'[feast]'; +讎>'[enemy]'; +讐>'[enemy]'; +讒>'[slander]'; +讓>'[allow]'; +讖>'[prophecy]'; +讙>'[cheer]'; +讚>'[praise]'; +谷>'[valley]'; +谺>'[the mouth of a valley]'; +谿>'[valley]'; +豁>'[open up]'; +豆>'[beans]'; +豈>'[how? what?]'; +豊>'[abundant]'; +豌>'[peas]'; +豎>'[vertical]'; +豐>'[abundant]'; +豕>'[pigs]'; +豚>'[small pig]'; +象>'[elephant]'; +豢>'[domestic animals]'; +豪>'[brave]'; +豫>'[relaxed]'; +豬>'[pig]'; +豸>'[radical 153]'; +豹>'[leopard]'; +豺>'[wolf]'; +豼>'[fox]'; +貂>'[marten]'; +貅>'[brave]'; +貉>'[badger]'; +貊>'[leopard]'; +貌>'[countenance]'; +貍>'[a fox-like animal]'; +貎>'[lion]'; +貔>'[fox]'; +貘>'[the panther]'; +貝>'[sea shell]'; +貞>'[virtuous]'; +負>'[load]'; +財>'[wealth]'; +貢>'[offer tribute]'; +貧>'[poor]'; +貨>'[goods]'; +販>'[peddler]'; +貪>'[greedy]'; +貫>'[string of 1000 coins]'; +責>'[one''s responsibility]'; +貭>'[matter]'; +貮>'[number two]'; +貯>'[store]'; +貰>'[borrow]'; +貲>'[property]'; +貳>'[number two]'; +貴>'[expensive]'; +貶>'[decrease]'; +買>'[buy]'; +貸>'[lend]'; +費>'[expenses]'; +貼>'[paste to]'; +貽>'[give to]'; +貿>'[trade]'; +賀>'[congratulate]'; +賁>'[forge ahead]'; +賂>'[bribe]'; +賃>'[rent]'; +賄>'[bribe]'; +資>'[property]'; +賈>'[surname]'; +賊>'[thief]'; +賍>'[booty]'; +賎>'[mean]'; +賑>'[relieve]'; +賓>'[guest]'; +賚>'[give]'; +賛>'[help]'; +賜>'[give]'; +賞>'[reward]'; +賠>'[indemnify]'; +賢>'[virtuous]'; +賣>'[sell]'; +賤>'[mean]'; +賦>'[tax]'; +質>'[matter]'; +賭>'[bet]'; +賺>'[make money]'; +賻>'[gift of money help pay funeral]'; +購>'[buy]'; +賽>'[compete]'; +贄>'[gift superior]'; +贅>'[unnecessary]'; +贇>'[affable]'; +贈>'[give present]'; +贊>'[help]'; +贋>'[false]'; +贍>'[support]'; +贏>'[win]'; +贐>'[farewell present]'; +贓>'[booty]'; +贔>'[strong]'; +贖>'[buy]'; +赤>'[red]'; +赦>'[forgive]'; +赧>'[blush]'; +赫>'[bright]'; +赭>'[reddish brown]'; +走>'[walk]'; +赱>'[walk]'; +赳>'[grand]'; +赴>'[go to]'; +起>'[rise]'; +趁>'[take advantage of]'; +超>'[jump over]'; +越>'[exceed]'; +趙>'[surname]'; +趣>'[what attracts one''s attention]'; +趨>'[hasten]'; +足>'[foot]'; +趺>'[sit cross-legged]'; +趾>'[toe]'; +跂>'[creeping]'; +跋>'[go by foot]'; +跌>'[stumble]'; +跏>'[sit cross-legged]'; +跖>'[sole (of the foot)]'; +跚>'[stagger]'; +跛>'[lame]'; +距>'[distance]'; +跟>'[heel]'; +跡>'[search]'; +跣>'[bare footed]'; +跨>'[straddle]'; +跪>'[kneel]'; +跫>'[sound of footsteps]'; +路>'[road]'; +跳>'[jump]'; +践>'[trample]'; +跼>'[bent]'; +#"跿>'[................................]'", +踈>'[neglect]'; +踉>'[hop]'; +踊>'[leap]'; +踏>'[step on]'; +踐>'[trample]'; +踝>'[ankle]'; +踞>'[crouch]'; +踟>'[hesitate]'; +踪>'[footprints]'; +踰>'[exceed]'; +踴>'[leap]'; +踵>'[heel]'; +蹂>'[trample under foot]'; +蹄>'[hoof]'; +蹇>'[lame]'; +蹈>'[stamp feet]'; +蹉>'[error]'; +蹊>'[footpath]'; +蹌>'[walk rapidly]'; +蹐>'[take short steps]'; +蹕>'[clear way]'; +蹙>'[urgent]'; +蹟>'[trace]'; +蹠>'[step on]'; +蹣>'[to jump over]'; +蹤>'[footprints]'; +蹲>'[squat]'; +蹴>'[kick]'; +蹶>'[stumble]'; +蹼>'[webbed feet of waterfowl]'; +躁>'[tense]'; +躄>'[cripple]'; +躅>'[walk carefully]'; +躇>'[hesitate]'; +躊>'[hesitate]'; +躋>'[ascend]'; +躍>'[skip]'; +躑>'[waver]'; +躓>'[stumble]'; +躔>'[follow in]'; +躙>'[trample down]'; +躡>'[tread]'; +躪>'[trample down]'; +身>'[body]'; +躬>'[body]'; +躯>'[body]'; +躰>'[body]'; +躱>'[hide]'; +#"躺>'[lie down]'", +#"軄>'[to govern]'", +軆>'[body]'; +#"軆>'[body]'", +車>'[cart]'; +軋>'[crush by weight]'; +軌>'[track]'; +軍>'[army]'; +軒>'[carriage]'; +軛>'[yoke]'; +軟>'[soft]'; +転>'[shift]'; +軣>'[rumble]'; +軫>'[cross board at rear of carriage]'; +軸>'[axle]'; +軻>'[axle]'; +軼>'[rush forth]'; +軽>'[light]'; +軾>'[horizontal wooden bar in front of a sedan chair]'; +較>'[compare]'; +輅>'[chariot]'; +載>'[load]'; +輊>'[low rear portion of cart]'; +輌>'[numerary adjunct for vehicles]'; +輒>'[sides of chariot where weapons]'; +輓>'[mourn]'; +輔>'[cheek bone]'; +輕>'[light]'; +輙>'[sides of chariot were weapons]'; +輛>'[numerary adjunct for vehicles]'; +輜>'[supply cart]'; +輝>'[brightness]'; +輟>'[stop]'; +輦>'[hand-cart]'; +輩>'[generation]'; +輪>'[wheel]'; +輯>'[gather up]'; +輳>'[hubs of wheel]'; +輸>'[transport]'; +輹>'[two pieces of wood underneath ca]'; +輻>'[spokes of wheel]'; +輾>'[turn over]'; +輿>'[cart]'; +轂>'[hub of wheel]'; +轄>'[linchpin of wheel]'; +轅>'[axle]'; +轆>'[windlass]'; +轉>'[shift]'; +轌>'[sled]'; +轍>'[wagon ruts]'; +轎>'[sedan-chair]'; +轗>'[fail]'; +轜>'[hearse]'; +轟>'[rumble]'; +轡>'[bridle of horse]'; +轢>'[run over something with vehicle]'; +#"轣>'[................................]'", +轤>'[pulley]'; +辛>'[bitter]'; +辜>'[crime]'; +辞>'[words]'; +辟>'[law]'; +辣>'[peppery]'; +辧>'[manage]'; +辨>'[distinguish]'; +辭>'[words]'; +辮>'[braid]'; +辯>'[dispute]'; +辰>'[early morning]'; +辱>'[humiliate]'; +農>'[agriculture]'; +辷>'[smooth]'; +辺>'[edge]'; +辻>'[crossroads]'; +込>'[crowd into]'; +辿>'[follow]'; +迂>'[doctrinaire]'; +迄>'[extend]'; +迅>'[quick]'; +迎>'[receive]'; +近>'[near]'; +返>'[return]'; +迚>'[very]'; +迢>'[far]'; +迥>'[distant]'; +迦>'[character for transliteration]'; +迩>'[be near]'; +迪>'[enlighten]'; +迫>'[coerce]'; +迭>'[repeatedly]'; +迯>'[escape]'; +述>'[narrate]'; +迴>'[revolve]'; +迷>'[bewitch]'; +迸>'[gush out]'; +迹>'[traces]'; +迺>'[then]'; +追>'[pursue]'; +退>'[step back]'; +送>'[see off]'; +逃>'[escape]'; +逅>'[meet unexpectedly]'; +逆>'[disobey]'; +逋>'[flee]'; +逍>'[ramble]'; +逎>'[strong]'; +透>'[penetrate]'; +逐>'[chase]'; +逑>'[collect]'; +逓>'[hand over]'; +途>'[way]'; +逕>'[pass by]'; +逖>'[far]'; +逗>'[tempt]'; +這>'[this]'; +通>'[pass through]'; +逝>'[pass away]'; +逞>'[indulge oneself]'; +速>'[quick]'; +造>'[construct]'; +逡>'[retreat]'; +逢>'[come upon]'; +連>'[join]'; +#"逦>'[meandering]'", +逮>'[seize]'; +週>'[week]'; +進>'[advance]'; +逵>'[thoroughfare]'; +逶>'[winding]'; +逸>'[flee]'; +逹>'[arrive at]'; +逼>'[compel]'; +逾>'[go over]'; +遁>'[hide]'; +遂>'[comply with]'; +遅>'[late]'; +遇>'[meet]'; +遉>'[spy]'; +遊>'[wander]'; +運>'[luck]'; +遍>'[everywhere]'; +過>'[pass]'; +遏>'[stop]'; +遐>'[afar]'; +遑>'[leisure]'; +遒>'[strong]'; +道>'[path]'; +達>'[arrive at]'; +違>'[disobey]'; +#"違>'[disobey]'", +遘>'[to meet]'; +遙>'[far away]'; +遜>'[humble]'; +遞>'[hand over]'; +遠>'[distant]'; +遡>'[go upstream]'; +遣>'[send]'; +遥>'[far away]'; +遨>'[ramble]'; +適>'[match]'; +遭>'[come across]'; +遮>'[cover]'; +遯>'[deceive]'; +遲>'[late]'; +遵>'[obey]'; +遶>'[entwine]'; +遷>'[move]'; +選>'[choose]'; +遺>'[lose]'; +遼>'[distant]'; +遽>'[suddenly]'; +避>'[avoid]'; +邀>'[invite]'; +邁>'[take a big stride]'; +邂>'[unexpected meeting]'; +邃>'[profound]'; +還>'[still]'; +邇>'[be near]'; +邉>'[edge]'; +邊>'[edge]'; +邏>'[patrol]'; +邑>'[area]'; +那>'[that]'; +邦>'[nation]'; +邨>'[village]'; +邪>'[wrong]'; +邯>'[city in hebei province]'; +邱>'[surname]'; +邵>'[surname]'; +邸>'[official residence]'; +郁>'[sweet smelling]'; +郊>'[suburbs]'; +郎>'[gentleman]'; +郛>'[outer walls of city]'; +郡>'[administrative division]'; +郢>'[state in today''s hubei province]'; +郤>'[crack]'; +部>'[part]'; +郭>'[outer part (of a city)]'; +郵>'[postal]'; +郷>'[country]'; +都>'[metropolis]'; +鄂>'[hubei province]'; +鄒>'[name of an ancient state]'; +鄙>'[mean]'; +鄭>'[state in today''s henan]'; +鄰>'[neighbor]'; +鄲>'[county in hebei proincev]'; +酉>'[tenth in series of twelve cyclic]'; +酊>'[drunk]'; +酋>'[chief of tribe]'; +酌>'[serve wine]'; +配>'[match]'; +酎>'[double-fermented wine]'; +酒>'[wine]'; +酔>'[intoxicated]'; +酖>'[wine with bird poison added]'; +#"酘>'[................................]'", +酢>'[toast one''s host with wine]'; +酣>'[enjoy intoxicants]'; +酥>'[butter]'; +酩>'[drunk]'; +酪>'[cream]'; +酬>'[toast]'; +酲>'[hangover]'; +#"酲>'[hangover]'", +酵>'[yeast]'; +酷>'[strong]'; +酸>'[tart]'; +#"醁>'[a kind of green-colored wine]'", +醇>'[rich]'; +醉>'[intoxicated]'; +醋>'[vinegar]'; +醍>'[essential oil of butter]'; +醐>'[purest cream]'; +醒>'[wake up]'; +醗>'[to brew for the second time]'; +醜>'[ugly looking]'; +醢>'[minced pickled meat]'; +醤>'[any jam-like or paste-like food]'; +醪>'[unclear wine]'; +醫>'[cure]'; +醯>'[vinegar]'; +醴>'[sweet wine]'; +醵>'[contribute for drinks]'; +醸>'[brew]'; +醺>'[get drunk]'; +釀>'[brew]'; +釁>'[smear with blood in sacrifice]'; +釆>'[distinguish]'; +采>'[collect]'; +釈>'[interprete]'; +釉>'[glaze]'; +釋>'[interprete]'; +里>'[unit of distance]'; +重>'[heavy]'; +野>'[open country]'; +量>'[measure]'; +釐>'[manage]'; +金>'[gold]'; +釖>'[knife]'; +釘>'[nail]'; +#"釛>'[................................]'", +釜>'[cauldron]'; +針>'[needle]'; +#"釟>'[................................]'", +釡>'[cauldron]'; +釣>'[fish]'; +釦>'[button]'; +釧>'[bracelet]'; +釵>'[ornamental hairpin]'; +#"釶>'[................................]'", +釼>'[sword]'; +#"釿>'[................................]'", +鈍>'[blunt]'; +鈎>'[hook]'; +鈑>'[plate]'; +鈔>'[paper money]'; +鈕>'[button]'; +鈞>'[unit of measure equivalent thirt]'; +鈩>'[fireplace]'; +鈬>'[bell]'; +鈴>'[bell]'; +鈷>'[cobalt]'; +鈿>'[hairpin]'; +鉄>'[iron]'; +鉅>'[steel]'; +鉈>'[thallium]'; +鉉>'[device for carrying a tripod]'; +鉋>'[carpenter''s plane]'; +#"鉐>'[................................]'", +鉗>'[pincers]'; +鉚>'[rivet]'; +鉛>'[lead plumbum]'; +鉞>'[broad-axe]'; +鉢>'[earthenware basin]'; +鉤>'[hook]'; +鉦>'[kind of gong used in ancient tim]'; +鉱>'[mine]'; +鉾>'[spear]'; +銀>'[silver]'; +銃>'[ancient weapon]'; +銅>'[copper]'; +銑>'[mill]'; +銓>'[weigh]'; +銕>'[iron]'; +銖>'[unit of weight]'; +銘>'[inscribe]'; +銚>'[large hoe]'; +銛>'[sharp]'; +銜>'[bit]'; +銭>'[money]'; +銷>'[melt]'; +銹>'[rust]'; +鋏>'[tongs]'; +鋒>'[point of spear]'; +鋤>'[hoe]'; +鋩>'[point of sword]'; +鋪>'[spread out]'; +鋭>'[sharp]'; +鋲>'[rivet]'; +鋳>'[melt]'; +鋸>'[a saw]'; +#"鋺>'[................................]'", +鋼>'[steel]'; +錆>'[the color of a mineral]'; +錏>'[soft steel]'; +錐>'[gimlet]'; +錘>'[balance weight on scale]'; +錙>'[8 oz]'; +錚>'[clanging sound]'; +錠>'[spindle]'; +錢>'[money]'; +#"錣>'[................................]'", +錦>'[brocade]'; +錨>'[anchor]'; +錫>'[tin]'; +錬>'[smelt metals]'; +錮>'[run metal into cracks]'; +錯>'[error]'; +録>'[copy]'; +#"錵>'[................................]'", +#"錺>'[................................]'", +#"錻>'[................................]'", +#"鍄>'[................................]'", +鍋>'[cooking-pot]'; +鍍>'[plate]'; +鍔>'[high]'; +#"鍖>'[................................]'", +鍛>'[forge metal]'; +#"鍜>'[................................]'", +鍠>'[weapon]'; +鍬>'[shovel]'; +鍮>'[brass]'; +鍵>'[door bolt]'; +鍼>'[needle]'; +鍾>'[cup]'; +鎌>'[sickle]'; +鎔>'[fuse]'; +鎖>'[lock]'; +鎗>'[rifle]'; +鎚>'[hammer]'; +鎧>'[armor]'; +鎬>'[stove]'; +鎭>'[town]'; +鎮>'[town]'; +鎰>'[measure of weight for gold]'; +#"鎹>'[................................]'", +鏃>'[arrowhead]'; +鏈>'[chain]'; +鏐>'[pure gold]'; +鏑>'[dysprosium the barb of an arrow]'; +鏖>'[fight end]'; +鏗>'[strike]'; +鏘>'[tinkle]'; +鏝>'[trowel]'; +鏡>'[mirror]'; +鏤>'[carve]'; +鏥>'[rust]'; +鏨>'[engraving tool]'; +鐃>'[cymbals]'; +鐇>'[vanadium]'; +鐐>'[fetters]'; +鐓>'[ferrule]'; +鐔>'[dagger]'; +鐘>'[clock]'; +鐙>'[lamp]'; +鐚>'[soft steel]'; +鐡>'[iron]'; +鐫>'[engraving tool]'; +鐵>'[iron]'; +鐶>'[metal ring]'; +鐸>'[bell]'; +鐺>'[frying pan]'; +#"鑁>'[................................]'", +鑄>'[melt]'; +鑑>'[mirror]'; +鑒>'[mirror]'; +鑓>'[spear]'; +鑚>'[drill]'; +鑛>'[mine]'; +鑞>'[solder]'; +鑠>'[melt]'; +鑢>'[file]'; +鑪>'[fireplace]'; +鑰>'[key]'; +鑵>'[jar]'; +鑷>'[tweezers]'; +鑼>'[gong]'; +鑽>'[drill]'; +鑾>'[bells hung on horse]'; +鑿>'[chisel]'; +钁>'[a mattock]'; +長>'[long]'; +門>'[gate]'; +閂>'[bolt]'; +閃>'[flash]'; +閇>'[shut]'; +閉>'[shut]'; +#"閉>'[shut]'", +開>'[open]'; +閏>'[intercalary]'; +閑>'[fence]'; +間>'[interval]'; +閔>'[mourn]'; +#"閔>'[mourn]'", +閘>'[sluice]'; +閙>'[quarrel]'; +閠>'[intercalary]'; +関>'[frontier pass]'; +閣>'[chamber]'; +閤>'[small side door]'; +閥>'[powerful and influential group]'; +閧>'[boisterous]'; +閨>'[small entrance]'; +閭>'[village of twenty-five families]'; +閲>'[examine]'; +閹>'[castrate]'; +閻>'[village gate]'; +閼>'[block]'; +閾>'[threshold]'; +闃>'[alone]'; +闇>'[close]'; +闊>'[broad]'; +闌>'[door screen]'; +闍>'[tower over city gate]'; +闔>'[close]'; +闕>'[watch tower]'; +闖>'[rush in]'; +闘>'[struggle]'; +關>'[frontier pass]'; +闡>'[explain]'; +闢>'[open]'; +闥>'[door]'; +阜>'[mound]'; +阡>'[footpaths between fields]'; +阨>'[in distress]'; +阪>'[hillside farmland]'; +阮>'[ancient musical instrument: surname]'; +阯>'[foundation]'; +防>'[defend]'; +阻>'[impede]'; +阿>'[prefix to name]'; +陀>'[steep bank]'; +陂>'[dam]'; +附>'[adhere to]'; +陋>'[narrow]'; +陌>'[foot path between rice fields]'; +降>'[descend]'; +#"降>'[descend]'", +限>'[boundary]'; +陛>'[steps leading throne]'; +陜>'[narrow]'; +陝>'[mountain pass]'; +陞>'[promote]'; +陟>'[climb]'; +院>'[courtyard]'; +陣>'[column]'; +除>'[eliminate]'; +陥>'[submerge]'; +#"陥>'[submerge]'", +陪>'[accompany]'; +陬>'[corner]'; +陰>'[\"female\" principle]'; +陲>'[frontier]'; +陳>'[exhibit]'; +陵>'[hill]'; +陶>'[pottery]'; +陷>'[submerge]'; +陸>'[land]'; +険>'[narrow pass]'; +陽>'[\"male\" principle]'; +隅>'[corner]'; +隆>'[prosperous]'; +隈>'[cove]'; +隊>'[team]'; +隋>'[Sui dynasty]'; +隍>'[dry ditch]'; +階>'[stairs]'; +随>'[follow]'; +隔>'[separate]'; +隕>'[fall]'; +隗>'[high]'; +隘>'[narrow]'; +隙>'[crack]'; +際>'[border]'; +障>'[separate]'; +#"障>'[separate]'", +隣>'[neighbor]'; +隧>'[tunnel]'; +隨>'[follow]'; +險>'[narrow pass]'; +隰>'[low]'; +隱>'[hide]'; +隲>'[stallion]'; +隴>'[mountain located between shaanxi]'; +隶>'[subservient]'; +隷>'[be subservient to]'; +隸>'[be subservient to]'; +隹>'[bird]'; +隻>'[single]'; +隼>'[aquiline (nose)]'; +雀>'[sparrow]'; +雁>'[wild goose]'; +雄>'[male of species]'; +雅>'[elegant]'; +集>'[assemble]'; +雇>'[employ]'; +雉>'[pheasant]'; +雋>'[superior]'; +雌>'[female]'; +雍>'[harmony]'; +雎>'[osprey]'; +雑>'[mixed]'; +雕>'[engrave]'; +雖>'[although]'; +雙>'[set of two]'; +雛>'[chick]'; +雜>'[mixed]'; +離>'[leave]'; +難>'[difficult]'; +雨>'[rain]'; +雪>'[snow]'; +#"雫>'[................................]'", +雰>'[atmosphere]'; +雲>'[clouds]'; +零>'[zero]'; +雷>'[thunder]'; +雹>'[hail]'; +電>'[electricity]'; +需>'[need]'; +霄>'[sky]'; +霆>'[a sudden peal of thunder]'; +震>'[shake]'; +霈>'[torrential rains]'; +霊>'[spirit]'; +霍>'[quickly]'; +霎>'[light rain]'; +霏>'[falling of snow and rain]'; +霑>'[be moistened]'; +霓>'[rainbow]'; +霖>'[long spell of rain]'; +霙>'[sleet]'; +霜>'[frost]'; +霞>'[rosy clouds]'; +霤>'[drip]'; +霧>'[fog]'; +霪>'[long and heavy rain]'; +霰>'[hail]'; +露>'[dew]'; +霸>'[rule by might rather than right]'; +霹>'[thunder]'; +霽>'[clear up after rain cease be ang]'; +霾>'[misty]'; +靂>'[thunderclap]'; +靄>'[cloudy sky]'; +靆>'[cloudy sky]'; +靈>'[spirit]'; +靉>'[cloudy sky]'; +青>'[blue]'; +靖>'[pacify]'; +静>'[quiet]'; +靜>'[quiet]'; +非>'[not]'; +靠>'[lean on]'; +靡>'[divide]'; +面>'[face]'; +#"靤>'[................................]'", +靦>'[timid]'; +靨>'[dimples]'; +革>'[leather]'; +靫>'[strong and pliable]'; +靭>'[strong and pliable]'; +靱>'[strong and pliable]'; +靴>'[boots]'; +#"靹>'[................................]'", +靺>'[stocking]'; +靼>'[tartars]'; +#"鞁>'[................................]'", +鞄>'[to work hides]'; +鞅>'[leather strap over horse''s neck]'; +#"鞅>'[leather strap over horse''s neck]'", +鞋>'[shoes]'; +鞍>'[saddle]'; +鞏>'[bind]'; +#"鞏>'[bind]'", +鞘>'[scabbard]'; +#"鞜>'[................................]'", +鞠>'[bow]'; +鞣>'[tan]'; +鞦>'[leather stap]'; +鞨>'[tribe]'; +鞫>'[interrogate]'; +鞭>'[whip]'; +#"鞳>'[................................]'", +鞴>'[saddle up horse]'; +韃>'[tatars]'; +韆>'[swing]'; +韈>'[socks]'; +韋>'[tanned leather]'; +韓>'[fence]'; +韜>'[sheath]'; +韭>'[scallion]'; +韮>'[scallion]'; +韲>'[break or smash into pieces]'; +音>'[sound]'; +韵>'[rhyme]'; +韶>'[music of emperor Shun]'; +韻>'[rhyme]'; +響>'[make sound]'; +頁>'[page]'; +頂>'[top]'; +頃>'[moment]'; +項>'[neck]'; +順>'[obey]'; +須>'[must]'; +頌>'[laud]'; +頏>'[fly down or downward]'; +預>'[prepare]'; +頑>'[obstinate]'; +頒>'[confer]'; +頓>'[pause]'; +頗>'[lean one side]'; +領>'[neck]'; +頚>'[neck]'; +頡>'[fly upward]'; +頤>'[cheeks]'; +頬>'[cheeks]'; +頭>'[head]'; +頴>'[rice tassel]'; +頷>'[chin]'; +頸>'[neck]'; +頻>'[frequently]'; +頼>'[rely]'; +頽>'[ruined]'; +顆>'[grain]'; +顋>'[lower part of face]'; +題>'[forehead]'; +額>'[forehead]'; +顎>'[jaw]'; +顏>'[face]'; +顔>'[face]'; +顕>'[manifest]'; +願>'[desire]'; +顛>'[top]'; +類>'[class]'; +顧>'[look back]'; +顫>'[shiver]'; +顯>'[manifest]'; +顰>'[frown]'; +顱>'[skull]'; +顳>'[the temporal bone]'; +顴>'[cheek bones]'; +風>'[wind]'; +#"風>'[wind]'", +颯>'[sound of wind]'; +颱>'[taiphoon]'; +颶>'[cyclone]'; +飃>'[whirlwind]'; +飄>'[whirlwind]'; +飆>'[whirlwind]'; +飛>'[fly]'; +飜>'[flip over]'; +食>'[eat]'; +飢>'[hunger]'; +飩>'[stuffed dumplings]'; +飫>'[surfeited]'; +飭>'[order]'; +飮>'[drink]'; +飯>'[cooked rice]'; +飲>'[drink]'; +飴>'[sweet-meats]'; +飼>'[raise animals]'; +飽>'[eat heartily]'; +飾>'[decorate]'; +餃>'[stuffed dumplings]'; +餅>'[rice-cakes]'; +餉>'[rations and pay for soldiers]'; +養>'[raise]'; +餌>'[bait]'; +餐>'[eat]'; +餒>'[hungry]'; +餓>'[be hungry]'; +餔>'[eat]'; +餘>'[surplus]'; +#"餝>'[................................]'", +餞>'[farewell party]'; +餠>'[rice-cakes]'; +餡>'[pastry filling]'; +餤>'[incite]'; +館>'[public building]'; +餬>'[porridge]'; +餮>'[a legendary animal]'; +餽>'[make present of food]'; +餾>'[distill]'; +#"饁>'[carry meal to workers in field]'", +饅>'[steamed bread]'; +饉>'[time of famine or crop failure]'; +饋>'[offer food superior]'; +饌>'[feed]'; +饐>'[spoiled]'; +饑>'[starve]'; +饒>'[bountiful]'; +饕>'[gluttonous]'; +饗>'[host banquet]'; +首>'[head]'; +馗>'[cheekbone]'; +馘>'[cut off left ear]'; +香>'[fragrant]'; +馥>'[fragrance]'; +馨>'[fragrant]'; +馬>'[horse]'; +馭>'[drive]'; +馮>'[surname]'; +馳>'[go quickly or swiftly]'; +馴>'[tame]'; +#"馼>'[................................]'", +駁>'[varicolored]'; +#"駃>'[gallop]'", +駅>'[relay station]'; +駆>'[spur horse on]'; +駈>'[spur horse on]'; +駐>'[to be stationed at]'; +駑>'[tired]'; +駒>'[colt]'; +駕>'[drive]'; +駘>'[tired]'; +駛>'[sail]'; +駝>'[camel]'; +駟>'[team of four horses]'; +駢>'[team of horses]'; +駭>'[terrify]'; +駮>'[a kind of fierce animal]'; +駱>'[white horse w. black mane]'; +#"駱>'[white horse w. black mane]'", +駸>'[galloping]'; +#"駻>'[................................]'", +駿>'[excellent horse]'; +騁>'[gallop horse]'; +騅>'[piebald horse]'; +騎>'[ride horseback]'; +騏>'[piebald horse]'; +騒>'[harass]'; +験>'[test]'; +騙>'[swindle]'; +騨>'[dappled]'; +騫>'[raise]'; +騰>'[fly]'; +騷>'[harass]'; +騾>'[mule]'; +驀>'[suddenly]'; +驂>'[two outside ones in three horse]'; +驃>'[charger]'; +驅>'[spur horse on]'; +驍>'[excellent horse]'; +驕>'[spirited horse]'; +驗>'[test]'; +驚>'[frighten]'; +驛>'[relay station]'; +驟>'[procedure]'; +驢>'[donkey]'; +驤>'[gallop about with head uplifted]'; +驥>'[thoroughbred horse]'; +驩>'[happy]'; +驪>'[pure black horse]'; +驫>'[horses]'; +骨>'[bone]'; +骭>'[shin bone]'; +骰>'[die]'; +骸>'[skelton]'; +骼>'[bone]'; +髀>'[buttocks]'; +髄>'[bone marrow]'; +髏>'[skull]'; +髑>'[skull]'; +髓>'[bone marrow]'; +體>'[body]'; +高>'[high]'; +髞>'[high]'; +髟>'[hair]'; +髢>'[wig]'; +髣>'[similar to]'; +髦>'[flowing hair of young child]'; +髪>'[hair]'; +髫>'[children''s hair style]'; +髭>'[mustache]'; +髮>'[hair]'; +髯>'[beard]'; +#"髱>'[................................]'", +髴>'[disheveled hair]'; +#"髷>'[................................]'", +髻>'[hair rolled up in a bun]'; +鬆>'[lax]'; +鬘>'[beautiful hair]'; +鬚>'[beard]'; +鬟>'[dress hair in coiled knot]'; +鬢>'[hair on temples]'; +鬣>'[horse''s mane]'; +鬥>'[struggle]'; +鬧>'[quarrel]'; +鬨>'[boisterous]'; +鬩>'[feud]'; +鬪>'[struggle]'; +鬮>'[lots (to be drawn)]'; +鬯>'[sacrificial wine]'; +鬱>'[luxuriant]'; +鬲>'[type of caldron]'; +鬻>'[sell]'; +鬼>'[ghost]'; +魁>'[chief]'; +魂>'[soul]'; +魃>'[drought demon]'; +魄>'[vigor]'; +魅>'[kind of forest demon]'; +魍>'[demons]'; +魎>'[a kind of monster]'; +魏>'[kingdom of wei]'; +魑>'[a montain demon resembling tiger]'; +魔>'[demon]'; +魘>'[nightmare]'; +魚>'[fish]'; +魯>'[foolish]'; +魴>'[bream]'; +#"鮁>'[the bonito]'", +鮎>'[sheatfish]'; +鮑>'[abalone]'; +鮒>'[carp]'; +鮓>'[minced and salted fish]'; +#"鮓>'[minced and salted fish]'", +#"鮓>'[minced and salted fish]'", +鮟>'[anglerfish]'; +鮠>'[a kind of shad with a head like a sturgeon]'; +#"鮨>'[................................]'", +鮪>'[kind of sturgeon]'; +鮫>'[shark]'; +鮭>'[salmon]'; +鮮>'[fresh]'; +#"鮴>'[................................]'", +#"鮹>'[................................]'", +鯀>'[giant fish]'; +鯆>'[the skate or ray]'; +鯉>'[carp]'; +鯊>'[shark]'; +鯏>'[a dialect........ name of fish]'; +#"鯑>'[................................]'", +#"鯒>'[................................]'", +鯔>'[mullet]'; +鯖>'[mackerel]'; +鯛>'[pagrosomus major]'; +鯡>'[herring]'; +鯢>'[cryptobranchus japonicus]'; +#"鯣>'[................................]'", +鯤>'[spawn]'; +鯨>'[whale]'; +鯰>'[sheat]'; +#"鯱>'[................................]'", +#"鯱>'[................................]'", +#"鯱>'[................................]'", +#"鰄>'[................................]'", +#"鰆>'[................................]'", +鰈>'[flatfish]'; +鰉>'[sturgeon]'; +#"鰊>'[................................]'", +鰌>'[loach]'; +鰍>'[loach]'; +鰐>'[alligator]'; +鰒>'[abalone]'; +鰓>'[fish gills]'; +#"鰔>'[................................]'", +鰕>'[shrimp]'; +鰛>'[sardine]'; +#"鰡>'[................................]'", +#"鰤>'[................................]'", +鰥>'[huge fish]'; +鰭>'[fin]'; +鰮>'[sardine]'; +#"鰯>'[................................]'", +#"鰯>'[................................]'", +鰲>'[huge sea turtle]'; +鰹>'[skipjack]'; +#"鰺>'[................................]'", +鰻>'[eel]'; +鰾>'[swimming bladder of fish]'; +#"鱆>'[................................]'", +鱇>'[anglerfish]'; +鱈>'[codfish]'; +鱒>'[barbel]'; +鱗>'[fish scales]'; +#"鱘>'[sturgeon]'", +鱠>'[minced fish]'; +鱧>'[snakehead]'; +#"鱶>'[................................]'", +鱸>'[sea perch]'; +鳥>'[bird]'; +鳧>'[wild duck]'; +鳩>'[pigeon]'; +鳫>'[wild goose]'; +鳬>'[wild duck]'; +#"鳰>'[................................]'", +鳳>'[male phoenix]'; +鳴>'[cry of bird or animal]'; +鳶>'[kite]'; +鴃>'[shrike]'; +鴆>'[bird resembling secretary falcon]'; +鴇>'[bustard]'; +鴈>'[wild goose]'; +鴉>'[crow]'; +鴎>'[seagull]'; +鴒>'[species of lark]'; +鴕>'[ostrich]'; +鴛>'[male mandarin duck]'; +鴟>'[kite]'; +鴣>'[species of taiwan pigeon]'; +鴦>'[female mandarin duck]'; +鴨>'[duck]'; +鴪>'[swoop]'; +鴫>'[a snipe]'; +鴬>'[oriole]'; +鴻>'[species of wild swan]'; +#"鴾>'[................................]'", +鴿>'[pigeon]'; +#"鵁>'[................................]'", +鵄>'[kite]'; +#"鵄>'[kite]'", +#"鵄>'[kite]'", +#"鵐>'[................................]'", +鵑>'[cuckoo]'; +鵙>'[a shrike]'; +鵜>'[pelican]'; +鵝>'[goose]'; +鵞>'[goose]'; +鵠>'[target]'; +鵡>'[species of parrot]'; +#"鵡>'[species of parrot]'", +鵬>'[fabulous bird of enormous size]'; +鵯>'[bird]'; +鵲>'[magpie]'; +#"鵺>'[................................]'", +鶇>'[thrush]'; +鶉>'[quail]'; +鶏>'[chicken]'; +鶚>'[osprey]'; +#"鶤>'[................................]'", +鶩>'[duck]'; +鶫>'[thrush]'; +鶯>'[oriole]'; +#"鶱>'[soar]'", +鶴>'[crane]'; +鶸>'[[not found in any dictionary]]'; +鶺>'[wagtail]'; +鶻>'[a kind of pigeon]'; +鷁>'[fishhawk bow or prow]'; +鷂>'[sparrow hawk]'; +鷄>'[chicken]'; +鷆>'[bird name]'; +鷏>'[bird name]'; +鷓>'[partridge]'; +鷙>'[hawk]'; +鷦>'[wren]'; +#"鷫>'[turquoise kingfisher]'", +鷯>'[wren]'; +鷲>'[condor]'; +鷸>'[snipe]'; +鷹>'[eagle]'; +鷺>'[heron]'; +鷽>'[oriental bullfinch]'; +鸚>'[species of parrot]'; +鸛>'[crane]'; +鸞>'[fabulous bird]'; +鹵>'[saline soil]'; +鹸>'[alkaline]'; +鹹>'[salty]'; +鹽>'[salt]'; +鹿>'[deer]'; +麁>'[rough]'; +麈>'[species of deer]'; +麋>'[elk]'; +麌>'[stag]'; +麑>'[fawn]'; +麒>'[legendary auspicious animal]'; +麓>'[foot of hill]'; +麕>'[muntjac deer]'; +麗>'[beautiful]'; +麝>'[musk deer]'; +麟>'[female of chinese unicorn]'; +麥>'[wheat]'; +麦>'[wheat]'; +麩>'[bran]'; +麪>'[flour]'; +#"麫>'[flour]'", +麸>'[bran]'; +麹>'[yeast]'; +麺>'[flour]'; +麻>'[hemp]'; +麼>'[interrogative final particle]'; +麾>'[pennant]'; +麿>'[I]'; +黄>'[yellow]'; +黌>'[school]'; +黍>'[glutinous millet]'; +黎>'[surname]'; +黏>'[stick to]'; +黐>'[stick]'; +黒>'[black]'; +黔>'[black]'; +默>'[silent]'; +黙>'[silent]'; +黛>'[blacken eyebrows]'; +黜>'[dismiss]'; +黝>'[black]'; +點>'[dot]'; +黠>'[sly]'; +黥>'[tattooing face]'; +黨>'[political party]'; +黯>'[dark]'; +黴>'[mold]'; +黶>'[mole]'; +黷>'[dishonor]'; +黹>'[embroidery]'; +黻>'[special pattern of embroidery]'; +黼>'[embroidered official or sacrific]'; +黽>'[to strive]'; +鼇>'[huge sea turtle]'; +鼈>'[fresh water turtle]'; +鼎>'[large]'; +鼓>'[drum]'; +鼕>'[rattle of drums]'; +鼠>'[rat]'; +鼡>'[rat]'; +鼬>'[weasel]'; +鼻>'[nose]'; +鼾>'[snore loudly]'; +齊>'[even]'; +齋>'[vegetarian diet]'; +齎>'[take in both hands and offer to]'; +齏>'[break or smash into pieces]'; +齒>'[teeth]'; +齔>'[lose baby teeth and get adult te]'; +齟>'[irregular teeth]'; +齠>'[lose baby teeth and get adult teeth]'; +齡>'[age]'; +齢>'[age]'; +齣>'[act]'; +齦>'[gums]'; +齧>'[bite]'; +齪>'[narrow]'; +齬>'[uneven teeth]'; +齲>'[tooth decay]'; +齶>'[palate]'; +齷>'[narrow]'; +龍>'[dragon]'; +龕>'[niche]'; +龜>'[turtle or tortoise]'; +龝>'[autumn]'; +龠>'[flute]'; + +# eof diff --git a/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt new file mode 100644 index 00000000000..7435913f8ff --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt @@ -0,0 +1,6216 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2001, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +# Date: Tue Jan 23 12:42:03 2001 +#-------------------------------------------------------------------- + +# Kanji-OnRomaji + +丁>Tei; +七>Shichi; +万>Man; +丈>Jou; +三>San; +上>Jou; +下>Ka; +不>Fu; +与>Yo; +丐>Kai; +丑>Chuu; +且>Sha; +丕>Hi; +世>Se; +丗>Sei; +丘>Kyuu; +丙>Hei; +丞>Shou; +両>Ryou; +並>Hei; +个>Ka; +中>Chuu; +丱>Kan; +串>Sen; +丶>Chu; +丸>Gan; +丹>Tan; +主>Shu; +丼>Sei; +丿>Hetsu; +乂>Gai; +乃>Dai; +久>Kyuu; +之>Shi; +乍>Saku; +乎>Ko; +乏>Bou; +乕>Ko; +乖>Kai; +乗>Jou; +乘>Jou; +乙>Otsu; +九>Kyuu; +乞>Kotsu; +也>Ya; +乢>Gai; +乱>Ran; +乳>Nyuu; +乾>Kan; +亀>Ki; +亂>Ran; +亅>Ketsu; +了>Ryou; +予>Yo; +争>Sou; +亊>Ji; +事>Ji; +二>Ni; +于>U; +云>Un; +互>Go; +五>Go; +井>Sei; +亘>Sen; +亙>Kou; +些>Sa; +亜>A; +亞>A; +亟>Kyoku; +亠>Tou; +亡>Bou; +亢>Kou; +交>Kou; +亥>Gai; +亦>Eki; +亨>Kyou; +享>Kyou; +京>Kyou; +亭>Tei; +亮>Ryou; +亰>Kei; +亳>Haku; +亶>Tan; +人>Jin; +什>Shuu; +仁>Jin; +仂>Roku; +仄>Soku; +仆>Fu; +仇>Kyuu; +今>Kon; +介>Kai; +仍>Jou; +从>Juu; +仏>Butsu; +仔>Shi; +仕>Shi; +他>Ta; +仗>Jou; +付>Fu; +仙>Sen; +仝>Dou; +仞>Jin; +仟>Sen; +代>Dai; +令>Rei; +以>I; +仭>Jin; +仮>Ka; +仰>Gyou; +仲>Chuu; +件>Ken; +价>Kai; +任>Nin; +企>Ki; +伉>Kou; +伊>I; +伍>Go; +伎>Ki; +伏>Fuku; +伐>Batsu; +休>Kyuu; +会>Kai; +伜>Sai; +伝>Den; +伯>Haku; +估>Ko; +伴>Han; +伶>Rei; +伸>Shin; +伺>Shi; +似>Ji; +伽>Kya; +佃>Ten; +但>Tan; +佇>Cho; +位>I; +低>Tei; +住>Juu; +佐>Sa; +佑>Yuu; +体>Tei; +何>Ka; +佗>Ta; +余>Yo; +佚>Itsu; +佛>Butsu; +作>Saku; +佝>Kou; +佞>Nei; +佩>Hai; +佯>You; +佰>Haku; +佳>Ka; +併>Hei; +佶>Kitsu; +佻>Chou; +佼>Kou; +使>Shi; +侃>Kan; +來>Rai; +侈>Shi; +例>Rei; +侍>Ji; +侏>Shu; +侑>Yuu; +侖>Ron; +侘>Ta; +供>Kyou; +依>I; +侠>Kyou; +価>Ka; +侫>Nei; +侭>Jin; +侮>Bu; +侯>Kou; +侵>Shin; +侶>Ryo; +便>Ben; +係>Kei; +促>Soku; +俄>Ga; +俊>Shun; +俎>Sho; +俐>Ri; +俑>You; +俔>Ken; +俗>Zoku; +俘>Fu; +俚>Ri; +俛>Ben; +保>Ho; +俟>Shi; +信>Shin; +修>Shuu; +俯>Fu; +俳>Hai; +俵>Hyou; +俶>Shuku; +俸>Hou; +俺>En; +俾>Hi; +倅>Sai; +倆>Ryou; +倉>Sou; +個>Ko; +倍>Bai; +倏>Shuku; +們>Mon; +倒>Tou; +倔>Kutsu; +倖>Kou; +候>Kou; +倚>I; +借>Shaku; +倡>Shou; +倣>Hou; +値>Chi; +倥>Kou; +倦>Ken; +倨>Kyo; +倩>Sen; +倪>Gei; +倫>Rin; +倬>Taku; +倭>I; +倶>Ku; +倹>Ken; +偃>En; +假>Ka; +偈>Ketsu; +偉>I; +偏>Hen; +偐>Gan; +偕>Kai; +偖>Sha; +做>Saku; +停>Tei; +健>Ken; +偬>Sou; +偲>Shi; +側>Soku; +偵>Tei; +偶>Guu; +偸>Chuu; +偽>Gi; +傀>Kai; +傅>Fu; +傍>Bou; +傑>Ketsu; +傘>San; +備>Bi; +傚>Kou; +催>Sai; +傭>You; +傲>Gou; +傳>Den; +傴>U; +債>Sai; +傷>Shou; +傾>Kei; +僂>Rou; +僅>Kin; +僉>Sen; +僊>Sen; +働>Dou; +像>Zou; +僑>Kyou; +僕>Boku; +僖>Ki; +僚>Ryou; +僞>Gi; +僣>Sen; +僥>Kyou; +僧>Sou; +僭>Sen; +僮>Dou; +僵>Kyou; +價>Ka; +僻>Heki; +儀>Gi; +儁>Shun; +儂>Dou; +億>Oku; +儉>Ken; +儒>Ju; +儔>Chuu; +儕>Sei; +儖>Ran; +儘>Jin; +儚>Bou; +償>Shou; +儡>Rai; +優>Yuu; +儲>Cho; +儷>Rei; +儺>Da; +儻>Tou; +儼>Gen; +儿>Jin; +兀>Kotsu; +允>In; +元>Gen; +兄>Kei; +充>Juu; +兆>Chou; +兇>Kyou; +先>Sen; +光>Kou; +克>Koku; +兌>Da; +免>Men; +兎>To; +児>Ji; +兒>Ji; +兔>To; +党>Tou; +兜>Tou; +兢>Kyou; +入>Nyuu; +全>Zen; +兩>Ryou; +兪>Yu; +八>Hachi; +公>Kou; +六>Roku; +兮>Kei; +共>Kyou; +兵>Hei; +其>Ki; +具>Gu; +典>Ten; +兼>Ken; +冀>Ki; +冂>Kei; +内>Dai; +円>En; +冉>Nen; +冊>Satsu; +册>Satsu; +再>Sai; +冏>Kei; +冐>Bou; +冑>Chuu; +冒>Bou; +冓>Kou; +冕>Ben; +冖>Beki; +冗>Jou; +写>Sha; +冠>Kan; +冢>Chou; +冤>En; +冥>Mei; +冦>Kou; +冨>Fu; +冩>Sha; +冪>Beki; +冫>Hyou; +冬>Tou; +冰>Hyou; +冱>Go; +冲>Chuu; +决>Ketsu; +冴>Go; +况>Kyou; +冶>Ya; +冷>Rei; +冽>Retsu; +凄>Sei; +凅>Ko; +准>Jun; +凉>Ryou; +凋>Chou; +凌>Ryou; +凍>Tou; +凖>Jun; +凛>Rin; +凜>Rin; +凝>Gyou; +几>Ki; +凡>Bon; +処>Sho; +凭>Hyou; +凰>Kou; +凱>Gai; +凵>Kan; +凶>Kyou; +凸>Totsu; +凹>Ou; +出>Shutsu; +函>Kan; +凾>Kan; +刀>Tou; +刃>Jin; +刄>Jin; +分>Bun; +切>Setsu; +刈>Gai; +刊>Kan; +刋>Sen; +刎>Fun; +刑>Kei; +刔>Ketsu; +列>Retsu; +初>Sho; +判>Han; +別>Betsu; +刧>Gou; +利>Ri; +刪>San; +刮>Katsu; +到>Tou; +刳>Ko; +制>Sei; +刷>Satsu; +券>Ken; +刹>Satsu; +刺>Shi; +刻>Koku; +剃>Tei; +剄>Kei; +則>Soku; +削>Saku; +剋>Koku; +剌>Ratsu; +前>Zen; +剏>Sou; +剔>Teki; +剖>Bou; +剛>Gou; +剞>Ki; +剣>Ken; +剤>Zai; +剥>Haku; +剩>Jou; +剪>Sen; +副>Fuku; +剰>Jou; +剱>Ken; +割>Katsu; +剳>Tou; +剴>Gai; +創>Sou; +剽>Hyou; +剿>Shou; +劃>Kaku; +劇>Geki; +劈>Heki; +劉>Ru; +劍>Ken; +劑>Zai; +劒>Ken; +劔>Ken; +力>Ryoku; +功>Kou; +加>Ka; +劣>Retsu; +助>Jo; +努>Do; +劫>Gou; +劬>Ku; +劭>Shou; +励>Rei; +労>Rou; +劵>Ken; +効>Kou; +劼>Katsu; +劾>Gai; +勁>Kei; +勃>Botsu; +勅>Choku; +勇>Yuu; +勉>Ben; +勍>Kei; +勒>Roku; +動>Dou; +勗>Bou; +勘>Kan; +務>Mu; +勝>Shou; +勞>Rou; +募>Bo; +勠>Riku; +勢>Sei; +勣>Seki; +勤>Kin; +勦>Sou; +勧>Kan; +勲>Kun; +勳>Kun; +勵>Rei; +勸>Kan; +勹>Hou; +勺>Shaku; +勾>Kou; +勿>Butsu; +包>Hou; +匆>Sou; +匈>Kyou; +匍>Ho; +匏>Hou; +匐>Hoku; +匕>Hi; +化>Ka; +北>Hoku; +匙>Shi; +匚>Hou; +匝>Sou; +匠>Shou; +匡>Kyou; +匣>Kou; +匪>Hi; +匯>Wai; +匱>Ki; +匳>Ren; +匸>Kei; +匹>Hitsu; +区>Ku; +医>I; +匿>Toku; +區>Ku; +十>Juu; +千>Sen; +卅>Sou; +卆>Sotsu; +升>Shou; +午>Go; +卉>Ki; +半>Han; +卍>Ban; +卑>Hi; +卒>Sotsu; +卓>Taku; +協>Kyou; +南>Nan; +単>Tan; +博>Haku; +卜>Boku; +卞>Hen; +占>Sen; +卦>Ka; +卩>Setsu; +卮>Shi; +卯>Bou; +印>In; +危>Ki; +即>Soku; +却>Kyaku; +卵>Ran; +卷>Kan; +卸>Sha; +卻>Kyaku; +卿>Kyou; +厂>Kan; +厄>Yaku; +厖>Bou; +厘>Rin; +厚>Kou; +原>Gen; +厠>Shi; +厥>Ketsu; +厦>Ka; +厨>Zu; +厩>Kyuu; +厭>En; +厮>Shi; +厰>Shou; +厳>Gen; +厶>Shi; +去>Kyo; +参>San; +參>San; +又>Yuu; +叉>Sha; +及>Kyuu; +友>Yuu; +双>Sou; +反>Han; +収>Shuu; +叔>Shuku; +取>Shu; +受>Ju; +叙>Jo; +叛>Han; +叟>Sou; +叡>Ei; +叢>Sou; +口>Kou; +古>Ko; +句>Ku; +叨>Tou; +叩>Kou; +只>Shi; +叫>Kyou; +召>Shou; +叭>Hatsu; +叮>Tei; +可>Ka; +台>Dai; +叱>Shitsu; +史>Shi; +右>U; +叶>Kyou; +号>Gou; +司>Shi; +吁>Ku; +吃>Kitsu; +各>Kaku; +合>Gou; +吉>Kichi; +吊>Chou; +吋>Sun; +同>Dou; +名>Mei; +后>Kou; +吏>Ri; +吐>To; +向>Kou; +君>Kun; +吝>Rin; +吟>Gin; +吠>Hai; +否>Hi; +吩>Fun; +含>Gan; +听>Kin; +吭>Kou; +吮>Sen; +吶>Totsu; +吸>Kyuu; +吹>Sui; +吻>Fun; +吼>Kou; +吽>In; +吾>Go; +呀>Ga; +呂>Ryo; +呆>Bou; +呈>Tei; +呉>Go; +告>Koku; +呎>Seki; +呑>Don; +呟>Gen; +周>Shuu; +呪>Ju; +呰>Shi; +呱>Ko; +味>Mi; +呵>Ka; +呶>Do; +呷>Kou; +呻>Shin; +呼>Ko; +命>Mei; +咀>So; +咄>Totsu; +咆>Hou; +咋>Saku; +和>Wa; +咎>Kyuu; +咏>Ei; +咐>Ho; +咒>Shu; +咢>Gaku; +咤>Ta; +咥>Ki; +咨>Shi; +咫>Shi; +咬>Kou; +咯>Kaku; +咲>Shou; +咳>Gai; +咸>Kan; +咼>Ka; +咽>In; +咾>Rou; +哀>Ai; +品>Hin; +哂>Shin; +哄>Kou; +哇>Ai; +哈>Gou; +哉>Sai; +員>In; +哢>Rou; +哥>Ka; +哦>Ga; +哨>Shou; +哩>Ri; +哭>Koku; +哮>Kou; +哲>Tetsu; +哺>Ho; +哽>Kou; +唄>Bai; +唆>Sa; +唇>Shin; +唏>Ki; +唐>Tou; +唔>Go; +唖>A; +售>Shuu; +唯>Yui; +唱>Shou; +唳>Rei; +唸>Ten; +唹>Yo; +唾>Da; +啀>Gai; +啄>Taku; +啅>Taku; +商>Shou; +啌>Kou; +問>Mon; +啓>Kei; +啖>Tan; +啗>Tan; +啜>Setsu; +啝>Ka; +啣>Kan; +啻>Shi; +啼>Tei; +啾>Shuu; +喀>Kaku; +喃>Nan; +善>Zen; +喇>Ratsu; +喉>Kou; +喊>Kan; +喋>Chou; +喘>Zen; +喙>Kai; +喚>Kan; +喜>Ki; +喝>Katsu; +喞>Soku; +喟>Ki; +喧>Ken; +喨>Ryou; +喩>Yu; +喪>Sou; +喫>Kitsu; +喬>Kyou; +單>Tan; +営>Ei; +嗄>Sa; +嗅>Kyuu; +嗇>Shoku; +嗔>Shin; +嗚>O; +嗜>Shi; +嗟>Sa; +嗣>Shi; +嗤>Shi; +嗷>Gou; +嗹>Ren; +嗽>Soku; +嗾>Sou; +嘆>Tan; +嘉>Ka; +嘔>Ou; +嘖>Saku; +嘗>Shou; +嘘>Kyo; +嘛>Ma; +嘩>Ka; +嘯>Shou; +嘱>Shoku; +嘲>Tou; +嘴>Shi; +嘶>Sei; +嘸>Bu; +噂>Son; +噌>Sou; +噎>Itsu; +噐>Ki; +噛>Gou; +噤>Kin; +器>Ki; +噪>Sou; +噫>I; +噬>Zei; +噴>Fun; +噸>Ton; +嚀>Dei; +嚆>Kou; +嚇>Kaku; +嚊>Hi; +嚏>Tei; +嚔>Tei; +嚠>Ryuu; +嚢>Nou; +嚥>En; +嚮>Kou; +嚴>Gen; +嚶>Ou; +嚼>Shaku; +囀>Ten; +囁>Shou; +囂>Gou; +囃>Sou; +囈>Gei; +囎>So; +囑>Shoku; +囓>Ketsu; +囗>I; +囘>Kai; +囚>Shuu; +四>Shi; +回>Kai; +因>In; +団>Dan; +囮>Ka; +困>Kon; +囲>I; +図>To; +囹>Rei; +固>Ko; +国>Koku; +囿>Yuu; +圀>Koku; +圃>Ho; +圄>Gyo; +圈>Ken; +圉>Gyo; +國>Koku; +圍>I; +圏>Ken; +園>En; +圓>En; +圖>To; +團>Dan; +圜>Kan; +土>Do; +圧>Atsu; +在>Zai; +圭>Kei; +地>Chi; +圻>Ki; +址>Shi; +坂>Han; +均>Kin; +坊>Bou; +坎>Kan; +坏>Hai; +坐>Za; +坑>Kou; +坡>Ha; +坤>Kon; +坦>Tan; +坩>Kan; +坪>Hei; +坿>Fu; +垂>Sui; +垈>Tai; +垉>Hou; +型>Kei; +垓>Gai; +垠>Gin; +垢>Kou; +垣>En; +垤>Tetsu; +埀>Sui; +埃>Ai; +埆>Kaku; +埋>Mai; +城>Jou; +埒>Rachi; +埓>Rachi; +埔>Ho; +埜>Sho; +域>Iki; +埠>Fu; +埣>Sai; +埴>Shoku; +執>Shitsu; +培>Bai; +基>Ki; +埼>Ki; +堀>Kutsu; +堂>Dou; +堅>Ken; +堆>Tai; +堊>A; +堋>Hou; +堕>Da; +堙>In; +堝>Ka; +堡>Hou; +堤>Tei; +堪>Kan; +堯>Gyou; +堰>En; +報>Hou; +場>Jou; +堵>To; +堺>Kai; +堽>Kou; +塁>Rui; +塊>Kai; +塋>Ei; +塑>So; +塒>Shi; +塔>Tou; +塗>To; +塘>Tou; +塙>Kaku; +塚>Chou; +塞>Soku; +塢>O; +塩>En; +填>Ten; +塲>Jou; +塵>Jin; +塹>Zan; +塾>Juku; +境>Kyou; +墅>Sho; +墓>Bo; +増>Zou; +墜>Tsui; +墟>Kyo; +墨>Boku; +墫>Shun; +墮>Da; +墳>Fun; +墸>Sho; +墺>Ou; +墻>Shou; +墾>Kon; +壁>Heki; +壅>You; +壇>Dan; +壊>Kai; +壌>Jou; +壑>Gaku; +壓>Atsu; +壕>Gou; +壘>Rui; +壙>Kou; +壜>Tan; +壞>Kai; +壟>Ryou; +壤>Jou; +壥>Ten; +士>Shi; +壬>Jin; +壮>Sou; +壯>Sou; +声>Sei; +壱>Ichi; +売>Bai; +壷>Ko; +壹>Ichi; +壺>Ko; +壻>Sei; +壼>Kon; +壽>Ju; +夂>Chi; +変>Hen; +夊>Sui; +夏>Ka; +夐>Kei; +夕>Seki; +外>Gai; +夘>Bou; +夙>Shuku; +多>Ta; +夛>Ta; +夜>Ya; +夢>Mu; +夥>Ka; +大>Tai; +天>Ten; +太>Ta; +夫>Fu; +夬>Ketsu; +夭>You; +央>Ou; +失>Shitsu; +夲>Tou; +夷>I; +夸>Ko; +夾>Kou; +奄>En; +奇>Ki; +奈>Na; +奉>Hou; +奎>Kei; +奏>Sou; +奐>Kan; +契>Setsu; +奔>Hon; +奕>Eki; +套>Tou; +奘>Jou; +奚>Kei; +奠>Ten; +奢>Sha; +奥>Ou; +奧>Ou; +奨>Shou; +奩>Ren; +奪>Datsu; +奬>Shou; +奮>Fun; +女>Jo; +奴>Do; +奸>Kan; +好>Kou; +妁>Shaku; +如>Jo; +妃>Hi; +妄>Bou; +妊>Nin; +妍>Ken; +妓>Ki; +妖>You; +妙>Myou; +妛>Shi; +妝>Sou; +妣>Hi; +妥>Da; +妨>Bou; +妬>To; +妲>Datsu; +妹>Mai; +妻>Sai; +妾>Shou; +姆>Bo; +姉>Shi; +始>Shi; +姐>So; +姑>Ko; +姓>Sei; +委>I; +姙>Nin; +姚>You; +姜>Kyou; +姥>Bo; +姦>Kan; +姨>I; +姪>Tetsu; +姫>Ki; +姶>Ou; +姻>In; +姿>Shi; +威>I; +娃>A; +娉>Hei; +娑>Sha; +娘>Jou; +娚>Nan; +娜>Da; +娟>Ken; +娠>Shin; +娥>Ga; +娩>Ben; +娯>Go; +娵>Shu; +娶>Shu; +娼>Shou; +婀>A; +婁>Rou; +婆>Ba; +婉>En; +婚>Kon; +婢>Hi; +婦>Fu; +婪>Ran; +婬>In; +婿>Sei; +媒>Bai; +媚>Bi; +媛>En; +媼>Ou; +媽>Bo; +媾>Kou; +嫁>Ka; +嫂>Sou; +嫉>Shitsu; +嫋>Jou; +嫌>Ken; +嫐>Jou; +嫖>Hyou; +嫗>Ou; +嫡>Chaku; +嫣>En; +嫦>Kou; +嫩>Don; +嫺>Kan; +嫻>Kan; +嬉>Ki; +嬋>Sen; +嬌>Kyou; +嬖>Hei; +嬢>Jou; +嬪>Hin; +嬬>Shu; +嬰>Ei; +嬲>Jou; +嬾>Ran; +孀>Sou; +孃>Jou; +孅>Sen; +子>Shi; +孑>Getsu; +孔>Kou; +孕>You; +字>Ji; +存>Son; +孚>Fu; +孛>Botsu; +孜>Shi; +孝>Kou; +孟>Mou; +季>Ki; +孤>Ko; +孥>Do; +学>Gaku; +孩>Kai; +孫>Son; +孰>Juku; +孱>Sen; +孳>Shi; +孵>Fu; +學>Gaku; +孺>Ju; +宀>Ben; +它>Ta; +宅>Taku; +宇>U; +守>Shu; +安>An; +宋>Sou; +完>Kan; +宍>Niku; +宏>Kou; +宕>Tou; +宗>Shuu; +官>Kan; +宙>Chuu; +定>Tei; +宛>En; +宜>Gi; +宝>Hou; +実>Jitsu; +客>Kyaku; +宣>Sen; +室>Shitsu; +宥>Yuu; +宦>Kan; +宮>Kyuu; +宰>Sai; +害>Gai; +宴>En; +宵>Shou; +家>Ka; +宸>Shin; +容>You; +宿>Shuku; +寂>Jaku; +寃>En; +寄>Ki; +寅>In; +密>Mitsu; +寇>Kou; +寉>Kaku; +富>Fu; +寐>Bi; +寒>Kan; +寓>Guu; +寔>Shoku; +寛>Kan; +寝>Shin; +寞>Baku; +察>Satsu; +寡>Ka; +寢>Shin; +寤>Go; +寥>Ryou; +實>Jitsu; +寧>Nei; +寨>Sai; +審>Shin; +寫>Sha; +寮>Ryou; +寰>Kan; +寳>Hou; +寵>Chou; +寶>Hou; +寸>Sun; +寺>Ji; +対>Tai; +寿>Ju; +封>Fuu; +専>Sen; +射>Sha; +尅>Koku; +将>Shou; +將>Shou; +專>Sen; +尉>I; +尊>Son; +尋>Jin; +對>Tai; +導>Dou; +小>Shou; +少>Shou; +尓>Ji; +尖>Sen; +尚>Shou; +尠>Sen; +尢>Ou; +尤>Yuu; +尨>Bou; +尭>Gyou; +就>Shuu; +尸>Shi; +尹>In; +尺>Shaku; +尻>Kou; +尼>Ni; +尽>Jin; +尾>Bi; +尿>Nyou; +局>Kyoku; +屁>Hi; +居>Kyo; +屆>Kai; +屈>Kutsu; +届>Kai; +屋>Oku; +屍>Shi; +屎>Shi; +屏>Hei; +屐>Geki; +屑>Setsu; +屓>Ki; +展>Ten; +属>Zoku; +屠>To; +屡>Ru; +層>Sou; +履>Ri; +屬>Zoku; +屮>Sa; +屯>Ton; +山>San; +屹>Kitsu; +岌>Kyuu; +岐>Ki; +岑>Shin; +岔>Sa; +岡>Kou; +岨>So; +岩>Gan; +岫>Shuu; +岬>Kou; +岱>Tai; +岳>Gaku; +岶>Haku; +岷>Bin; +岸>Gan; +岻>Ji; +岾>Sen; +峇>Kou; +峙>Ji; +峡>Kyou; +峨>Ga; +峩>Ga; +峪>Yoku; +峭>Shou; +峯>Hou; +峰>Hou; +島>Tou; +峺>Kou; +峻>Shun; +峽>Kyou; +崇>Suu; +崋>Ka; +崎>Ki; +崑>Kon; +崔>Sai; +崕>Gai; +崖>Gai; +崗>Kou; +崘>Ron; +崙>Ron; +崚>Ryou; +崛>Kutsu; +崟>Gin; +崢>Sou; +崩>Hou; +嵋>Bi; +嵌>Kan; +嵎>Guu; +嵐>Ran; +嵒>Gan; +嵜>Ki; +嵩>Suu; +嵬>Kai; +嵯>Sa; +嵳>Sa; +嶂>Shou; +嶄>San; +嶇>Ku; +嶋>Tou; +嶌>Tou; +嶐>Ryuu; +嶝>Tou; +嶢>Gyou; +嶬>Gi; +嶮>Ken; +嶷>Gi; +嶺>Rei; +嶼>Sho; +嶽>Gaku; +巉>San; +巌>Gan; +巍>Gi; +巒>Ran; +巓>Ten; +巖>Gan; +巛>Sen; +川>Sen; +州>Shuu; +巡>Jun; +巣>Sou; +工>Kou; +左>Sa; +巧>Kou; +巨>Kyo; +巫>Fu; +差>Shi; +己>Ki; +已>I; +巳>Shi; +巴>Ha; +巵>Shi; +巷>Kou; +巻>Kan; +巽>Son; +巾>Kin; +市>Shi; +布>Fu; +帆>Han; +帋>Shi; +希>Ki; +帑>Do; +帖>Jou; +帙>Chitsu; +帚>Sou; +帛>Haku; +帝>Tei; +帥>Sotsu; +師>Shi; +席>Seki; +帯>Tai; +帰>Ki; +帳>Chou; +帶>Tai; +帷>I; +常>Jou; +帽>Bou; +幀>Tei; +幃>I; +幄>Aku; +幅>Fuku; +幇>Hou; +幌>Kou; +幎>Beki; +幔>Ban; +幕>Maku; +幗>Kaku; +幟>Shi; +幡>Han; +幢>Tou; +幣>Hei; +幤>Hei; +干>Kan; +平>Hei; +年>Nen; +幵>Ken; +并>Hei; +幸>Kou; +幹>Kan; +幺>You; +幻>Gen; +幼>You; +幽>Yuu; +幾>Ki; +广>Gen; +庁>Chou; +広>Kou; +庄>Sou; +庇>Hi; +床>Shou; +序>Jo; +底>Tei; +庖>Hou; +店>Ten; +庚>Kou; +府>Fu; +庠>Shou; +度>Taku; +座>Za; +庫>Ko; +庭>Tei; +庵>An; +庶>Sho; +康>Kou; +庸>You; +廁>Shi; +廂>Shou; +廃>Hai; +廈>Ka; +廉>Ren; +廊>Rou; +廐>Kyuu; +廓>Kaku; +廖>Ryou; +廚>Zu; +廛>Ten; +廝>Shi; +廟>Byou; +廠>Shou; +廡>Bu; +廢>Hai; +廣>Kou; +廨>Kai; +廩>Rin; +廬>Ryo; +廰>Chou; +廱>You; +廳>Chou; +廴>In; +延>En; +廷>Tei; +廸>Teki; +建>Ken; +廻>Kai; +廼>Dai; +廾>Kyou; +廿>Juu; +弁>Ben; +弃>Ki; +弄>Rou; +弉>Jou; +弊>Hei; +弋>Yoku; +弌>Itsu; +弍>Ni; +式>Shiki; +弐>Ni; +弑>Shi; +弓>Kyuu; +弔>Chou; +引>In; +弗>Futsu; +弘>Kou; +弛>Shi; +弟>Tei; +弥>Mi; +弦>Gen; +弧>Ko; +弩>Do; +弭>Bi; +弯>Wan; +弱>Jaku; +張>Chou; +強>Kyou; +弸>Hou; +弼>Hitsu; +弾>Dan; +彁>Sei; +彈>Dan; +彊>Kyou; +彌>Bi; +彎>Wan; +彑>Kei; +当>Tou; +彖>Tan; +彗>Sui; +彙>I; +彜>I; +彝>I; +彡>San; +形>Kei; +彦>Gen; +彩>Sai; +彪>Hyou; +彫>Chou; +彬>Hin; +彭>Hou; +彰>Shou; +影>Ei; +彳>Teki; +彷>Hou; +役>Yaku; +彼>Hi; +彿>Futsu; +往>Ou; +征>Sei; +徂>So; +徃>Ou; +径>Kei; +待>Tai; +徇>Shun; +很>Kon; +徊>Kai; +律>Ritsu; +後>Go; +徐>Jo; +徑>Kei; +徒>To; +従>Juu; +得>Toku; +徘>Hai; +徙>Shi; +從>Juu; +徠>Rai; +御>Gyo; +徨>Kou; +復>Fuku; +循>Jun; +徭>You; +微>Bi; +徳>Toku; +徴>Chou; +徹>Tetsu; +徼>Kyou; +徽>Ki; +心>Shin; +必>Hitsu; +忌>Ki; +忍>Nin; +忖>Son; +志>Shi; +忘>Bou; +忙>Bou; +応>Ou; +忝>Ten; +忠>Chuu; +忤>Go; +快>Kai; +忰>Sui; +忱>Shin; +念>Nen; +忸>Jiku; +忻>Kin; +忽>Kotsu; +忿>Fun; +怎>Shin; +怏>You; +怐>Kou; +怒>Do; +怕>Ha; +怖>Fu; +怙>Ko; +怛>Datsu; +怜>Rei; +思>Shi; +怠>Tai; +怡>I; +急>Kyuu; +怦>Hou; +性>Sei; +怨>En; +怩>Ji; +怪>Kai; +怫>Futsu; +怯>Kyou; +怱>Sou; +恁>In; +恂>Jun; +恃>Ji; +恆>Kou; +恊>Kyou; +恋>Ren; +恍>Kou; +恐>Kyou; +恒>Kou; +恕>Jo; +恙>You; +恚>I; +恟>Kyou; +恠>Kai; +恢>Kai; +恣>Shi; +恤>Jutsu; +恥>Chi; +恨>Kon; +恩>On; +恪>Kaku; +恫>Dou; +恬>Ten; +恭>Kyou; +息>Soku; +恰>Kou; +恵>Kei; +恷>Kyuu; +悁>En; +悃>Kon; +悄>Shou; +悉>Shitsu; +悋>Rin; +悌>Tei; +悍>Kan; +悒>Yuu; +悔>Kai; +悖>Hai; +悗>Ban; +悚>Shou; +悛>Sen; +悟>Go; +悠>Yuu; +患>Kan; +悦>Etsu; +悧>Ri; +悩>Nou; +悪>Aku; +悲>Hi; +悳>Toku; +悴>Sui; +悵>Chou; +悶>Mon; +悸>Ki; +悼>Tou; +悽>Sei; +情>Jou; +惆>Chuu; +惇>Ton; +惑>Waku; +惓>Ken; +惘>Bou; +惚>Kotsu; +惜>Seki; +惟>I; +惠>Kei; +惡>O; +惣>Sou; +惧>Ku; +惨>San; +惰>Da; +惱>Nou; +想>Sou; +惴>Zui; +惶>Kou; +惷>Shun; +惹>Ja; +惺>Sei; +惻>Soku; +愀>Shou; +愁>Shuu; +愃>Ken; +愆>Ken; +愈>Yu; +愉>Yu; +愍>Bin; +愎>Hyoku; +意>I; +愕>Gaku; +愚>Gu; +愛>Ai; +感>Kan; +愡>Sou; +愧>Ki; +愨>Kaku; +愬>So; +愴>Sou; +愼>Shin; +愽>Haku; +愾>Ki; +愿>Gen; +慂>You; +慄>Ritsu; +慇>In; +慈>Ji; +慊>Ken; +態>Tai; +慌>Kou; +慍>Un; +慎>Shin; +慓>Hyou; +慕>Bo; +慘>San; +慙>Zan; +慚>Zan; +慝>Toku; +慟>Dou; +慢>Man; +慣>Kan; +慥>Zou; +慧>Kei; +慨>Gai; +慫>Shou; +慮>Ryo; +慯>Shou; +慰>I; +慱>Tan; +慳>Kan; +慴>Shou; +慵>You; +慶>Kei; +慷>Kou; +慾>Yoku; +憂>Yuu; +憇>Kei; +憊>Hai; +憎>Zou; +憐>Ren; +憑>Hyou; +憔>Shou; +憖>Gin; +憙>Ki; +憚>Tan; +憤>Fun; +憧>Dou; +憩>Kei; +憫>Bin; +憬>Kei; +憮>Bu; +憲>Ken; +憶>Oku; +憺>Tan; +憾>Kan; +懃>Kin; +懆>Sou; +懇>Kon; +懈>Kai; +應>You; +懊>Ou; +懋>Bou; +懌>Eki; +懍>Rin; +懐>Kai; +懣>Mon; +懦>Da; +懲>Chou; +懴>Zan; +懶>Ran; +懷>Kai; +懸>Ken; +懺>Zan; +懼>Ku; +懽>Kan; +懾>Shou; +懿>I; +戀>Ren; +戈>Ka; +戉>Etsu; +戊>Bo; +戌>Jutsu; +戍>Ju; +戎>Juu; +成>Sei; +我>Ga; +戒>Kai; +戔>San; +或>Waku; +戚>Seki; +戛>Katsu; +戝>Zoku; +戞>Katsu; +戟>Geki; +戡>Kan; +戦>Sen; +截>Setsu; +戮>Riku; +戯>Gi; +戰>Sen; +戲>Gi; +戳>Taku; +戴>Tai; +戸>Ko; +戻>Rei; +房>Bou; +所>Sho; +扁>Hen; +扇>Sen; +扈>Ko; +扉>Hi; +手>Shu; +才>Sai; +扎>Satsu; +打>Da; +払>Futsu; +托>Taku; +扛>Kou; +扞>Kan; +扠>Sa; +扣>Kou; +扮>Fun; +扱>Sou; +扶>Fu; +批>Hi; +扼>Aku; +找>Ka; +承>Shou; +技>Gi; +抂>Kyou; +抃>Ben; +抄>Shou; +抉>Ketsu; +把>Ha; +抑>Yoku; +抒>Jo; +抓>Sou; +抔>Hou; +投>Tou; +抖>Tou; +抗>Kou; +折>Setsu; +抛>Hou; +抜>Batsu; +択>Taku; +披>Hi; +抬>Tai; +抱>Hou; +抵>Tei; +抹>Matsu; +抻>Shin; +押>Ou; +抽>Chuu; +拂>Futsu; +担>Tan; +拆>Taku; +拇>Bo; +拈>Den; +拉>Ratsu; +拊>Fu; +拌>Han; +拍>Haku; +拏>Da; +拐>Kai; +拑>Kan; +拒>Kyo; +拓>Taku; +拔>Batsu; +拗>Ou; +拘>Kou; +拙>Setsu; +招>Shou; +拜>Hai; +拝>Hai; +拠>Kyo; +拡>Kaku; +括>Katsu; +拭>Shiki; +拮>Kitsu; +拯>Jou; +拱>Kyou; +拳>Ken; +拵>Son; +拶>Satsu; +拷>Gou; +拾>Shuu; +拿>Da; +持>Ji; +挂>Kei; +指>Shi; +挈>Ketsu; +按>An; +挌>Kaku; +挑>Chou; +挙>Kyo; +挟>Kyou; +挧>Ku; +挨>Ai; +挫>Za; +振>Shin; +挺>Tei; +挽>Ban; +挾>Kyou; +挿>Sou; +捉>Soku; +捌>Hatsu; +捍>Kan; +捏>Detsu; +捐>En; +捕>Ho; +捗>Ho; +捜>Sou; +捧>Hou; +捨>Sha; +捩>Retsu; +捫>Mon; +据>Kyo; +捲>Ken; +捶>Sui; +捷>Shou; +捺>Natsu; +捻>Nen; +掀>Kin; +掃>Sou; +授>Ju; +掉>Tou; +掌>Shou; +掎>Ki; +掏>Tou; +排>Hai; +掖>Eki; +掘>Kutsu; +掛>Ka; +掟>Tou; +掠>Ryaku; +採>Sai; +探>Tan; +掣>Sei; +接>Setsu; +控>Kou; +推>Sui; +掩>En; +措>So; +掫>Sou; +掬>Kiku; +掲>Kei; +掴>Kaku; +掻>Sou; +掾>En; +揀>Kan; +揃>Sen; +揄>Yu; +揆>Ki; +揉>Juu; +描>Byou; +提>Tei; +插>Sou; +揖>Yuu; +揚>You; +換>Kan; +握>Aku; +揣>Shi; +揩>Kai; +揮>Ki; +援>En; +揶>Ya; +揺>You; +搆>Kou; +損>Son; +搏>Haku; +搓>Sa; +搖>You; +搗>Tou; +搜>Sou; +搦>Jaku; +搨>Tou; +搬>Han; +搭>Tou; +搴>Ken; +搶>Shou; +携>Kei; +搾>Saku; +摂>Setsu; +摎>Kyuu; +摘>Teki; +摧>Sai; +摩>Ma; +摯>Shi; +摶>Tan; +摸>Mo; +摺>Shou; +撃>Geki; +撈>Rou; +撒>San; +撓>Dou; +撕>Sei; +撚>Nen; +撞>Shu; +撤>Tetsu; +撥>Hatsu; +撩>Ryou; +撫>Bu; +播>Ha; +撮>Satsu; +撰>San; +撲>Boku; +撹>Kaku; +撻>Tachi; +撼>Kan; +擁>You; +擂>Rai; +擅>Sen; +擇>Taku; +操>Sou; +擒>Kin; +擔>Tan; +擘>Haku; +據>Kyo; +擠>Sei; +擡>Tai; +擢>Teki; +擣>Tou; +擦>Satsu; +擧>Kyo; +擬>Gi; +擯>Hin; +擱>Kaku; +擲>Teki; +擴>Kaku; +擶>Sen; +擺>Hai; +擽>Ryaku; +擾>Jou; +攀>Han; +攅>San; +攘>Jou; +攜>Kei; +攝>Setsu; +攣>Ren; +攤>Tan; +攪>Kaku; +攫>Kaku; +攬>Ran; +支>Shi; +攴>Hoku; +攵>Boku; +收>Shuu; +攷>Kou; +攸>Yuu; +改>Kai; +攻>Kou; +放>Hou; +政>Sei; +故>Ko; +效>Kou; +敍>Jo; +敏>Bin; +救>Kyuu; +敕>Choku; +敖>Gou; +敗>Hai; +敘>Jo; +教>Kyou; +敝>Hei; +敞>Shou; +敢>Kan; +散>San; +敦>Ton; +敬>Kei; +数>Suu; +敲>Kou; +整>Sei; +敵>Teki; +敷>Fu; +數>Suu; +斂>Ren; +斃>Hei; +文>Bun; +斈>Gaku; +斉>Sei; +斌>Hin; +斎>Sai; +斐>Hi; +斑>Han; +斗>To; +料>Ryou; +斛>Koku; +斜>Sha; +斟>Shin; +斡>Atsu; +斤>Kin; +斥>Seki; +斧>Fu; +斫>Shaku; +斬>Zan; +断>Dan; +斯>Shi; +新>Shin; +斷>Dan; +方>Hou; +於>O; +施>Shi; +旁>Hou; +旃>Sen; +旄>Bou; +旅>Ryo; +旆>Hai; +旋>Sen; +旌>Sei; +族>Zoku; +旒>Ryuu; +旗>Ki; +旙>Han; +旛>Han; +无>Bu; +旡>Ki; +既>Ki; +日>Nichi; +旦>Tan; +旧>Kyuu; +旨>Shi; +早>Sou; +旬>Jun; +旭>Kyoku; +旱>Kan; +旺>Ou; +旻>Bin; +昂>Kou; +昃>Soku; +昆>Kon; +昇>Shou; +昊>Kou; +昌>Shou; +明>Mei; +昏>Kon; +易>Eki; +昔>Seki; +昜>You; +星>Sei; +映>Ei; +春>Shun; +昧>Mai; +昨>Saku; +昭>Shou; +是>Ze; +昴>Bou; +昵>Jitsu; +昶>Chou; +昼>Chuu; +昿>Kou; +晁>Chou; +時>Ji; +晃>Kou; +晄>Kou; +晉>Shin; +晋>Shin; +晏>An; +晒>Sai; +晝>Chuu; +晞>Ki; +晟>Sei; +晢>Setsu; +晤>Go; +晦>Kai; +晧>Kou; +晨>Shin; +晩>Ban; +普>Fu; +景>Kei; +晰>Seki; +晴>Sei; +晶>Shou; +智>Chi; +暁>Gyou; +暃>Hi; +暄>Ken; +暇>Ka; +暈>Un; +暉>Ki; +暎>Ei; +暑>Sho; +暖>Dan; +暗>An; +暘>You; +暝>Mei; +暢>Chou; +暦>Reki; +暫>Zan; +暮>Bo; +暴>Bou; +暸>Ryou; +暹>Sen; +暼>Hetsu; +暾>Ton; +曁>Ki; +曄>You; +曇>Don; +曉>Gyou; +曖>Ai; +曙>Sho; +曚>Bou; +曜>You; +曝>Baku; +曠>Kou; +曦>Gi; +曩>Dou; +曰>Etsu; +曲>Kyoku; +曳>Ei; +更>Kou; +曵>Ei; +曷>Katsu; +書>Sho; +曹>Sou; +曼>Ban; +曽>Zo; +曾>So; +替>Tai; +最>Sai; +會>Kai; +月>Getsu; +有>Yuu; +朋>Hou; +服>Fuku; +朏>Hi; +朔>Saku; +朕>Chin; +朖>Rou; +朗>Rou; +望>Bou; +朝>Chou; +朞>Ki; +期>Ki; +朦>Bou; +朧>Rou; +木>Boku; +未>Mi; +末>Matsu; +本>Hon; +札>Satsu; +朮>Jutsu; +朱>Shu; +朴>Boku; +朶>Da; +朷>Tou; +朸>Ryoku; +机>Ki; +朽>Kyuu; +朿>Shi; +杆>Kan; +杉>San; +李>Ri; +杏>Kyou; +材>Zai; +村>Son; +杓>Hyou; +杖>Jou; +杙>Yoku; +杜>Do; +杞>Ko; +束>Soku; +杠>Kou; +条>Jou; +来>Rai; +杪>Byou; +杭>Kou; +杯>Hai; +杰>Ketsu; +東>Tou; +杲>Kou; +杳>You; +杵>Sho; +杷>Ha; +杼>Cho; +松>Shou; +板>Han; +枅>Kei; +枇>Hi; +枉>Ou; +枋>Hou; +枌>Fun; +析>Seki; +枕>Chin; +林>Rin; +枚>Mai; +果>Ka; +枝>Shi; +枢>Suu; +枦>Ro; +枩>Shou; +枯>Ko; +枳>Ki; +枴>Kai; +架>Ka; +枷>Ka; +枸>Ku; +枹>Hou; +柁>Ta; +柄>Hei; +柆>Rou; +柊>Shuu; +柎>Fu; +柏>Haku; +某>Bou; +柑>Kan; +染>Sen; +柔>Nyuu; +柘>Sha; +柚>Yuu; +柝>Taku; +柞>Saku; +柢>Tei; +柤>Sa; +柧>Ko; +柩>Kyuu; +柬>Kan; +柮>Totsu; +柯>Ka; +柱>Chuu; +柳>Ryuu; +柴>Sai; +柵>Saku; +査>Sa; +柾>Kyuu; +柿>Shi; +栄>Ei; +栓>Sen; +栖>Sei; +栗>Ritsu; +栞>Kan; +校>Kou; +栢>Haku; +栩>Ku; +株>Chu; +栫>Son; +栲>Gou; +栴>Sen; +核>Kaku; +根>Kon; +格>Kou; +栽>Sai; +桀>Ketsu; +桁>Kou; +桂>Kei; +桃>Tou; +框>Kyou; +案>An; +桍>Ko; +桎>Shitsu; +桐>Dou; +桑>Sou; +桓>Kan; +桔>Kitsu; +桙>U; +桜>Ou; +桟>San; +档>Tou; +桧>Kai; +桴>Fu; +桶>Tou; +桷>Kaku; +桾>Kun; +桿>Kan; +梁>Ryou; +梃>Tei; +梅>Bai; +梍>Sou; +梏>Koku; +梓>Shi; +梔>Shi; +梗>Kou; +梛>Da; +條>Jou; +梟>Kyou; +梠>Ryo; +梢>Shou; +梦>Mu; +梧>Go; +梨>Ri; +梭>Sa; +梯>Tei; +械>Kai; +梱>Kon; +梳>So; +梵>Fuu; +梶>Bi; +梹>Bin; +梼>Tou; +棄>Ki; +棆>Rin; +棉>Men; +棊>Ki; +棋>Ki; +棍>Kon; +棒>Bou; +棔>Kon; +棕>Shu; +棗>Sou; +棘>Kyoku; +棚>Hou; +棟>Tou; +棠>Tou; +棡>Kou; +棣>Tei; +棧>San; +森>Shin; +棯>Jin; +棲>Sei; +棹>Tou; +棺>Kan; +椀>Wan; +椁>Kaku; +椄>Setsu; +椅>I; +椈>Kiku; +椋>Ryou; +椌>Kou; +植>Shoku; +椎>Tsui; +椏>A; +椒>Shou; +検>Ken; +椢>Kai; +椦>Ken; +椰>Ya; +椴>Tan; +椶>Shu; +椹>Chin; +椽>Ten; +椿>Chin; +楊>You; +楓>Fuu; +楔>Setsu; +楕>Da; +楙>Bou; +楚>So; +楜>Ko; +楝>Ren; +楞>Rou; +楠>Nan; +楡>Yu; +楢>Shuu; +楪>You; +楫>Shuu; +業>Gyou; +楮>Cho; +楯>Jun; +楳>Bai; +楴>Tei; +極>Goku; +楷>Kai; +楸>Shuu; +楹>Ei; +楼>Rou; +楽>Gaku; +概>Gai; +榎>Ka; +榑>Fu; +榔>Rou; +榕>You; +榛>Shin; +榜>Bou; +榠>Bei; +榧>Hi; +榮>Ei; +榱>Sui; +榲>Otsu; +榴>Ryuu; +榻>Tou; +榾>Kotsu; +榿>Ki; +槁>Kou; +槃>Han; +槇>Ten; +槊>Saku; +構>Kou; +槌>Tsui; +槍>Sou; +槎>Sa; +槐>Kai; +槓>Kou; +様>You; +槙>Ten; +槝>Tou; +槞>Rou; +槧>San; +槨>Kaku; +槫>Tan; +槭>Shuku; +槲>Koku; +槹>Kou; +槻>Ki; +槽>Sou; +槿>Kin; +樂>Gaku; +樅>Shou; +樊>Han; +樋>Tou; +樌>Kan; +樒>Mitsu; +樓>Rou; +樔>Sou; +樗>Cho; +標>Hyou; +樛>Kyuu; +樞>Suu; +樟>Shou; +模>Mo; +樢>Boku; +樣>You; +権>Ken; +横>Ou; +樵>Shou; +樶>Sai; +樸>Boku; +樹>Ju; +樺>Ka; +樽>Son; +橄>Kan; +橇>Zei; +橈>Dou; +橋>Kyou; +橘>Kitsu; +橙>Tou; +機>Ki; +橡>Shou; +橢>Da; +橦>Tou; +橸>Shou; +橿>Kyou; +檀>Tan; +檄>Geki; +檍>Yoku; +檎>Go; +檐>En; +檗>Haku; +檜>Kai; +檠>Kei; +檢>Ken; +檣>Shou; +檪>Reki; +檬>Bou; +檮>Tou; +檳>Bin; +檸>Nei; +檻>Kan; +櫁>Mitsu; +櫂>Tou; +櫃>Ki; +櫑>Rai; +櫓>Ro; +櫚>Ryo; +櫛>Shitsu; +櫞>En; +櫟>Reki; +櫨>Ro; +櫪>Reki; +櫺>Rei; +櫻>Ou; +欄>Ran; +欅>Kyo; +權>Ken; +欒>Ran; +欖>Ran; +欝>Utsu; +欠>Ketsu; +次>Ji; +欣>Gon; +欧>Ou; +欲>Yoku; +欷>Ki; +欸>Ai; +欹>I; +欺>Gi; +欽>Kin; +款>Kan; +歃>Sou; +歇>Ketsu; +歉>Ken; +歌>Ka; +歎>Tan; +歐>Ou; +歓>Kan; +歔>Kyo; +歙>Kyuu; +歛>Kan; +歟>Yo; +歡>Kan; +止>Shi; +正>Sei; +此>Shi; +武>Bu; +歩>Ho; +歪>Wai; +歯>Shi; +歳>Sei; +歴>Reki; +歸>Ki; +歹>Gatsu; +死>Shi; +歿>Botsu; +殀>You; +殃>You; +殄>Ten; +殆>Tai; +殉>Jun; +殊>Shu; +残>Zan; +殍>Hyou; +殕>Fuu; +殖>Shoku; +殘>Zan; +殞>In; +殤>Shou; +殪>Ei; +殫>Tan; +殯>Hin; +殱>Sen; +殲>Sen; +殳>Shu; +殴>Ou; +段>Dan; +殷>In; +殺>Satsu; +殻>Kaku; +殼>Kaku; +殿>Ten; +毀>Ki; +毅>Ki; +毆>Ou; +毋>Bu; +母>Bo; +毎>Mai; +毒>Doku; +毓>Iku; +比>Hi; +毘>Hi; +毛>Mou; +毫>Kou; +毬>Kyuu; +毯>Tan; +毳>Zei; +氈>Sen; +氏>Shi; +民>Min; +氓>Bou; +气>Ki; +気>Ki; +氛>Fun; +氣>Ki; +氤>In; +水>Sui; +氷>Hyou; +永>Ei; +氾>Han; +汀>Tei; +汁>Juu; +求>Kyuu; +汎>Han; +汐>Seki; +汕>San; +汗>Kan; +汚>O; +汝>Jo; +汞>Kou; +江>Kou; +池>Chi; +汨>Beki; +汪>Ou; +汰>Ta; +汲>Kyuu; +汳>Hen; +決>Ketsu; +汽>Ki; +汾>Fun; +沁>Shin; +沂>Ki; +沃>Yoku; +沈>Chin; +沌>Ton; +沍>Go; +沐>Boku; +沒>Botsu; +沓>Tou; +沖>Chuu; +沙>Sa; +沚>Shi; +沛>Hai; +没>Botsu; +沢>Taku; +沫>Matsu; +沮>Sho; +沱>Ta; +河>Ka; +沸>Futsu; +油>Yu; +沺>Ten; +治>Ji; +沼>Shou; +沽>Ko; +沾>Ten; +沿>En; +況>Kyou; +泄>Ei; +泅>Shuu; +泉>Sen; +泊>Haku; +泌>Hitsu; +泓>Ou; +法>Hou; +泗>Shi; +泙>Hou; +泛>Han; +泝>So; +泡>Hou; +波>Ha; +泣>Kyuu; +泥>Dei; +注>Chuu; +泪>Rui; +泯>Bin; +泰>Tai; +泱>Ou; +泳>Ei; +洋>You; +洌>Retsu; +洒>Sei; +洗>Sen; +洙>Shu; +洛>Raku; +洞>Dou; +洟>I; +津>Shin; +洩>Ei; +洪>Kou; +洫>Kyoku; +洲>Shuu; +洳>Jo; +洵>Shun; +洶>Kyou; +洸>Kou; +活>Katsu; +洽>Kou; +派>Ha; +流>Ryuu; +浄>Jou; +浅>Sen; +浙>Setsu; +浚>Shun; +浜>Hin; +浣>Kan; +浤>Kou; +浦>Ho; +浩>Kou; +浪>Rou; +浬>Ri; +浮>Fu; +浴>Yoku; +海>Kai; +浸>Shin; +浹>Shou; +涅>Netsu; +消>Shou; +涌>Yuu; +涎>Sen; +涓>Ken; +涕>Tei; +涙>Rui; +涛>Tou; +涜>Toku; +涯>Gai; +液>Eki; +涵>Kan; +涸>Ko; +涼>Ryou; +淀>Ten; +淅>Seki; +淆>Kou; +淇>Ki; +淋>Rin; +淌>Shou; +淑>Shuku; +淒>Sei; +淕>Riku; +淘>Tou; +淙>Sou; +淞>Shou; +淡>Tan; +淤>Yo; +淦>Kan; +淨>Jou; +淪>Rin; +淫>In; +淬>Sai; +淮>Wai; +深>Shin; +淳>Shun; +淵>En; +混>Kon; +淹>En; +淺>Sen; +添>Ten; +清>Sei; +渇>Katsu; +済>Sai; +渉>Shou; +渊>En; +渋>Juu; +渓>Kei; +渕>En; +渙>Kan; +渚>Sho; +減>Gen; +渝>Yu; +渟>Tei; +渠>Kyo; +渡>To; +渣>Sa; +渤>Botsu; +渥>Aku; +渦>Ka; +温>On; +渫>Setsu; +測>Soku; +渭>I; +渮>Ka; +港>Kou; +游>Yuu; +渺>Byou; +渾>Kon; +湃>Hai; +湊>Sou; +湍>Tan; +湎>Ben; +湖>Ko; +湘>Shou; +湛>Tan; +湟>Kou; +湧>Yuu; +湫>Shou; +湮>In; +湯>Tou; +湲>Kan; +湶>Sen; +湾>Wan; +湿>Shitsu; +満>Man; +溂>Ratsu; +溌>Hatsu; +溏>Tou; +源>Gen; +準>Jun; +溘>Kou; +溜>Ryuu; +溝>Kou; +溟>Mei; +溢>Itsu; +溥>Ho; +溪>Kei; +溯>So; +溲>Sou; +溶>You; +溷>Kon; +溺>Deki; +溽>Joku; +滂>Bou; +滄>Sou; +滅>Metsu; +滉>Kou; +滋>Ji; +滌>Deki; +滑>Katsu; +滓>Sai; +滔>Tou; +滕>Tou; +滝>Sou; +滞>Tai; +滬>Ko; +滯>Tai; +滲>Shin; +滴>Teki; +滷>Ro; +滸>Ko; +滾>Kon; +滿>Man; +漁>Ryou; +漂>Hyou; +漆>Shitsu; +漉>Roku; +漏>Rou; +漑>Gai; +漓>Ri; +演>En; +漕>Sou; +漠>Baku; +漢>Kan; +漣>Ran; +漫>Man; +漬>Shi; +漱>Sou; +漲>Chou; +漸>Zen; +漾>You; +漿>Shou; +潁>Ei; +潅>Kan; +潔>Ketsu; +潘>Han; +潛>Sen; +潜>Sen; +潟>Seki; +潤>Jun; +潦>Rou; +潭>Tan; +潮>Chou; +潯>Jin; +潰>Kai; +潴>Cho; +潸>San; +潺>San; +潼>Dou; +澀>Juu; +澁>Juu; +澂>Chou; +澄>Chou; +澆>Gyou; +澎>Hou; +澑>Ryuu; +澗>Kan; +澡>Sou; +澣>Kan; +澤>Taku; +澪>Rei; +澱>Ten; +澳>Iku; +澹>Tan; +激>Geki; +濁>Daku; +濂>Ren; +濃>Nou; +濆>Fun; +濔>Dei; +濕>Shitsu; +濘>Nei; +濟>Sai; +濠>Gou; +濡>Ju; +濤>Tou; +濫>Ran; +濬>Shun; +濮>Hoku; +濯>Taku; +濱>Hin; +濳>Sen; +濶>Katsu; +濺>Sen; +濾>Ryo; +瀁>You; +瀉>Sha; +瀋>Shin; +瀏>Ryuu; +瀑>Baku; +瀕>Hin; +瀘>Ro; +瀚>Kan; +瀛>Ei; +瀝>Reki; +瀞>Jou; +瀟>Shou; +瀦>Cho; +瀧>Sou; +瀬>Rai; +瀰>Bi; +瀲>Ren; +瀾>Ran; +灌>Kan; +灑>Sai; +灘>Dan; +灣>Wan; +火>Ka; +灯>Tou; +灰>Kai; +灸>Kyuu; +灼>Shaku; +災>Sai; +炉>Ro; +炊>Sui; +炎>En; +炒>Sou; +炙>Sha; +炬>Ko; +炭>Tan; +炮>Hou; +炯>Kei; +炳>Hei; +炸>Saku; +点>Ten; +為>I; +烈>Retsu; +烋>Kou; +烏>U; +烙>Raku; +烝>Jou; +烟>En; +烱>Kei; +烹>Hou; +烽>Hou; +焉>En; +焔>En; +焙>Hou; +焚>Fun; +焜>Kon; +無>Mu; +焦>Shou; +然>Zen; +焼>Shou; +煉>Ren; +煌>Kou; +煎>Sen; +煕>Ki; +煖>Dan; +煙>En; +煢>Kei; +煤>Bai; +煥>Kan; +煦>Ku; +照>Shou; +煩>Han; +煬>You; +煮>Sha; +煽>Sen; +熄>Soku; +熈>Ki; +熊>Yuu; +熏>Kun; +熔>You; +熕>Kou; +熙>Ki; +熟>Juku; +熨>I; +熬>Gou; +熱>Netsu; +熹>Ki; +熾>Shi; +燃>Nen; +燈>Tou; +燉>Ton; +燎>Ryou; +燐>Rin; +燒>Shou; +燔>Han; +燕>En; +燗>Ran; +營>Ei; +燠>Iku; +燥>Sou; +燦>San; +燧>Sui; +燬>Ki; +燭>Shoku; +燮>Shou; +燵>Tatsu; +燹>Sen; +燻>Kun; +燼>Jin; +燿>You; +爆>Baku; +爍>Shaku; +爐>Ro; +爛>Ran; +爨>San; +爪>Sou; +爬>Ha; +爭>Sou; +爰>En; +爲>I; +爵>Shaku; +父>Fu; +爺>Ya; +爻>Kou; +爼>Sho; +爽>Sou; +爾>Ji; +爿>Shou; +牀>Sou; +牆>Shou; +片>Hen; +版>Han; +牋>Sen; +牌>Hai; +牒>Chou; +牘>Toku; +牙>Ga; +牛>Gyuu; +牝>Hin; +牟>Bou; +牡>Bo; +牢>Rou; +牧>Boku; +物>Motsu; +牲>Sei; +牴>Tei; +特>Toku; +牽>Ken; +牾>Go; +犀>Sei; +犁>Ri; +犂>Ri; +犇>Hon; +犒>Kou; +犖>Raku; +犠>Gi; +犢>Toku; +犧>Gi; +犬>Ken; +犯>Han; +犲>Sai; +状>Jou; +犹>Yuu; +狂>Kyou; +狃>Juu; +狄>Teki; +狆>Chuu; +狎>Kou; +狐>Ko; +狒>Hi; +狗>Kou; +狙>Sho; +狛>Haku; +狠>Gan; +狡>Kou; +狢>Kaku; +狩>Shu; +独>Doku; +狭>Kyou; +狷>Ken; +狸>Ri; +狹>Kyou; +狼>Rou; +狽>Hai; +猊>Gei; +猖>Shou; +猗>I; +猛>Mou; +猜>Sai; +猝>Sotsu; +猟>Ryou; +猥>Wai; +猩>Sei; +猪>Cho; +猫>Byou; +献>Ken; +猯>Tan; +猴>Kou; +猶>Yuu; +猷>Yuu; +猾>Katsu; +猿>En; +獄>Goku; +獅>Shi; +獎>Shou; +獏>Baku; +獗>Ketsu; +獣>Juu; +獨>Doku; +獪>Kai; +獰>Dou; +獲>Kaku; +獵>Ryou; +獸>Juu; +獺>Datsu; +獻>Ken; +玄>Gen; +率>Ritsu; +玉>Gyoku; +王>Ou; +玖>Kyuu; +玩>Gan; +玲>Rei; +玳>Tai; +玻>Ha; +珀>Haku; +珂>Ka; +珈>Ka; +珊>San; +珍>Chin; +珎>Chin; +珞>Raku; +珠>Shu; +珥>Ji; +珪>Kei; +班>Han; +珮>Hai; +珱>Ei; +珸>Go; +現>Gen; +球>Kyuu; +琅>Rou; +理>Ri; +琉>Ryuu; +琢>Taku; +琥>Ko; +琲>Hai; +琳>Rin; +琴>Kin; +琵>Bi; +琶>Ha; +琺>Hou; +琿>Kon; +瑁>Bou; +瑕>Ka; +瑙>Dou; +瑚>Ko; +瑛>Ei; +瑜>Yu; +瑞>Zui; +瑟>Shitsu; +瑠>Ryuu; +瑣>Sa; +瑤>You; +瑩>Ei; +瑪>Ba; +瑯>Rou; +瑰>Kai; +瑳>Sa; +瑶>You; +瑾>Kin; +璃>Ri; +璋>Shou; +璞>Haku; +璢>Ryuu; +璧>Heki; +環>Kan; +璽>Ji; +瓊>Kei; +瓏>Rou; +瓔>Ei; +瓜>Ka; +瓠>Ko; +瓢>Hyou; +瓣>Ben; +瓦>Ga; +瓮>Ou; +瓶>Hei; +瓷>Shi; +甃>Shuu; +甄>Ken; +甌>Ou; +甍>Bou; +甎>Sen; +甑>Sou; +甓>Heki; +甕>Ou; +甘>Kan; +甚>Shin; +甜>Ten; +甞>Shou; +生>Sei; +産>San; +甥>Sei; +甦>So; +用>You; +甫>Ho; +甬>You; +田>Den; +由>Yuu; +甲>Kou; +申>Shin; +男>Dan; +甸>Ten; +町>Chou; +画>Ga; +甼>Chou; +畄>Ryuu; +畆>Ho; +畉>Fu; +畊>Kou; +畋>Ten; +界>Kai; +畍>Kai; +畏>I; +畔>Han; +留>Ryuu; +畚>Hon; +畛>Shin; +畜>Chiku; +畝>Ho; +畢>Hitsu; +畤>Shi; +略>Ryaku; +畦>Kei; +畧>Ryaku; +番>Ban; +畫>Kaku; +畭>Yo; +異>I; +畳>Jou; +畴>Chuu; +當>Tou; +畷>Tetsu; +畸>Ki; +畿>Ki; +疂>Jou; +疆>Kyou; +疇>Chuu; +疉>Jou; +疊>Jou; +疋>So; +疎>So; +疏>So; +疑>Gi; +疔>Chou; +疚>Kyuu; +疝>San; +疣>Yuu; +疥>Kai; +疫>Eki; +疱>Hou; +疲>Hi; +疳>Kan; +疵>Shi; +疸>Tan; +疹>Shin; +疼>Tou; +疽>Sho; +疾>Shitsu; +痂>Ka; +痃>Ken; +病>Byou; +症>Shou; +痊>Sen; +痍>I; +痒>You; +痔>Ji; +痕>Kon; +痘>Tou; +痙>Kei; +痛>Ts; +痞>Hi; +痢>Ri; +痣>Shi; +痩>Sou; +痰>Tan; +痲>Ma; +痳>Rin; +痴>Chi; +痺>Hi; +痼>Ko; +痾>A; +痿>I; +瘁>Sui; +瘉>Yu; +瘋>Fuu; +瘍>You; +瘟>On; +瘠>Seki; +瘡>Sou; +瘢>Han; +瘤>Ryuu; +瘧>Gyaku; +瘰>Rui; +瘴>Shou; +瘻>Rou; +療>Ryou; +癆>Rou; +癇>Kan; +癈>Hai; +癌>Gan; +癒>Yu; +癖>Heki; +癘>Rei; +癜>Den; +癡>Chi; +癢>You; +癧>Reki; +癨>Kaku; +癩>Rai; +癪>Shaku; +癬>Sen; +癰>You; +癲>Ten; +癶>Hatsu; +癸>Ki; +発>Hotsu; +登>Tou; +發>Hotsu; +白>Haku; +百>Hyaku; +皀>Hyuu; +皃>Bou; +的>Teki; +皆>Kai; +皇>Kou; +皈>Ki; +皋>Kou; +皎>Kou; +皐>Kou; +皓>Kou; +皖>Kan; +皙>Seki; +皚>Gai; +皮>Hi; +皰>Hou; +皴>Shun; +皷>Ko; +皸>Kun; +皹>Kun; +皺>Suu; +皿>Bai; +盂>U; +盃>Hai; +盆>Bon; +盈>Ei; +益>Eki; +盍>Kou; +盒>Kou; +盖>Gai; +盗>Tou; +盛>Sei; +盜>Tou; +盞>San; +盟>Mei; +盡>Jin; +監>Kan; +盤>Ban; +盥>Kan; +盧>Ro; +盪>Tou; +目>Moku; +盲>Mou; +直>Choku; +相>Shou; +盻>Kei; +盾>Jun; +省>Sei; +眄>Ben; +眇>Byou; +眈>Tan; +眉>Bi; +看>Kan; +県>Ken; +眛>Mai; +眞>Shin; +真>Shin; +眠>Min; +眤>Tei; +眥>Sei; +眦>Sei; +眩>Gen; +眷>Ken; +眸>Bou; +眺>Chou; +眼>Gan; +着>Chaku; +睇>Tei; +睚>Gai; +睛>Sei; +睡>Sui; +督>Toku; +睥>Hei; +睦>Boku; +睨>Gei; +睫>Shou; +睹>To; +睾>Kou; +睿>Ei; +瞋>Shin; +瞎>Katsu; +瞑>Mei; +瞞>Ban; +瞠>Dou; +瞥>Betsu; +瞬>Shun; +瞭>Ryou; +瞰>Kan; +瞳>Dou; +瞶>Ki; +瞹>Ai; +瞻>Sen; +瞼>Ken; +瞽>Ko; +瞿>Ku; +矇>Mou; +矍>Kaku; +矗>Chiku; +矚>Shoku; +矛>Mu; +矜>Kin; +矢>Shi; +矣>I; +知>Chi; +矧>Shin; +矩>Ku; +短>Tan; +矮>Wai; +矯>Kyou; +石>Shaku; +矼>Kou; +砂>Sa; +砌>Sei; +砒>Hi; +研>Ken; +砕>Sai; +砠>Sho; +砥>Shi; +砦>Sai; +砧>Chin; +砲>Hou; +破>Ha; +砺>Rei; +砿>Kou; +硅>Kei; +硝>Shou; +硫>Ryuu; +硬>Kou; +硯>Ken; +硼>Hou; +碁>Go; +碆>Ha; +碇>Tei; +碌>Roku; +碍>Gai; +碎>Sai; +碑>Hi; +碓>Tai; +碕>Ki; +碗>Wan; +碚>Hai; +碣>Ketsu; +碧>Heki; +碩>Seki; +碪>Chin; +碯>Dou; +碵>Seki; +確>Kaku; +碼>Ba; +碾>Ten; +磁>Ji; +磅>Hou; +磆>Katsu; +磊>Rai; +磋>Sa; +磐>Han; +磑>Gai; +磔>Taku; +磚>Sen; +磧>Seki; +磨>Ma; +磬>Kei; +磯>Ki; +磴>Tou; +磽>Kou; +礁>Shou; +礇>Iku; +礎>So; +礑>Tou; +礒>Gi; +礙>Gai; +礦>Kou; +礪>Rei; +礫>Reki; +礬>Ban; +示>Shi; +礼>Rei; +社>Sha; +祀>Shi; +祁>Ki; +祇>Ki; +祈>Ki; +祉>Shi; +祐>Yuu; +祓>Futsu; +祕>Hi; +祖>So; +祗>Shi; +祚>So; +祝>Shuku; +神>Shin; +祟>Sui; +祠>Shi; +祢>Dei; +祥>Shou; +票>Hyou; +祭>Sai; +祷>Tou; +祺>Ki; +祿>Roku; +禀>Rin; +禁>Kin; +禄>Roku; +禅>Zen; +禊>Kei; +禍>Ka; +禎>Tei; +福>Fuku; +禝>Shoku; +禦>Gyo; +禧>Ki; +禪>Zen; +禮>Rei; +禰>Dei; +禳>Jou; +禹>U; +禺>Guu; +禽>Kin; +禾>Ka; +禿>Toku; +秀>Shuu; +私>Shi; +秉>Hei; +秋>Shuu; +科>Ka; +秒>Byou; +秕>Hi; +秘>Hi; +租>So; +秡>Hatsu; +秣>Matsu; +秤>Shou; +秦>Shin; +秧>Ou; +秩>Chitsu; +秬>Kyo; +称>Shou; +移>I; +稀>Ki; +稈>Kan; +程>Tei; +稍>Sou; +税>Zei; +稔>Jin; +稗>Hai; +稘>Ki; +稙>Choku; +稚>Chi; +稜>Ryou; +稟>Rin; +稠>Chuu; +種>Shu; +稱>Shou; +稲>Tou; +稷>Shoku; +稻>Tou; +稼>Ka; +稽>Kei; +稾>Kou; +稿>Kou; +穀>Koku; +穂>Sui; +穃>You; +穆>Boku; +穉>Chi; +積>Seki; +穎>Ei; +穏>On; +穐>Shuu; +穗>Sui; +穡>Shoku; +穢>Ai; +穣>Jou; +穩>On; +穫>Kaku; +穰>Jou; +穴>Ketsu; +究>Kyuu; +穹>Kyuu; +空>Kuu; +穽>Sei; +穿>Sen; +突>Totsu; +窃>Setsu; +窄>Saku; +窈>You; +窒>Chitsu; +窓>Sou; +窕>Chou; +窖>Kou; +窗>Sou; +窘>Kin; +窟>Kutsu; +窩>Ka; +窪>Wa; +窮>Kyuu; +窯>You; +窰>You; +窶>Ku; +窺>Ki; +窿>Ryuu; +竃>Sou; +竄>Zan; +竅>Kyou; +竇>Tou; +竈>Sou; +竊>Setsu; +立>Ritsu; +竒>Ki; +站>Tan; +竚>Cho; +竜>Ryuu; +竝>Hei; +竟>Kei; +章>Shou; +竢>Shi; +竣>Shun; +童>Dou; +竦>Shou; +竪>Ju; +竭>Ketsu; +端>Tan; +競>Kyou; +竸>Kei; +竹>Chiku; +竺>Toku; +竿>Kan; +笄>Kei; +笆>Ha; +笈>Kyuu; +笊>Sou; +笋>Jun; +笏>Kotsu; +笑>Shou; +笘>Sen; +笙>Sou; +笛>Teki; +笞>Chi; +笠>Ryuu; +笥>Shi; +符>Fu; +笨>Hon; +第>Dai; +笳>Ka; +笵>Han; +笶>Shi; +筅>Sen; +筆>Hitsu; +筈>Katsu; +等>Tou; +筋>Kin; +筌>Sen; +筍>Jun; +筏>Batsu; +筐>Kyou; +筑>Chiku; +筒>Tou; +答>Tou; +策>Saku; +筝>Sou; +筥>Kyo; +筧>Ken; +筬>Sei; +筮>Sei; +筰>Saku; +筱>Shou; +筴>Kyou; +筵>En; +筺>Kyou; +箆>Hei; +箇>Ka; +箋>Sen; +箍>Ko; +箏>Sou; +箒>Sou; +箔>Haku; +箕>Ki; +算>San; +箘>Kin; +箙>Fuku; +箚>Satsu; +箜>Kou; +箝>Kan; +箟>Kin; +管>Kan; +箪>Tan; +箭>Sen; +箱>Shou; +箴>Shin; +箸>Cho; +節>Setsu; +篁>Kou; +範>Han; +篆>Ten; +篇>Hen; +築>Chiku; +篋>Kyou; +篌>Kou; +篏>Kan; +篝>Kou; +篠>Shou; +篤>Toku; +篥>Ritsu; +篦>Hei; +篩>Shi; +篭>Rou; +篳>Hitsu; +篶>En; +篷>Hou; +簀>Saku; +簇>Sou; +簍>Rou; +簑>Sa; +簒>San; +簓>Sen; +簔>Sa; +簟>Ten; +簡>Kan; +簣>Ki; +簧>Kou; +簪>Shin; +簫>Shou; +簷>En; +簸>Ha; +簽>Sen; +簾>Ren; +簿>Bo; +籀>Chuu; +籃>Ran; +籌>Chuu; +籍>Seki; +籐>Tou; +籔>Su; +籖>Sen; +籘>Tou; +籟>Rai; +籠>Rou; +籤>Sen; +籥>Yaku; +籬>Ri; +米>Bei; +粃>Hi; +粉>Fun; +粋>Sui; +粐>Ro; +粒>Ryuu; +粕>Haku; +粗>So; +粘>Nen; +粛>Shuku; +粟>Zoku; +粡>Tou; +粢>Shi; +粤>Etsu; +粥>Shuku; +粧>Shou; +粫>Ji; +粮>Ryou; +粱>Ryou; +粲>San; +粳>Kou; +粹>Sui; +粽>Sou; +精>Sei; +糂>San; +糅>Juu; +糊>Ko; +糒>Hi; +糖>Tou; +糜>Bi; +糞>Fun; +糟>Sou; +糠>Kou; +糢>Bo; +糧>Ryou; +糯>Da; +糲>Rei; +糴>Teki; +糶>Chou; +糸>Shi; +糺>Kyuu; +系>Kei; +糾>Kyuu; +紀>Ki; +紂>Chuu; +約>Yaku; +紅>Ku; +紆>U; +紊>Bin; +紋>Mon; +納>Tou; +紐>Chuu; +純>Shun; +紕>Hi; +紗>Sa; +紘>Kou; +紙>Shi; +級>Kyuu; +紛>Fun; +紜>Un; +素>So; +紡>Bou; +索>Saku; +紫>Shi; +紬>Chuu; +紮>Satsu; +累>Rui; +細>Sei; +紲>Setsu; +紳>Shin; +紵>Cho; +紹>Shou; +紺>Kon; +紿>Tai; +終>Shuu; +絃>Gen; +組>So; +絅>Kei; +絆>Ban; +絋>Kou; +経>Kei; +絎>Kou; +絏>Setsu; +結>Ketsu; +絖>Kou; +絛>Jou; +絞>Kou; +絡>Raku; +絢>Ken; +絣>Hou; +給>Kyuu; +絨>Juu; +絮>Jo; +統>Tou; +絲>Shi; +絳>Kou; +絵>Kai; +絶>Zetsu; +絹>Ken; +絽>Ryo; +綉>Tou; +綏>Sui; +經>Kei; +継>Kei; +続>Zoku; +綜>Sou; +綟>Rei; +綢>Chuu; +綣>Ken; +綫>Sen; +綬>Ju; +維>I; +綮>Kei; +綯>Tou; +綰>Wan; +綱>Kou; +網>Mou; +綴>Tei; +綵>Sai; +綸>Rin; +綺>Ki; +綻>Tan; +綽>Shaku; +綾>Ryou; +綿>Men; +緇>Shi; +緊>Kin; +緋>Hi; +総>Sou; +緑>Ryoku; +緒>Sho; +緘>Kan; +線>Sen; +緜>Ben; +緝>Shuu; +緞>Tan; +締>Tei; +緡>Bin; +緤>Setsu; +編>Hen; +緩>Kan; +緬>Men; +緯>I; +緲>Byou; +練>Ren; +緻>Chi; +縁>En; +縄>Jou; +縉>Shin; +縊>Ei; +縋>Tsui; +縒>Shi; +縛>Baku; +縞>Kou; +縟>Joku; +縡>Sai; +縢>Tou; +縣>Ken; +縦>Juu; +縫>Hou; +縮>Shuku; +縱>Juu; +縲>Rui; +縵>Ban; +縷>Ru; +縹>Hyou; +縺>Ren; +縻>Bi; +總>Sou; +績>Seki; +繁>Han; +繃>Hou; +繆>Kyuu; +繊>Sen; +繋>Kei; +繍>Shuu; +織>Shoku; +繕>Zen; +繖>San; +繙>Han; +繚>Ryou; +繝>Kan; +繞>Jou; +繦>Kyou; +繧>Un; +繩>Jou; +繪>Kai; +繭>Ken; +繰>Sou; +繹>Eki; +繻>Ju; +繼>Kei; +繽>Hin; +繿>Ran; +纂>San; +纈>Ketsu; +纉>San; +續>Zoku; +纎>Sen; +纏>Ten; +纒>Ten; +纓>Ei; +纔>San; +纖>Sen; +纛>Tou; +纜>Ran; +缶>Kan; +缸>Kou; +缺>Ketsu; +罅>Ka; +罌>Ou; +罍>Rai; +罎>Tan; +罐>Kan; +网>Bou; +罔>Bou; +罕>Kan; +罘>Fu; +罟>Ko; +罠>Bin; +罧>Shin; +罨>An; +罩>Tou; +罪>Zai; +罫>Kei; +置>Chi; +罰>Batsu; +署>Sho; +罵>Ba; +罷>Hi; +罸>Batsu; +罹>Ri; +羂>Ken; +羃>Beki; +羅>Ra; +羆>Hi; +羇>Ki; +羈>Ki; +羊>You; +羌>Kyou; +美>Bi; +羔>Kou; +羚>Rei; +羝>Tei; +羞>Shuu; +羣>Gun; +群>Gun; +羨>Sen; +義>Gi; +羮>Kou; +羯>Katsu; +羲>Gi; +羶>Sen; +羸>Rui; +羹>Kou; +羽>U; +翁>Ou; +翅>Shi; +翆>Sui; +翊>Yoku; +翌>Yoku; +習>Shuu; +翔>Shou; +翕>Kyuu; +翠>Sui; +翡>Hi; +翦>Sen; +翩>Hen; +翫>Gan; +翰>Kan; +翳>Ei; +翹>Gyou; +翻>Hon; +翼>Yoku; +耀>You; +老>Rou; +考>Kou; +耄>Mou; +者>Sha; +耆>Ki; +耋>Tetsu; +而>Ji; +耐>Tai; +耒>Rai; +耕>Kou; +耗>Mou; +耘>Un; +耙>Ha; +耜>Shi; +耡>Jo; +耨>Dou; +耳>Ji; +耶>Ya; +耻>Chi; +耽>Tan; +耿>Kou; +聆>Rei; +聊>Ryou; +聒>Katsu; +聖>Sei; +聘>Hei; +聚>Shuu; +聞>Bun; +聟>Sei; +聡>Sou; +聨>Ren; +聯>Ren; +聰>Sou; +聲>Sei; +聳>Shou; +聴>Chou; +聶>Jou; +職>Shoku; +聹>Dei; +聽>Chou; +聾>Rou; +聿>Itsu; +肄>I; +肅>Shuku; +肆>Shi; +肇>Chou; +肉>Niku; +肋>Roku; +肌>Ki; +肓>Kou; +肖>Shou; +肘>Chuu; +肚>To; +肛>Kou; +肝>Kan; +股>Ko; +肢>Shi; +肥>Hi; +肩>Ken; +肪>Bou; +肬>Yuu; +肭>Dotsu; +肯>Kou; +肱>Kou; +育>Iku; +肴>Kou; +肺>Hai; +胃>I; +胄>Chuu; +胆>Tan; +背>Hai; +胎>Tai; +胖>Han; +胙>So; +胚>Hai; +胛>Kou; +胝>Chi; +胞>Hou; +胡>Ko; +胤>In; +胥>Sho; +胯>Ko; +胱>Kou; +胴>Dou; +胸>Kyou; +胼>Hen; +能>Nou; +脂>Shi; +脅>Kyou; +脆>Zei; +脇>Kyou; +脈>Myaku; +脉>Myaku; +脊>Seki; +脚>Kyaku; +脛>Kei; +脣>Shin; +脩>Shuu; +脯>Ho; +脱>Datsu; +脳>Nou; +脹>Chou; +脾>Hi; +腆>Ten; +腋>Eki; +腎>Jin; +腐>Fu; +腑>Fu; +腓>Hi; +腔>Kou; +腕>Wan; +腟>Chitsu; +腥>Sei; +腦>Nou; +腫>Shou; +腮>Sai; +腰>You; +腱>Ken; +腴>Yu; +腸>Chou; +腹>Fuku; +腺>Sen; +腿>Tai; +膀>Hou; +膂>Ryo; +膃>Otsu; +膈>Kaku; +膊>Haku; +膏>Kou; +膓>Chou; +膕>Kaku; +膚>Fu; +膜>Maku; +膝>Shitsu; +膠>Kou; +膣>Chitsu; +膨>Bou; +膩>Ji; +膰>Han; +膳>Sen; +膵>Sui; +膸>Zui; +膺>You; +膽>Tan; +膾>Kai; +膿>Dou; +臀>Den; +臂>Hi; +臆>Oku; +臈>Rou; +臉>Ren; +臍>Sei; +臑>Dau; +臓>Zou; +臘>Rou; +臙>En; +臚>Ryo; +臟>Zou; +臠>Ren; +臣>Shin; +臥>Ga; +臧>Zou; +臨>Rin; +自>Shi; +臭>Shuu; +至>Shi; +致>Chi; +臺>Tai; +臻>Shin; +臼>Kyuu; +臾>Yu; +舁>Yo; +舂>Shou; +舅>Kyuu; +與>Yo; +興>Kyou; +舉>Kyo; +舊>Kyuu; +舌>Zetsu; +舍>Sha; +舎>Sha; +舐>Shi; +舒>Jo; +舖>Ho; +舗>Ho; +舘>Kan; +舛>Sen; +舜>Shun; +舞>Bu; +舟>Shuu; +舩>Sen; +航>Kou; +舫>Hou; +般>Han; +舮>Ro; +舳>Chiku; +舵>Ta; +舶>Haku; +舷>Ken; +舸>Ka; +船>Sen; +艀>Fu; +艇>Tei; +艘>Sou; +艙>Sou; +艚>Sou; +艟>Dou; +艢>Shou; +艤>Gi; +艦>Kan; +艨>Mou; +艪>Ro; +艫>Ro; +艮>Kon; +良>Ryou; +艱>Kan; +色>Shoku; +艶>En; +艷>En; +艸>Sou; +艾>Gai; +芋>U; +芍>Shaku; +芒>Bou; +芙>Fu; +芝>Shi; +芟>San; +芥>Kai; +芦>Ro; +芫>Gen; +芬>Fun; +芭>Ba; +芯>Shin; +花>Ka; +芳>Hou; +芸>Gei; +芹>Kin; +芻>Suu; +芽>Ga; +苅>Gai; +苑>En; +苒>Zen; +苓>Rei; +苔>Tai; +苗>Byou; +苙>Ryuu; +苛>Ka; +苜>Boku; +苞>Hou; +苟>Kou; +苡>I; +苣>Kyo; +若>Jaku; +苦>Ku; +苧>Cho; +苫>Sen; +英>Ei; +苳>Tou; +苴>So; +苹>Hei; +苺>Mai; +苻>Fu; +茂>Mo; +范>Han; +茄>Ka; +茅>Bou; +茆>Bou; +茉>Matsu; +茎>Kei; +茖>Kaku; +茗>Mei; +茘>Ri; +茜>Sen; +茣>Go; +茨>Shi; +茫>Bou; +茯>Fuku; +茱>Shu; +茲>Ji; +茴>Kai; +茵>In; +茶>Cha; +茸>Jou; +茹>Jo; +荀>Jun; +荅>Tou; +草>Sou; +荊>Kei; +荏>Jin; +荐>Sen; +荒>Kou; +荘>Sou; +荳>Tou; +荵>Jin; +荷>Ka; +荻>Teki; +荼>To; +莅>Ri; +莇>Cho; +莉>Chi; +莊>Sou; +莎>Sa; +莓>Mai; +莖>Kei; +莚>En; +莞>Kan; +莟>Kan; +莠>Yuu; +莢>Kyou; +莨>Rou; +莪>Ga; +莫>Bo; +莱>Rai; +莵>To; +莽>Bou; +菁>Sei; +菅>Kan; +菊>Kiku; +菌>Kin; +菎>Kon; +菓>Ka; +菖>Shou; +菘>Suu; +菜>Sai; +菟>To; +菠>Ha; +菩>Hai; +菫>Kin; +華>Ka; +菰>Ko; +菱>Ryou; +菲>Hi; +菴>An; +菷>Sou; +菻>Rin; +菽>Shuku; +萃>Sui; +萄>Tou; +萇>Chou; +萋>Sei; +萌>Hou; +萍>Hei; +萎>I; +萓>Gi; +萠>Hou; +萩>Shuu; +萪>Kuwa; +萬>Man; +萱>Ken; +萵>Wa; +萸>Yu; +萼>Gaku; +落>Raku; +葆>Ho; +葉>You; +葎>Ritsu; +著>Cho; +葛>Katsu; +葡>Ho; +葢>Gai; +董>Tou; +葦>I; +葩>Ha; +葫>Ko; +葬>Sou; +葭>Ka; +葮>Tan; +葯>Yaku; +葱>Sou; +葵>Ki; +葷>Gun; +葹>Shi; +葺>Shuu; +蒂>Tei; +蒄>Kan; +蒋>Shou; +蒐>Shuu; +蒔>Shi; +蒙>Bou; +蒜>San; +蒟>Kon; +蒡>Hou; +蒭>Suu; +蒲>Ho; +蒸>Jou; +蒹>Ken; +蒻>Jaku; +蒼>Sou; +蒿>Kou; +蓁>Shin; +蓄>Chiku; +蓆>Seki; +蓉>You; +蓊>Ou; +蓋>Gai; +蓍>Shi; +蓐>Joku; +蓑>Sa; +蓖>Hi; +蓚>Chou; +蓬>Hou; +蓮>Ren; +蓴>Shun; +蓼>Ryou; +蓿>Shuku; +蔀>Hou; +蔆>Ryou; +蔑>Betsu; +蔓>Ban; +蔔>Fuku; +蔕>Tei; +蔗>Sho; +蔘>Shin; +蔚>Utsu; +蔟>Zoku; +蔡>Sai; +蔦>Chou; +蔬>So; +蔭>In; +蔵>Zou; +蔽>Hei; +蕀>Kyoku; +蕁>Jin; +蕃>Ban; +蕈>Shin; +蕉>Shou; +蕊>Zui; +蕋>Zui; +蕎>Kyou; +蕕>Yuu; +蕗>Ro; +蕘>Jou; +蕚>Gaku; +蕣>Shun; +蕨>Ketsu; +蕩>Tou; +蕪>Bu; +蕭>Shou; +蕷>Yo; +蕾>Rai; +薀>Un; +薄>Haku; +薇>Bi; +薈>Kai; +薊>Kei; +薐>Rou; +薑>Kyou; +薔>Shoku; +薗>En; +薙>Tei; +薛>Setsu; +薜>Heki; +薤>Kai; +薦>Sen; +薨>Kou; +薩>Satsu; +薪>Shin; +薫>Kun; +薬>Yaku; +薮>Sou; +薯>Sho; +薹>Tai; +薺>Sei; +藁>Kou; +藉>Sha; +藍>Ran; +藏>Zou; +藐>Baku; +藕>Guu; +藜>Rei; +藝>Gei; +藤>Tou; +藥>Yaku; +藩>Han; +藪>Sou; +藷>Sho; +藹>Ai; +藺>Rin; +藻>Sou; +藾>Rai; +蘂>Zui; +蘆>Ro; +蘇>So; +蘊>Un; +蘋>Hin; +蘓>So; +蘖>Getsu; +蘗>Haku; +蘚>Sen; +蘢>Rou; +蘭>Ran; +蘯>Tou; +蘿>Ra; +虍>Ko; +虎>Ko; +虐>Gyaku; +虔>Ken; +處>Sho; +虚>Kyo; +虜>Ryo; +虞>Gu; +號>Gou; +虧>Ki; +虫>Chuu; +虱>Shitsu; +虹>Kou; +虻>Bou; +蚊>Bun; +蚋>Zei; +蚌>Hou; +蚓>In; +蚕>San; +蚣>Kou; +蚤>Sou; +蚩>Shi; +蚪>Tou; +蚫>Hou; +蚯>Kyuu; +蚰>Yuu; +蚶>Kan; +蛄>Ko; +蛆>Sho; +蛇>Ja; +蛉>Rei; +蛋>Tan; +蛍>Kei; +蛎>Rei; +蛔>Kai; +蛙>A; +蛛>Shu; +蛞>Katsu; +蛟>Kou; +蛤>Kou; +蛩>Kyou; +蛬>Kyou; +蛭>Shitsu; +蛮>Ban; +蛸>Sou; +蛹>You; +蛻>Zei; +蛾>Ga; +蜀>Shoku; +蜂>Hou; +蜃>Shin; +蜆>Ken; +蜈>Go; +蜉>Fu; +蜊>Ri; +蜍>Sho; +蜑>Tan; +蜒>En; +蜘>Chi; +蜚>Hi; +蜜>Mitsu; +蜥>Seki; +蜩>Chou; +蜴>Eki; +蜷>Ken; +蜻>Sei; +蜿>En; +蝉>Sen; +蝋>Rou; +蝌>Ka; +蝎>Katsu; +蝓>Yu; +蝕>Shoku; +蝗>Kou; +蝙>Hen; +蝟>I; +蝠>Fuku; +蝣>Yuu; +蝦>Ka; +蝨>Shitsu; +蝪>Tou; +蝮>Fuku; +蝴>Ko; +蝶>Chou; +蝸>Ka; +蝿>You; +螂>Rou; +融>Yuu; +螟>Mei; +螢>Kei; +螫>Seki; +螯>Gou; +螳>Tou; +螺>Ra; +螻>Rou; +螽>Shuu; +蟀>Shutsu; +蟄>Chitsu; +蟆>Ba; +蟇>Ba; +蟋>Shitsu; +蟐>Tou; +蟒>Bou; +蟠>Han; +蟯>Gyou; +蟲>Ki; +蟶>Tei; +蟷>Tou; +蟹>Kai; +蟻>Gi; +蟾>Sen; +蠅>You; +蠍>Katsu; +蠎>Bou; +蠏>Kai; +蠑>Ei; +蠕>Da; +蠖>Kaku; +蠡>Rei; +蠢>Shun; +蠣>Rei; +蠧>To; +蠱>Ko; +蠶>San; +蠹>To; +蠻>Ban; +血>Ketsu; +衂>Jiku; +衄>Jiku; +衆>Shuu; +行>Kou; +衍>En; +衒>Ken; +術>Jutsu; +街>Gai; +衙>Gyo; +衛>Ei; +衝>Shou; +衞>Ei; +衡>Kou; +衢>Ku; +衣>I; +表>Hyou; +衫>San; +衰>Sa; +衲>Dou; +衵>Jitsu; +衷>Chuu; +衽>Jin; +衾>Kin; +衿>Kin; +袁>En; +袂>Bei; +袈>Ka; +袋>Tai; +袍>Hou; +袒>Tan; +袖>Shuu; +袗>Shin; +袙>Ha; +袞>Kon; +袢>Han; +袤>Bou; +被>Hi; +袮>Ne; +袱>Fuku; +袴>Ko; +袵>Jin; +袷>Kou; +袿>Kei; +裁>Sai; +裂>Retsu; +装>Sou; +裏>Ri; +裔>Ei; +裕>Yuu; +裘>Kyuu; +裙>Kun; +補>Ho; +裝>Sou; +裟>Sa; +裡>Ri; +裨>Hi; +裲>Ryou; +裳>Shou; +裴>Hai; +裸>Ra; +裹>Ka; +裼>Seki; +製>Sei; +裾>Kyo; +褂>Kai; +複>Fuku; +褊>Hen; +褌>Kon; +褐>Katsu; +褒>Hou; +褓>Ho; +褝>Tan; +褞>On; +褥>Joku; +褪>Tai; +褫>Chi; +褶>Chou; +褸>Rou; +褻>Setsu; +襁>Kyou; +襃>Hou; +襄>Jou; +襌>Tan; +襍>Zatsu; +襖>Ou; +襞>Heki; +襟>Kin; +襠>Tou; +襤>Ran; +襦>Ju; +襪>Betsu; +襭>Ketsu; +襯>Shin; +襲>Shuu; +襴>Ran; +襾>Aka; +西>Sei; +要>You; +覃>Tan; +覆>Fuku; +覇>Ha; +覈>Kaku; +覊>Ki; +見>Ken; +規>Ki; +覓>Beki; +視>Shi; +覗>Shi; +覘>Ten; +覚>Kaku; +覡>Geki; +覦>Yu; +覧>Ran; +覩>To; +親>Shin; +覬>Ki; +覯>Kou; +覲>Kin; +観>Kan; +覺>Kaku; +覽>Ran; +覿>Teki; +觀>Kan; +角>Kaku; +觚>Ko; +觜>Shi; +觝>Tei; +解>Kai; +触>Shoku; +觧>Kai; +觴>Shou; +觸>Shoku; +言>Gen; +訂>Tei; +訃>Fu; +計>Kei; +訊>Jin; +訌>Kou; +討>Tou; +訐>Ketsu; +訓>Kun; +訖>Kitsu; +託>Taku; +記>Ki; +訛>Ka; +訝>Ga; +訟>Shou; +訣>Ketsu; +訥>Totsu; +訪>Hou; +設>Setsu; +許>Kyo; +訳>Yaku; +訴>So; +訶>Ka; +診>Shin; +註>Chuu; +証>Shou; +詁>Ko; +詆>Tei; +詈>Ri; +詐>Sa; +詑>Ta; +詒>Tai; +詔>Shou; +評>Hyou; +詛>So; +詞>Shi; +詠>Ei; +詢>Jun; +詣>Kei; +試>Shi; +詩>Shi; +詫>Ta; +詬>Kou; +詭>Ki; +詮>Sen; +詰>Kitsu; +話>Wa; +該>Gai; +詳>Shou; +詼>Kai; +誂>Chou; +誄>Rui; +誅>Chuu; +誇>Ko; +誉>Yo; +誌>Shi; +認>Nin; +誑>Kyou; +誓>Sei; +誕>Tan; +誘>Yuu; +誚>Shou; +語>Go; +誠>Sei; +誡>Kai; +誣>Fu; +誤>Go; +誥>Kou; +誦>Shou; +誨>Kai; +説>Setsu; +読>Toku; +誰>Sui; +課>Ka; +誹>Hi; +誼>Gi; +調>Chou; +諂>Ten; +諄>Jun; +談>Dan; +請>Sei; +諌>Kan; +諍>Sou; +諏>Shu; +諒>Ryou; +論>Ron; +諚>Jou; +諛>Yu; +諜>Chou; +諞>Hen; +諠>Ken; +諡>Shi; +諢>Kon; +諤>Gaku; +諦>Tei; +諧>Kai; +諫>Kan; +諭>Yu; +諮>Shi; +諱>Ki; +諳>An; +諷>Fuu; +諸>Sho; +諺>Gen; +諾>Daku; +謀>Bou; +謁>Etsu; +謂>I; +謄>Tou; +謇>Ken; +謌>Ka; +謎>Mei; +謐>Hitsu; +謔>Gyaku; +謖>Shoku; +謗>Bou; +謙>Ken; +謚>Shi; +講>Kou; +謝>Sha; +謠>You; +謡>You; +謦>Kei; +謨>Bo; +謫>Taku; +謬>Byou; +謳>Ou; +謹>Kin; +謾>Ban; +譁>Ka; +證>Shou; +譌>Ka; +譎>Kitsu; +譏>Ki; +譖>Shin; +識>Shiki; +譚>Tan; +譛>Shin; +譜>Fu; +譟>Sou; +警>Kei; +譫>Sen; +譬>Hi; +譯>Yaku; +議>Gi; +譱>Zen; +譲>Jou; +譴>Ken; +護>Go; +譽>Yo; +讀>Toku; +讃>San; +變>Hen; +讌>En; +讎>Shuu; +讐>Shuu; +讒>San; +讓>Jou; +讖>Shin; +讙>Kan; +讚>San; +谷>Koku; +谺>Ka; +谿>Kei; +豁>Katsu; +豆>Tou; +豈>Ki; +豊>Hou; +豌>En; +豎>Ju; +豐>Hou; +豕>Shi; +豚>Ton; +象>Shou; +豢>Ken; +豪>Gou; +豫>Yo; +豬>Cho; +豸>Chi; +豹>Hou; +豺>Sai; +豼>Hi; +貂>Chou; +貅>Kyuu; +貉>Kaku; +貊>Haku; +貌>Bou; +貍>Ri; +貎>Gei; +貔>Hi; +貘>Baku; +貝>Bai; +貞>Tei; +負>Fu; +財>Zai; +貢>Kou; +貧>Hin; +貨>Ka; +販>Han; +貪>Don; +貫>Kan; +責>Seki; +貭>Shitsu; +貮>Ni; +貯>Cho; +貰>Sei; +貲>Shi; +貳>Ni; +貴>Ki; +貶>Hen; +買>Bai; +貸>Tai; +費>Hi; +貼>Ten; +貽>I; +貿>Bou; +賀>Ga; +賁>Hi; +賂>Ro; +賃>Chin; +賄>Wai; +資>Shi; +賈>Ko; +賊>Zoku; +賍>Sou; +賎>Sen; +賑>Shin; +賓>Hin; +賚>Rai; +賛>San; +賜>Shi; +賞>Shou; +賠>Bai; +賢>Ken; +賣>Bai; +賤>Sen; +賦>Fu; +質>Shitsu; +賭>To; +賺>Tan; +賻>Fu; +購>Kou; +賽>Sai; +贄>Shi; +贅>Zei; +贇>In; +贈>Zou; +贊>San; +贋>Gan; +贍>Sen; +贏>Ei; +贐>Shin; +贓>Zou; +贔>Hi; +贖>Shoku; +赤>Seki; +赦>Sha; +赧>Tan; +赫>Kaku; +赭>Sha; +走>Sou; +赱>Sou; +赳>Kyuu; +赴>Fu; +起>Ki; +趁>Chin; +超>Chou; +越>Etsu; +趙>Chou; +趣>Shu; +趨>Suu; +足>Soku; +趺>Fu; +趾>Shi; +跂>Ki; +跋>Batsu; +跌>Tetsu; +跏>Ka; +跖>Seki; +跚>San; +跛>Ha; +距>Kyo; +跟>Kon; +跡>Seki; +跣>Sen; +跨>Ko; +跪>Ki; +跫>Kyou; +路>Ro; +跳>Chou; +践>Sen; +跼>Kyoku; +跿>To; +踈>Sho; +踉>Ryou; +踊>You; +踏>Tou; +踐>Sen; +踝>Ka; +踞>Kyo; +踟>Chi; +踪>Shou; +踰>Yu; +踴>You; +踵>Shou; +蹂>Juu; +蹄>Tei; +蹇>Ken; +蹈>Tou; +蹉>Sa; +蹊>Kei; +蹌>Shou; +蹐>Seki; +蹕>Hitsu; +蹙>Shuku; +蹟>Seki; +蹠>Seki; +蹣>Man; +蹤>Shou; +蹲>Son; +蹴>Shuu; +蹶>Ketsu; +蹼>Boku; +躁>Sou; +躄>Heki; +躅>Choku; +躇>Cho; +躊>Chuu; +躋>Sei; +躍>Yaku; +躑>Teki; +躓>Chi; +躔>Ten; +躙>Rin; +躡>Jou; +躪>Rin; +身>Shin; +躬>Kyuu; +躯>Ku; +躰>Tei; +躱>Ta; +軆>Tei; +車>Sha; +軋>Atsu; +軌>Ki; +軍>Gun; +軒>Ken; +軛>Aku; +軟>Nan; +転>Ten; +軣>Gou; +軫>Shin; +軸>Jiku; +軻>Ka; +軼>Itsu; +軽>Kei; +軾>Shoku; +較>Kaku; +輅>Ro; +載>Sai; +輊>Chi; +輌>Ryou; +輒>Chou; +輓>Ban; +輔>Fu; +輕>Kei; +輙>Chou; +輛>Ryou; +輜>Shi; +輝>Ki; +輟>Tetsu; +輦>Ren; +輩>Hai; +輪>Rin; +輯>Shuu; +輳>Sou; +輸>Yu; +輹>Fuku; +輻>Fuku; +輾>Ten; +輿>Yo; +轂>Koku; +轄>Katsu; +轅>En; +轆>Roku; +轉>Ten; +轍>Tetsu; +轎>Kyou; +轗>Kan; +轜>Ji; +轟>Gou; +轡>Hi; +轢>Reki; +轣>Reki; +轤>Ro; +辛>Shin; +辜>Ko; +辞>Ji; +辟>Heki; +辣>Ratsu; +辧>Ben; +辨>Ben; +辭>Ji; +辮>Hen; +辯>Ben; +辰>Shin; +辱>Joku; +農>Nou; +辺>Hen; +辿>Ten; +迂>U; +迄>Kitsu; +迅>Jin; +迎>Gei; +近>Kin; +返>Hen; +迢>Chou; +迥>Kei; +迦>Ka; +迩>Ji; +迪>Teki; +迫>Haku; +迭>Tetsu; +迯>Tou; +述>Jutsu; +迴>Kai; +迷>Mei; +迸>Hou; +迹>Seki; +迺>Dai; +追>Tsui; +退>Tai; +送>Sou; +逃>Tou; +逅>Kou; +逆>Gyaku; +逋>Ho; +逍>Shou; +逎>Shuu; +透>Tou; +逐>Chiku; +逑>Kyuu; +逓>Tei; +途>To; +逕>Kei; +逖>Teki; +逗>Tou; +這>Gen; +通>Ts; +逝>Sei; +逞>Tei; +速>Soku; +造>Zou; +逡>Shun; +逢>Hou; +連>Ren; +逮>Tai; +週>Shuu; +進>Shin; +逵>Ki; +逶>I; +逸>Itsu; +逹>Tatsu; +逼>Hitsu; +逾>Yu; +遁>Ton; +遂>Sui; +遅>Chi; +遇>Guu; +遉>Tei; +遊>Yuu; +運>Un; +遍>Hen; +過>Ka; +遏>Atsu; +遐>Ka; +遑>Kou; +遒>Shuu; +道>Dou; +達>Tatsu; +違>I; +遘>Kou; +遙>You; +遜>Son; +遞>Tei; +遠>En; +遡>So; +遣>Ken; +遥>You; +遨>Gou; +適>Teki; +遭>Sou; +遮>Sha; +遯>Ton; +遲>Chi; +遵>Jun; +遶>Jou; +遷>Sen; +選>Sen; +遺>I; +遼>Ryou; +遽>Kyo; +避>Hi; +邀>You; +邁>Bai; +邂>Kai; +邃>Sui; +還>Kan; +邇>Ji; +邉>Hen; +邊>Hen; +邏>Ra; +邑>Yuu; +那>Da; +邦>Hou; +邨>Son; +邪>Ya; +邯>Kan; +邱>Kyuu; +邵>Shou; +邸>Tei; +郁>Iku; +郊>Kou; +郎>Rou; +郛>Fu; +郡>Gun; +郢>Ei; +郤>Geki; +部>Bu; +郭>Kaku; +郵>Yuu; +郷>Kyou; +都>To; +鄂>Gaku; +鄒>Suu; +鄙>Hi; +鄭>Tei; +鄰>Rin; +鄲>Tan; +酉>Yuu; +酊>Tei; +酋>Shuu; +酌>Shaku; +配>Hai; +酎>Chuu; +酒>Shu; +酔>Sui; +酖>Tan; +酘>Tou; +酢>Saku; +酣>Kan; +酥>So; +酩>Mei; +酪>Raku; +酬>Shuu; +酲>Tei; +酳>In; +酵>Kou; +酷>Koku; +酸>San; +醂>Rin; +醇>Shun; +醉>Sui; +醋>Saku; +醍>Tei; +醐>Ko; +醒>Sei; +醗>Hatsu; +醜>Shuu; +醢>Kai; +醤>Shou; +醪>Rou; +醫>I; +醯>Kei; +醴>Rei; +醵>Kyo; +醸>Jou; +醺>Kun; +釀>Jou; +釁>Kin; +釆>Han; +采>Sai; +釈>Shaku; +釉>Yuu; +釋>Shaku; +里>Ri; +重>Chou; +野>Ya; +量>Ryou; +釐>Ri; +金>Kin; +釖>Tou; +釘>Tei; +釛>Koku; +釜>Fu; +針>Shin; +釟>Hatsu; +釡>Fu; +釣>Chou; +釦>Kou; +釧>Sen; +釵>Sa; +釶>Shi; +釼>Ken; +釿>Kin; +鈍>Don; +鈎>Kou; +鈑>Han; +鈔>Shou; +鈕>Chuu; +鈞>Kin; +鈩>Ro; +鈬>Taku; +鈴>Rei; +鈷>Ko; +鈿>Ten; +鉄>Tetsu; +鉅>Kyo; +鉈>Sha; +鉉>Ken; +鉋>Hou; +鉐>Seki; +鉗>Kan; +鉚>Ryuu; +鉛>En; +鉞>Etsu; +鉢>Hachi; +鉤>Kou; +鉦>Sei; +鉱>Kou; +鉾>Bou; +銀>Gin; +銃>Juu; +銅>Dou; +銑>Sen; +銓>Sen; +銕>Tetsu; +銖>Shu; +銘>Mei; +銚>You; +銛>Sen; +銜>Kan; +銭>Sen; +銷>Shou; +銹>Shuu; +鋏>Kyou; +鋒>Hou; +鋤>Jo; +鋩>Bou; +鋪>Ho; +鋭>Ei; +鋳>Chuu; +鋸>Kyo; +鋺>En; +鋼>Kou; +錆>Sei; +錏>A; +錐>Sui; +錘>Tsui; +錙>Shi; +錚>Sou; +錠>Jou; +錢>Sen; +錣>Tei; +錦>Kin; +錨>Byou; +錫>Seki; +錬>Ren; +錮>Ko; +錯>Saku; +録>Roku; +錻>Bu; +鍄>Kei; +鍋>Ka; +鍍>To; +鍔>Gaku; +鍖>Chin; +鍛>Tan; +鍜>Ka; +鍠>Kou; +鍬>Shuu; +鍮>Chuu; +鍵>Ken; +鍼>Shin; +鍾>Shou; +鎌>Ren; +鎔>You; +鎖>Sa; +鎗>Sou; +鎚>Tsui; +鎧>Gai; +鎬>Kou; +鎭>Chin; +鎮>Chin; +鎰>Itsu; +鏃>Zoku; +鏈>Ren; +鏐>Ryuu; +鏑>Teki; +鏖>Ou; +鏗>Kou; +鏘>Shou; +鏝>Man; +鏡>Kyou; +鏤>Rou; +鏥>Shuu; +鏨>San; +鐃>Dou; +鐇>Han; +鐐>Ryou; +鐓>Tai; +鐔>Shin; +鐘>Shou; +鐙>Tou; +鐚>A; +鐡>Tetsu; +鐫>Sen; +鐵>Tetsu; +鐶>Kan; +鐸>Taku; +鐺>Tou; +鑁>Ban; +鑄>Chuu; +鑑>Kan; +鑒>Kan; +鑚>San; +鑛>Kou; +鑞>Rou; +鑠>Shaku; +鑢>Ryo; +鑪>Ro; +鑰>Yaku; +鑵>Kan; +鑷>Jou; +鑼>Ra; +鑽>San; +鑾>Ran; +鑿>Saku; +钁>Kaku; +長>Chou; +門>Mon; +閂>San; +閃>Sen; +閇>Hei; +閉>Hei; +開>Kai; +閏>Jun; +閑>Kan; +間>Kan; +閔>Bin; +閘>Kou; +閙>Tou; +関>Kan; +閣>Kaku; +閤>Kou; +閥>Batsu; +閧>Kou; +閨>Kei; +閭>Ro; +閲>Etsu; +閹>En; +閻>En; +閼>A; +閾>Yoku; +闃>Geki; +闇>An; +闊>Katsu; +闌>Ran; +闍>To; +闔>Kou; +闕>Ketsu; +闖>Chin; +闘>Tou; +關>Kan; +闡>Sen; +闢>Heki; +闥>Tatsu; +阜>Fu; +阡>Sen; +阨>Aku; +阪>Han; +阮>Gen; +阯>Shi; +防>Bou; +阻>So; +阿>A; +陀>Da; +陂>Ha; +附>Fu; +陋>Rou; +陌>Haku; +降>Kou; +陏>Ta; +限>Gen; +陛>Hei; +陜>Kou; +陝>Sen; +陞>Shou; +陟>Choku; +院>In; +陣>Jin; +除>Jo; +陥>Kan; +陦>Tou; +陪>Bai; +陬>Suu; +陰>In; +陲>Sui; +陳>Chin; +陵>Ryou; +陶>Tou; +陷>Kan; +陸>Riku; +険>Ken; +陽>You; +隅>Guu; +隆>Ryuu; +隈>Wai; +隊>Tai; +隋>Ta; +隍>Kou; +階>Kai; +随>Zui; +隔>Kaku; +隕>In; +隗>Kai; +隘>Ai; +隙>Geki; +際>Sai; +障>Shou; +隠>In; +隣>Rin; +隧>Sui; +隨>Zui; +險>Ken; +隰>Shitsu; +隱>In; +隲>Shitsu; +隴>Rou; +隶>Tai; +隷>Rei; +隸>Rei; +隹>Sui; +隻>Seki; +隼>Jun; +雀>Jaku; +雁>Gan; +雄>Yuu; +雅>Ga; +集>Shuu; +雇>Ko; +雉>Chi; +雋>Sen; +雌>Shi; +雍>You; +雎>Sho; +雑>Zatsu; +雕>Chou; +雖>Sui; +雙>Sou; +雛>Suu; +雜>Zatsu; +離>Ri; +難>Nan; +雨>U; +雪>Setsu; +雫>Da; +雰>Fun; +雲>Un; +零>Rei; +雷>Rai; +雹>Haku; +電>Den; +需>Ju; +霄>Shou; +霆>Tei; +震>Shin; +霈>Hai; +霊>Rei; +霍>Kaku; +霎>Sou; +霏>Hi; +霑>Ten; +霓>Gei; +霖>Rin; +霙>Ei; +霜>Sou; +霞>Ka; +霤>Ryuu; +霧>Mu; +霪>In; +霰>San; +露>Ro; +霸>Haku; +霹>Heki; +霽>Sei; +霾>Bai; +靂>Reki; +靄>Ai; +靆>Tai; +靈>Rei; +靉>Ai; +青>Sei; +靖>Sei; +静>Sei; +靜>Sei; +非>Hi; +靠>Kou; +靡>Hi; +面>Men; +靤>Hou; +靦>Ten; +靨>You; +革>Kaku; +靫>Sai; +靭>Jin; +靱>Jin; +靴>Ka; +靹>Ketsu; +靺>Matsu; +靼>Tan; +鞁>Hi; +鞄>Hou; +鞅>Ou; +鞋>Ai; +鞍>An; +鞏>Kyou; +鞘>Sou; +鞜>Tou; +鞠>Kiku; +鞣>Juu; +鞦>Shuu; +鞨>Katsu; +鞫>Kiku; +鞭>Hen; +鞳>Tou; +鞴>Fuku; +韃>Datsu; +韆>Sen; +韈>Betsu; +韋>I; +韓>Kan; +韜>Tou; +韭>Kyuu; +韮>Kyou; +韲>Sei; +音>On; +韵>In; +韶>Shou; +韻>In; +響>Kyou; +頁>Ketsu; +頂>Chou; +頃>Kei; +項>Kou; +順>Jun; +須>Shu; +頌>Shou; +頏>Kou; +預>Yo; +頑>Gan; +頒>Han; +頓>Ton; +頗>Ha; +領>Ryou; +頚>Kei; +頡>Kitsu; +頤>I; +頬>Kyou; +頭>Tou; +頴>Ei; +頷>Kan; +頸>Kei; +頻>Hin; +頼>Rai; +頽>Tai; +顆>Ka; +顋>Sai; +題>Dai; +額>Gaku; +顎>Gaku; +顏>Gan; +顔>Gan; +顕>Ken; +願>Gan; +顛>Ten; +類>Rui; +顧>Ko; +顫>Sen; +顯>Ken; +顰>Hin; +顱>Ro; +顳>Shou; +顴>Kan; +風>Fuu; +颯>Satsu; +颱>Tai; +颶>Ku; +飃>Hyou; +飄>Hyou; +飆>Hyou; +飛>Hi; +飜>Hon; +食>Shoku; +飢>Ki; +飩>Ton; +飫>Yo; +飭>Choku; +飮>In; +飯>Han; +飲>In; +飴>I; +飼>Shi; +飽>Hou; +飾>Shoku; +餃>Kou; +餅>Hei; +餉>Shou; +養>You; +餌>Ji; +餐>San; +餒>Dai; +餓>Ga; +餔>Ho; +餘>Yo; +餝>Shoku; +餞>Sen; +餠>Hei; +餡>Kan; +餤>Tan; +館>Kan; +餬>Ko; +餮>Tetsu; +餽>Ki; +餾>Ryuu; +饂>Un; +饅>Man; +饉>Kin; +饋>Ki; +饌>Sen; +饐>I; +饑>Ki; +饒>Jou; +饕>Tou; +饗>Kyou; +首>Shu; +馗>Ki; +馘>Kaku; +香>Kou; +馥>Fuku; +馨>Kei; +馬>Ba; +馭>Gyo; +馮>Hyou; +馳>Chi; +馴>Shun; +馼>Bun; +駁>Baku; +駄>Ta; +駅>Eki; +駆>Ku; +駈>Ku; +駐>Chuu; +駑>Do; +駒>Ku; +駕>Ga; +駘>Tai; +駛>Shi; +駝>Ta; +駟>Shi; +駢>Hen; +駭>Kai; +駮>Haku; +駱>Raku; +駸>Shin; +駻>Kan; +駿>Shun; +騁>Tei; +騅>Sui; +騎>Ki; +騏>Ki; +騒>Sou; +験>Ken; +騙>Hen; +騨>Tan; +騫>Ken; +騰>Tou; +騷>Sou; +騾>Ra; +驀>Baku; +驂>San; +驃>Hyou; +驅>Ku; +驍>Gyou; +驕>Kyou; +驗>Ken; +驚>Kyou; +驛>Eki; +驟>Shuu; +驢>Ryo; +驤>Jou; +驥>Ki; +驩>Kan; +驪>Ri; +驫>Hyuu; +骨>Kotsu; +骭>Kan; +骰>Tou; +骸>Kai; +骼>Kaku; +髀>Hi; +髄>Zui; +髏>Rou; +髑>Toku; +髓>Zui; +體>Tei; +高>Kou; +髞>Sou; +髟>Hyou; +髢>Tei; +髣>Hou; +髦>Bou; +髪>Hatsu; +髫>Chou; +髭>Shi; +髮>Hatsu; +髯>Zen; +髱>Hou; +髴>Futsu; +髷>Kyoku; +髻>Kei; +鬆>Shou; +鬘>Ban; +鬚>Shu; +鬟>Kan; +鬢>Hin; +鬣>Ryou; +鬥>Tou; +鬧>Tou; +鬨>Kou; +鬩>Geki; +鬪>Tou; +鬮>Kyuu; +鬯>Chou; +鬱>Utsu; +鬲>Reki; +鬻>Shuku; +鬼>Ki; +魁>Kai; +魂>Kon; +魃>Batsu; +魄>Haku; +魅>Mi; +魍>Bou; +魎>Ryou; +魏>Gi; +魑>Chi; +魔>Ma; +魘>En; +魚>Gyo; +魯>Ro; +魴>Hou; +鮃>Hyou; +鮎>Nen; +鮑>Hou; +鮒>Fu; +鮓>Sa; +鮟>An; +鮠>Gai; +鮨>Shi; +鮪>I; +鮫>Kou; +鮭>Kei; +鮮>Sen; +鮹>Sou; +鯀>Kon; +鯆>Ho; +鯉>Ri; +鯊>Sa; +鯔>Shi; +鯖>Sei; +鯛>Chou; +鯡>Hi; +鯢>Gei; +鯣>Eki; +鯤>Kon; +鯨>Gei; +鯰>Nen; +鯵>Sou; +鰄>I; +鰆>Shun; +鰈>Chou; +鰉>Kou; +鰊>Ren; +鰌>Shuu; +鰍>Shuu; +鰐>Gaku; +鰒>Fuku; +鰓>Sai; +鰔>Kan; +鰕>Ka; +鰛>On; +鰡>Ryuu; +鰤>Shi; +鰥>Kan; +鰭>Ki; +鰮>On; +鰲>Gou; +鰹>Ken; +鰺>Sou; +鰻>Ban; +鰾>Hyou; +鱆>Shou; +鱇>Kou; +鱈>Setsu; +鱒>Son; +鱗>Rin; +鱠>Kai; +鱧>Rei; +鱶>Shou; +鱸>Ro; +鳥>Chou; +鳧>Fu; +鳩>Kyuu; +鳫>Gan; +鳬>Fu; +鳳>Hou; +鳴>Mei; +鳶>En; +鴃>Ketsu; +鴆>Chin; +鴇>Hou; +鴈>Gan; +鴉>A; +鴎>Ou; +鴒>Rei; +鴕>Ta; +鴛>En; +鴟>Shi; +鴣>Ko; +鴦>You; +鴨>Ou; +鴪>Itsu; +鴬>Ou; +鴻>Kou; +鴾>Bou; +鴿>Kou; +鵁>Kou; +鵄>Shi; +鵐>Bu; +鵑>Ken; +鵙>Geki; +鵜>Tei; +鵝>Ga; +鵞>Ga; +鵠>Koku; +鵡>Bu; +鵬>Hou; +鵯>Hi; +鵲>Jaku; +鵺>Ya; +鶇>Tou; +鶉>Shun; +鶏>Kei; +鶚>Gaku; +鶤>Kon; +鶩>Boku; +鶯>Ou; +鶲>Ou; +鶴>Kaku; +鶸>Jaku; +鶺>Seki; +鶻>Kotsu; +鷁>Geki; +鷂>You; +鷄>Kei; +鷆>Ten; +鷏>Ten; +鷓>Sha; +鷙>Shi; +鷦>Shou; +鷭>Ban; +鷯>Ryou; +鷲>Shuu; +鷸>Itsu; +鷹>You; +鷺>Ro; +鷽>Kaku; +鸚>Ou; +鸛>Kan; +鸞>Ran; +鹵>Ro; +鹸>Ken; +鹹>Kan; +鹽>En; +鹿>Roku; +麁>So; +麈>Shu; +麋>Bi; +麌>Gu; +麑>Gei; +麒>Ki; +麓>Roku; +麕>Kin; +麗>Rei; +麝>Sha; +麟>Rin; +麥>Baku; +麦>Baku; +麩>Fu; +麪>Men; +麭>Hou; +麸>Fu; +麹>Kiku; +麺>Men; +麻>Ma; +麼>Ma; +麾>Ki; +麿>Ro; +黄>Kou; +黌>Kou; +黍>Sho; +黎>Rei; +黏>Nen; +黐>Chi; +黒>Koku; +黔>Ken; +默>Moku; +黙>Moku; +黛>Tai; +黜>Chutsu; +黝>Yuu; +點>Ten; +黠>Katsu; +黥>Gei; +黨>Tou; +黯>An; +黴>Bai; +黶>En; +黷>Toku; +黹>Chi; +黻>Futsu; +黼>Ho; +黽>Bou; +鼇>Gou; +鼈>Betsu; +鼎>Tei; +鼓>Ko; +鼕>Tou; +鼠>So; +鼡>Sho; +鼬>Yuu; +鼻>Bi; +鼾>Kan; +齊>Sei; +齋>Sai; +齎>Sei; +齏>Sei; +齒>Shi; +齔>Shin; +齟>So; +齠>Chou; +齡>Rei; +齢>Rei; +齣>Shutsu; +齦>Gin; +齧>Ketsu; +齪>Soku; +齬>Gyo; +齲>Ku; +齶>Gaku; +齷>Aku; +龍>Ryuu; +龕>Gan; +龜>Ki; +龝>Shuu; +龠>Yaku; + +# eof diff --git a/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt new file mode 100644 index 00000000000..ef5f90c6840 --- /dev/null +++ b/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt @@ -0,0 +1,55 @@ +#-------------------------------------------------------------------- +# Copyright (c) 1999-2004, International Business Machines +# Corporation and others. All Rights Reserved. +#-------------------------------------------------------------------- +@UPPERFILTER@ +Unicode คืออะไร? +Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ +โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด +ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด +และไม่ว่าจะเป็นภาษาใด + +โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. + +ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย. + +Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด! +Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด. + +การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย. + +เกี่ยวกับ Unicode Consortium +Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. + +สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources. +@TITLECASE@ +ก๊กเฮง แซ่แต้ +กชกร ศราทธทัต +กติกา อังคสุภณ +กนก ธรรมประทีป +กนก วงศ์ทองศรี +กนกกร ช้างเย็นฉ่ำ +กนกฉัตร์ ถาวรนันท์ +กนกนวล โปษยะนันทน์ +กนกพร คมคาย +กนกพร ตีรเลิศพานิช +กนกพร พันทร +กนกพร ศรีบัณฑิต +กนกพร อติวรรณาพัฒน์ +กนกพรรณ ศรีวนาภิรมย์ +กนกรัตน์ เกียรติยิ่งอังศุลี +กนกรัตน์ สุธรรมพิทักษ์ +กนกวรรณ คงคาประเสริฐ +กนกวรรณ แซ่เตียว +กนกวรรณ บุญประเสริฐ +กนกวรรณ รักทรัพย์ +กนกวรรณ สัจจพงษ์ +กนกวรรณ อุ้ยวงศ์ไพศาล +กนกศักดิ์ ยิ่งยง +กนกแก้ว กรสมิต +กนิษฐา ทนุถนอมราษฎร์ +กนิษฐา หวังวิบูลย์กิจ +กมล กาญจนโรจน์ +กมล คัมภีร์ +กมล เจตน์มงคลรัตน์ +กมล ชูตระกูลธรรม \ No newline at end of file diff --git a/eclipse-build/build.properties b/eclipse-build/build.properties new file mode 100644 index 00000000000..642e3895d52 --- /dev/null +++ b/eclipse-build/build.properties @@ -0,0 +1,7 @@ +#******************************************************************************* +#* Copyright (C) 2010-2011, International Business Machines Corporation and * +#* others. All Rights Reserved. * +#******************************************************************************* +icu4j.plugin.impl.version.string=4.8.0 +copyright.eclipse=Licensed Materials - Property of IBM \n (C) Copyright IBM Corp. 2000, 2011. All Rights Reserved. \n IBM is a registered trademark of IBM Corp. +icu4j.data.version.number=48 diff --git a/eclipse-build/build.xml b/eclipse-build/build.xml new file mode 100644 index 00000000000..282243fd826 --- /dev/null +++ b/eclipse-build/build.xml @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eclipse-build/eclipse_mod_classes.txt b/eclipse-build/eclipse_mod_classes.txt new file mode 100644 index 00000000000..d279e2e7897 --- /dev/null +++ b/eclipse-build/eclipse_mod_classes.txt @@ -0,0 +1,5 @@ +# Copyright (C) 2011, International Business Machines Corporation and +# others. All Rights Reserved. + +com/ibm/icu/lang/UCharacter.java +com/ibm/icu/text/DecimalFormat.java diff --git a/eclipse-build/eclipse_mod_test_classes.txt b/eclipse-build/eclipse_mod_test_classes.txt new file mode 100644 index 00000000000..7059aeb914a --- /dev/null +++ b/eclipse-build/eclipse_mod_test_classes.txt @@ -0,0 +1,7 @@ +# Copyright (C) 2011, International Business Machines Corporation and +# others. All Rights Reserved. + +com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java +com/ibm/icu/dev/test/format/NumberFormatTest.java +com/ibm/icu/dev/test/serializable/CompatibilityTest.java +com/ibm/icu/dev/test/serializable/CoverageTest.java diff --git a/eclipse-build/features.template/com.ibm.icu.base/.project b/eclipse-build/features.template/com.ibm.icu.base/.project new file mode 100644 index 00000000000..db8f9304a47 --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu.base/.project @@ -0,0 +1,17 @@ + + + com.ibm.icu.base-feature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/eclipse-build/features.template/com.ibm.icu.base/build.properties b/eclipse-build/features.template/com.ibm.icu.base/build.properties new file mode 100644 index 00000000000..9d55f55c5aa --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu.base/build.properties @@ -0,0 +1,20 @@ +############################################################################### +# Copyright (c) 2011 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +bin.includes =\ +epl-v10.html,\ +eclipse_update_120.jpg,\ +feature.xml,\ +feature.properties,\ +license.html +outputUpdateJars = true + +generate.plugin@com.ibm.icu.base.source=com.ibm.icu.base + diff --git a/eclipse-build/features.template/com.ibm.icu.base/feature.xml b/eclipse-build/features.template/com.ibm.icu.base/feature.xml new file mode 100644 index 00000000000..5102e29769f --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu.base/feature.xml @@ -0,0 +1,33 @@ + + + + + [Enter Feature Description here.] + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + diff --git a/eclipse-build/features.template/com.ibm.icu/.project b/eclipse-build/features.template/com.ibm.icu/.project new file mode 100644 index 00000000000..d407fa0f079 --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu/.project @@ -0,0 +1,17 @@ + + + com.ibm.icu-feature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/eclipse-build/features.template/com.ibm.icu/build.properties b/eclipse-build/features.template/com.ibm.icu/build.properties new file mode 100644 index 00000000000..e9000a47e50 --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu/build.properties @@ -0,0 +1,20 @@ +############################################################################### +# Copyright (c) 2000, 2008 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +bin.includes =\ +epl-v10.html,\ +eclipse_update_120.jpg,\ +feature.xml,\ +feature.properties,\ +license.html +outputUpdateJars = true + +generate.plugin@com.ibm.icu.source=com.ibm.icu + diff --git a/eclipse-build/features.template/com.ibm.icu/feature.xml b/eclipse-build/features.template/com.ibm.icu/feature.xml new file mode 100644 index 00000000000..417e65b570b --- /dev/null +++ b/eclipse-build/features.template/com.ibm.icu/feature.xml @@ -0,0 +1,33 @@ + + + + + [Enter Feature Description here.] + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + diff --git a/eclipse-build/misc/ICUConfig.properties b/eclipse-build/misc/ICUConfig.properties new file mode 100644 index 00000000000..83f650315b3 --- /dev/null +++ b/eclipse-build/misc/ICUConfig.properties @@ -0,0 +1,31 @@ +#* +#******************************************************************************* +#* Copyright (C) 2008-2011, International Business Machines Corporation and * +#* others. All Rights Reserved. * +#******************************************************************************* +#* This is the properties contains ICU runtime configuration +#* + +# +# The default TimeZone implementation type used by the ICU TimeZone +# factory method. [ ICU | JDK ] +# +com.ibm.icu.util.TimeZone.DefaultTimeZoneType = JDK + +# +# By default, DecimalFormat uses some internal equivalent character +# data in addition to ones in DecimalFormatSymbols for parsing +# decimal/grouping separators. When this property is true, +# DecimalFormat uses separators configured by DecimalFormatSymbols only +# and does not try to find a match in the internal equivalent character +# data. +# +com.ibm.icu.text.DecimalFormat.SkipExtendedSeparatorParsing = false + + +# +# [Internal Use Only] +# Disable resource path scan for building full locale name list +# at run time. +# +com.ibm.icu.impl.ICUResourceBundle.skipRuntimeLocaleResourceScan = false diff --git a/eclipse-build/misc/about_icu.html b/eclipse-build/misc/about_icu.html new file mode 100644 index 00000000000..d1cbf11e9ea --- /dev/null +++ b/eclipse-build/misc/about_icu.html @@ -0,0 +1,54 @@ + + + + +About + + +

    About This Content

    + +

    XXXX XX, 2011

    +

    License

    + +

    The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at http://www.eclipse.org/legal/epl-v10.html. +For purposes of the EPL, "Program" will mean the Content.

    + +

    If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at http://www.eclipse.org.

    + + +

    Third Party Content

    +

    The Content includes items that have been sourced from third parties as set out below. If you + did not receive this Content directly from the Eclipse Foundation, the following is provided + for informational purposes only, and you should look to the Redistributor's license for + terms and conditions of use.

    + +

    ICU4J 4.8.X.v2011XXXX plug-in

    + The plug-in includes software ("ICU4J") developed by International Business Machines + Corporation and others. +

    + ICU4J is: +

    + Copyright (c) 1995-2011 International Business Machines Corporation and others
    + All rights reserved. +
    +

    + Your use of ICU4J is subject to the terms and conditions of the ICU4J license. A copy of the + license is contained in the file about_files/license.html.

    +

    + ICU4J bundles data files imported from the Unicode Character Database and the Locale Data. A copy of the + Unicode Data and Software license is contained in the file about_files/ucdterms.txt.

    +

    + The project information including source code, documentations and demo programs are available on + the ICU public web site.

    + + + diff --git a/eclipse-build/misc/about_icu_base.html b/eclipse-build/misc/about_icu_base.html new file mode 100644 index 00000000000..271380756e3 --- /dev/null +++ b/eclipse-build/misc/about_icu_base.html @@ -0,0 +1,51 @@ + + + + +About + + +

    About This Content

    + +

    XXXX XX, 2011

    +

    License

    + +

    The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at http://www.eclipse.org/legal/epl-v10.html. +For purposes of the EPL, "Program" will mean the Content.

    + +

    If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at http://www.eclipse.org.

    + + +

    Third Party Content

    +

    The Content includes items that have been sourced from third parties as set out below. If you + did not receive this Content directly from the Eclipse Foundation, the following is provided + for informational purposes only, and you should look to the Redistributor's license for + terms and conditions of use.

    + +

    ICU4J 4.8.X.v2011XXXX base plug-in

    + The plug-in includes software ("ICU4J") developed by International Business Machines + Corporation and others. +

    + ICU4J is: +

    + Copyright (c) 1995-2011 International Business Machines Corporation and others
    + All rights reserved. +
    +

    + Your use of ICU4J is subject to the terms and conditions of the ICU4J license. A copy of the + license is contained in the file about_files/license.html.

    +

    + The project information including source code, documentations and demo programs are available on + the ICU public web site.

    + + + diff --git a/eclipse-build/pdebuild/allElements.xml b/eclipse-build/pdebuild/allElements.xml new file mode 100644 index 00000000000..e4d661303b0 --- /dev/null +++ b/eclipse-build/pdebuild/allElements.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/pdebuild/build.properties b/eclipse-build/pdebuild/build.properties new file mode 100644 index 00000000000..86f6cf4d7e9 --- /dev/null +++ b/eclipse-build/pdebuild/build.properties @@ -0,0 +1,220 @@ +############################################################################### +# Copyright (c) 2003-2008 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +##################### +# Parameters describing how and where to execute the build. +# Typical users need only update the following properties: +# baseLocation - where things you are building against are installed +# bootclasspath - The base jars to compile against (typicaly rt.jar) +# configs - the list of {os, ws, arch} configurations to build. +# +# Of course any of the settings here can be overridden by spec'ing +# them on the command line (e.g., -DbaseLocation=d:/eclipse + +############# PRODUCT/PACKAGING CONTROL ############# +product=/plugin or feature id/path/to/.product +runPackager=true + +#Set the name of the archive that will result from the product build. +#archiveNamePrefix= + +# The prefix that will be used in the generated archive. +#archivePrefix= +archivePrefix= + +# The location underwhich all of the build output will be collected. +collectingFolder=${archivePrefix} + +# The list of {os, ws, arch} configurations to build. This +# value is a '&' separated list of ',' separate triples. For example, +# configs=win32,win32,x86 & linux,motif,x86 +# By default the value is *,*,* +#configs=win32, win32, x86 & \ +# linux, gtk, ppc &\ +# linux, gtk, x86 & \ +# linux, gtk, x86_64 & \ +# linux, motif, x86 & \ +# solaris, motif, sparc & \ +# solaris, gtk, sparc & \ +# aix, motif, ppc & \ +# hpux, motif, PA_RISC & \ +# macosx, carbon, ppc + +# By default PDE creates one archive (result) per entry listed in the configs property. +# Setting this value to try will cause PDE to only create one output containing all +# artifacts for all the platforms listed in the configs property. +#groupConfigurations=true + +#The format of the archive. By default a zip is created using antZip. +#The list can only contain the configuration for which the desired format is different than zip. +#archivesFormat=win32, win32, x86 - antZip& \ +# linux, gtk, ppc - antZip &\ +# linux, gtk, x86 - antZip& \ +# linux, gtk, x86_64 - antZip& \ +# linux, motif, x86 - antZip& \ +# solaris, motif, sparc - antZip& \ +# solaris, gtk, sparc - antZip& \ +# aix, motif, ppc - antZip& \ +# hpux, motif, PA_RISC - antZip& \ +# macosx, carbon, ppc - antZip + +#Set to true if you want the output to be ready for an update jar (no site.xml generated) +#outputUpdateJars = false + +#Set to true for Jnlp generation +#codebase should be a URL that will be used as the root of all relative URLs in the output. +#generateJnlp=false +#jnlp.codebase= +#jnlp.j2se= +#jnlp.locale= + +#Set to true if you want to sign jars +#signJars=false +#sign.alias= +#sign.keystore= +#sign.storepass= + +#Arguments to send to the zip executable +zipargs= + +#Arguments to send to the tar executable +tarargs= + +#Control the creation of a file containing the version included in each configuration - on by default +#generateVersionsLists=false + +############## BUILD NAMING CONTROL ################ +# The directory into which the build elements are fetched and where +# the build takes place. +buildDirectory=@BUILD_DIR@ + +# Type of build. Used in naming the build output. Typically this value is +# one of I, N, M, S, ... +buildType=@BUILD_TYPE@ + +# ID of the build. Used in naming the build output. +buildId=@BUILD_ID@ + +# Label for the build. Used in naming the build output +buildLabel=${buildType}.${buildId} + +# Timestamp for the build. Used in naming the build output +timestamp=007 + +#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde. +#The value will only be applied to plugin or features indicating build.properties, qualifier = context +#forceContextQualifier= + +#Enable / disable the generation of a suffix for the features that use .qualifier. +#The generated suffix is computed according to the content of the feature +#generateFeatureVersionSuffix=true + +############# BASE CONTROL ############# +# Settings for the base Eclipse components and Java class libraries +# against which you are building. +# Base location for anything the build needs to compile against. For example, +# in most RCP app or a plug-in, the baseLocation should be the location of a previously +# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack. + +base= +#baseLocation=${base}/eclipse +baseLocation=@BASE_LOCATION@ +#Os/Ws/Arch/nl of the eclipse specified by baseLocation +baseos=@BASE_OS@ +basews=@BASE_WS@ +basearch=@BASE_ARCH@ + +#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built +filteredDependencyCheck=false + +#pluginPath is a list of locations in which to find plugins and features. This list is separated by the platform file separator (; or :) +#a location is one of: +#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo +#- a directory that contains a /plugins or /features subdirectory +#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml +#pluginPath= + +skipBase=true +eclipseURL= +eclipseBuildId= +eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip + + +############# MAP FILE CONTROL ################ +# This section defines CVS tags to use when fetching the map files from the repository. +# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml + +skipMaps=true +mapsRepo=:pserver:anonymous@example.com/path/to/repo +mapsRoot=path/to/maps +mapsCheckoutTag=HEAD + +#tagMaps=true +mapsTagTag=v${buildId} + + +############ REPOSITORY CONTROL ############### +# This section defines properties parameterizing the repositories where plugins, fragments +# bundles and features are being obtained from. + +# The tags to use when fetching elements to build. +# By default thebuilder will use whatever is in the maps. +# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the +# overriding value +# For example fetchTag=CVS=HEAD, SVN=v20050101 +# fetchTag=HEAD +skipFetch=true + + +############# JAVA COMPILER OPTIONS ############## +# The location of the Java jars to compile against. Typically the rt.jar for your JDK/JRE +#bootclasspath=${java.home}/lib/rt.jar + +# specific JRE locations to compile against. These values are used to compile bundles specifying a +# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support +#CDC-1.0/Foundation-1.0= /path/to/rt.jar +#CDC-1.1/Foundation-1.1= +#OSGi/Minimum-1.0= +#OSGi/Minimum-1.1= +#JRE-1.1= +#J2SE-1.2= +#J2SE-1.3= +#J2SE-1.4= +#J2SE-1.5= +#JavaSE-1.6= +#PersonalJava-1.1= +#PersonalJava-1.2= +#CDC-1.0/PersonalBasis-1.0= +#CDC-1.0/PersonalJava-1.0= +#CDC-1.1/PersonalBasis-1.1= +#CDC-1.1/PersonalJava-1.1= + +# Specify the output format of the compiler log when eclipse jdt is used +logExtension=.log + +# Whether or not to include debug info in the output jars +javacDebugInfo=true + +# Whether or not to fail the build if there are compiler errors +javacFailOnError=true + +# Enable or disable verbose mode of the compiler +javacVerbose=true + +# Extra arguments for the compiler. These are specific to the java compiler being used. +compilerArg=-inlineJSR -enableJavadoc -encoding ISO-8859-1 + +# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties +javacSource=1.5 + +# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties. +javacTarget=1.5 + +individualSourceBundles=true diff --git a/eclipse-build/pdebuild/customTargets.xml b/eclipse-build/pdebuild/customTargets.xml new file mode 100644 index 00000000000..ae4266d683c --- /dev/null +++ b/eclipse-build/pdebuild/customTargets.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/.classpath b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.classpath new file mode 100644 index 00000000000..45f024e850e --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/.project b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.project new file mode 100644 index 00000000000..3beefc76a2c --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.project @@ -0,0 +1,28 @@ + + + com.ibm.icu.base.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..9e89b12a05c --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,78 @@ +#Thu Jan 13 17:45:06 EST 2011 +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.deadCode=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..d57be9d85cd --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,3 @@ +#Thu Dec 14 11:51:01 EST 2006 +eclipse.preferences.version=1 +internal.default.compliance=default diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/META-INF/MANIFEST.MF b/eclipse-build/plugins.template/com.ibm.icu.base.tests/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..fccd74066e3 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: com.ibm.icu.base.tests +Bundle-Version: @BUILD_VERSION@ +Bundle-Vendor: %providerName +Fragment-Host: com.ibm.icu.base +Bundle-Copyright: @COPYRIGHT@ +Require-Bundle: org.junit +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/build.properties b/eclipse-build/plugins.template/com.ibm.icu.base.tests/build.properties new file mode 100644 index 00000000000..b6bb464ebf8 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/build.properties @@ -0,0 +1,17 @@ +############################################################################### +# Copyright (c) 2000, 2011 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +source.. = src/ +output.. = bin/ +bin.includes = .,\ + about.html,\ + about_files/,\ + plugin.properties,\ + META-INF/ diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/plugin.properties b/eclipse-build/plugins.template/com.ibm.icu.base.tests/plugin.properties new file mode 100644 index 00000000000..a991df0374d --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/plugin.properties @@ -0,0 +1,12 @@ +############################################################################### +# Copyright (c) 2011 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +pluginName = International Components for Unicode for Java (ICU4J) Replacement plug-in Tests +providerName = IBM Corporation \ No newline at end of file diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java new file mode 100644 index 00000000000..3db154648c4 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java @@ -0,0 +1,359 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.text.CharacterIterator; +import java.text.StringCharacterIterator; +import java.util.Locale; + +import com.ibm.icu.text.BreakIterator; +import com.ibm.icu.util.ULocale; + +public class BreakIteratorTest extends ICUTestCase { + // ICU behaves a bit differently with this text, but the tested values aren't + // affected. If Java changes behavior they might need to change. + private static final String text = "Mr. and Mrs. Mumblety-Peg paid $35.97 for a new 12\" cockatoo. " + + "When they got home they both cooed \"Isn't it lovely?\" and sighed softly. " + + "\"Let's name it u\u0308\u5098!\" they said with glee."; + private static int pos = text.indexOf("sn't"); + private static BreakIterator cbr; + private static BreakIterator wbr; + private static BreakIterator lbr; + private static BreakIterator sbr; + + static { + cbr = BreakIterator.getCharacterInstance(); + cbr.setText(text); + wbr = BreakIterator.getWordInstance(); + wbr.setText(text); + lbr = BreakIterator.getLineInstance(); + lbr.setText(text); + sbr = BreakIterator.getSentenceInstance(); + sbr.setText(text); + + // diagnostic + // dump(cbr); + // dump(wbr); + // dump(lbr); + // dump(sbr); + } + + // private static void dump(BreakIterator bi) { + // for (int ix = bi.first(), lim = text.length(); ix != lim;) { + // int nx = bi.next(); + // if (nx < 0) nx = lim; + // System.out.println(Integer.toString(ix) + ": " + text.substring(ix, nx)); + // ix = nx; + // } + // } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.hashCode()' + */ + public void testHashCode() { + BreakIterator br = BreakIterator.getWordInstance(); + br.setText(text); + BreakIterator brne = BreakIterator.getWordInstance(); + brne.setText(text + "X"); + wbr.first(); + testEHCS(br, wbr, brne); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.BreakIterator(BreakIterator)' + */ + public void testBreakIterator() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.first()' + */ + public void testFirst() { + assertEquals(0, cbr.first()); + assertEquals(0, wbr.first()); + assertEquals(0, lbr.first()); + assertEquals(0, sbr.first()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.last()' + */ + public void testLast() { + assertEquals(text.length(), cbr.last()); + assertEquals(text.length(), wbr.last()); + assertEquals(text.length(), lbr.last()); + assertEquals(text.length(), sbr.last()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.next(int)' + */ + public void testNextInt() { + cbr.first(); + wbr.first(); + lbr.first(); + sbr.first(); + assertEquals(2, cbr.next(2)); + assertEquals(3, wbr.next(2)); + assertEquals(8, lbr.next(2)); + assertEquals(62, sbr.next(2)); + + cbr.last(); + wbr.last(); + lbr.last(); + sbr.last(); + assertEquals(174, cbr.next(-2)); + assertEquals(171, wbr.next(-2)); + assertEquals(166, lbr.next(-2)); + assertEquals(135, sbr.next(-2)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.next()' + */ + public void testNext() { + cbr.first(); + wbr.first(); + lbr.first(); + sbr.first(); + assertEquals(1, cbr.next()); + assertEquals(2, wbr.next()); + assertEquals(4, lbr.next()); + assertEquals(13, sbr.next()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.previous()' + */ + public void testPrevious() { + cbr.last(); + wbr.last(); + lbr.last(); + sbr.last(); + assertEquals(175, cbr.previous()); + assertEquals(175, wbr.previous()); + assertEquals(171, lbr.previous()); + assertEquals(156, sbr.previous()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.following(int)' + */ + public void testFollowing() { + assertEquals(100, cbr.following(pos)); + assertEquals(103, wbr.following(pos)); + assertEquals(104, lbr.following(pos)); + assertEquals(116, sbr.following(pos)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.preceding(int)' + */ + public void testPreceding() { + assertEquals(98, cbr.preceding(pos)); + assertEquals(98, wbr.preceding(pos)); + assertEquals(97, lbr.preceding(pos)); + assertEquals(62, sbr.preceding(pos)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.isBoundary(int)' + */ + public void testIsBoundary() { + assertTrue(cbr.isBoundary(pos)); + assertFalse(wbr.isBoundary(pos)); + assertFalse(lbr.isBoundary(pos)); + assertFalse(sbr.isBoundary(pos)); + + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.current()' + */ + public void testCurrent() { + cbr.following(pos); + wbr.following(pos); + lbr.following(pos); + sbr.following(pos); + assertEquals(100, cbr.current()); + assertEquals(103, wbr.current()); + assertEquals(104, lbr.current()); + assertEquals(116, sbr.current()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getText()' + */ + public void testGetText() { + CharacterIterator ci = cbr.getText(); + StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex()); + for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) { + buf.append(c); + } + String result = buf.toString(); + assertEquals(text, result); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.setText(String)' + */ + public void testSetTextString() { + // implicitly tested + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.setText(CharacterIterator)' + */ + public void testSetTextCharacterIterator() { + CharacterIterator ci = new StringCharacterIterator(text, pos); + BreakIterator bi = BreakIterator.getWordInstance(); + bi.setText(ci); + assertEquals(2, bi.next()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance()' + */ + public void testGetWordInstance() { + // implicitly tested + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(Locale)' + */ + public void testGetWordInstanceLocale() { + assertNotNull(BreakIterator.getWordInstance(Locale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(ULocale)' + */ + public void testGetWordInstanceULocale() { + assertNotNull(BreakIterator.getWordInstance(ULocale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance()' + */ + public void testGetLineInstance() { + // implicitly tested + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(Locale)' + */ + public void testGetLineInstanceLocale() { + assertNotNull(BreakIterator.getLineInstance(Locale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(ULocale)' + */ + public void testGetLineInstanceULocale() { + assertNotNull(BreakIterator.getLineInstance(ULocale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance()' + */ + public void testGetCharacterInstance() { + // implicitly tested + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(Locale)' + */ + public void testGetCharacterInstanceLocale() { + assertNotNull(BreakIterator.getCharacterInstance(Locale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(ULocale)' + */ + public void testGetCharacterInstanceULocale() { + assertNotNull(BreakIterator.getCharacterInstance(ULocale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance()' + */ + public void testGetSentenceInstance() { + // implicitly tested + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(Locale)' + */ + public void testGetSentenceInstanceLocale() { + assertNotNull(BreakIterator.getSentenceInstance(Locale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(ULocale)' + */ + public void testGetSentenceInstanceULocale() { + assertNotNull(BreakIterator.getSentenceInstance(ULocale.JAPAN)); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance()' + */ + public void testGetTitleInstance() { + // not implemented + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(Locale)' + */ + public void testGetTitleInstanceLocale() { + // not implemented + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(ULocale)' + */ + public void testGetTitleInstanceULocale() { + // not implemented + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableLocales()' + */ + public void testGetAvailableLocales() { + assertNotNull(BreakIterator.getAvailableLocales()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableULocales()' + */ + public void testGetAvailableULocales() { + assertNotNull(BreakIterator.getAvailableULocales()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.toString()' + */ + public void testToString() { + assertNotNull(cbr.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.clone()' + */ + public void testClone() { + // see testHashCode + } + + /* + * Test method for 'com.ibm.icu.text.BreakIterator.equals(Object)' + */ + public void testEqualsObject() { + // see testHashCode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java new file mode 100644 index 00000000000..3237a940363 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java @@ -0,0 +1,565 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.text.DateFormat; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.TimeZone; +import com.ibm.icu.util.ULocale; + +public class CalendarTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.util.Calendar.hashCode()' + */ + public void testHashCode() { + Calendar cal1 = Calendar.getInstance(); + Calendar cal2 = Calendar.getInstance(); + Calendar cal3 = Calendar.getInstance(); + + long t = System.currentTimeMillis(); + cal1.setTimeInMillis(t); + cal2.setTimeInMillis(t); + cal3.setTimeInMillis(t); + + cal3.setMinimalDaysInFirstWeek(cal3.getMinimalDaysInFirstWeek()+1); + testEHCS(cal1, cal2, cal3); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.Calendar(Calendar)' + */ + public void testCalendar() { + // tested implicitly everywhere + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance()' + */ + public void testGetInstance() { + // tested by testEHCS + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone)' + */ + public void testGetInstanceTimeZone() { + TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); + Calendar cal = Calendar.getInstance(tz); + assertNotNull(cal); + assertNotNull(cal.getTime()); + assertEquals(tz, cal.getTimeZone()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance(Locale)' + */ + public void testGetInstanceLocale() { + Calendar cal = Calendar.getInstance(Locale.US); + assertNotNull(cal); + assertNotNull(cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance(ULocale)' + */ + public void testGetInstanceULocale() { + Calendar cal = Calendar.getInstance(ULocale.US); + assertNotNull(cal); + assertNotNull(cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, Locale)' + */ + public void testGetInstanceTimeZoneLocale() { + TimeZone tz = TimeZone.getTimeZone("America/New_York"); + Calendar cal = Calendar.getInstance(tz, Locale.US); + assertNotNull(cal); + assertNotNull(cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, ULocale)' + */ + public void testGetInstanceTimeZoneULocale() { + TimeZone tz = TimeZone.getTimeZone("America/New_York"); + Calendar cal = Calendar.getInstance(tz, ULocale.US); + assertNotNull(cal); + assertNotNull(cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getAvailableLocales()' + */ + public void testGetAvailableLocales() { + assertNotNull(Calendar.getAvailableLocales()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getAvailableULocales()' + */ + public void testGetAvailableULocales() { + assertNotNull(Calendar.getAvailableULocales()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getTime()' + */ + public void testGetTime() { + Calendar cal = Calendar.getInstance(); + assertNotNull(cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setTime(Date)' + */ + public void testSetTime() { + Calendar cal = Calendar.getInstance(); + cal.clear(); + cal.set(2006, 0, 20, 9, 30, 0); + Date date = cal.getTime(); + cal = Calendar.getInstance(); + cal.setTime(date); + assertEquals(date, cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getTimeInMillis()' + */ + public void testGetTimeInMillis() { + Calendar cal = Calendar.getInstance(); + assertTrue(0 != cal.getTimeInMillis()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setTimeInMillis(long)' + */ + public void testSetTimeInMillis() { + Calendar cal = Calendar.getInstance(); + cal.clear(); + cal.set(2006, 0, 20, 9, 30, 0); + long millis = cal.getTimeInMillis(); + Date date = cal.getTime(); + + cal = Calendar.getInstance(); + cal.setTimeInMillis(millis); + + assertEquals(date, cal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.get(int)' + */ + public void testGet() { + Calendar cal = Calendar.getInstance(); + cal.clear(); + cal.set(2006, 0, 20, 9, 30, 0); + assertEquals(0, cal.get(Calendar.MONTH)); + assertEquals(20, cal.get(Calendar.DAY_OF_MONTH)); + assertEquals(30, cal.get(Calendar.MINUTE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.set(int, int)' + */ + public void testSetIntInt() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 1977); + assertEquals(1977, cal.get(Calendar.YEAR)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int)' + */ + public void testSetIntIntInt() { + Calendar cal = Calendar.getInstance(); + cal.set(1997, 9, 15); + assertEquals(15, cal.get(Calendar.DATE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int)' + */ + public void testSetIntIntIntIntInt() { + Calendar cal = Calendar.getInstance(); + cal.set(1997, 9, 15, 14, 25); + assertEquals(25, cal.get(Calendar.MINUTE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int, int)' + */ + public void testSetIntIntIntIntIntInt() { + Calendar cal = Calendar.getInstance(); + cal.set(1997, 9, 15, 14, 25, 51); + assertEquals(51, cal.get(Calendar.SECOND)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.clear()' + */ + public void testClear() { + Calendar cal = Calendar.getInstance(); + cal.set(1997, 9, 15, 14, 25, 51); + cal.clear(); + assertEquals(0, cal.get(Calendar.MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.clear(int)' + */ + public void testClearInt() { + Calendar cal = Calendar.getInstance(); + cal.set(1997, 9, 15, 14, 25, 51); + assertTrue(cal.isSet(Calendar.DAY_OF_MONTH)); + cal.clear(Calendar.DAY_OF_MONTH); + assertFalse(cal.isSet(Calendar.DAY_OF_MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.isSet(int)' + */ + public void testIsSet() { + // see testClearInt + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.equals(Object)' + */ + public void testEqualsObject() { + // tested by testHashCode + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.isEquivalentTo(Calendar)' + */ + public void testIsEquivalentTo() { + Calendar cal = Calendar.getInstance(); + Calendar cal2 = Calendar.getInstance(); + cal2.set(1994, 6, 21, 8, 7); + assertTrue(cal.isEquivalentTo(cal2)); + cal.setTimeZone(TimeZone.getTimeZone("CST")); + cal2.setTimeZone(TimeZone.getTimeZone("PDT")); + assertFalse(cal.isEquivalentTo(cal2)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.before(Object)' + */ + public void testBefore() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 1990); + assertTrue(cal.before(new Date())); + assertTrue(cal.before(Calendar.getInstance())); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.after(Object)' + */ + public void testAfter() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 3058); + assertTrue(cal.after(new Date())); + assertTrue(cal.after(Calendar.getInstance())); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getActualMaximum(int)' + */ + public void testGetActualMaximum() { + Calendar cal = Calendar.getInstance(Locale.US); + assertEquals(11, cal.getActualMaximum(Calendar.MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getActualMinimum(int)' + */ + public void testGetActualMinimum() { + Calendar cal = Calendar.getInstance(Locale.US); + assertEquals(0, cal.getActualMinimum(Calendar.MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.roll(int, boolean)' + */ + public void testRollIntBoolean() { + Calendar cal = Calendar.getInstance(Locale.US); + cal.set(1997, 1, 27); + cal.roll(Calendar.DATE, true); + assertEquals(28, cal.get(Calendar.DATE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.roll(int, int)' + */ + public void testRollIntInt() { + Calendar cal = Calendar.getInstance(Locale.US); + cal.set(1997, 1, 27); + cal.roll(Calendar.DATE, 3); + assertEquals(2, cal.get(Calendar.DATE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.add(int, int)' + */ + public void testAdd() { + Calendar cal = Calendar.getInstance(Locale.US); + cal.set(1997, 1, 27); + cal.add(Calendar.DATE, 3); + assertEquals(2, cal.get(Calendar.DATE)); + assertEquals(2, cal.get(Calendar.MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(Locale)' + */ + public void testGetDisplayNameLocale() { + Calendar cal = Calendar.getInstance(); + assertEquals("Gregorian Calendar", cal.getDisplayName(Locale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(ULocale)' + */ + public void testGetDisplayNameULocale() { + Calendar cal = Calendar.getInstance(); + assertEquals("Gregorian Calendar", cal.getDisplayName(ULocale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.compareTo(Calendar)' + */ + public void testCompareToCalendar() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 1990); + assertTrue(0 > cal.compareTo(Calendar.getInstance())); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.compareTo(Object)' + */ + public void testCompareToObject() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 1990); + assertTrue(0 > cal.compareTo(Calendar.getInstance())); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, Locale)' + */ + public void testGetDateTimeFormatIntIntLocale() { + Calendar cal = Calendar.getInstance(); + cal.set(1990, 8, 16, 20, 3); + DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, Locale.US); + assertEquals("September 16, 1990 8:03 PM", df.format(cal)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, ULocale)' + */ + public void testGetDateTimeFormatIntIntULocale() { + Calendar cal = Calendar.getInstance(); + cal.set(1990, 8, 16, 20, 3); + DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, ULocale.US); + assertEquals("September 16, 1990 8:03 PM", df.format(cal)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.fieldDifference(Date, int)' + */ + public void testFieldDifference() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.DAY_OF_MONTH, 0); + Date date = cal.getTime(); + cal.add(Calendar.DAY_OF_MONTH, 5); + assertEquals(-5, cal.fieldDifference(date, Calendar.DAY_OF_MONTH)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getTimeZone()' + */ + public void testGetTimeZone() { + Calendar cal = Calendar.getInstance(); + assertNotNull(cal.getTimeZone()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setTimeZone(TimeZone)' + */ + public void testSetTimeZone() { + Calendar cal = Calendar.getInstance(); + TimeZone value1 = cal.getTimeZone(); + String tzn = "PDT".equals(value1.getID()) ? "CST" : "PDT"; + TimeZone value2 = TimeZone.getTimeZone(tzn); + cal.setTimeZone(value2); + TimeZone result = cal.getTimeZone(); + assertNotEqual(value1, result); + assertEquals(value2, result); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setLenient(boolean)' + */ + public void testSetLenient() { + Calendar cal = Calendar.getInstance(); + boolean lenient = cal.isLenient(); + cal.setLenient(!lenient); + assertFalse(lenient == cal.isLenient()); + + // not testing if it has the expected effect + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.isLenient()' + */ + public void testIsLenient() { + // tested by testSetLenient + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setFirstDayOfWeek(int)' + */ + public void testSetFirstDayOfWeek() { + Calendar cal = Calendar.getInstance(); + int firstDay = cal.getFirstDayOfWeek(); + cal.setFirstDayOfWeek(firstDay+1); + assertEquals(firstDay+1, cal.getFirstDayOfWeek()); + + // don't test functionality + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getFirstDayOfWeek()' + */ + public void testGetFirstDayOfWeek() { + // tested by testSetFirstDayOfWeek + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.setMinimalDaysInFirstWeek(int)' + */ + public void testSetMinimalDaysInFirstWeek() { + Calendar cal = Calendar.getInstance(); + int firstDay = cal.getMinimalDaysInFirstWeek(); + cal.setMinimalDaysInFirstWeek(firstDay+1); + assertEquals(firstDay+1, cal.getMinimalDaysInFirstWeek()); + + // don't test functionality + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getMinimalDaysInFirstWeek()' + */ + public void testGetMinimalDaysInFirstWeek() { + // tested by testSetMinimalDaysInFirstWeek + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getMinimum(int)' + */ + public void testGetMinimum() { + Calendar cal = Calendar.getInstance(); + assertEquals(1, cal.getMinimum(Calendar.DAY_OF_WEEK)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getMaximum(int)' + */ + public void testGetMaximum() { + Calendar cal = Calendar.getInstance(); + assertEquals(7, cal.getMaximum(Calendar.DAY_OF_WEEK)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getGreatestMinimum(int)' + */ + public void testGetGreatestMinimum() { + Calendar cal = Calendar.getInstance(); + assertEquals(1, cal.getGreatestMinimum(Calendar.DATE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getLeastMaximum(int)' + */ + public void testGetLeastMaximum() { + Calendar cal = Calendar.getInstance(); + assertEquals(28, cal.getLeastMaximum(Calendar.DATE)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getDayOfWeekType(int)' + */ + public void testGetDayOfWeekType() { + Calendar cal = Calendar.getInstance(Locale.US); + assertEquals(Calendar.WEEKDAY, cal.getDayOfWeekType(Calendar.FRIDAY)); + assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY)); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getWeekendTransition(int)' + */ + public void testGetWeekendTransition() { + Calendar cal = Calendar.getInstance(Locale.US); + try { + cal.getWeekendTransition(Calendar.WEEKEND_ONSET); + fail("expected IllegalArgumentException from getWeekendTransition"); + } + catch (UnsupportedOperationException e) { + // ok + } + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)' + */ + public void testIsWeekendDate() { + Calendar cal = Calendar.getInstance(Locale.US); + cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); + assertTrue(cal.isWeekend(cal.getTime())); + cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + assertFalse(cal.isWeekend(cal.getTime())); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.isWeekend()' + */ + public void testIsWeekend() { + Calendar cal = Calendar.getInstance(Locale.US); + cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); + assertTrue(cal.isWeekend()); + cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + assertFalse(cal.isWeekend()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.clone()' + */ + public void testClone() { + // tested by testHashCode + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.toString()' + */ + public void testToString() { + Calendar cal = Calendar.getInstance(); + assertNotNull(cal.toString()); + } + + /* + * Test method for 'com.ibm.icu.util.Calendar.getType()' + */ + public void testGetType() { + Calendar cal = Calendar.getInstance(Locale.US); + assertEquals("gregorian", cal.getType()); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java new file mode 100644 index 00000000000..a1afd34a424 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java @@ -0,0 +1,102 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import com.ibm.icu.text.CollationKey; +import com.ibm.icu.text.Collator; + +public class CollationKeyTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.text.CollationKey.hashCode()' + */ + public void testHashCode() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + CollationKey k2 = c.getCollationKey("this"); + c.setStrength(Collator.TERTIARY); + CollationKey kn = c.getCollationKey("this"); + testEHCS(k1, k2, kn); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.CollationKey(CollationKey)' + */ + public void testCollationKey() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.compareTo(CollationKey)' + */ + public void testCompareToCollationKey() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + CollationKey k2 = c.getCollationKey("this"); + c.setStrength(Collator.TERTIARY); + CollationKey k3 = c.getCollationKey("this"); + assertTrue(0 == k1.compareTo(k2)); + assertFalse(0 == k1.compareTo(k3)); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.compareTo(Object)' + */ + public void testCompareToObject() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + CollationKey k2 = c.getCollationKey("this"); + assertTrue(0 == k1.compareTo(k2)); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.equals(Object)' + */ + public void testEqualsObject() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + CollationKey k2 = c.getCollationKey("this"); + assertTrue(k1.equals((Object)k2)); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.toString()' + */ + public void testToString() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + assertNotNull(k1.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.getSourceString()' + */ + public void testGetSourceString() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + assertEquals("This", k1.getSourceString()); + } + + /* + * Test method for 'com.ibm.icu.text.CollationKey.toByteArray()' + */ + public void testToByteArray() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey("This"); + byte[] key = k1.toByteArray(); + assertNotNull(key); + assertTrue(0 < key.length); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java new file mode 100644 index 00000000000..28f003d7cc6 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java @@ -0,0 +1,205 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Locale; + +import com.ibm.icu.text.CollationKey; +import com.ibm.icu.text.Collator; +import com.ibm.icu.util.ULocale; + +public class CollatorTest extends ICUTestCase { + private static final String s1 = "Fu\u0308nf"; // capital F + u + diaresis + private static final String s2 = "fu\u0308nf"; // u + diaresis + private static final String s3 = "f\u00fcnf"; // u-umlaut + private static final String s4 = "fu\u0308\u0316nf"; // u + diaresis above + grave below + private static final String s5 = "fu\u0316\u0308nf"; // u + grave below + diaresis above + + /* + * Test method for 'com.ibm.icu.text.Collator.hashCode()' + */ + public void testHashCode() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.SECONDARY); + Collator c2 = Collator.getInstance(); + c2.setStrength(Collator.SECONDARY); + Collator cn = Collator.getInstance(); + cn.setStrength(Collator.TERTIARY); + testEHCS(c, c2, cn); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.Collator(Collator)' + */ + public void testCollator() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.Collator.setStrength(int)' + */ + public void testSetStrength() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + assertTrue(0 == c.compare(s1, s2)); + c.setStrength(Collator.SECONDARY); + assertTrue(0 == c.compare(s1, s2)); + c.setStrength(Collator.TERTIARY); + assertTrue(0 < c.compare(s1, s2)); + assertTrue(0 == c.compare(s2, s3)); + c.setStrength(Collator.QUATERNARY); + assertTrue(0 > c.compare(s2, s3)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.setDecomposition(int)' + */ + public void testSetDecomposition() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.TERTIARY); + assertTrue(0 != c.compare(s4, s5)); + c.setDecomposition(Collator.IDENTICAL); + assertTrue(0 == c.compare(s4, s5)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getInstance()' + */ + public void testGetInstance() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getInstance(ULocale)' + */ + public void testGetInstanceULocale() { + Collator c = Collator.getInstance(ULocale.GERMANY); + assertNotNull(c); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getInstance(Locale)' + */ + public void testGetInstanceLocale() { + Collator c = Collator.getInstance(Locale.GERMANY); + assertNotNull(c); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getAvailableLocales()' + */ + public void testGetAvailableLocales() { + assertNotNull(Collator.getAvailableLocales()); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getAvailableULocales()' + */ + public void testGetAvailableULocales() { + assertNotNull(Collator.getAvailableULocales()); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getKeywords()' + */ + public void testGetKeywords() { + assertEquals(0, Collator.getKeywords().length); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getKeywordValues(String)' + */ + public void testGetKeywordValues() { + assertEquals(0, Collator.getKeywordValues("").length); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getStrength()' + */ + public void testGetStrength() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + assertEquals(Collator.PRIMARY, c.getStrength()); + c.setStrength(Collator.SECONDARY); + assertEquals(Collator.SECONDARY, c.getStrength()); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getDecomposition()' + */ + public void testGetDecomposition() { + Collator c = Collator.getInstance(); + c.setDecomposition(Collator.CANONICAL_DECOMPOSITION); + assertEquals(Collator.CANONICAL_DECOMPOSITION, c.getDecomposition()); + c.setDecomposition(Collator.NO_DECOMPOSITION); + assertEquals(Collator.NO_DECOMPOSITION, c.getDecomposition()); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.compare(Object, Object)' + */ + public void testCompareObjectObject() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + assertTrue(0 == c.compare((Object)s1, (Object)s2)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.equals(String, String)' + */ + public void testEqualsStringString() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + assertTrue(c.equals(s1, s2)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.compare(String, String)' + */ + public void testCompareStringString() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + assertTrue(0 == c.compare(s1, s2)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.getCollationKey(String)' + */ + public void testGetCollationKey() { + Collator c = Collator.getInstance(); + c.setStrength(Collator.PRIMARY); + CollationKey k1 = c.getCollationKey(s1); + CollationKey k2 = c.getCollationKey(s2); + assertTrue(k1.equals(k2)); + c.setStrength(Collator.TERTIARY); + k1 = c.getCollationKey(s1); + k2 = c.getCollationKey(s2); + assertFalse(k1.equals(k2)); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.toString()' + */ + public void testToString() { + assertNotNull(Collator.getInstance().toString()); + } + + /* + * Test method for 'com.ibm.icu.text.Collator.clone()' + */ + public void testClone() { + // tested above + } + + /* + * Test method for 'com.ibm.icu.text.Collator.equals(Object)' + */ + public void testEqualsObject() { + // tested above + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java new file mode 100644 index 00000000000..4636e696dcb --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java @@ -0,0 +1,257 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Locale; + +import com.ibm.icu.text.DateFormatSymbols; +import com.ibm.icu.util.ULocale; + +public class DateFormatSymbolsTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.hashCode()' + */ + public void testHashCode() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + DateFormatSymbols dfs2 = new DateFormatSymbols(ULocale.US); + DateFormatSymbols dfsn = new DateFormatSymbols(Locale.US); + dfsn.setAmPmStrings(new String[] { "sw", "xw" }); + testEHCS(dfs, dfs2, dfsn); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(DateFormatSymbols)' + */ + public void testDateFormatSymbolsDateFormatSymbols() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols()' + */ + public void testDateFormatSymbols() { + DateFormatSymbols dfs = new DateFormatSymbols(); + assertNotNull(dfs.getWeekdays()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(Locale)' + */ + public void testDateFormatSymbolsLocale() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getWeekdays()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(ULocale)' + */ + public void testDateFormatSymbolsULocale() { + DateFormatSymbols dfs = new DateFormatSymbols(ULocale.US); + assertNotNull(dfs.getWeekdays()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getEras()' + */ + public void testGetEras() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getEras()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setEras(String[])' + */ + public void testSetEras() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getEras(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setEras(newvalue); + String[] result = dfs.getEras(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getMonths()' + */ + public void testGetMonths() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getMonths()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setMonths(String[])' + */ + public void testSetMonths() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getMonths(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setMonths(newvalue); + String[] result = dfs.getMonths(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortMonths()' + */ + public void testGetShortMonths() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getShortMonths()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortMonths(String[])' + */ + public void testSetShortMonths() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getShortMonths(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setShortMonths(newvalue); + String[] result = dfs.getShortMonths(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getWeekdays()' + */ + public void testGetWeekdays() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getShortMonths()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setWeekdays(String[])' + */ + public void testSetWeekdays() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getWeekdays(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setWeekdays(newvalue); + String[] result = dfs.getWeekdays(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortWeekdays()' + */ + public void testGetShortWeekdays() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getShortWeekdays()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortWeekdays(String[])' + */ + public void testSetShortWeekdays() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getShortWeekdays(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setShortWeekdays(newvalue); + String[] result = dfs.getShortWeekdays(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getAmPmStrings()' + */ + public void testGetAmPmStrings() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getAmPmStrings()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setAmPmStrings(String[])' + */ + public void testSetAmPmStrings() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[] oldvalue = dfs.getAmPmStrings(); + String[] newvalue = (String[])oldvalue.clone(); + newvalue[0] = newvalue[0] + "!"; + dfs.setAmPmStrings(newvalue); + String[] result = dfs.getAmPmStrings(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getZoneStrings()' + */ + public void testGetZoneStrings() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getZoneStrings()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setZoneStrings(String[][])' + */ + public void testSetZoneStrings() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String[][] oldvalue = dfs.getZoneStrings(); + String[][] newvalue = (String[][])cloneComplex(oldvalue); + newvalue[0][0] = newvalue[0][0] + "!"; + dfs.setZoneStrings(newvalue); + String[][] result = dfs.getZoneStrings(); + assertArraysNotEqual(oldvalue, result); + assertArraysEqual(newvalue, result); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.getLocalPatternChars()' + */ + public void testGetLocalPatternChars() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.getLocalPatternChars()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.setLocalPatternChars(String)' + */ + public void testSetLocalPatternChars() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + String pat = dfs.getLocalPatternChars(); + StringBuffer buf = new StringBuffer(pat); + buf.setCharAt(0, (char)(pat.charAt(0) + 1)); + String pat2 = buf.toString(); + dfs.setLocalPatternChars(pat2); + String pat3 = dfs.getLocalPatternChars(); + assertNotEqual(pat, pat2); + assertEquals(pat2, pat3); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.toString()' + */ + public void testToString() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + assertNotNull(dfs.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.clone()' + */ + public void testClone() { + // tested by testHashCode + } + + /* + * Test method for 'com.ibm.icu.text.DateFormatSymbols.equals(Object)' + */ + public void testEqualsObject() { + // tested by testHashCode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java new file mode 100644 index 00000000000..1e1e7e9815b --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java @@ -0,0 +1,454 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.text.FieldPosition; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.text.DateFormat; +import com.ibm.icu.text.NumberFormat; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.TimeZone; +import com.ibm.icu.util.ULocale; + +public class DateFormatTest extends ICUTestCase { + private Calendar aCal; + private Calendar anESTCal; + private Date aDate; + private String aDateString; + private String aTimeString; + private String anESTTimeString; + private String aDateTimeString; + private String aShortDateTimeString; + private String aDefaultESTDateTimeString; + private DateFormat aDF; + private StringBuffer aBuf; + private FieldPosition anFP; + private FieldPosition anFPField; + + private static int YEAR_POS_START = 8; + private static int YEAR_POS_END = 12; + + protected void setUp() throws Exception { + super.setUp(); + + java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(); + gcal.clear(); + gcal.set(java.util.GregorianCalendar.YEAR, 1990); + gcal.set(java.util.GregorianCalendar.MONTH, java.util.GregorianCalendar.DECEMBER); + gcal.set(java.util.GregorianCalendar.DATE, 17); + gcal.set(java.util.GregorianCalendar.HOUR, 5); + gcal.set(java.util.GregorianCalendar.MINUTE, 17); + aCal = new Calendar(gcal); + anESTCal = Calendar.getInstance(); + anESTCal.setTimeZone(TimeZone.getTimeZone("EST")); + aDate = gcal.getTime(); + aDateString = "Dec 17, 1990"; // medium -- the default + aTimeString = "5:17:00 AM"; // medium + anESTTimeString = "8:17:00 AM"; + aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium + aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default + aShortDateTimeString = "12/17/90 5:17 AM"; // short, short + aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US); + aBuf = new StringBuffer(); + anFP = new FieldPosition(DateFormat.YEAR_FIELD); + anFPField = new FieldPosition(DateFormat.Field.YEAR); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.hashCode()' + */ + public final void testHashCode() { + DateFormat df = DateFormat.getInstance(); + DateFormat eq = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); + testEHCS(df, eq, aDF); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)' + */ + public final void testDateFormat() { + DateFormat df = new DateFormat(java.text.DateFormat.getInstance()); + assertEquals(DateFormat.getInstance(), df); + } + + private void assertEqualDateString(StringBuffer buf) { + assertEquals(aDateTimeString, buf.toString()); + } + + private void assertEqualDateString(String str) { + assertEquals(aDateTimeString, str); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)' + */ + public final void testFormatObjectStringBufferFieldPosition() { + assertEqualDateString(aDF.format(aDate, aBuf, anFP)); + assertEquals(YEAR_POS_START, anFP.getBeginIndex()); + assertEquals(YEAR_POS_END, anFP.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)' + */ + public final void testFormatCalendarStringBufferFieldPosition() { + assertEqualDateString(aDF.format(aCal, aBuf, anFP)); + assertEquals(YEAR_POS_START, anFP.getBeginIndex()); + assertEquals(YEAR_POS_END, anFP.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)' + */ + public final void testFormatDateStringBufferFieldPosition() { + assertEqualDateString(aDF.format(aDate, aBuf, anFPField)); + assertEquals(YEAR_POS_START, anFPField.getBeginIndex()); + assertEquals(YEAR_POS_END, anFPField.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.format(Date)' + */ + public final void testFormatDate() { + assertEqualDateString(aDF.format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.parse(String)' + */ + public final void testParseString() throws Exception { + assertEquals(aDate, aDF.parse(aDateTimeString)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)' + */ + public final void testParseStringCalendarParsePosition() { + aDF.parse(aDateTimeString, aCal, new ParsePosition(0)); + assertEquals(aDate, aCal.getTime()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)' + */ + public final void testParseStringParsePosition() { + assertEquals(aDate, aDF.parse(aDateTimeString, new ParsePosition(0))); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)' + */ + public final void testParseObjectStringParsePosition() { + assertEquals(aDate, aDF.parseObject(aDateTimeString, new ParsePosition(0))); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()' + */ + public final void testGetTimeInstance() { + assertEquals(aTimeString, DateFormat.getTimeInstance().format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)' + */ + public final void testGetTimeInstanceInt() { + assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)' + */ + public final void testGetTimeInstanceIntLocale() { + assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)' + */ + public final void testGetTimeInstanceIntULocale() { + assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()' + */ + public final void testGetDateInstance() { + assertEquals(aDateString, DateFormat.getDateInstance().format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)' + */ + public final void testGetDateInstanceInt() { + assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)' + */ + public final void testGetDateInstanceIntLocale() { + assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)' + */ + public final void testGetDateInstanceIntULocale() { + assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()' + */ + public final void testGetDateTimeInstance() { + assertEquals(aDateTimeString, DateFormat.getDateTimeInstance().format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)' + */ + public final void testGetDateTimeInstanceIntInt() { + assertEquals(aDateTimeString, + DateFormat.getDateTimeInstance( + DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)' + */ + public final void testGetDateTimeInstanceIntIntLocale() { + assertEquals(aDateTimeString, + DateFormat.getDateTimeInstance( + DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)' + */ + public final void testGetDateTimeInstanceIntIntULocale() { + assertEquals(aDateTimeString, + DateFormat.getDateTimeInstance( + DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getInstance()' + */ + public final void testGetInstance() { + assertEquals(aShortDateTimeString, DateFormat.getInstance().format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()' + */ + public final void testGetAvailableLocales() { + Locale[] locales = DateFormat.getAvailableLocales(); + if (ICUTestCase.testingWrapper) { + ICUTestCase.assertArraysEqual(java.text.DateFormat.getAvailableLocales(), locales); + } else { + assertNotNull(locales); + } + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)' + */ + public final void testSetCalendar() { + Calendar cal = Calendar.getInstance(); + cal.setTimeZone(TimeZone.getTimeZone("EST")); + DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); + df.setCalendar(cal); + assertEquals("8:17 AM", df.format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()' + */ + public final void testGetCalendar() { + Calendar cal = Calendar.getInstance(); + cal.setTimeZone(TimeZone.getTimeZone("EST")); + DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); + df.setCalendar(cal); + assertEquals(cal, df.getCalendar()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)' + */ + public final void testSetNumberFormat() { + // no easy way to test effect of setting the number format + NumberFormat nf = NumberFormat.getInstance(); + DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); + df.setNumberFormat(nf); + // note, can't actually USE the dateformat since it changes the calendar + assertEquals(nf, df.getNumberFormat()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()' + */ + public final void testGetNumberFormat() { + // see testSetNumberFormat + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)' + */ + public final void testSetTimeZone() { + DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); + TimeZone tz = TimeZone.getTimeZone("EST"); + df.setTimeZone(tz); + assertEquals("8:17 AM", df.format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()' + */ + public final void testGetTimeZone() { + DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); + TimeZone tz = TimeZone.getTimeZone("EST"); + df.setTimeZone(tz); + assertEquals(tz, df.getTimeZone()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)' + */ + public final void testSetLenient() throws Exception { + DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); + df.parse("2/31/90"); // succeeds, default is lenient + df.setLenient(false); + try { + df.parse("2/31/90"); + throw new Exception("strict parse should have failed"); + } + catch (ParseException e) { + // ok, this is what we expect + } + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.isLenient()' + */ + public final void testIsLenient() { + DateFormat df = DateFormat.getInstance(); + assertTrue(df.isLenient()); + df.setLenient(false); + assertFalse(df.isLenient()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)' + */ + public final void testGetDateInstanceCalendarIntLocale() { + assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)' + */ + public final void testGetDateInstanceCalendarIntULocale() { + assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)' + */ + public final void testGetTimeInstanceCalendarIntLocale() { + assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)' + */ + public final void testGetTimeInstanceCalendarIntULocale() { + assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)' + */ + public final void testGetDateTimeInstanceCalendarIntIntLocale() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)' + */ + public final void testGetDateTimeInstanceCalendarIntIntULocale() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)' + */ + public final void testGetInstanceCalendarLocale() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, Locale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)' + */ + public final void testGetInstanceCalendarULocale() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, ULocale.US).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)' + */ + public final void testGetInstanceCalendar() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)' + */ + public final void testGetDateInstanceCalendarInt() { + assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)' + */ + public final void testGetTimeInstanceCalendarInt() { + assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)' + */ + public final void testGetDateTimeInstanceCalendarIntInt() { + assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT).format(aDate)); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.toString()' + */ + public final void testToString() { + assertNotNull(aDF.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.clone()' + */ + public final void testClone() { + // see testHashCode + } + + /* + * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)' + */ + public final void testEqualsObject() { + // see testHashCode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java new file mode 100644 index 00000000000..22779a5b2b0 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java @@ -0,0 +1,344 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Locale; + +import com.ibm.icu.text.DecimalFormatSymbols; +import com.ibm.icu.util.ULocale; + +public class DecimalFormatSymbolsTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.hashCode()' + */ + public void testHashCode() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); + DecimalFormatSymbols dfs2 = new DecimalFormatSymbols(ULocale.US); + DecimalFormatSymbols dfsn = new DecimalFormatSymbols(Locale.FRANCE); + testEHCS(dfs, dfs2, dfsn); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(DecimalFormatSymbols)' + */ + public void testDecimalFormatSymbolsDecimalFormatSymbols() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols()' + */ + public void testDecimalFormatSymbols() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(); + assertTrue(-1 != dfs.getDecimalSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(Locale)' + */ + public void testDecimalFormatSymbolsLocale() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); + assertTrue(-1 != dfs.getDecimalSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(ULocale)' + */ + public void testDecimalFormatSymbolsULocale() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertTrue(-1 != dfs.getDecimalSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getZeroDigit()' + */ + public void testGetZeroDigit() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('0', dfs.getZeroDigit()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setZeroDigit(char)' + */ + public void testSetZeroDigit() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getZeroDigit(); + char value1 = (char)(value + 1); + dfs.setZeroDigit(value1); + char result = dfs.getZeroDigit(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getGroupingSeparator()' + */ + public void testGetGroupingSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals(',', dfs.getGroupingSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setGroupingSeparator(char)' + */ + public void testSetGroupingSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getGroupingSeparator(); + char value1 = (char)(value + 1); + dfs.setGroupingSeparator(value1); + char result = dfs.getGroupingSeparator(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDecimalSeparator()' + */ + public void testGetDecimalSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('.', dfs.getDecimalSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDecimalSeparator(char)' + */ + public void testSetDecimalSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getDecimalSeparator(); + char value1 = (char)(value + 1); + dfs.setDecimalSeparator(value1); + char result = dfs.getDecimalSeparator(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPerMill()' + */ + public void testGetPerMill() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('\u2030', dfs.getPerMill()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPerMill(char)' + */ + public void testSetPerMill() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getPerMill(); + char value1 = (char)(value + 1); + dfs.setPerMill(value1); + char result = dfs.getPerMill(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPercent()' + */ + public void testGetPercent() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('%', dfs.getPercent()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPercent(char)' + */ + public void testSetPercent() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getPercent(); + char value1 = (char)(value + 1); + dfs.setPercent(value1); + char result = dfs.getPercent(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDigit()' + */ + public void testGetDigit() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('#', dfs.getDigit()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDigit(char)' + */ + public void testSetDigit() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getDigit(); + char value1 = (char)(value + 1); + dfs.setDigit(value1); + char result = dfs.getDigit(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPatternSeparator()' + */ + public void testGetPatternSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals(';', dfs.getPatternSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPatternSeparator(char)' + */ + public void testSetPatternSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getPatternSeparator(); + char value1 = (char)(value + 1); + dfs.setPatternSeparator(value1); + char result = dfs.getPatternSeparator(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInfinity()' + */ + public void testGetInfinity() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals("\u221e", dfs.getInfinity()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInfinity(String)' + */ + public void testSetInfinity() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + String value = dfs.getInfinity(); + String value1 = value + "!"; + dfs.setInfinity(value1); + String result = dfs.getInfinity(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getNaN()' + */ + public void testGetNaN() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertNotNull(dfs.getNaN()); // java returns missing character??? + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setNaN(String)' + */ + public void testSetNaN() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + String value = dfs.getNaN(); + String value1 = value + "!"; + dfs.setNaN(value1); + String result = dfs.getNaN(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMinusSign()' + */ + public void testGetMinusSign() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('-', dfs.getMinusSign()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMinusSign(char)' + */ + public void testSetMinusSign() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getMinusSign(); + char value1 = (char)(value + 1); + dfs.setMinusSign(value1); + char result = dfs.getMinusSign(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getCurrencySymbol()' + */ + public void testGetCurrencySymbol() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals("$", dfs.getCurrencySymbol()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setCurrencySymbol(String)' + */ + public void testSetCurrencySymbol() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + String value = dfs.getCurrencySymbol(); + String value1 = value + "!"; + dfs.setCurrencySymbol(value1); + String result = dfs.getCurrencySymbol(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInternationalCurrencySymbol()' + */ + public void testGetInternationalCurrencySymbol() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals("USD", dfs.getInternationalCurrencySymbol()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInternationalCurrencySymbol(String)' + */ + public void testSetInternationalCurrencySymbol() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + String value = dfs.getInternationalCurrencySymbol(); + String value1 = value + "!"; + dfs.setInternationalCurrencySymbol(value1); + String result = dfs.getInternationalCurrencySymbol(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMonetaryDecimalSeparator()' + */ + public void testGetMonetaryDecimalSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + assertEquals('.', dfs.getMonetaryDecimalSeparator()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMonetaryDecimalSeparator(char)' + */ + public void testSetMonetaryDecimalSeparator() { + DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US); + char value = dfs.getMonetaryDecimalSeparator(); + char value1 = (char)(value + 1); + dfs.setMonetaryDecimalSeparator(value1); + char result = dfs.getMonetaryDecimalSeparator(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.clone()' + */ + public void testClone() { + // tested in testHashcode + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.equals(Object)' + */ + public void testEqualsObject() { + // tested in testHashcode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java new file mode 100644 index 00000000000..b438e2fb95f --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java @@ -0,0 +1,242 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Locale; + +import com.ibm.icu.text.DecimalFormat; +import com.ibm.icu.text.DecimalFormatSymbols; + +public class DecimalFormatTest extends ICUTestCase { + private static final long lmax = Long.MAX_VALUE; + private static final double dsmall = 23.33; + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.clone()' + */ + public void testClone() { + DecimalFormat df = new DecimalFormat("#,#0.00"); + DecimalFormat df2 = new DecimalFormat("#,#0.00"); + DecimalFormat dfn = new DecimalFormat("#,#0.00"); + dfn.setNegativePrefix(dfn.getNegativePrefix() + '!'); + testEHCS(df, df2, dfn); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(DecimalFormat)' + */ + public void testDecimalFormatDecimalFormat() { + // tested implicitly + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat()' + */ + public void testDecimalFormat() { + DecimalFormat df = new DecimalFormat(); + assertEquals("9,223,372,036,854,775,807", df.format(lmax)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String)' + */ + public void testDecimalFormatString() { + DecimalFormat df = new DecimalFormat("#,##0.000"); + assertEquals("23.330", df.format(dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String, DecimalFormatSymbols)' + */ + public void testDecimalFormatStringDecimalFormatSymbols() { + DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE); + DecimalFormat df = new DecimalFormat("#,##0.000", sym); + assertEquals("23,330", df.format(dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getDecimalFormatSymbols()' + */ + public void testGetDecimalFormatSymbols() { + DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE); + DecimalFormat df = new DecimalFormat("#,##0.000", sym); + assertEquals(sym, df.getDecimalFormatSymbols()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols)' + */ + public void testSetDecimalFormatSymbols() { + DecimalFormat df = new DecimalFormat(); + df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.FRANCE)); + assertEquals("23,33", df.format(dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getPositivePrefix()' + */ + public void testGetPositivePrefix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + assertEquals("+", df.getPositivePrefix()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setPositivePrefix(String)' + */ + public void testSetPositivePrefix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + df.setPositivePrefix("?"); + assertEquals("?23.3", df.format(dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativePrefix()' + */ + public void testGetNegativePrefix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + assertEquals("-", df.getNegativePrefix()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativePrefix(String)' + */ + public void testSetNegativePrefix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + df.setNegativePrefix("~"); + assertEquals("~23.3", df.format(-dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getPositiveSuffix()' + */ + public void testGetPositiveSuffix() { + DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~"); + assertEquals("**", df.getPositiveSuffix()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setPositiveSuffix(String)' + */ + public void testSetPositiveSuffix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + df.setPositiveSuffix("**"); + assertEquals("+23.3**", df.format(dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativeSuffix()' + */ + public void testGetNegativeSuffix() { + DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~"); + assertEquals("~~", df.getNegativeSuffix()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativeSuffix(String)' + */ + public void testSetNegativeSuffix() { + DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#"); + df.setNegativeSuffix("~~"); + assertEquals("-23.3~~", df.format(-dsmall)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getMultiplier()' + */ + public void testGetMultiplier() { + DecimalFormat df = new DecimalFormat("%000"); + df.setMultiplier(1000); + assertEquals(1000, df.getMultiplier()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setMultiplier(int)' + */ + public void testSetMultiplier() { + DecimalFormat df = new DecimalFormat("%000"); + assertEquals("%012", df.format(.123)); + df.setMultiplier(1000); + assertEquals("%123", df.format(.123)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.getGroupingSize()' + */ + public void testGetGroupingSize() { + DecimalFormat df = new DecimalFormat("#,#0.#"); + assertEquals(2, df.getGroupingSize()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setGroupingSize(int)' + */ + public void testSetGroupingSize() { + DecimalFormat df = new DecimalFormat("#,##0.##"); + assertEquals("1,234,567.89", df.format(1234567.89)); + df.setGroupingSize(2); + assertEquals("1,23,45,67.89", df.format(1234567.89)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.isDecimalSeparatorAlwaysShown()' + */ + public void testIsDecimalSeparatorAlwaysShown() { + DecimalFormat df = new DecimalFormat("#.#"); + df.setDecimalSeparatorAlwaysShown(false); + assertEquals("1", df.format(1)); + assertEquals("1.2", df.format(1.2)); + df.setDecimalSeparatorAlwaysShown(true); + assertEquals("1.", df.format(1)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalSeparatorAlwaysShown(boolean)' + */ + public void testSetDecimalSeparatorAlwaysShown() { + DecimalFormat df = new DecimalFormat("#.#"); + df.setDecimalSeparatorAlwaysShown(false); + assertFalse(df.isDecimalSeparatorAlwaysShown()); + df.setDecimalSeparatorAlwaysShown(true); + assertTrue(df.isDecimalSeparatorAlwaysShown()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.toPattern()' + */ + public void testToPattern() { + DecimalFormat df = new DecimalFormat("#,##0.##"); + assertEquals("#,##0.##", df.toPattern()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.toLocalizedPattern()' + */ + public void testToLocalizedPattern() { + DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE)); + assertEquals("#,##0.##", df.toPattern()); + assertEquals("#\u00a0##0,##", df.toLocalizedPattern()); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.applyPattern(String)' + */ + public void testApplyPattern() { + DecimalFormat df = new DecimalFormat("#,##0.##"); + df.applyPattern("#,0.#"); + assertEquals("1,2,3.4", df.format(123.4)); + } + + /* + * Test method for 'com.ibm.icu.text.DecimalFormat.applyLocalizedPattern(String)' + */ + public void testApplyLocalizedPattern() { + DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE)); + df.applyLocalizedPattern("#\u00a00,#"); + assertEquals("1\u00a02\u00a03,4", df.format(123.4)); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java new file mode 100644 index 00000000000..617fc14709c --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java @@ -0,0 +1,286 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Locale; + +import com.ibm.icu.util.TimeZone; +import com.ibm.icu.util.ULocale; + +import junit.framework.TestCase; + +/** + * Implement boilerplate tests. + * Currently there is only one method, testEHCS, which tests equals, hashCode, + * clone, and serialization. + */ +public abstract class ICUTestCase extends TestCase { + private static final Object[] EMPTY_ARGS = {}; + private static final Class[] EMPTY_CLASSES = {}; + + private static final Locale oldLocale = Locale.getDefault(); + private static final ULocale oldULocale = ULocale.getDefault(); + private static final java.util.TimeZone oldJTimeZone = java.util.TimeZone.getDefault(); + private static final TimeZone oldITimeZone = TimeZone.getDefault(); + + // TODO: what's the best way to check this? + public static final boolean testingWrapper = true; + + protected void setUp() throws Exception { + super.setUp(); + Locale.setDefault(Locale.US); + ULocale.setDefault(ULocale.US); + java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("PST")); + } + + protected void tearDown() throws Exception { + ULocale.setDefault(oldULocale); + Locale.setDefault(oldLocale); + TimeZone.setDefault(oldITimeZone); + java.util.TimeZone.setDefault(oldJTimeZone); + super.tearDown(); + } + + private static final Object test = new Object(); + + /** + * Assert that two objects are _not_ equal. Curiously missing from Assert. + * @param lhs an object to test, may be null + * @param rhs an object to test, may be null + */ + public static void assertNotEqual(Object lhs, Object rhs) { + if (lhs == null) { + if (rhs == null) fail("null equals null"); + } else { + if (lhs.equals(rhs)) { + fail(lhs.toString() + " equals " + rhs); + } + } + } + + public static void assertNotEqual(long lhs, long rhs) { + if (lhs == rhs) { + fail("values are equal: " + lhs); + } + } + + /** + * Test whether equality, hashCode, clone, and serialization work as expected. + * Equals(Object) is assumed to return false (not throw an exception) if passed + * null or an object of an incompatible class. + * Hashcodes must be equal iff the two objects compare equal. No attempt is made to + * evaluate the quality of the hashcode distribution, so (in particular) degenerate + * hashcode implementations will pass this test. + * Clone will be tested if the method "clone" is public on the class of obj. + * It is assumed to return an object that compares equal to obj. + * Serialization will be tested if object implements Serializable or Externalizable. + * It is assumed the serialized/deserialized object compares equal to obj. + * @param obj the object to test + * @param eq an object that should compare equal to, but is not the same as, obj. + * it should be assignable to the class of obj. + * @param neq a non-null object that should not compare equal to obj. + * it should be assignable to the class of obj. + */ + public static void testEHCS(Object obj, Object eq, Object neq) { + if (obj == null || eq == null || neq == null) { + throw new NullPointerException(); + } + Class cls = obj.getClass(); + if (!(cls.isAssignableFrom(eq.getClass()) && cls.isAssignableFrom(neq.getClass()))) { + throw new IllegalArgumentException("unassignable classes"); + } + + // reflexive + assertEquals(obj, obj); + + // should return false, not throw exception + assertNotEqual(obj, test); + assertNotEqual(obj, null); + + // commutative + assertEquals(obj, eq); + assertEquals(eq, obj); + + assertNotEqual(obj, neq); + assertNotEqual(neq, obj); + + // equal objects MUST have equal hashes, unequal objects MAY have equal hashes + assertEquals(obj.hashCode(), eq.hashCode()); + + Object clone = null; + try { + // look for public clone method and call it if available + Method method_clone = cls.getMethod("clone", EMPTY_CLASSES); + clone = method_clone.invoke(obj, EMPTY_ARGS); + assertNotNull(clone); + } + catch(NoSuchMethodException e) { + // ok + } + catch(InvocationTargetException e) { + // ok + } + catch(IllegalAccessException e) { + // ok + } + + if (clone != null) { + assertEquals(obj, clone); + assertEquals(clone, obj); + } + + if (obj instanceof Serializable || obj instanceof Externalizable) { + Object ser = null; + try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(clone); + oos.close(); + + ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(bis); + ser = ois.readObject(); + ois.close(); + } + catch(IOException e) { + System.err.println(e.getMessage()); + throw new RuntimeException(e); + } + catch(ClassNotFoundException e) { + System.err.println(e.getMessage()); + throw new RuntimeException(e); + } + + if (ser != null) { + assertEquals(obj, ser); + assertEquals(ser, obj); + assertEquals(obj.hashCode(), ser.hashCode()); + } + } + } + + /** + * Fail if the arrays are not equal. To be equal, the arrays must + * be the same length, and each element in the left array must compare + * equal to the corresponding element of the right array. + * Also fails if one of the objects is not an array. + * @param lhs the left array + * @param rhs the right array + */ + public static void assertArraysEqual(Object lhs, Object rhs) { + Class lcls = lhs.getClass(); + Class rcls = rhs.getClass(); + if (!(lcls.isArray() && rcls.isArray())) { + fail("objects are not arrays"); + } + String result = arraysAreEqual(lhs, rhs); + if (result != null) { + fail(result); + } + } + + /** + * Fail if the arrays are equal. Also fails if one or the other + * argument is not an array. + * @param lhs the left array + * @param rhs the right array + */ + public static void assertArraysNotEqual(Object lhs, Object rhs) { + Class lcls = lhs.getClass(); + Class rcls = rhs.getClass(); + if (!(lcls.isArray() && rcls.isArray())) { + fail("objects are not arrays"); + } + String result = arraysAreEqual(lhs, rhs); + if (result == null) { + fail("arrays are equal"); + } + } + + // slow but general + private static String arraysAreEqual(Object lhsa, Object rhsa) { + int lhsl = Array.getLength(lhsa); + int rhsl = Array.getLength(rhsa); + if (lhsl != rhsl) { + return "length " + lhsl + " != " + rhsl; + } + boolean lhsaA = lhsa.getClass().getComponentType().isArray(); + boolean rhsaA = rhsa.getClass().getComponentType().isArray(); + if (lhsaA != rhsaA) { + return (lhsaA ? "" : "non-") + "array != " + (rhsaA ? "" : "non-") + "array"; + } + for (int i = 0; i < lhsl; ++i) { + Object lhse = Array.get(lhsa, i); + Object rhse = Array.get(rhsa, i); + if (lhse == null) { + if (rhse != null) { + return "null != " + rhse; + } + } else { + if (lhsaA) { + String result = arraysAreEqual(lhse, rhse); + if (result != null) { + if (result.charAt(0) != '[') { + result = " " + result; + } + return "[" + i + "]" + result; + } + } else { + if (!lhse.equals(rhse)) { + return lhse.toString() + " != " + rhse; + } + } + } + } + return null; + } + + // much more painful and slow than it should be... partly because of the + // oddness of clone, partly because arrays don't provide a Method for + // 'clone' despite the fact that they implement it and make it public. + public static Object cloneComplex(Object obj) { + Object result = null; + if (obj != null) { + Class cls = obj.getClass(); + if (cls.isArray()) { + int len = Array.getLength(obj); + Class typ = cls.getComponentType(); + result = Array.newInstance(typ, len); + boolean prim = typ.isPrimitive(); + for (int i = 0; i < len; ++i) { + Object elem = Array.get(obj, i); + Array.set(result, i, prim ? elem : cloneComplex(elem)); + } + } else { + result = obj; // default + try { + Method cloneM = cls.getMethod("clone", EMPTY_CLASSES); + result = cloneM.invoke(obj, EMPTY_ARGS); + } + catch (NoSuchMethodException e) { + } + catch (IllegalAccessException e) { + } + catch (InvocationTargetException e) { + } + } + } + return result; + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java new file mode 100644 index 00000000000..9947214313e --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java @@ -0,0 +1,307 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.tests; + +import java.text.FieldPosition; +import java.text.Format; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.text.DateFormat; +import com.ibm.icu.text.MessageFormat; +import com.ibm.icu.text.NumberFormat; +import com.ibm.icu.util.ULocale; + +public class MessageFormatTest extends ICUTestCase { + private final String pattern = "Deleted {0,number} files at {1,time,short} on {1,date}."; + private final String altPattern = "Deleted {0, number } files at {1, time, short} on {1, date}."; + private final Date date = new Date(716698890835L); + private final Number num = new Long(3456); + private final Object[] args = { num, date }; + private final Date dateOnly = new Date(716626800000L); + private final String englishTarget = "Deleted 3,456 files at 8:01 PM on Sep 16, 1992."; + private final String germanTarget = "Deleted 3.456 files at 20:01 on 16.09.1992."; + private final String modifiedTarget = "Deleted 3,456 files at 8:01:30 PM PDT on Sep 16, 1992."; + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.hashCode()' + */ + public void testHashCode() { + MessageFormat mf = new MessageFormat(pattern); + MessageFormat eq = new MessageFormat(altPattern); + MessageFormat ne = new MessageFormat("Deleted (0, number, currency} files at {1, time} on {1, date}."); + testEHCS(mf, eq, ne); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(MessageFormat)' + */ + public void testMessageFormatMessageFormat() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String)' + */ + public void testMessageFormatString() { + MessageFormat mf = new MessageFormat(pattern); + assertEquals(englishTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, Locale)' + */ + public void testMessageFormatStringLocale() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + assertEquals(englishTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, ULocale)' + */ + public void testMessageFormatStringULocale() { + MessageFormat mf = new MessageFormat(pattern, ULocale.US); + assertEquals(englishTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(Locale)' + */ + public void testSetLocaleLocale() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setLocale(Locale.GERMANY); + mf.applyPattern(pattern); + assertEquals(germanTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(ULocale)' + */ + public void testSetLocaleULocale() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setLocale(ULocale.GERMANY); + mf.applyPattern(pattern); + assertEquals(germanTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.getLocale()' + */ + public void testGetLocale() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setLocale(Locale.GERMANY); + assertEquals(Locale.GERMANY, mf.getLocale()); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.getULocale()' + */ + public void testGetULocale() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setLocale(ULocale.GERMANY); + assertEquals(ULocale.GERMANY, mf.getULocale()); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.applyPattern(String)' + */ + public void testApplyPattern() { + MessageFormat mf = new MessageFormat("foo"); + mf.applyPattern(pattern); + assertEquals(englishTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.toPattern()' + */ + public void testToPattern() { + MessageFormat mf = new MessageFormat(altPattern); + assertEquals(pattern, mf.toPattern()); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setFormatsByArgumentIndex(Format[])' + public void testSetFormatsByArgumentIndex() { + // this api is broken. if the same argument is used twice with two different + // formats, this can't be used, since it sets only one format per argument. + MessageFormat mf = new MessageFormat(pattern, Locale.US); + Format[] formats = { + NumberFormat.getIntegerInstance(), + DateFormat.getTimeInstance(DateFormat.SHORT), + DateFormat.getDateInstance(), + }; + mf.setFormatsByArgumentIndex(formats); + assertEquals(brokenButConformantTarget, mf.format(args)); + } + */ + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setFormats(Format[])' + */ + public void testSetFormats() { + // this api, while it has the problem that the order of formats depends + // on the order in the string, at least lets you set all the formats. + + MessageFormat mf = new MessageFormat(pattern, Locale.US); + Format[] formats = { + NumberFormat.getIntegerInstance(), + DateFormat.getTimeInstance(DateFormat.SHORT), + DateFormat.getDateInstance(), + }; + mf.setFormats(formats); + assertEquals(englishTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setFormatByArgumentIndex(int, Format)' + public void testSetFormatByArgumentIndex() { + // same problem, once you set a format for an argument, you've set all of them + + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setFormatByArgumentIndex(1, DateFormat.getTimeInstance(DateFormat.SHORT)); + assertEquals(brokenButConformantTarget, mf.format(args)); + + } + */ + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.setFormat(int, Format)' + */ + public void testSetFormat() { + // and ok again + MessageFormat mf = new MessageFormat(pattern, Locale.US); + mf.setFormat(1, DateFormat.getTimeInstance(DateFormat.LONG)); + assertEquals(modifiedTarget, mf.format(args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.getFormatsByArgumentIndex()' + public void testGetFormatsByArgumentIndex() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + Format[] formats = mf.getFormatsByArgumentIndex(); + NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); + assertEquals(formats[0], nf); + DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US); + assertEquals(formats[1], df); + } + */ + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.getFormats()' + */ + public void testGetFormats() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + Format[] formats = mf.getFormats(); + NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); + assertEquals(formats[0], nf); + DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US); + assertEquals(formats[1], tf); + DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US); + assertEquals(formats[2], df); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.format(Object[], StringBuffer, FieldPosition)' + */ + public void testFormatObjectArrayStringBufferFieldPosition() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(0); + mf.format(args, buf, fp); + assertEquals(englishTarget, buf.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.format(String, Object[])' + */ + public void testFormatStringObjectArray() { + assertEquals(englishTarget, MessageFormat.format(pattern, args)); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.format(Object, StringBuffer, FieldPosition)' + */ + public void testFormatObjectStringBufferFieldPosition() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(0); + mf.format((Object)args, buf, fp); + assertEquals(englishTarget, buf.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.parse(String, ParsePosition)' + */ + public void testParseStringParsePosition() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + ParsePosition pp = new ParsePosition(1); + Object[] result = mf.parse("!" + englishTarget, pp); + assertEquals(num, result[0]); + assertEquals(dateOnly, result[1]); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.parse(String)' + */ + public void testParseString() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + try { + Object[] result = mf.parse(englishTarget); + assertEquals(num, result[0]); + assertEquals(dateOnly, result[1]); + } + catch (ParseException e) { + fail(e.getMessage()); + } + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.parseObject(String, ParsePosition)' + */ + public void testParseObjectStringParsePosition() { + MessageFormat mf = new MessageFormat(pattern, Locale.US); + ParsePosition pp = new ParsePosition(0); + Object result = mf.parseObject(englishTarget, pp); + assertEquals(num, ((Object[])result)[0]); + assertEquals(dateOnly, ((Object[])result)[1]); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.autoQuoteApostrophe(String)' + */ + public void testAutoQuoteApostrophe() { + String str = "Let's meet at {1,time,h 'o'' clock'} at l'Orange Bleue"; + String pat = MessageFormat.autoQuoteApostrophe(str); + MessageFormat mf = new MessageFormat(pat, Locale.US); + String result = mf.format(args); + assertEquals("Let's meet at 8 o' clock at l'Orange Bleue", result); + assertEquals("Let''s meet at {1,time,h 'o'' clock'} at l''Orange Bleue", pat); + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.clone()' + */ + public void testClone() { + // tested already in testHashcode + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.equals(Object)' + */ + public void testEqualsObject() { + // tested already in testHashcode + } + + /* + * Test method for 'com.ibm.icu.text.MessageFormat.toString()' + */ + public void testToString() { + // no need to test + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java new file mode 100644 index 00000000000..ec7188ff5b0 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java @@ -0,0 +1,447 @@ +/* + ******************************************************************************* + * Copyright (C) 2007-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.math.BigInteger; +import java.text.FieldPosition; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Locale; + +import com.ibm.icu.text.NumberFormat; +import com.ibm.icu.util.ULocale; + +public class NumberFormatTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)' + */ + public void testNumberFormat() { + NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance()); + assertEquals(nf, NumberFormat.getInstance()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)' + */ + public void testFormatObjectStringBufferFieldPosition() { + Number num = new Long(1234L); + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(NumberFormat.INTEGER_FIELD); + NumberFormat.getInstance().format(num, buf, fp); + assertEquals("1,234", buf.toString()); + assertEquals(0, fp.getBeginIndex()); + assertEquals(5, fp.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)' + */ + public void testParseObjectStringParsePosition() { + ParsePosition pp = new ParsePosition(0); + Object result = NumberFormat.getInstance().parse("1,234", pp); + assertEquals(result, new Long(1234)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)' + */ + public void testFormatDouble() { + assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)' + */ + public void testFormatLong() { + assertEquals("1,234", NumberFormat.getInstance().format(1234L)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)' + */ + public void testFormatBigInteger() { + // note, java doesn't handle biginteger with full precision. + BigInteger bi = new BigInteger("123456"); + assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)' + */ + public void testFormatDoubleStringBufferFieldPosition() { + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(NumberFormat.FRACTION_FIELD); + assertEquals("123,456.789", NumberFormat.getInstance().format(123456.789, buf, fp).toString()); + assertEquals(8, fp.getBeginIndex()); + assertEquals(11, fp.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)' + */ + public void testFormatLongStringBufferFieldPosition() { + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(NumberFormat.Field.GROUPING_SEPARATOR); + assertEquals("123,456", NumberFormat.getInstance().format(123456L, buf, fp).toString()); + assertEquals(3, fp.getBeginIndex()); + assertEquals(4, fp.getEndIndex()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)' + */ + public void testFormatBigIntegerStringBufferFieldPosition() { + // note, java doesn't handle biginteger with full precision. + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(0); + BigInteger bi = new BigInteger("123456"); + assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi, buf, fp).toString()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)' + */ + public void testParseStringParsePosition() { + ParsePosition pp = new ParsePosition(3); + assertEquals(new Long(123456), NumberFormat.getInstance().parse("xxx123,456yyy", pp)); + assertEquals(10, pp.getIndex()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)' + */ + public void testParseString() throws ParseException { + Number result = NumberFormat.getInstance().parse("123,456,yyy"); + assertEquals(new Long(123456), result); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()' + */ + public void testIsParseIntegerOnly() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setParseIntegerOnly(true); + assertTrue(nf.isParseIntegerOnly()); + nf.setParseIntegerOnly(false); + assertFalse(nf.isParseIntegerOnly()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)' + */ + public void testSetParseIntegerOnly() throws ParseException { + String str = "123.456,yyy"; + NumberFormat nf = NumberFormat.getInstance(); + assertEquals(new Double(123.456), nf.parse(str)); + nf.setParseIntegerOnly(true); + assertEquals(new Long(123), nf.parse(str)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()' + */ + public void testGetInstance() { + // used everywhere, no need to test + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)' + */ + public void testGetInstanceLocale() { + NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY); + assertEquals("123,456", nf.format(123.456)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)' + */ + public void testGetInstanceULocale() { + NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY); + assertEquals("123,456", nf.format(123.456)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()' + */ + public void testGetNumberInstance() { + NumberFormat nf = NumberFormat.getNumberInstance(); + assertEquals("123,456.789", nf.format(123456.789)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)' + */ + public void testGetNumberInstanceLocale() { + NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY); + assertEquals("123.456,789", nf.format(123456.789)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)' + */ + public void testGetNumberInstanceULocale() { + NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY); + assertEquals("123.456,789", nf.format(123456.789)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()' + */ + public void testGetIntegerInstance() { + NumberFormat nf = NumberFormat.getIntegerInstance(); + assertEquals("123,457", nf.format(123456.789)); // rounds + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)' + */ + public void testGetIntegerInstanceLocale() { + NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY); + assertEquals("123.457", nf.format(123456.789)); // rounds + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)' + */ + public void testGetIntegerInstanceULocale() { + NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY); + assertEquals("123.457", nf.format(123456.789)); // rounds + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()' + */ + public void testGetCurrencyInstance() { + NumberFormat nf = NumberFormat.getCurrencyInstance(); + assertEquals("$123,456.99", nf.format(123456.99)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)' + */ + public void testGetCurrencyInstanceLocale() { + NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY); + assertEquals("123.456,99 \u20AC", nf.format(123456.99)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)' + */ + public void testGetCurrencyInstanceULocale() { + NumberFormat nf = NumberFormat.getCurrencyInstance(ULocale.GERMANY); + assertEquals("123.456,99 \u20AC", nf.format(123456.99)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()' + */ + public void testGetPercentInstance() { + NumberFormat nf = NumberFormat.getPercentInstance(); + assertEquals("123,456%", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)' + */ + public void testGetPercentInstanceLocale() { + NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY); + assertEquals("123.456%", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)' + */ + public void testGetPercentInstanceULocale() { + NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY); + assertEquals("123.456%", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()' + */ + public void testGetScientificInstance() { + NumberFormat nf = NumberFormat.getScientificInstance(); + assertEquals(".123456E4", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)' + */ + public void testGetScientificInstanceLocale() { + NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY); + assertEquals(",123456E4", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)' + */ + public void testGetScientificInstanceULocale() { + NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY); + assertEquals(",123456E4", nf.format(1234.56)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()' + */ + public void testGetAvailableLocales() { + Locale[] ilocales = NumberFormat.getAvailableLocales(); + if (ICUTestCase.testingWrapper) { + Locale[] jlocales = java.text.NumberFormat.getAvailableLocales(); + for (int i = 0; i < ilocales.length; ++i) { + assertEquals(jlocales[i], ilocales[i]); + } + } + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()' + */ + public void testGetAvailableULocales() { + ULocale[] ulocales = NumberFormat.getAvailableULocales(); + if (ICUTestCase.testingWrapper) { + Locale[] jlocales = java.text.NumberFormat.getAvailableLocales(); + for (int i = 0; i < ulocales.length; ++i) { + assertEquals(jlocales[i], ulocales[i].toLocale()); + } + } + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()' + */ + public void testIsGroupingUsed() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setGroupingUsed(true); + assertTrue(nf.isGroupingUsed()); + nf.setGroupingUsed(false); + assertFalse(nf.isGroupingUsed()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)' + */ + public void testSetGroupingUsed() { + NumberFormat nf = NumberFormat.getInstance(); + assertEquals("123,456,789", nf.format(123456789)); + nf.setGroupingUsed(false); + assertEquals("123456789", nf.format(123456789)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()' + */ + public void testGetMaximumIntegerDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMaximumIntegerDigits(4); + assertEquals(4, nf.getMaximumIntegerDigits()); + nf.setMaximumIntegerDigits(6); + assertEquals(6, nf.getMaximumIntegerDigits()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)' + */ + public void testSetMaximumIntegerDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMaximumIntegerDigits(4); + assertEquals("3,456", nf.format(123456)); // high digits truncated + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()' + */ + public void testGetMinimumIntegerDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMinimumIntegerDigits(4); + assertEquals(4, nf.getMinimumIntegerDigits()); + nf.setMinimumIntegerDigits(6); + assertEquals(6, nf.getMinimumIntegerDigits()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)' + */ + public void testSetMinimumIntegerDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMinimumIntegerDigits(4); + assertEquals("0,012", nf.format(12)); // pad out with zero, grouping still used + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()' + */ + public void testGetMaximumFractionDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMaximumFractionDigits(4); + assertEquals(4, nf.getMaximumFractionDigits()); + nf.setMaximumFractionDigits(6); + assertEquals(6, nf.getMaximumFractionDigits()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)' + */ + public void testSetMaximumFractionDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMaximumFractionDigits(4); + assertEquals("1.2346", nf.format(1.2345678)); // low digits rounded + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()' + */ + public void testGetMinimumFractionDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMinimumFractionDigits(4); + assertEquals(4, nf.getMinimumFractionDigits()); + nf.setMinimumFractionDigits(6); + assertEquals(6, nf.getMinimumFractionDigits()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)' + */ + public void testSetMinimumFractionDigits() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setMinimumFractionDigits(4); + assertEquals("1.2000", nf.format(1.2)); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.toString()' + */ + public void testToString() { + assertNotNull(NumberFormat.getInstance().toString()); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()' + */ + public void testHashCode() { + NumberFormat nf = NumberFormat.getInstance(); + NumberFormat eq = NumberFormat.getInstance(Locale.US); + NumberFormat neq = NumberFormat.getInstance(Locale.GERMANY); + + ICUTestCase.testEHCS(nf, eq, neq); + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.clone()' + */ + public void testClone() { + // see testHashCode + } + + /* + * Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)' + */ + public void testEqualsObject() { + // see testHashCode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java new file mode 100644 index 00000000000..0136a82ab9e --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java @@ -0,0 +1,202 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.text.FieldPosition; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.text.DateFormatSymbols; +import com.ibm.icu.text.SimpleDateFormat; +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.TimeZone; +import com.ibm.icu.util.ULocale; + +public class SimpleDateFormatTest extends ICUTestCase { + private static final String mdy = "MMM dd yyyy"; + private static final String md2 = "MMM dd yy"; + private static final String hmz = "'The time is' HH:mm:ss zzz"; + private static final String hmzmdy = hmz + " 'on' " + mdy; + private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006"; + + private static final TimeZone tzc = TimeZone.getTimeZone("CST"); + private static final TimeZone tzp = TimeZone.getTimeZone("PST"); + private static final Calendar cal = Calendar.getInstance(tzc); + private static final Date date; + static { + cal.clear(); + cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis + date = cal.getTime(); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)' + */ + public void testFormatCalendarStringBufferFieldPosition() { + StringBuffer buf = new StringBuffer(); + FieldPosition fp = new FieldPosition(0); + SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); + sdf.format(cal, buf, fp); + assertEquals(hmzmdyStr, buf.toString()); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)' + */ + public void testParseStringCalendarParsePosition() { + Calendar cal = Calendar.getInstance(tzp); + cal.clear(); + ParsePosition pp = new ParsePosition(0); + SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); + sdf.parse(hmzmdyStr, cal, pp); + assertEquals(date, cal.getTime()); + // note: java doesn't return the parsed time zone + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()' + */ + public void testClone() { + + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()' + */ + public void testSimpleDateFormat() { + SimpleDateFormat sdf = new SimpleDateFormat(); + java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(); + assertEquals(jsdf.format(date), sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)' + */ + public void testSimpleDateFormatString() { + SimpleDateFormat sdf = new SimpleDateFormat(mdy); + java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy); + assertEquals(jsdf.format(date), sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)' + */ + public void testSimpleDateFormatStringLocale() { + Locale l = Locale.JAPAN; + SimpleDateFormat sdf = new SimpleDateFormat(mdy, l); + java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l); + assertEquals(jsdf.format(date), sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)' + */ + public void testSimpleDateFormatStringULocale() { + ULocale l = ULocale.JAPAN; + SimpleDateFormat sdf = new SimpleDateFormat(mdy, l); + java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale()); + assertEquals(jsdf.format(date), sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)' + */ + public void testSimpleDateFormatStringDateFormatSymbols() { + Locale l = Locale.US; + DateFormatSymbols dfs = new DateFormatSymbols(l); + java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l); + SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs); + java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs); + assertEquals(jsdf.format(date), sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)' + */ + public void testSet2DigitYearStart() { + SimpleDateFormat sdf = new SimpleDateFormat(md2); + sdf.set2DigitYearStart(date); + try { + Date d = sdf.parse("Jan 15 04"); + assertNotEqual(-1, d.toString().indexOf("2104")); + } + catch (ParseException pe) { + fail(pe.getMessage()); + } + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()' + */ + public void testGet2DigitYearStart() { + SimpleDateFormat sdf = new SimpleDateFormat(md2); + sdf.set2DigitYearStart(date); + assertEquals(date, sdf.get2DigitYearStart()); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()' + */ + public void testToPattern() { + SimpleDateFormat sdf = new SimpleDateFormat(mdy); + assertEquals(mdy, sdf.toPattern()); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()' + */ + public void testToLocalizedPattern() { + Locale l = Locale.getDefault(); + Locale.setDefault(Locale.US); + SimpleDateFormat sdf = new SimpleDateFormat(mdy); + assertEquals(mdy, sdf.toLocalizedPattern()); + Locale.setDefault(l); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)' + */ + public void testApplyPattern() { + SimpleDateFormat sdf = new SimpleDateFormat(); + sdf.setTimeZone(tzc); + sdf.applyPattern(hmzmdy); + assertEquals(hmzmdyStr, sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)' + */ + public void testApplyLocalizedPattern() { + SimpleDateFormat sdf = new SimpleDateFormat(); + sdf.setTimeZone(tzc); + sdf.applyLocalizedPattern(hmzmdy); + assertEquals(hmzmdyStr, sdf.format(date)); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()' + */ + public void testGetDateFormatSymbols() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); + SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs); + assertEquals(dfs, sdf.getDateFormatSymbols()); + } + + /* + * Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)' + */ + public void testSetDateFormatSymbols() { + DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN); + SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); + sdf.setDateFormatSymbols(dfs); + // assumes Japanese symbols do not have gregorian month names + assertEquals(-1, sdf.format(date).indexOf("Jan")); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java new file mode 100644 index 00000000000..f8a2fe16ce1 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java @@ -0,0 +1,235 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Date; +import java.util.Locale; + +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.TimeZone; +import com.ibm.icu.util.ULocale; + +public class TimeZoneTest extends ICUTestCase { + + /* + * Test method for 'com.ibm.icu.util.TimeZone.hashCode()' + */ + public void testHashCode() { + TimeZone tz1 = TimeZone.getTimeZone("PST"); + TimeZone tz2 = TimeZone.getTimeZone("PST"); + TimeZone tzn = TimeZone.getTimeZone("CST"); + testEHCS(tz1, tz2, tzn); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.TimeZone(TimeZone)' + */ + public void testTimeZone() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getOffset(int, int, int, int, int, int)' + */ + public void testGetOffset() { + TimeZone tz = TimeZone.getTimeZone("PST"); + int offset = tz.getOffset(1, 2004, 0, 01, 1, 0); + assertEquals(-28800000, offset); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.setRawOffset(int)' + */ + public void testSetRawOffset() { + TimeZone tz = TimeZone.getTimeZone("PST"); + int value = tz.getRawOffset(); + int value1 = value + 100000; + tz.setRawOffset(value1); + int result = tz.getRawOffset(); + assertNotEqual(value, result); + assertEquals(value1, result); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getRawOffset()' + */ + public void testGetRawOffset() { + TimeZone tz = TimeZone.getTimeZone("PST"); + int offset = tz.getRawOffset(); + assertEquals(-28800000, offset); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getID()' + */ + public void testGetID() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("PST", tz.getID()); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.setID(String)' + */ + public void testSetID() { + TimeZone tz = TimeZone.getTimeZone("PST"); + String value1 = tz.getID(); + String value2 = value1 + "!"; + tz.setID(value2); + String result = tz.getID(); + assertNotEqual(value1, result); + assertEquals(value2, result); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName()' + */ + public void testGetDisplayName() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("Pacific Standard Time", tz.getDisplayName()); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(Locale)' + */ + public void testGetDisplayNameLocale() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("Pacific Standard Time", tz.getDisplayName(Locale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(ULocale)' + */ + public void testGetDisplayNameULocale() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("Pacific Standard Time", tz.getDisplayName(ULocale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int)' + */ + public void testGetDisplayNameBooleanInt() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT)); + assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, Locale)' + */ + public void testGetDisplayNameBooleanIntLocale() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, Locale.US)); + assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, ULocale)' + */ + public void testGetDisplayNameBooleanIntULocale() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, ULocale.US)); + assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, ULocale.US)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDSTSavings()' + */ + public void testGetDSTSavings() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertEquals(3600000, tz.getDSTSavings()); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.useDaylightTime()' + */ + public void testUseDaylightTime() { + TimeZone tz = TimeZone.getTimeZone("PST"); + assertTrue(tz.useDaylightTime()); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.inDaylightTime(Date)' + */ + public void testInDaylightTime() { + TimeZone tz = TimeZone.getTimeZone("PST"); + Calendar cal = Calendar.getInstance(); + cal.set(2005, 0, 17); + Date date = cal.getTime(); + assertFalse(tz.inDaylightTime(date)); + cal.set(2005, 6, 17); + date = cal.getTime(); + assertTrue(tz.inDaylightTime(date)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getTimeZone(String)' + */ + public void testGetTimeZone() { + // implicitly tested everywhere + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs(int)' + */ + public void testGetAvailableIDsInt() { + String[] ids = TimeZone.getAvailableIDs(-28800000); + assertNotNull(ids); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs()' + */ + public void testGetAvailableIDs() { + String[] ids = TimeZone.getAvailableIDs(); + assertNotNull(ids); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.getDefault()' + */ + public void testGetDefault() { + TimeZone tz = TimeZone.getDefault(); + assertNotNull(tz); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.setDefault(TimeZone)' + */ + public void testSetDefault() { + TimeZone tz1 = TimeZone.getDefault(); + String newCode = "PDT".equals(tz1.getID()) ? "CST" : "PDT"; + TimeZone tz2 = TimeZone.getTimeZone(newCode); + TimeZone.setDefault(tz2); + TimeZone result = TimeZone.getDefault(); + assertNotEqual(tz1, result); + assertEquals(tz2, result); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.hasSameRules(TimeZone)' + */ + public void testHasSameRules() { + TimeZone tz1 = TimeZone.getTimeZone("PST"); + TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles"); + assertTrue(tz1.hasSameRules(tz2)); + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.clone()' + */ + public void testClone() { + // tested by testHashCode + } + + /* + * Test method for 'com.ibm.icu.util.TimeZone.equals(Object)' + */ + public void testEqualsObject() { + // tested by testHashCode + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java new file mode 100644 index 00000000000..d8a2b85d80d --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java @@ -0,0 +1,748 @@ +/* + ******************************************************************************* + * Copyright (C) 2006-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ + +package com.ibm.icu.tests; + +import java.util.Iterator; +import java.util.Locale; + +import com.ibm.icu.util.ULocale; + +public class ULocaleTest extends ICUTestCase { + private String sampleName; + private String longULocaleName; + private String longULocaleBasename; + private String nonNormalizedName; + private ULocale longULocale; + private Locale sampleLocale; + + /** + * @Override + */ + protected void setUp() throws Exception { + super.setUp(); + + sampleName = "ll_CC_VVVV"; + longULocaleName = "ll_Ssss_CC_VVVV@collation=phonebook;key=value"; + longULocaleBasename = longULocaleName.substring(0, longULocaleName.indexOf('@')); + nonNormalizedName = "LL_ssss_cc_VVVV@ Key = value ; Collation = phonebook ; "; + longULocale = new ULocale(longULocaleName); + sampleLocale = new ULocale(sampleName).toLocale(); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.hashCode()' + */ + public void testHashCode() { + ULocale obj = ULocale.GERMANY; + ULocale eq = new ULocale("de_DE"); + ULocale neq = new ULocale("de_DE_FRENCH"); + + ICUTestCase.testEHCS(obj, eq, neq); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.forLocale(Locale)' + */ + public void testForLocale() { + assertEquals(ULocale.GERMANY, ULocale.forLocale(Locale.GERMANY)); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String)' + */ + public void testULocaleString() { + assertEquals(ULocale.GERMAN, new ULocale("de")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String)' + */ + public void testULocaleStringString() { + assertEquals(ULocale.GERMANY, new ULocale("de", "DE")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String, String)' + */ + public void testULocaleStringStringString() { + assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.createCanonical(String)' + */ + public void testCreateCanonical() { + ULocale result = ULocale.createCanonical("de__PHONEBOOK"); + assertEquals(new ULocale("de@collation=phonebook"), result); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.toLocale()' + */ + public void testToLocale() { + assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDefault()' + */ + public void testGetDefault() { + assertEquals(Locale.getDefault(), ULocale.getDefault().toLocale()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.setDefault(ULocale)' + */ + public void testSetDefault() { + Locale oldLocale = Locale.getDefault(); + ULocale oldULocale = ULocale.getDefault(); + try { + ULocale.setDefault(longULocale); + ICUTestCase.assertNotEqual(Locale.getDefault(), oldLocale); + ICUTestCase.assertNotEqual(ULocale.getDefault(), oldULocale); + assertEquals(longULocale, ULocale.getDefault()); + assertEquals(sampleLocale, Locale.getDefault()); + } + finally { + ULocale.setDefault(oldULocale); + Locale.setDefault(oldLocale); // in case of some error + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.clone()' + */ + public void testClone() { + // see testHashcode + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.equals(Object)' + */ + public void testEqualsObject() { + // see testHashcode + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getAvailableLocales()' + */ + public void testGetAvailableLocales() { + ULocale[] ulocales = ULocale.getAvailableLocales(); + if (ICUTestCase.testingWrapper) { + Locale[] locales = Locale.getAvailableLocales(); + for (int i = 0; i < ulocales.length; ++i) { + assertEquals(ulocales[i].toLocale(), locales[i]); + } + } + // else nothing to test except that the function returned. + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISOCountries()' + */ + public void testGetISOCountries() { + String[] ucountries = ULocale.getISOCountries(); + assertNotNull(ucountries); + if (ICUTestCase.testingWrapper) { + // keep our own data for now + // our data doesn't match java's so this test would fail + // TODO: enable if we decide to use java's data + // String[] countries = Locale.getISOCountries(); + // TestBoilerplate.assertArraysEqual(ucountries, countries); + } + // else nothing to test except that the function returned. + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISOLanguages()' + */ + public void testGetISOLanguages() { + String[] ulanguages = ULocale.getISOLanguages(); + assertNotNull(ulanguages); + if (ICUTestCase.testingWrapper) { + // keep our own data for now + // our data doesn't match java's so this test would fail + // TODO: enable if we decide to use java's data + // String[] languages = Locale.getISOLanguages(); + // TestBoilerplate.assertArraysEqual(ulanguages, languages); + } + // else nothing to test except that the function returned. + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage()' + */ + public void testGetLanguage() { + assertEquals("ll", longULocale.getLanguage()); + assertEquals("ll", longULocale.toLocale().getLanguage()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage(String)' + */ + public void testGetLanguageString() { + assertEquals("ll", ULocale.getLanguage(longULocale.getName())); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getScript()' + */ + public void testGetScript() { + assertEquals("Ssss", longULocale.getScript()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getScript(String)' + */ + public void testGetScriptString() { + assertEquals("Ssss", ULocale.getScript(longULocale.getName())); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getCountry()' + */ + public void testGetCountry() { + assertEquals("CC", longULocale.getCountry()); + assertEquals("CC", longULocale.toLocale().getCountry()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getCountry(String)' + */ + public void testGetCountryString() { + assertEquals("CC", ULocale.getCountry(longULocale.getName())); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getVariant()' + */ + public void testGetVariant() { + assertEquals("VVVV", longULocale.getVariant()); + assertEquals("VVVV", longULocale.toLocale().getVariant()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getVariant(String)' + */ + public void testGetVariantString() { + assertEquals("VVVV", ULocale.getVariant(longULocale.getName())); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getFallback(String)' + */ + public void testGetFallbackString() { + assertEquals(ULocale.GERMAN, ULocale.getFallback(ULocale.GERMANY.getName())); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getFallback()' + */ + public void testGetFallback() { + assertEquals(ULocale.GERMAN, ULocale.GERMANY.getFallback()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName()' + */ + public void testGetBaseName() { + assertEquals(longULocaleBasename, longULocale.getBaseName()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName(String)' + */ + public void testGetBaseNameString() { + assertEquals(longULocaleBasename, longULocale.getBaseName()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getName()' + */ + public void testGetName() { + assertEquals(longULocaleName, longULocale.getName()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getName(String)' + */ + public void testGetNameString() { + assertEquals(longULocaleName, ULocale.getName(nonNormalizedName)); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.toString()' + */ + public void testToString() { + assertEquals(longULocaleName, longULocale.toString()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords()' + */ + public void testGetKeywords() { + Iterator iter = longULocale.getKeywords(); + assertEquals(iter.next(), "collation"); + assertEquals(iter.next(), "key"); + assertFalse(iter.hasNext()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords(String)' + */ + public void testGetKeywordsString() { + Iterator iter = ULocale.getKeywords(nonNormalizedName); + assertEquals(iter.next(), "collation"); + assertEquals(iter.next(), "key"); + assertFalse(iter.hasNext()); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String)' + */ + public void testGetKeywordValueString() { + assertEquals("value", longULocale.getKeywordValue("key")); + assertEquals("phonebook", longULocale.getKeywordValue("collation")); + assertNull(longULocale.getKeywordValue("zzyzx")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String, String)' + */ + public void testGetKeywordValueStringString() { + assertEquals("value", ULocale.getKeywordValue(longULocaleName, "key")); + assertEquals("phonebook", ULocale.getKeywordValue(longULocaleName, "collation")); + assertNull(ULocale.getKeywordValue(longULocaleName, "zzyzx")); + + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.canonicalize(String)' + */ + public void testCanonicalize() { + assertEquals("de@collation=phonebook", ULocale.canonicalize("de__PHONEBOOK")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String)' + */ + public void testSetKeywordValueStringString() { + ULocale munged = longULocale.setKeywordValue("key", "C#"); + assertEquals("C#", munged.getKeywordValue("key")); + munged = munged.setKeywordValue("zzyzx", "grue"); + assertEquals("grue", munged.getKeywordValue("zzyzx")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String, String)' + */ + public void testSetKeywordValueStringStringString() { + String munged = ULocale.setKeywordValue(longULocaleName, "key", "C#"); + assertEquals("C#", ULocale.getKeywordValue(munged, "key")); + munged = ULocale.setKeywordValue(munged, "zzyzx", "grue"); + assertEquals("grue", ULocale.getKeywordValue(munged, "zzyzx")); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language()' + */ + public void testGetISO3Language() { + String il = ULocale.GERMANY.getISO3Language(); + String jl = Locale.GERMANY.getISO3Language(); + assertEquals(il, jl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language(String)' + */ + public void testGetISO3LanguageString() { + String il = ULocale.getISO3Language(ULocale.GERMANY.getName()); + String jl = Locale.GERMANY.getISO3Language(); + assertEquals(il, jl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country()' + */ + public void testGetISO3Country() { + String ic = ULocale.GERMANY.getISO3Country(); + String jc = Locale.GERMANY.getISO3Country(); + assertEquals(ic, jc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country(String)' + */ + public void testGetISO3CountryString() { + String ic = ULocale.getISO3Country(ULocale.GERMANY.getName()); + String jc = Locale.GERMANY.getISO3Country(); + assertEquals(ic, jc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage()' + */ + public void testGetDisplayLanguage() { + String idl = ULocale.GERMANY.getDisplayLanguage(); + String jdl = Locale.GERMANY.getDisplayLanguage(); + assertEquals(idl, jdl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(ULocale)' + */ + public void testGetDisplayLanguageULocale() { + String idl = ULocale.GERMANY.getDisplayLanguage(ULocale.GERMANY); + String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY); + assertEquals(idl, jdl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, String)' + */ + public void testGetDisplayLanguageStringString() { + String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), "de_DE"); + String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY); + assertEquals(idl, jdl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, ULocale)' + */ + public void testGetDisplayLanguageStringULocale() { + String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), ULocale.GERMANY); + String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY); + assertEquals(idl, jdl); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript()' + */ + public void testGetDisplayScript() { + String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript(); + if (ICUTestCase.testingWrapper) { + assertEquals("Hant", is); + } else { + assertEquals("Traditional Chinese", is); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(ULocale)' + */ + public void testGetDisplayScriptULocale() { + String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript(ULocale.GERMANY); + if (ICUTestCase.testingWrapper) { + assertEquals("Hant", is); + } else { + // TODO: look up expected value + assertEquals("Hant", is); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, String)' + */ + public void testGetDisplayScriptStringString() { + String is = ULocale.getDisplayScript("zh_Hant", "de_DE"); + if (ICUTestCase.testingWrapper) { + assertEquals("Hant", is); + } else { + // TODO: look up expected value + assertEquals("Hant", is); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, ULocale)' + */ + public void testGetDisplayScriptStringULocale() { + String is = ULocale.getDisplayScript("zh_Hant", ULocale.GERMANY); + if (ICUTestCase.testingWrapper) { + assertEquals("Hant", is); + } else { + // TODO: look up expected value + assertEquals("Hant", is); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry()' + */ + public void testGetDisplayCountry() { + String idc = ULocale.GERMANY.getDisplayCountry(); + String jdc = Locale.GERMANY.getDisplayCountry(); + assertEquals(idc, jdc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(ULocale)' + */ + public void testGetDisplayCountryULocale() { + String idc = ULocale.GERMANY.getDisplayCountry(ULocale.GERMANY); + String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY); + assertEquals(idc, jdc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, String)' + */ + public void testGetDisplayCountryStringString() { + String idc = ULocale.getDisplayCountry("de_DE", "de_DE"); + String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY); + assertEquals(idc, jdc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, ULocale)' + */ + public void testGetDisplayCountryStringULocale() { + String idc = ULocale.getDisplayCountry("de_DE", ULocale.GERMANY); + String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY); + assertEquals(idc, jdc); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant()' + */ + public void testGetDisplayVariant() { + String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant(); + String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(); + assertEquals(jdv, idv); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(ULocale)' + */ + public void testGetDisplayVariantULocale() { + String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant(ULocale.GERMANY); + String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY); + assertEquals(jdv, idv); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, String)' + */ + public void testGetDisplayVariantStringString() { + String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", "de_DE"); + String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY); + assertEquals(jdv, idv); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, ULocale)' + */ + public void testGetDisplayVariantStringULocale() { + String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", ULocale.GERMANY); + String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY); + assertEquals(jdv, idv); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String)' + */ + public void testGetDisplayKeywordString() { + String idk = ULocale.getDisplayKeyword("collation"); + assertEquals("collation", idk); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, String)' + */ + public void testGetDisplayKeywordStringString() { + String idk = ULocale.getDisplayKeyword("collation", "de_DE"); + if (ICUTestCase.testingWrapper) { + assertEquals("collation", idk); + } else { + // TODO: find real value + assertEquals("collation", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, ULocale)' + */ + public void testGetDisplayKeywordStringULocale() { + String idk = ULocale.getDisplayKeyword("collation", ULocale.GERMANY); + if (ICUTestCase.testingWrapper) { + assertEquals("collation", idk); + } else { + // TODO: find real value + assertEquals("collation", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String)' + */ + public void testGetDisplayKeywordValueString() { + ULocale ul = new ULocale("de_DE@collation=phonebook"); + String idk = ul.getDisplayKeywordValue("collation"); + if (ICUTestCase.testingWrapper) { + assertEquals("phonebook", idk); + } else { + // TODO: find real value + assertEquals("phonebook", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, ULocale)' + */ + public void testGetDisplayKeywordValueStringULocale() { + ULocale ul = new ULocale("de_DE@collation=phonebook"); + String idk = ul.getDisplayKeywordValue("collation", ULocale.GERMANY); + if (ICUTestCase.testingWrapper) { + assertEquals("phonebook", idk); + } else { + // TODO: find real value + assertEquals("phonebook", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, String)' + */ + public void testGetDisplayKeywordValueStringStringString() { + String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", "de_DE"); + if (ICUTestCase.testingWrapper) { + assertEquals("phonebook", idk); + } else { + // TODO: find real value + assertEquals("phonebook", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, ULocale)' + */ + public void testGetDisplayKeywordValueStringStringULocale() { + String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", ULocale.GERMANY); + if (ICUTestCase.testingWrapper) { + assertEquals("phonebook", idk); + } else { + // TODO: find real value + assertEquals("phonebook", idk); + } + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName()' + */ + public void testGetDisplayName() { + String idn = ULocale.GERMANY.getDisplayName(); + String jdn = Locale.GERMANY.getDisplayName(); + assertEquals(idn, jdn); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(ULocale)' + */ + public void testGetDisplayNameULocale() { + String idn = ULocale.GERMANY.getDisplayName(ULocale.GERMANY); + String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY); + assertEquals(idn, jdn); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, String)' + */ + public void testGetDisplayNameStringString() { + String idn = ULocale.getDisplayName("de_DE", "de_DE"); + String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY); + assertEquals(idn, jdn); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, ULocale)' + */ + public void testGetDisplayNameStringULocale() { + String idn = ULocale.getDisplayName("de_DE", ULocale.GERMANY); + String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY); + assertEquals(idn, jdn); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, ULocale[], boolean[])' + */ + public void testAcceptLanguageStringULocaleArrayBooleanArray() { + boolean[] fallback = new boolean[1]; + ULocale[] locales = { + new ULocale("en_CA"), + new ULocale("es_US"), + }; + ULocale result = ULocale.acceptLanguage("en-US, en-GB, en-CA, es-US", locales, fallback); + assertEquals(new ULocale("en_CA"), result); + assertFalse(fallback[0]); + result = ULocale.acceptLanguage("en-US, en-GB, es-US-NEWMEXICO", locales, fallback); + assertEquals(new ULocale("es_US"), result); + assertTrue(fallback[0]); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], ULocale[], boolean[])' + */ + public void testAcceptLanguageULocaleArrayULocaleArrayBooleanArray() { + boolean[] fallback = new boolean[1]; + ULocale[] locales = { + new ULocale("en_CA"), + new ULocale("es_US"), + }; + ULocale[] accept_locales = { + new ULocale("en_US"), + new ULocale("en_GB"), + new ULocale("en_CA"), + new ULocale("es_US"), + }; + ULocale[] accept_locales2 = { + new ULocale("en_US"), + new ULocale("en_GB"), + new ULocale("es_US_NEWMEXICO"), + }; + ULocale result = ULocale.acceptLanguage(accept_locales, locales, fallback); + assertEquals(new ULocale("en_CA"), result); + assertFalse(fallback[0]); + result = ULocale.acceptLanguage(accept_locales2, locales, fallback); + assertEquals(new ULocale("es_US"), result); + assertTrue(fallback[0]); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, boolean[])' + */ + public void testAcceptLanguageStringBooleanArray() { + boolean[] fallback = new boolean[1]; + ULocale result = ULocale.acceptLanguage("en-CA, en-GB, es-US", fallback); + assertEquals(new ULocale("en_CA"), result); + assertFalse(fallback[0]); + result = ULocale.acceptLanguage("es-US-NEWMEXICO", fallback); + assertNotNull(result); // actual result depends on jdk + assertTrue(fallback[0]); + } + + /* + * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], boolean[])' + */ + public void testAcceptLanguageULocaleArrayBooleanArray() { + boolean[] fallback = new boolean[1]; + ULocale[] accept_locales = { + new ULocale("en_CA"), + new ULocale("en_GB"), + new ULocale("es_US"), + }; + ULocale[] accept_locales2 = { + new ULocale("es_US_NEWMEXICO"), + }; + ULocale result = ULocale.acceptLanguage(accept_locales, fallback); + assertEquals(new ULocale("en_CA"), result); + assertFalse(fallback[0]); + result = ULocale.acceptLanguage(accept_locales2, fallback); + assertNotNull(result); // actual result depends on jdk + assertTrue(fallback[0]); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/.classpath b/eclipse-build/plugins.template/com.ibm.icu.base/.classpath new file mode 100644 index 00000000000..02159672985 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/.project b/eclipse-build/plugins.template/com.ibm.icu.base/.project new file mode 100644 index 00000000000..5e6c7c3bced --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/.project @@ -0,0 +1,28 @@ + + + com.ibm.icu.base + + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs b/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..852d94d7dfb --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,77 @@ +#Mon Aug 30 14:05:56 EDT 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=ignore +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs b/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..22f322c51ad --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,3 @@ +#Thu Dec 14 11:50:17 EST 2006 +eclipse.preferences.version=1 +internal.default.compliance=default diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/META-INF/MANIFEST.MF b/eclipse-build/plugins.template/com.ibm.icu.base/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..fb58cf711ea --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: com.ibm.icu.base; singleton:=true +Bundle-Version: @BUILD_VERSION@ +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-Copyright: @COPYRIGHT@ +Export-Package: com.ibm.icu.text;base=true;version="@IMPL_VERSION@", + com.ibm.icu.util;base=true;version="@IMPL_VERSION@", + com.ibm.icu.math;base=true;version="@IMPL_VERSION@", + com.ibm.icu.impl;x-internal:=true, + com.ibm.icu.impl.locale;x-internal:=true +Eclipse-LazyStart: true +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/build.properties b/eclipse-build/plugins.template/com.ibm.icu.base/build.properties new file mode 100644 index 00000000000..8b3ddc31ddb --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/build.properties @@ -0,0 +1,19 @@ +############################################################################### +# Copyright (c) 2011 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +source.. = src/ +output.. = bin/ +src.includes = about.html,\ + about_files/ +bin.includes = .,\ + about.html,\ + about_files/,\ + plugin.properties,\ + META-INF/ diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/plugin.properties b/eclipse-build/plugins.template/com.ibm.icu.base/plugin.properties new file mode 100644 index 00000000000..05f97ff88b9 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/plugin.properties @@ -0,0 +1,12 @@ +############################################################################### +# Copyright (c) 2011 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### +pluginName = International Components for Unicode for Java (ICU4J) Replacement plug-in +providerName = IBM Corporation \ No newline at end of file diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/ICUCache.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/ICUCache.java new file mode 100644 index 00000000000..17828f7763d --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/ICUCache.java @@ -0,0 +1,21 @@ +/* + *************************************************************************** + * Copyright (c) 2007-2011 International Business Machines Corporation and * + * others. All rights reserved. * + *************************************************************************** +*/ + +package com.ibm.icu.impl; + +public interface ICUCache { + // Type of reference holding the Map instance + public static final int SOFT = 0; + public static final int WEAK = 1; + + // NULL object, which may be used for a cache key + public static final Object NULL = new Object(); + + public void clear(); + public void put(K key, V value); + public V get(Object key); +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java new file mode 100644 index 00000000000..67690da5796 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java @@ -0,0 +1,741 @@ +/* +****************************************************************************** +* Copyright (C) 2003-2011, International Business Machines Corporation and * +* others. All Rights Reserved. * +****************************************************************************** +*/ + +package com.ibm.icu.impl; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +import com.ibm.icu.impl.locale.AsciiUtil; + +/** + * Utility class to parse and normalize locale ids (including POSIX style) + */ +public final class LocaleIDParser { + private char[] id; + private int index; + private char[] buffer; + private int blen; + // um, don't handle POSIX ids unless we request it. why not? well... because. + private boolean canonicalize; + private boolean hadCountry; + + // used when canonicalizing + Map keywords; + String baseName; + + /** + * Parsing constants. + */ + private static final char KEYWORD_SEPARATOR = '@'; + private static final char HYPHEN = '-'; + private static final char KEYWORD_ASSIGN = '='; + private static final char COMMA = ','; + private static final char ITEM_SEPARATOR = ';'; + private static final char DOT = '.'; + private static final char UNDERSCORE = '_'; + + public LocaleIDParser(String localeID) { + this(localeID, false); + } + + public LocaleIDParser(String localeID, boolean canonicalize) { + id = localeID.toCharArray(); + index = 0; + buffer = new char[id.length + 5]; + blen = 0; + this.canonicalize = canonicalize; + } + + private void reset() { + index = blen = 0; + } + + // utilities for working on text in the buffer + + /** + * Append c to the buffer. + */ + private void append(char c) { + try { + buffer[blen] = c; + } + catch (IndexOutOfBoundsException e) { + if (buffer.length > 512) { + // something is seriously wrong, let this go + throw e; + } + char[] nbuffer = new char[buffer.length * 2]; + System.arraycopy(buffer, 0, nbuffer, 0, buffer.length); + nbuffer[blen] = c; + buffer = nbuffer; + } + ++blen; + } + + private void addSeparator() { + append(UNDERSCORE); + } + + /** + * Returns the text in the buffer from start to blen as a String. + */ + private String getString(int start) { + if (start == blen) { + return ""; + } + return new String(buffer, start, blen-start); + } + + /** + * Set the length of the buffer to pos, then append the string. + */ + private void set(int pos, String s) { + this.blen = pos; // no safety + append(s); + } + + /** + * Append the string to the buffer. + */ + private void append(String s) { + for (int i = 0; i < s.length(); ++i) { + append(s.charAt(i)); + } + } + + // utilities for parsing text out of the id + + /** + * Character to indicate no more text is available in the id. + */ + private static final char DONE = '\uffff'; + + /** + * Returns the character at index in the id, and advance index. The returned character + * is DONE if index was at the limit of the buffer. The index is advanced regardless + * so that decrementing the index will always 'unget' the last character returned. + */ + private char next() { + if (index == id.length) { + index++; + return DONE; + } + + return id[index++]; + } + + /** + * Advance index until the next terminator or id separator, and leave it there. + */ + private void skipUntilTerminatorOrIDSeparator() { + while (!isTerminatorOrIDSeparator(next())) { + } + --index; + } + + /** + * Returns true if the character at index in the id is a terminator. + */ + private boolean atTerminator() { + return index >= id.length || isTerminator(id[index]); + } + + /* + * Returns true if the character is an id separator (underscore or hyphen). + */ + /* private boolean isIDSeparator(char c) { + return c == UNDERSCORE || c == HYPHEN; + }*/ + + /** + * Returns true if the character is a terminator (keyword separator, dot, or DONE). + * Dot is a terminator because of the POSIX form, where dot precedes the codepage. + */ + private boolean isTerminator(char c) { + // always terminate at DOT, even if not handling POSIX. It's an error... + return c == KEYWORD_SEPARATOR || c == DONE || c == DOT; + } + + /** + * Returns true if the character is a terminator or id separator. + */ + private boolean isTerminatorOrIDSeparator(char c) { + return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || + c == DONE || c == DOT; + } + + /** + * Returns true if the start of the buffer has an experimental or private language + * prefix, the pattern '[ixIX][-_].' shows the syntax checked. + */ + private boolean haveExperimentalLanguagePrefix() { + if (id.length > 2) { + char c = id[1]; + if (c == HYPHEN || c == UNDERSCORE) { + c = id[0]; + return c == 'x' || c == 'X' || c == 'i' || c == 'I'; + } + } + return false; + } + + /** + * Returns true if a value separator occurs at or after index. + */ + private boolean haveKeywordAssign() { + // assume it is safe to start from index + for (int i = index; i < id.length; ++i) { + if (id[i] == KEYWORD_ASSIGN) { + return true; + } + } + return false; + } + + /** + * Advance index past language, and accumulate normalized language code in buffer. + * Index must be at 0 when this is called. Index is left at a terminator or id + * separator. Returns the start of the language code in the buffer. + */ + private int parseLanguage() { + if (haveExperimentalLanguagePrefix()) { + append(Character.toLowerCase(id[0])); + append(HYPHEN); + index = 2; + } + + char c; + while(!isTerminatorOrIDSeparator(c = next())) { + append(Character.toLowerCase(c)); + } + --index; // unget + + if (blen == 3) { + String lang = LocaleIDs.threeToTwoLetterLanguage(getString(0)); + if (lang != null) { + set(0, lang); + } + } + + return 0; + } + + /** + * Advance index past language. Index must be at 0 when this is called. Index + * is left at a terminator or id separator. + */ + private void skipLanguage() { + if (haveExperimentalLanguagePrefix()) { + index = 2; + } + skipUntilTerminatorOrIDSeparator(); + } + + /** + * Advance index past script, and accumulate normalized script in buffer. + * Index must be immediately after the language. + * If the item at this position is not a script (is not four characters + * long) leave index and buffer unchanged. Otherwise index is left at + * a terminator or id separator. Returns the start of the script code + * in the buffer (this may be equal to the buffer length, if there is no + * script). + */ + private int parseScript() { + if (!atTerminator()) { + int oldIndex = index; // save original index + ++index; + + int oldBlen = blen; // get before append hyphen, if we truncate everything is undone + char c; + while(!isTerminatorOrIDSeparator(c = next())) { + if (blen == oldBlen) { // first pass + addSeparator(); + append(Character.toUpperCase(c)); + } else { + append(Character.toLowerCase(c)); + } + } + --index; // unget + + /* If it's not exactly 4 characters long, then it's not a script. */ + if (index - oldIndex != 5) { // +1 to account for separator + index = oldIndex; + blen = oldBlen; + } else { + oldBlen++; // index past hyphen, for clients who want to extract just the script + } + + return oldBlen; + } + return blen; + } + + /** + * Advance index past script. + * Index must be immediately after the language and IDSeparator. + * If the item at this position is not a script (is not four characters + * long) leave index. Otherwise index is left at a terminator or + * id separator. + */ + private void skipScript() { + if (!atTerminator()) { + int oldIndex = index; + ++index; + + skipUntilTerminatorOrIDSeparator(); + if (index - oldIndex != 5) { // +1 to account for separator + index = oldIndex; + } + } + } + + /** + * Advance index past country, and accumulate normalized country in buffer. + * Index must be immediately after the script (if there is one, else language) + * and IDSeparator. Return the start of the country code in the buffer. + */ + private int parseCountry() { + if (!atTerminator()) { + int oldIndex = index; + ++index; + + int oldBlen = blen; + char c; + while (!isTerminatorOrIDSeparator(c = next())) { + if (oldBlen == blen) { // first, add hyphen + hadCountry = true; // we have a country, let variant parsing know + addSeparator(); + ++oldBlen; // increment past hyphen + } + append(Character.toUpperCase(c)); + } + --index; // unget + + int charsAppended = blen - oldBlen; + + if (charsAppended == 0) { + // Do nothing. + } + else if (charsAppended < 2 || charsAppended > 3) { + // It's not a country, so return index and blen to + // their previous values. + index = oldIndex; + --oldBlen; + blen = oldBlen; + hadCountry = false; + } + else if (charsAppended == 3) { + String region = LocaleIDs.threeToTwoLetterRegion(getString(oldBlen)); + if (region != null) { + set(oldBlen, region); + } + } + + return oldBlen; + } + + return blen; + } + + /** + * Advance index past country. + * Index must be immediately after the script (if there is one, else language) + * and IDSeparator. + */ + private void skipCountry() { + if (!atTerminator()) { + ++index; + /* + * Save the index point after the separator, since the format + * requires two separators if the country is not present. + */ + int oldIndex = index; + + skipUntilTerminatorOrIDSeparator(); + int charsSkipped = index - oldIndex; + if (charsSkipped < 2 || charsSkipped > 3) { + index = oldIndex; + } + } + } + + /** + * Advance index past variant, and accumulate normalized variant in buffer. This ignores + * the codepage information from POSIX ids. Index must be immediately after the country + * or script. Index is left at the keyword separator or at the end of the text. Return + * the start of the variant code in the buffer. + * + * In standard form, we can have the following forms: + * ll__VVVV + * ll_CC_VVVV + * ll_Ssss_VVVV + * ll_Ssss_CC_VVVV + * + * This also handles POSIX ids, which can have the following forms (pppp is code page id): + * ll_CC.pppp --> ll_CC + * ll_CC.pppp@VVVV --> ll_CC_VVVV + * ll_CC@VVVV --> ll_CC_VVVV + * + * We identify this use of '@' in POSIX ids by looking for an '=' following + * the '@'. If there is one, we consider '@' to start a keyword list, instead of + * being part of a POSIX id. + * + * Note: since it was decided that we want an option to not handle POSIX ids, this + * becomes a bit more complex. + */ + private int parseVariant() { + int oldBlen = blen; + + boolean start = true; + boolean needSeparator = true; + boolean skipping = false; + char c; + while ((c = next()) != DONE) { + if (c == DOT) { + start = false; + skipping = true; + } else if (c == KEYWORD_SEPARATOR) { + if (haveKeywordAssign()) { + break; + } + skipping = false; + start = false; + needSeparator = true; // add another underscore if we have more text + } else if (start) { + start = false; + } else if (!skipping) { + if (needSeparator) { + boolean incOldBlen = blen == oldBlen; // need to skip separators + needSeparator = false; + if (incOldBlen && !hadCountry) { // no country, we'll need two + addSeparator(); + ++oldBlen; // for sure + } + addSeparator(); + if (incOldBlen) { // only for the first separator + ++oldBlen; + } + } + c = Character.toUpperCase(c); + if (c == HYPHEN || c == COMMA) { + c = UNDERSCORE; + } + append(c); + } + } + --index; // unget + + return oldBlen; + } + + // no need for skipvariant, to get the keywords we'll just scan directly for + // the keyword separator + + /** + * Returns the normalized language id, or the empty string. + */ + public String getLanguage() { + reset(); + return getString(parseLanguage()); + } + + /** + * Returns the normalized script id, or the empty string. + */ + public String getScript() { + reset(); + skipLanguage(); + return getString(parseScript()); + } + + /** + * return the normalized country id, or the empty string. + */ + public String getCountry() { + reset(); + skipLanguage(); + skipScript(); + return getString(parseCountry()); + } + + /** + * Returns the normalized variant id, or the empty string. + */ + public String getVariant() { + reset(); + skipLanguage(); + skipScript(); + skipCountry(); + return getString(parseVariant()); + } + + /** + * Returns the language, script, country, and variant as separate strings. + */ + public String[] getLanguageScriptCountryVariant() { + reset(); + return new String[] { + getString(parseLanguage()), + getString(parseScript()), + getString(parseCountry()), + getString(parseVariant()) + }; + } + + public void setBaseName(String baseName) { + this.baseName = baseName; + } + + public void parseBaseName() { + if (baseName != null) { + set(0, baseName); + } else { + reset(); + parseLanguage(); + parseScript(); + parseCountry(); + parseVariant(); + + // catch unwanted trailing underscore after country if there was no variant + if (blen > 1 && buffer[blen-1] == UNDERSCORE) { + --blen; + } + } + } + + /** + * Returns the normalized base form of the locale id. The base + * form does not include keywords. + */ + public String getBaseName() { + if (baseName != null) { + return baseName; + } + parseBaseName(); + return getString(0); + } + + /** + * Returns the normalized full form of the locale id. The full + * form includes keywords if they are present. + */ + public String getName() { + parseBaseName(); + parseKeywords(); + return getString(0); + } + + // keyword utilities + + /** + * If we have keywords, advance index to the start of the keywords and return true, + * otherwise return false. + */ + private boolean setToKeywordStart() { + for (int i = index; i < id.length; ++i) { + if (id[i] == KEYWORD_SEPARATOR) { + if (canonicalize) { + for (int j = ++i; j < id.length; ++j) { // increment i past separator for return + if (id[j] == KEYWORD_ASSIGN) { + index = i; + return true; + } + } + } else { + if (++i < id.length) { + index = i; + return true; + } + } + break; + } + } + return false; + } + + private static boolean isDoneOrKeywordAssign(char c) { + return c == DONE || c == KEYWORD_ASSIGN; + } + + private static boolean isDoneOrItemSeparator(char c) { + return c == DONE || c == ITEM_SEPARATOR; + } + + private String getKeyword() { + int start = index; + while (!isDoneOrKeywordAssign(next())) { + } + --index; + return AsciiUtil.toLowerString(new String(id, start, index-start).trim()); + } + + private String getValue() { + int start = index; + while (!isDoneOrItemSeparator(next())) { + } + --index; + return new String(id, start, index-start).trim(); // leave case alone + } + + private Comparator getKeyComparator() { + final Comparator comp = new Comparator() { + public int compare(String lhs, String rhs) { + return lhs.compareTo(rhs); + } + }; + return comp; + } + + /** + * Returns a map of the keywords and values, or null if there are none. + */ + public Map getKeywordMap() { + if (keywords == null) { + TreeMap m = null; + if (setToKeywordStart()) { + // trim spaces and convert to lower case, both keywords and values. + do { + String key = getKeyword(); + if (key.length() == 0) { + break; + } + char c = next(); + if (c != KEYWORD_ASSIGN) { + // throw new IllegalArgumentException("key '" + key + "' missing a value."); + if (c == DONE) { + break; + } else { + continue; + } + } + String value = getValue(); + if (value.length() == 0) { + // throw new IllegalArgumentException("key '" + key + "' missing a value."); + continue; + } + if (m == null) { + m = new TreeMap(getKeyComparator()); + } else if (m.containsKey(key)) { + // throw new IllegalArgumentException("key '" + key + "' already has a value."); + continue; + } + m.put(key, value); + } while (next() == ITEM_SEPARATOR); + } + keywords = m != null ? m : Collections.emptyMap(); + } + + return keywords; + } + + + /** + * Parse the keywords and return start of the string in the buffer. + */ + private int parseKeywords() { + int oldBlen = blen; + Map m = getKeywordMap(); + if (!m.isEmpty()) { + boolean first = true; + for (Map.Entry e : m.entrySet()) { + append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR); + first = false; + append(e.getKey()); + append(KEYWORD_ASSIGN); + append(e.getValue()); + } + if (blen != oldBlen) { + ++oldBlen; + } + } + return oldBlen; + } + + /** + * Returns an iterator over the keywords, or null if we have an empty map. + */ + public Iterator getKeywords() { + Map m = getKeywordMap(); + return m.isEmpty() ? null : m.keySet().iterator(); + } + + /** + * Returns the value for the named keyword, or null if the keyword is not + * present. + */ + public String getKeywordValue(String keywordName) { + Map m = getKeywordMap(); + return m.isEmpty() ? null : m.get(AsciiUtil.toLowerString(keywordName.trim())); + } + + /** + * Set the keyword value only if it is not already set to something else. + */ + public void defaultKeywordValue(String keywordName, String value) { + setKeywordValue(keywordName, value, false); + } + + /** + * Set the value for the named keyword, or unset it if value is null. If + * keywordName itself is null, unset all keywords. If keywordName is not null, + * value must not be null. + */ + public void setKeywordValue(String keywordName, String value) { + setKeywordValue(keywordName, value, true); + } + + /** + * Set the value for the named keyword, or unset it if value is null. If + * keywordName itself is null, unset all keywords. If keywordName is not null, + * value must not be null. If reset is true, ignore any previous value for + * the keyword, otherwise do not change the keyword (including removal of + * one or all keywords). + */ + private void setKeywordValue(String keywordName, String value, boolean reset) { + if (keywordName == null) { + if (reset) { + // force new map, ignore value + keywords = Collections.emptyMap(); + } + } else { + keywordName = AsciiUtil.toLowerString(keywordName.trim()); + if (keywordName.length() == 0) { + throw new IllegalArgumentException("keyword must not be empty"); + } + if (value != null) { + value = value.trim(); + if (value.length() == 0) { + throw new IllegalArgumentException("value must not be empty"); + } + } + Map m = getKeywordMap(); + if (m.isEmpty()) { // it is EMPTY_MAP + if (value != null) { + // force new map + keywords = new TreeMap(getKeyComparator()); + keywords.put(keywordName, value.trim()); + } + } else { + if (reset || !m.containsKey(keywordName)) { + if (value != null) { + m.put(keywordName, value); + } else { + m.remove(keywordName); + if (m.isEmpty()) { + // force new map + keywords = Collections.emptyMap(); + } + } + } + } + } + } +} \ No newline at end of file diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDs.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDs.java new file mode 100644 index 00000000000..34c0a5b26d6 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDs.java @@ -0,0 +1,536 @@ +/* + ******************************************************************************* + * Copyright (C) 2009-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.impl; + +import java.util.MissingResourceException; + +import com.ibm.icu.util.ULocale; + + +/** + * Utilities for mapping between old and new language, country, and other + * locale ID related names. + */ +public class LocaleIDs { + + /** + * Returns a list of all 2-letter country codes defined in ISO 3166. + * Can be used to create Locales. + * @stable ICU 3.0 + */ + public static String[] getISOCountries() { + initCountryTables(); + return _countries.clone(); + } + + /** + * Returns a list of all 2-letter language codes defined in ISO 639. + * Can be used to create Locales. + * [NOTE: ISO 639 is not a stable standard-- some languages' codes have changed. + * The list this function returns includes both the new and the old codes for the + * languages whose codes have changed.] + * @stable ICU 3.0 + */ + public static String[] getISOLanguages() { + initLanguageTables(); + return _languages.clone(); + } + + /** + * Returns a three-letter abbreviation for the provided country. If the provided + * country is empty, returns the empty string. Otherwise, returns + * an uppercase ISO 3166 3-letter country code. + * @exception MissingResourceException Throws MissingResourceException if the + * three-letter country abbreviation is not available for this locale. + * @stable ICU 3.0 + */ + public static String getISO3Country(String country){ + initCountryTables(); + + int offset = findIndex(_countries, country); + if(offset>=0){ + return _countries3[offset]; + }else{ + offset = findIndex(_obsoleteCountries, country); + if(offset>=0){ + return _obsoleteCountries3[offset]; + } + } + return ""; + } + /** + * Returns a three-letter abbreviation for the language. If language is + * empty, returns the empty string. Otherwise, returns + * a lowercase ISO 639-2/T language code. + * The ISO 639-2 language codes can be found on-line at + * ftp://dkuug.dk/i18n/iso-639-2.txt + * @exception MissingResourceException Throws MissingResourceException if the + * three-letter language abbreviation is not available for this locale. + * @stable ICU 3.0 + */ + public static String getISO3Language(String language) { + initLanguageTables(); + + int offset = findIndex(_languages, language); + if(offset>=0){ + return _languages3[offset]; + } else { + offset = findIndex(_obsoleteLanguages, language); + if (offset >= 0) { + return _obsoleteLanguages3[offset]; + } + } + return ""; + } + + public static String threeToTwoLetterLanguage(String lang) { + initLanguageTables(); + + /* convert 3 character code to 2 character code if possible *CWB*/ + int offset = findIndex(_languages3, lang); + if (offset >= 0) { + return _languages[offset]; + } + + offset = findIndex(_obsoleteLanguages3, lang); + if (offset >= 0) { + return _obsoleteLanguages[offset]; + } + + return null; + } + + public static String threeToTwoLetterRegion(String region) { + initCountryTables(); + + /* convert 3 character code to 2 character code if possible *CWB*/ + int offset = findIndex(_countries3, region); + if (offset >= 0) { + return _countries[offset]; + } + + offset = findIndex(_obsoleteCountries3, region); + if (offset >= 0) { + return _obsoleteCountries[offset]; + } + + return null; + } + + /** + * linear search of the string array. the arrays are unfortunately ordered by the + * two-letter target code, not the three-letter search code, which seems backwards. + */ + private static int findIndex(String[] array, String target){ + for (int i = 0; i < array.length; i++) { + if (target.equals(array[i])) { + return i; + } + } + return -1; + } + + + /** + * Tables used in normalizing portions of the id. + */ + /* tables updated per http://lcweb.loc.gov/standards/iso639-2/ + to include the revisions up to 2001/7/27 *CWB*/ + /* The 3 character codes are the terminology codes like RFC 3066. + This is compatible with prior ICU codes */ + /* "in" "iw" "ji" "jw" & "sh" have been withdrawn but are still in + the table but now at the end of the table because + 3 character codes are duplicates. This avoids bad searches + going from 3 to 2 character codes.*/ + /* The range qaa-qtz is reserved for local use. */ + + private static String[] _languages; + private static String[] _replacementLanguages; + private static String[] _obsoleteLanguages; + private static String[] _languages3; + private static String[] _obsoleteLanguages3; + + // Avoid initializing languages tables unless we have to. + private static void initLanguageTables() { + if (_languages == null) { + + /* This list MUST be in sorted order, and MUST contain the two-letter codes + if one exists otherwise use the three letter code */ + String[] tempLanguages = { + "aa", "ab", "ace", "ach", "ada", "ady", "ae", "af", "afa", + "afh", "ak", "akk", "ale", "alg", "am", "an", "ang", "apa", + "ar", "arc", "arn", "arp", "art", "arw", "as", "ast", + "ath", "aus", "av", "awa", "ay", "az", "ba", "bad", + "bai", "bal", "ban", "bas", "bat", "be", "bej", + "bem", "ber", "bg", "bh", "bho", "bi", "bik", "bin", + "bla", "bm", "bn", "bnt", "bo", "br", "bra", "bs", + "btk", "bua", "bug", "byn", "ca", "cad", "cai", "car", "cau", + "ce", "ceb", "cel", "ch", "chb", "chg", "chk", "chm", + "chn", "cho", "chp", "chr", "chy", "cmc", "co", "cop", + "cpe", "cpf", "cpp", "cr", "crh", "crp", "cs", "csb", "cu", "cus", + "cv", "cy", "da", "dak", "dar", "day", "de", "del", "den", + "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv", "dyu", + "dz", "ee", "efi", "egy", "eka", "el", "elx", "en", + "enm", "eo", "es", "et", "eu", "ewo", "fa", + "fan", "fat", "ff", "fi", "fiu", "fj", "fo", "fon", + "fr", "frm", "fro", "fur", "fy", "ga", "gaa", "gay", + "gba", "gd", "gem", "gez", "gil", "gl", "gmh", "gn", + "goh", "gon", "gor", "got", "grb", "grc", "gu", "gv", + "gwi", "ha", "hai", "haw", "he", "hi", "hil", "him", + "hit", "hmn", "ho", "hr", "hsb", "ht", "hu", "hup", "hy", "hz", + "ia", "iba", "id", "ie", "ig", "ii", "ijo", "ik", + "ilo", "inc", "ine", "inh", "io", "ira", "iro", "is", "it", + "iu", "ja", "jbo", "jpr", "jrb", "jv", "ka", "kaa", "kab", + "kac", "kam", "kar", "kaw", "kbd", "kg", "kha", "khi", + "kho", "ki", "kj", "kk", "kl", "km", "kmb", "kn", + "ko", "kok", "kos", "kpe", "kr", "krc", "kro", "kru", "ks", + "ku", "kum", "kut", "kv", "kw", "ky", "la", "lad", + "lah", "lam", "lb", "lez", "lg", "li", "ln", "lo", "lol", + "loz", "lt", "lu", "lua", "lui", "lun", "luo", "lus", + "lv", "mad", "mag", "mai", "mak", "man", "map", "mas", + "mdf", "mdr", "men", "mg", "mga", "mh", "mi", "mic", "min", + "mis", "mk", "mkh", "ml", "mn", "mnc", "mni", "mno", + "mo", "moh", "mos", "mr", "ms", "mt", "mul", "mun", + "mus", "mwr", "my", "myn", "myv", "na", "nah", "nai", "nap", + "nb", "nd", "nds", "ne", "new", "ng", "nia", "nic", + "niu", "nl", "nn", "no", "nog", "non", "nr", "nso", "nub", + "nv", "nwc", "ny", "nym", "nyn", "nyo", "nzi", "oc", "oj", + "om", "or", "os", "osa", "ota", "oto", "pa", "paa", + "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn", + "pi", "pl", "pon", "pra", "pro", "ps", "pt", "qu", + "raj", "rap", "rar", "rm", "rn", "ro", "roa", "rom", + "ru", "rup", "rw", "sa", "sad", "sah", "sai", "sal", "sam", + "sas", "sat", "sc", "sco", "sd", "se", "sel", "sem", + "sg", "sga", "sgn", "shn", "si", "sid", "sio", "sit", + "sk", "sl", "sla", "sm", "sma", "smi", "smj", "smn", + "sms", "sn", "snk", "so", "sog", "son", "sq", "sr", + "srr", "ss", "ssa", "st", "su", "suk", "sus", "sux", + "sv", "sw", "syr", "ta", "tai", "te", "tem", "ter", + "tet", "tg", "th", "ti", "tig", "tiv", "tk", "tkl", + "tl", "tlh", "tli", "tmh", "tn", "to", "tog", "tpi", "tr", + "ts", "tsi", "tt", "tum", "tup", "tut", "tvl", "tw", + "ty", "tyv", "udm", "ug", "uga", "uk", "umb", "und", "ur", + "uz", "vai", "ve", "vi", "vo", "vot", "wa", "wak", + "wal", "war", "was", "wen", "wo", "xal", "xh", "yao", "yap", + "yi", "yo", "ypk", "za", "zap", "zen", "zh", "znd", + "zu", "zun", + }; + + String[] tempReplacementLanguages = { + "id", "he", "yi", "jv", "sr", "nb",/* replacement language codes */ + }; + + String[] tempObsoleteLanguages = { + "in", "iw", "ji", "jw", "sh", "no", /* obsolete language codes */ + }; + + /* This list MUST contain a three-letter code for every two-letter code in the + list above, and they MUST ne in the same order (i.e., the same language must + be in the same place in both lists)! */ + String[] tempLanguages3 = { + /*"aa", "ab", "ace", "ach", "ada", "ady", "ae", "af", "afa", */ + "aar", "abk", "ace", "ach", "ada", "ady", "ave", "afr", "afa", + /*"afh", "ak", "akk", "ale", "alg", "am", "an", "ang", "apa", */ + "afh", "aka", "akk", "ale", "alg", "amh", "arg", "ang", "apa", + /*"ar", "arc", "arn", "arp", "art", "arw", "as", "ast", */ + "ara", "arc", "arn", "arp", "art", "arw", "asm", "ast", + /*"ath", "aus", "av", "awa", "ay", "az", "ba", "bad", */ + "ath", "aus", "ava", "awa", "aym", "aze", "bak", "bad", + /*"bai", "bal", "ban", "bas", "bat", "be", "bej", */ + "bai", "bal", "ban", "bas", "bat", "bel", "bej", + /*"bem", "ber", "bg", "bh", "bho", "bi", "bik", "bin", */ + "bem", "ber", "bul", "bih", "bho", "bis", "bik", "bin", + /*"bla", "bm", "bn", "bnt", "bo", "br", "bra", "bs", */ + "bla", "bam", "ben", "bnt", "bod", "bre", "bra", "bos", + /*"btk", "bua", "bug", "byn", "ca", "cad", "cai", "car", "cau", */ + "btk", "bua", "bug", "byn", "cat", "cad", "cai", "car", "cau", + /*"ce", "ceb", "cel", "ch", "chb", "chg", "chk", "chm", */ + "che", "ceb", "cel", "cha", "chb", "chg", "chk", "chm", + /*"chn", "cho", "chp", "chr", "chy", "cmc", "co", "cop", */ + "chn", "cho", "chp", "chr", "chy", "cmc", "cos", "cop", + /*"cpe", "cpf", "cpp", "cr", "crh", "crp", "cs", "csb", "cu", "cus", */ + "cpe", "cpf", "cpp", "cre", "crh", "crp", "ces", "csb", "chu", "cus", + /*"cv", "cy", "da", "dak", "dar", "day", "de", "del", "den", */ + "chv", "cym", "dan", "dak", "dar", "day", "deu", "del", "den", + /*"dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv", "dyu", */ + "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "div", "dyu", + /*"dz", "ee", "efi", "egy", "eka", "el", "elx", "en", */ + "dzo", "ewe", "efi", "egy", "eka", "ell", "elx", "eng", + /*"enm", "eo", "es", "et", "eu", "ewo", "fa", */ + "enm", "epo", "spa", "est", "eus", "ewo", "fas", + /*"fan", "fat", "ff", "fi", "fiu", "fj", "fo", "fon", */ + "fan", "fat", "ful", "fin", "fiu", "fij", "fao", "fon", + /*"fr", "frm", "fro", "fur", "fy", "ga", "gaa", "gay", */ + "fra", "frm", "fro", "fur", "fry", "gle", "gaa", "gay", + /*"gba", "gd", "gem", "gez", "gil", "gl", "gmh", "gn", */ + "gba", "gla", "gem", "gez", "gil", "glg", "gmh", "grn", + /*"goh", "gon", "gor", "got", "grb", "grc", "gu", "gv", */ + "goh", "gon", "gor", "got", "grb", "grc", "guj", "glv", + /*"gwi", "ha", "hai", "haw", "he", "hi", "hil", "him", */ + "gwi", "hau", "hai", "haw", "heb", "hin", "hil", "him", + /*"hit", "hmn", "ho", "hr", "hsb", "ht", "hu", "hup", "hy", "hz", */ + "hit", "hmn", "hmo", "hrv", "hsb", "hat", "hun", "hup", "hye", "her", + /*"ia", "iba", "id", "ie", "ig", "ii", "ijo", "ik", */ + "ina", "iba", "ind", "ile", "ibo", "iii", "ijo", "ipk", + /*"ilo", "inc", "ine", "inh", "io", "ira", "iro", "is", "it", */ + "ilo", "inc", "ine", "inh", "ido", "ira", "iro", "isl", "ita", + /*"iu", "ja", "jbo", "jpr", "jrb", "jv", "ka", "kaa", "kab", */ + "iku", "jpn", "jbo", "jpr", "jrb", "jaw", "kat", "kaa", "kab", + /*"kac", "kam", "kar", "kaw", "kbd", "kg", "kha", "khi", */ + "kac", "kam", "kar", "kaw", "kbd", "kon", "kha", "khi", + /*"kho", "ki", "kj", "kk", "kl", "km", "kmb", "kn", */ + "kho", "kik", "kua", "kaz", "kal", "khm", "kmb", "kan", + /*"ko", "kok", "kos", "kpe", "kr", "krc", "kro", "kru", "ks", */ + "kor", "kok", "kos", "kpe", "kau", "krc", "kro", "kru", "kas", + /*"ku", "kum", "kut", "kv", "kw", "ky", "la", "lad", */ + "kur", "kum", "kut", "kom", "cor", "kir", "lat", "lad", + /*"lah", "lam", "lb", "lez", "lg", "li", "ln", "lo", "lol", */ + "lah", "lam", "ltz", "lez", "lug", "lim", "lin", "lao", "lol", + /*"loz", "lt", "lu", "lua", "lui", "lun", "luo", "lus", */ + "loz", "lit", "lub", "lua", "lui", "lun", "luo", "lus", + /*"lv", "mad", "mag", "mai", "mak", "man", "map", "mas", */ + "lav", "mad", "mag", "mai", "mak", "man", "map", "mas", + /*"mdf", "mdr", "men", "mg", "mga", "mh", "mi", "mic", "min", */ + "mdf", "mdr", "men", "mlg", "mga", "mah", "mri", "mic", "min", + /*"mis", "mk", "mkh", "ml", "mn", "mnc", "mni", "mno", */ + "mis", "mkd", "mkh", "mal", "mon", "mnc", "mni", "mno", + /*"mo", "moh", "mos", "mr", "ms", "mt", "mul", "mun", */ + "mol", "moh", "mos", "mar", "msa", "mlt", "mul", "mun", + /*"mus", "mwr", "my", "myn", "myv", "na", "nah", "nai", "nap", */ + "mus", "mwr", "mya", "myn", "myv", "nau", "nah", "nai", "nap", + /*"nb", "nd", "nds", "ne", "new", "ng", "nia", "nic", */ + "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic", + /*"niu", "nl", "nn", "no", "nog", "non", "nr", "nso", "nub", */ + "niu", "nld", "nno", "nor", "nog", "non", "nbl", "nso", "nub", + /*"nv", "nwc", "ny", "nym", "nyn", "nyo", "nzi", "oc", "oj", */ + "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji", + /*"om", "or", "os", "osa", "ota", "oto", "pa", "paa", */ + "orm", "ori", "oss", "osa", "ota", "oto", "pan", "paa", + /*"pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn", */ + "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn", + /*"pi", "pl", "pon", "pra", "pro", "ps", "pt", "qu", */ + "pli", "pol", "pon", "pra", "pro", "pus", "por", "que", + /*"raj", "rap", "rar", "rm", "rn", "ro", "roa", "rom", */ + "raj", "rap", "rar", "roh", "run", "ron", "roa", "rom", + /*"ru", "rup", "rw", "sa", "sad", "sah", "sai", "sal", "sam", */ + "rus", "rup", "kin", "san", "sad", "sah", "sai", "sal", "sam", + /*"sas", "sat", "sc", "sco", "sd", "se", "sel", "sem", */ + "sas", "sat", "srd", "sco", "snd", "sme", "sel", "sem", + /*"sg", "sga", "sgn", "shn", "si", "sid", "sio", "sit", */ + "sag", "sga", "sgn", "shn", "sin", "sid", "sio", "sit", + /*"sk", "sl", "sla", "sm", "sma", "smi", "smj", "smn", */ + "slk", "slv", "sla", "smo", "sma", "smi", "smj", "smn", + /*"sms", "sn", "snk", "so", "sog", "son", "sq", "sr", */ + "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp", + /*"srr", "ss", "ssa", "st", "su", "suk", "sus", "sux", */ + "srr", "ssw", "ssa", "sot", "sun", "suk", "sus", "sux", + /*"sv", "sw", "syr", "ta", "tai", "te", "tem", "ter", */ + "swe", "swa", "syr", "tam", "tai", "tel", "tem", "ter", + /*"tet", "tg", "th", "ti", "tig", "tiv", "tk", "tkl", */ + "tet", "tgk", "tha", "tir", "tig", "tiv", "tuk", "tkl", + /*"tl", "tlh", "tli", "tmh", "tn", "to", "tog", "tpi", "tr", */ + "tgl", "tlh", "tli", "tmh", "tsn", "ton", "tog", "tpi", "tur", + /*"ts", "tsi", "tt", "tum", "tup", "tut", "tvl", "tw", */ + "tso", "tsi", "tat", "tum", "tup", "tut", "tvl", "twi", + /*"ty", "tyv", "udm", "ug", "uga", "uk", "umb", "und", "ur", */ + "tah", "tyv", "udm", "uig", "uga", "ukr", "umb", "und", "urd", + /*"uz", "vai", "ve", "vi", "vo", "vot", "wa", "wak", */ + "uzb", "vai", "ven", "vie", "vol", "vot", "wln", "wak", + /*"wal", "war", "was", "wen", "wo", "xal", "xh", "yao", "yap", */ + "wal", "war", "was", "wen", "wol", "xal", "xho", "yao", "yap", + /*"yi", "yo", "ypk", "za", "zap", "zen", "zh", "znd", */ + "yid", "yor", "ypk", "zha", "zap", "zen", "zho", "znd", + /*"zu", "zun", */ + "zul", "zun", + }; + + String[] tempObsoleteLanguages3 = { + /* "in", "iw", "ji", "jw", "sh", */ + "ind", "heb", "yid", "jaw", "srp", + }; + + synchronized (ULocale.class) { + if (_languages == null) { + _languages = tempLanguages; + _replacementLanguages = tempReplacementLanguages; + _obsoleteLanguages = tempObsoleteLanguages; + _languages3 = tempLanguages3; + _obsoleteLanguages3 = tempObsoleteLanguages3; + } + } + } + } + + private static String[] _countries; + private static String[] _deprecatedCountries; + private static String[] _replacementCountries; + private static String[] _obsoleteCountries; + private static String[] _countries3; + private static String[] _obsoleteCountries3; + + // Avoid initializing country tables unless we have to. + private static void initCountryTables() { + if (_countries == null) { + /* ZR(ZAR) is now CD(COD) and FX(FXX) is PS(PSE) as per + http://www.evertype.com/standards/iso3166/iso3166-1-en.html + added new codes keeping the old ones for compatibility + updated to include 1999/12/03 revisions *CWB*/ + + /* RO(ROM) is now RO(ROU) according to + http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html + */ + + /* This list MUST be in sorted order, and MUST contain only two-letter codes! */ + String[] tempCountries = { + "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", + "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", + "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", + "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BV", + "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", + "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", + "CU", "CV", "CX", "CY", "CZ", "DE", "DJ", "DK", + "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", + "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", + "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", + "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", + "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", + "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", + "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", + "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", + "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", + "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", + "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", + "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", + "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", + "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", + "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", + "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", + "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", + "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", + "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", + "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", + "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", + "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", + "WS", "YE", "YT", "ZA", "ZM", "ZW", + }; + + /* this table is used for 3 letter codes */ + String[] tempObsoleteCountries = { + "FX", "CS", "RO", "TP", "YU", "ZR", /* obsolete country codes */ + }; + + String[] tempDeprecatedCountries = { + "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" /* deprecated country list */ + }; + String[] tempReplacementCountries = { + /* "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" */ + "MM", "RS", "BJ", "FR", "BF", "VU", "ZW", "TL", "RS", "CD", /* replacement country codes */ + }; + + /* This list MUST contain a three-letter code for every two-letter code in + the above list, and they MUST be listed in the same order! */ + String[] tempCountries3 = { + /* "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", */ + "AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM", "ANT", + /* "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", */ + "AGO", "ATA", "ARG", "ASM", "AUT", "AUS", "ABW", "ALA", "AZE", + /* "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", */ + "BIH", "BRB", "BGD", "BEL", "BFA", "BGR", "BHR", "BDI", + /* "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BV", */ + "BEN", "BLM", "BMU", "BRN", "BOL", "BRA", "BHS", "BTN", "BVT", + /* "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", */ + "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG", + /* "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", */ + "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI", + /* "CU", "CV", "CX", "CY", "CZ", "DE", "DJ", "DK", */ + "CUB", "CPV", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK", + /* "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", */ + "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI", + /* "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", */ + "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA", + /* "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", */ + "GAB", "GBR", "GRD", "GEO", "GUF", "GGY", "GHA", "GIB", "GRL", + /* "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", */ + "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM", + /* "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", */ + "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN", + /* "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS" */ + "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL", + /* "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", */ + "ITA", "JEY", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR", + /* "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", */ + "COM", "KNA", "PRK", "KOR", "KWT", "CYM", "KAZ", "LAO", + /* "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", */ + "LBN", "LCA", "LIE", "LKA", "LBR", "LSO", "LTU", "LUX", + /* "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", */ + "LVA", "LBY", "MAR", "MCO", "MDA", "MNE", "MAF", "MDG", "MHL", "MKD", + /* "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", */ + "MLI", "MMR", "MNG", "MAC", "MNP", "MTQ", "MRT", "MSR", + /* "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", */ + "MLT", "MUS", "MDV", "MWI", "MEX", "MYS", "MOZ", "NAM", + /* "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", */ + "NCL", "NER", "NFK", "NGA", "NIC", "NLD", "NOR", "NPL", + /* "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", */ + "NRU", "NIU", "NZL", "OMN", "PAN", "PER", "PYF", "PNG", + /* "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", */ + "PHL", "PAK", "POL", "SPM", "PCN", "PRI", "PSE", "PRT", + /* "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", */ + "PLW", "PRY", "QAT", "REU", "ROU", "SRB", "RUS", "RWA", "SAU", + /* "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", */ + "SLB", "SYC", "SDN", "SWE", "SGP", "SHN", "SVN", "SJM", + /* "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", */ + "SVK", "SLE", "SMR", "SEN", "SOM", "SUR", "STP", "SLV", + /* "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", */ + "SYR", "SWZ", "TCA", "TCD", "ATF", "TGO", "THA", "TJK", + /* "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", */ + "TKL", "TLS", "TKM", "TUN", "TON", "TUR", "TTO", "TUV", + /* "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", */ + "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB", + /* "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", */ + "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF", + /* "WS", "YE", "YT", "ZA", "ZM", "ZW" */ + "WSM", "YEM", "MYT", "ZAF", "ZMB", "ZWE", + }; + + String[] tempObsoleteCountries3 = { + /*"FX", "CS", "RO", "TP", "YU", "ZR", */ + "FXX", "SCG", "ROM", "TMP", "YUG", "ZAR", + }; + + synchronized (ULocale.class) { + if (_countries == null) { + _countries = tempCountries; + _deprecatedCountries = tempDeprecatedCountries; + _replacementCountries = tempReplacementCountries; + _obsoleteCountries = tempObsoleteCountries; + _countries3 = tempCountries3; + _obsoleteCountries3 = tempObsoleteCountries3; + } + } + } + } + + public static String getCurrentCountryID(String oldID){ + initCountryTables(); + int offset = findIndex(_deprecatedCountries, oldID); + if (offset >= 0) { + return _replacementCountries[offset]; + } + return oldID; + } + + public static String getCurrentLanguageID(String oldID){ + initLanguageTables(); + int offset = findIndex(_obsoleteLanguages, oldID); + if (offset >= 0) { + return _replacementLanguages[offset]; + } + return oldID; + } + + +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleUtility.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleUtility.java new file mode 100644 index 00000000000..143ac9d2d29 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleUtility.java @@ -0,0 +1,132 @@ +/* + ****************************************************************************** + * Copyright (C) 1996-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ****************************************************************************** + * + ****************************************************************************** + */ + +package com.ibm.icu.impl; + +import java.util.Locale; + +/** + * A class to hold utility functions missing from java.util.Locale. + */ +public class LocaleUtility { + + /** + * A helper function to convert a string of the form + * aa_BB_CC to a locale object. Why isn't this in Locale? + */ + public static Locale getLocaleFromName(String name) { + String language = ""; + String country = ""; + String variant = ""; + + int i1 = name.indexOf('_'); + if (i1 < 0) { + language = name; + } else { + language = name.substring(0, i1); + ++i1; + int i2 = name.indexOf('_', i1); + if (i2 < 0) { + country = name.substring(i1); + } else { + country = name.substring(i1, i2); + variant = name.substring(i2+1); + } + } + + return new Locale(language, country, variant); + } + + /** + * Compare two locale strings of the form aa_BB_CC, and + * return true if parent is a 'strict' fallback of child, that is, + * if child =~ "^parent(_.+)*" (roughly). + */ + public static boolean isFallbackOf(String parent, String child) { + if (!child.startsWith(parent)) { + return false; + } + int i = parent.length(); + return (i == child.length() || + child.charAt(i) == '_'); + } + + /** + * Compare two locales, and return true if the parent is a + * 'strict' fallback of the child (parent string is a fallback + * of child string). + */ + public static boolean isFallbackOf(Locale parent, Locale child) { + return isFallbackOf(parent.toString(), child.toString()); + } + + + /* + * Convenience method that calls canonicalLocaleString(String) with + * locale.toString(); + */ + /*public static String canonicalLocaleString(Locale locale) { + return canonicalLocaleString(locale.toString()); + }*/ + + /* + * You'd think that Locale canonicalizes, since it munges the + * renamed languages, but it doesn't quite. It forces the region + * to be upper case but doesn't do anything about the language or + * variant. Our canonical form is 'lower_UPPER_UPPER'. + */ + /*public static String canonicalLocaleString(String id) { + if (id != null) { + int x = id.indexOf("_"); + if (x == -1) { + id = id.toLowerCase(Locale.ENGLISH); + } else { + StringBuffer buf = new StringBuffer(); + buf.append(id.substring(0, x).toLowerCase(Locale.ENGLISH)); + buf.append(id.substring(x).toUpperCase(Locale.ENGLISH)); + + int len = buf.length(); + int n = len; + while (--n >= 0 && buf.charAt(n) == '_') { + } + if (++n != len) { + buf.delete(n, len); + } + id = buf.toString(); + } + } + return id; + }*/ + + /** + * Fallback from the given locale name by removing the rightmost _-delimited + * element. If there is none, return the root locale ("", "", ""). If this + * is the root locale, return null. NOTE: The string "root" is not + * recognized; do not use it. + * + * @return a new Locale that is a fallback from the given locale, or null. + */ + public static Locale fallback(Locale loc) { + + // Split the locale into parts and remove the rightmost part + String[] parts = new String[] + { loc.getLanguage(), loc.getCountry(), loc.getVariant() }; + int i; + for (i=2; i>=0; --i) { + if (parts[i].length() != 0) { + parts[i] = ""; + break; + } + } + if (i<0) { + return null; // All parts were empty + } + return new Locale(parts[0], parts[1], parts[2]); + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/SimpleCache.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/SimpleCache.java new file mode 100644 index 00000000000..7ee2dc50dff --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/SimpleCache.java @@ -0,0 +1,73 @@ +/* + **************************************************************************** + * Copyright (c) 2007-2011 International Business Machines Corporation and * + * others. All rights reserved. * + **************************************************************************** + */ + +package com.ibm.icu.impl; + +import java.lang.ref.Reference; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class SimpleCache implements ICUCache { + private static final int DEFAULT_CAPACITY = 16; + + private Reference> cacheRef = null; + private int type = ICUCache.SOFT; + private int capacity = DEFAULT_CAPACITY; + + public SimpleCache() { + } + + public SimpleCache(int cacheType) { + this(cacheType, DEFAULT_CAPACITY); + } + + public SimpleCache(int cacheType, int initialCapacity) { + if (cacheType == ICUCache.WEAK) { + type = cacheType; + } + if (initialCapacity > 0) { + capacity = initialCapacity; + } + } + + public V get(Object key) { + Reference> ref = cacheRef; + if (ref != null) { + Map map = ref.get(); + if (map != null) { + return map.get(key); + } + } + return null; + } + + public void put(K key, V value) { + Reference> ref = cacheRef; + Map map = null; + if (ref != null) { + map = ref.get(); + } + if (map == null) { + map = Collections.synchronizedMap(new HashMap(capacity)); + if (type == ICUCache.WEAK) { + ref = new WeakReference>(map); + } else { + ref = new SoftReference>(map); + } + cacheRef = ref; + } + map.put(key, value); + } + + public void clear() { + cacheRef = null; + } + +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/locale/AsciiUtil.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/locale/AsciiUtil.java new file mode 100644 index 00000000000..7600914c5f3 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/locale/AsciiUtil.java @@ -0,0 +1,180 @@ +/* + ******************************************************************************* + * Copyright (C) 2009-2011, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.impl.locale; + +public final class AsciiUtil { + public static boolean caseIgnoreMatch(String s1, String s2) { + if (s1 == s2) { + return true; + } + int len = s1.length(); + if (len != s2.length()) { + return false; + } + int i = 0; + while (i < len) { + char c1 = s1.charAt(i); + char c2 = s2.charAt(i); + if (c1 != c2 && toLower(c1) != toLower(c2)) { + break; + } + i++; + } + return (i == len); + } + + public static int caseIgnoreCompare(String s1, String s2) { + if (s1 == s2) { + return 0; + } + return AsciiUtil.toLowerString(s1).compareTo(AsciiUtil.toLowerString(s2)); + } + + + public static char toUpper(char c) { + if (c >= 'a' && c <= 'z') { + c -= 0x20; + } + return c; + } + + public static char toLower(char c) { + if (c >= 'A' && c <= 'Z') { + c += 0x20; + } + return c; + } + + public static String toLowerString(String s) { + int idx = 0; + for (; idx < s.length(); idx++) { + char c = s.charAt(idx); + if (c >= 'A' && c <= 'Z') { + break; + } + } + if (idx == s.length()) { + return s; + } + StringBuilder buf = new StringBuilder(s.substring(0, idx)); + for (; idx < s.length(); idx++) { + buf.append(toLower(s.charAt(idx))); + } + return buf.toString(); + } + + public static String toUpperString(String s) { + int idx = 0; + for (; idx < s.length(); idx++) { + char c = s.charAt(idx); + if (c >= 'a' && c <= 'z') { + break; + } + } + if (idx == s.length()) { + return s; + } + StringBuilder buf = new StringBuilder(s.substring(0, idx)); + for (; idx < s.length(); idx++) { + buf.append(toUpper(s.charAt(idx))); + } + return buf.toString(); + } + + public static String toTitleString(String s) { + if (s.length() == 0) { + return s; + } + int idx = 0; + char c = s.charAt(idx); + if (!(c >= 'a' && c <= 'z')) { + for (idx = 1; idx < s.length(); idx++) { + if (c >= 'A' && c <= 'Z') { + break; + } + } + } + if (idx == s.length()) { + return s; + } + StringBuilder buf = new StringBuilder(s.substring(0, idx)); + if (idx == 0) { + buf.append(toUpper(s.charAt(idx))); + idx++; + } + for (; idx < s.length(); idx++) { + buf.append(toLower(s.charAt(idx))); + } + return buf.toString(); + } + + public static boolean isAlpha(char c) { + return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); + } + + public static boolean isAlphaString(String s) { + boolean b = true; + for (int i = 0; i < s.length(); i++) { + if (!isAlpha(s.charAt(i))) { + b = false; + break; + } + } + return b; + } + + public static boolean isNumeric(char c) { + return (c >= '0' && c <= '9'); + } + + public static boolean isNumericString(String s) { + boolean b = true; + for (int i = 0; i < s.length(); i++) { + if (!isNumeric(s.charAt(i))) { + b = false; + break; + } + } + return b; + } + + public static boolean isAlphaNumeric(char c) { + return isAlpha(c) || isNumeric(c); + } + + public static boolean isAlphaNumericString(String s) { + boolean b = true; + for (int i = 0; i < s.length(); i++) { + if (!isAlphaNumeric(s.charAt(i))) { + b = false; + break; + } + } + return b; + } + + public static class CaseInsensitiveKey { + private String _key; + private int _hash; + + public CaseInsensitiveKey(String key) { + _key = key; + _hash = AsciiUtil.toLowerString(key).hashCode(); + } + + public boolean equals(Object o) { + if (o instanceof CaseInsensitiveKey) { + return AsciiUtil.caseIgnoreMatch(_key, ((CaseInsensitiveKey)o)._key); + } + return false; + } + + public int hashCode() { + return _hash; + } + } +} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/math/BigDecimal.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/math/BigDecimal.java new file mode 100644 index 00000000000..a90150384f7 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/math/BigDecimal.java @@ -0,0 +1,3880 @@ +/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */ +/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */ +package com.ibm.icu.math; + +import java.math.BigInteger; + +/* ------------------------------------------------------------------ */ +/* BigDecimal -- Decimal arithmetic for Java */ +/* ------------------------------------------------------------------ */ +/* Copyright IBM Corporation, 1996-2011. All Rights Reserved. */ +/* */ +/* The BigDecimal class provides immutable arbitrary-precision */ +/* floating point (including integer) decimal numbers. */ +/* */ +/* As the numbers are decimal, there is an exact correspondence */ +/* between an instance of a BigDecimal object and its String */ +/* representation; the BigDecimal class provides direct conversions */ +/* to and from String and character array objects, and well as */ +/* conversions to and from the Java primitive types (which may not */ +/* be exact). */ +/* ------------------------------------------------------------------ */ +/* Notes: */ +/* */ +/* 1. A BigDecimal object is never changed in value once constructed; */ +/* this avoids the need for locking. Note in particular that the */ +/* mantissa array may be shared between many BigDecimal objects, */ +/* so that once exposed it must not be altered. */ +/* */ +/* 2. This class looks at MathContext class fields directly (for */ +/* performance). It must not and does not change them. */ +/* */ +/* 3. Exponent checking is delayed until finish(), as we know */ +/* intermediate calculations cannot cause 31-bit overflow. */ +/* [This assertion depends on MAX_DIGITS in MathContext.] */ +/* */ +/* 4. Comments for the public API now follow the javadoc conventions. */ +/* The NetRexx -comments option is used to pass these comments */ +/* through to the generated Java code (with -format, if desired). */ +/* */ +/* 5. System.arraycopy is faster than explicit loop as follows */ +/* Mean length 4: equal */ +/* Mean length 8: x2 */ +/* Mean length 16: x3 */ +/* Mean length 24: x4 */ +/* From prior experience, we expect mean length a little below 8, */ +/* but arraycopy is still the one to use, in general, until later */ +/* measurements suggest otherwise. */ +/* */ +/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370 */ +/* assembler code implementation of the algorithms below; it is */ +/* now called IXXRCN and is available with the OS/390 and VM/ESA */ +/* operating systems. */ +/* ------------------------------------------------------------------ */ +/* Change History: */ +/* 1997.09.02 Initial version (derived from netrexx.lang classes) */ +/* 1997.09.12 Add lostDigits checking */ +/* 1997.10.06 Change mantissa to a byte array */ +/* 1997.11.22 Rework power [did not prepare arguments, etc.] */ +/* 1997.12.13 multiply did not prepare arguments */ +/* 1997.12.14 add did not prepare and align arguments correctly */ +/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle */ +/* 1998.05.21 adjust remainder operator finalization */ +/* 1998.06.04 rework to pass MathContext to finish() and round() */ +/* 1998.06.06 change format to use round(); support rounding modes */ +/* 1998.06.25 rename to BigDecimal and begin merge */ +/* zero can now have trailing zeros (i.e., exp\=0) */ +/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger */ +/* unscaledValue, valueof */ +/* 1998.07.01 improve byteaddsub to allow array reuse, etc. */ +/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32] */ +/* 1998.07.07 scaled division [divide(BigDecimal, int, int)] */ +/* 1998.07.08 setScale, faster equals */ +/* 1998.07.11 allow 1E6 (no sign) ; new double/float conversion */ +/* 1998.10.12 change package to com.ibm.icu.math */ +/* 1998.12.14 power operator no longer rounds RHS [to match ANSI] */ +/* add toBigDecimal() and BigDecimal(java.math.BigDecimal) */ +/* 1998.12.29 improve byteaddsub by using table lookup */ +/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */ +/* 1999.02.05 cleaner code for BigDecimal(char[]) */ +/* 1999.02.06 add javadoc comments */ +/* 1999.02.11 format() changed from 7 to 2 method form */ +/* 1999.03.05 null pointer checking is no longer explicit */ +/* 1999.03.05 simplify; changes from discussion with J. Bloch: */ +/* null no longer permitted for MathContext; drop boolean, */ +/* byte, char, float, short constructor, deprecate double */ +/* constructor, no blanks in string constructor, add */ +/* offset and length version of char[] constructor; */ +/* add valueOf(double); drop booleanValue, charValue; */ +/* add ...Exact versions of remaining convertors */ +/* 1999.03.13 add toBigIntegerExact */ +/* 1999.03.13 1.00 release to IBM Centre for Java Technology */ +/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic */ +/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits */ +/* 1999.07.03 1.03 lost digits should not be checked if digits=0 */ +/* 1999.07.06 lost digits Exception message changed */ +/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic) */ +/* 1999.07.17 improve messages from pow method */ +/* 1999.08.08 performance tweaks */ +/* 1999.08.15 fastpath in multiply */ +/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555] */ +/* 1999.12.22 1.06 remove multiply fastpath, and improve performance */ +/* 2000.01.01 copyright update [Y2K has arrived] */ +/* 2000.06.18 1.08 no longer deprecate BigDecimal(double) */ +/* ------------------------------------------------------------------ */ + +/** + * The BigDecimal class implements immutable arbitrary-precision decimal numbers. The methods of the + * BigDecimal class provide operations for fixed and floating point arithmetic, comparison, format + * conversions, and hashing. + *

    + * As the numbers are decimal, there is an exact correspondence between an instance of a BigDecimal object + * and its String representation; the BigDecimal class provides direct conversions to and from + * String and character array (char[]) objects, as well as conversions to and from the Java + * primitive types (which may not be exact) and BigInteger. + *

    + * In the descriptions of constructors and methods in this documentation, the value of a BigDecimal number + * object is shown as the result of invoking the toString() method on the object. The internal + * representation of a decimal number is neither defined nor exposed, and is not permitted to affect the result of any + * operation. + *

    + * The floating point arithmetic provided by this class is defined by the ANSI X3.274-1996 standard, and is also + * documented at http://www2.hursley.ibm.com/decimal
    + * [This URL will change.] + * + *

    Operator methods

    + *

    + * Operations on BigDecimal numbers are controlled by a {@link MathContext} object, which provides the + * context (precision and other information) for the operation. Methods that can take a MathContext + * parameter implement the standard arithmetic operators for BigDecimal objects and are known as + * operator methods. The default settings provided by the constant {@link MathContext#DEFAULT} (digits=9, + * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP) perform general-purpose floating point + * arithmetic to nine digits of precision. The MathContext parameter must not be null. + *

    + * Each operator method also has a version provided which does not take a MathContext parameter. For this + * version of each method, the context settings used are digits=0, + * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP; these settings perform fixed point arithmetic with + * unlimited precision, as defined for the original BigDecimal class in Java 1.1 and Java 1.2. + *

    + * For monadic operators, only the optional MathContext parameter is present; the operation acts upon the + * current object. + *

    + * For dyadic operators, a BigDecimal parameter is always present; it must not be null. The + * operation acts with the current object being the left-hand operand and the BigDecimal parameter being + * the right-hand operand. + *

    + * For example, adding two BigDecimal objects referred to by the names award and + * extra could be written as any of: + *

    + * + * award.add(extra) + *
    award.add(extra, MathContext.DEFAULT) + *
    award.add(extra, acontext) + *
    + *

    + * (where acontext is a MathContext object), which would return a BigDecimal + * object whose value is the result of adding award and extra under the appropriate context + * settings. + *

    + * When a BigDecimal operator method is used, a set of rules define what the result will be (and, by + * implication, how the result would be represented as a character string). These rules are defined in the BigDecimal + * arithmetic documentation (see the URL above), but in summary: + *