diff --git a/.gitmodules b/.gitmodules index 43d5649..5db7f80 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "tools/pinyin-data"] - path = tools/pinyin-data +[submodule "_tools/pinyin-data"] + path = _tools/pinyin-data url = https://github.com/mozillazg/pinyin-data.git diff --git a/.travis.yml b/.travis.yml index eac3151..1dedc8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,14 @@ language: go go: - - 1.2 - - 1.3 - - 1.4 - - 1.5 - - 1.6 - - 1.7 - - tip + - '1.3' + - '1.4' + - '1.5' + - '1.6' + - '1.7' + - '1.8' + - '1.9' + - '1.10' + - 'master' sudo: false @@ -17,8 +19,12 @@ before_install: - go get github.com/mattn/goveralls script: - - go run pinyin/main.go abc - - go run pinyin/main.go -s Normal abc - - echo "abc" | go run pinyin/main.go - - echo "abc" > abc.txt && go run pinyin/main.go < abc.txt + - go run cmd/pinyin/main.go abc + - go run cmd/pinyin/main.go -s zhao abc + - echo "abc" | go run cmd/pinyin/main.go + - echo "abc" > abc.txt && go run cmd/pinyin/main.go < abc.txt - $HOME/gopath/bin/goveralls -service=travis-ci -v -package . + +matrix: + allow_failures: + - go: master diff --git a/CHANGELOG.md b/CHANGELOG.md index 0be8512..605bacd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,68 @@ # Changelog -## 0.10.0 (2016-10-18) +## [0.14.0] (2018-08-05) + +* **Changed** 使用 [pinyin-data][pinyin-data] v0.6.1 的拼音数据 +* **Changed** 命令行工具移到 `cmd/pinyin/` 目录下,现在需要改为使用 + `go get -u github.com/mozillazg/go-pinyin/cmd/pinyin` 来安装命令行工具。 + + +## [0.13.0] (2018-04-29) + +* **Changed** 使用 [pinyin-data][pinyin-data] v0.5.1 的拼音数据 (via [#30]) +* **Changed** 修改命令行工具 `-s` 参数的值(thanks [@wdscxsj][@wdscxsj] via [#19][#19]): + * `Normal` 改为 `zhao` + * `Tone` 改为 `zh4ao` + * `Tone2` 改为 `zha4o` + * `Tone3` 改为 `zhao4` + * `Initials` 改为 `zh` + * `FirstLetter` 改为 `z` + * `Finals` 改为 `ao` + * `FinalsTone` 改为 `4ao` + * `FinalsTone2` 改为 `a4o` + * `FinalsTone3` 改为 `ao4` +* **Changed** 严格限制命令行参数中 `-s` 选项的值(thanks [@wdscxsj][@wdscxsj] via [#20][#20]): + + +## [0.12.0] (2017-04-25) + + +* **NEW** 命令行程序支持通过 -s 指定新增的 `Tone3` 和 `FinalsTone3` 拼音风格 + + $ pinyin -s Tone3 请至少输入一个汉字 + qing3 zhi4 shao3 shu1 ru4 yi1 ge4 han4 zi4 + + $ pinyin -s FinalsTone3 请至少输入一个汉字 + ing3 i4 ao3 u1 u4 i1 e4 an4 i4 + +* **Changed** use [pinyin-data](https://github.com/mozillazg/pinyin-data) v0.4.1 + + +## [0.11.0] (2016-10-28) + +* **Changed** 不再使用 `0` 表示轻声(因为之前并没有正确的实现这个功能, 同时也觉得这个功能没必要)。 + 顺便修复了 Tone2 中 `ü` 标轻声的问题(像 `侵略 -> qi1n lv0e4` ) +* **NEW** 新增 `Tone3` 和 `FinalsTone3` 拼音风格。 + + hans := "中国人" + args := pinyin.NewArgs() + args.Style = pinyin.Tone3 + fmt.Println("Tone3:", pinyin.Pinyin(hans, args)) + // Output: Tone3: [[zhong1] [guo2] [ren2]] + + args.Style = pinyin.FinalsTone3 + fmt.Println("FinalsTone3:", pinyin.Pinyin(hans, args)) + // Output: FinalsTone3: [[ong1] [uo2] [en2]] + + + +## [0.10.0] (2016-10-18) * **Changed** use [pinyin-data](https://github.com/mozillazg/pinyin-data) v0.4.0 -## 0.9.0 (2016-09-04): +## [0.9.0] (2016-09-04): * **NEW** 新增 `func Convert(s string, a *Args) [][]string` * **NEW** 新增 `func LazyConvert(s string, a *Args) []string` @@ -15,20 +71,20 @@ -## 0.8.0 (2016-08-19) +## [0.8.0] (2016-08-19) * **Changed** use [pinyin-data](https://github.com/mozillazg/pinyin-data) v0.3.0 * Fixed [#13](https://github.com/mozillazg/go-pinyin/issues/13) . thanks [@aisq2008](https://github.com/aisq2008) * Fixed pinyin of 罗 -## 0.7.0 (2016-08-02) +## [0.7.0] (2016-08-02) * **Changed** use [pinyin-data](https://github.com/mozillazg/pinyin-data) v0.2.0 * **Improved** golint and gofmt -## 0.6.0 (2016-05-14) +## [0.6.0] (2016-05-14) * **NEW** 命令行程序支持指定拼音风格: @@ -54,7 +110,7 @@ -## 0.5.0 (2016-03-12) +## [0.5.0] (2016-03-12) * **CHANGE** 改为使用来自 [pinyin-data](https://github.com/mozillazg/pinyin-data) 的拼音数据。 * **NEW** 命令行程序支持从标准输入读取数据(支持管道和重定向输入): @@ -67,7 +123,7 @@ ``` -## 0.4.0 (2016-01-29) +## [0.4.0] (2016-01-29) * **NEW** `Args` 结构体新增 field: `Fallback func(r rune, a Args) []string` 用于处理没有拼音的字符(默认忽略没有拼音的字符): @@ -88,7 +144,7 @@ ``` -## 0.3.0 (2015-12-29) +## [0.3.0] (2015-12-29) * fix "当字符串中有非中文的时候,会出现下标越界的情况"(影响 `pinyin.LazyPinyin` 和 `pinyin.Slug` ([#1](https://github.com/mozillazg/go-pinyin/issues/1))) * 调整对非中文字符的处理:当遇到没有拼音的字符时,直接忽略 @@ -103,12 +159,12 @@ ``` -## 0.2.1 (2015-08-26) +## [0.2.1] (2015-08-26) * `yu`, `y`, `w` 不是声母 -## 0.2.0 (2015-01-04) +## [0.2.0] (2015-01-04) * 新增 `func NewArgs() Args` * 解决 `Args.Separator` 无法赋值为 `""` 的 BUG @@ -122,9 +178,32 @@ * `FINALS_TONE` -> `FinalsTone` * `FINALS_TONE2` -> `FinalsTone2` -## 0.1.1 (2014-12-07) +## [0.1.1] (2014-12-07) * 更新拼音库 ## 0.1.0 (2014-11-23) * Initial Release + + +[pinyin-data]: https://github.com/mozillazg/pinyin-data +[@wdscxsj]: https://github.com/wdscxsj +[#19]: https://github.com/mozillazg/go-pinyin/pull/19 +[#20]: https://github.com/mozillazg/go-pinyin/pull/20 +[#30]: https://github.com/mozillazg/go-pinyin/pull/30 + +[0.1.1]: https://github.com/mozillazg/go-pinyin/compare/v0.1.0...v0.1.1 +[0.2.0]: https://github.com/mozillazg/go-pinyin/compare/v0.1.1...v0.2.0 +[0.2.1]: https://github.com/mozillazg/go-pinyin/compare/v0.2.0...v0.2.1 +[0.3.0]: https://github.com/mozillazg/go-pinyin/compare/v0.2.1...v0.3.0 +[0.4.0]: https://github.com/mozillazg/go-pinyin/compare/v0.3.0...v0.4.0 +[0.5.0]: https://github.com/mozillazg/go-pinyin/compare/v0.4.0...v0.5.0 +[0.6.0]: https://github.com/mozillazg/go-pinyin/compare/v0.5.0...v0.6.0 +[0.7.0]: https://github.com/mozillazg/go-pinyin/compare/v0.6.0...v0.7.0 +[0.8.0]: https://github.com/mozillazg/go-pinyin/compare/v0.7.0...v0.8.0 +[0.9.0]: https://github.com/mozillazg/go-pinyin/compare/v0.8.0...v0.9.0 +[0.10.0]: https://github.com/mozillazg/go-pinyin/compare/v0.9.0...v0.10.0 +[0.11.0]: https://github.com/mozillazg/go-pinyin/compare/v0.10.0...v0.11.0 +[0.12.0]: https://github.com/mozillazg/go-pinyin/compare/v0.11.0...v0.12.0 +[0.13.0]: https://github.com/mozillazg/go-pinyin/compare/v0.12.0...v0.13.0 +[0.14.0]: https://github.com/mozillazg/go-pinyin/compare/v0.13.0...v0.14.0 diff --git a/Makefile b/Makefile index 07dd822..f64369e 100644 --- a/Makefile +++ b/Makefile @@ -10,11 +10,11 @@ test: .PHONY: gen_pinyin_dict gen_pinyin_dict: - @go run tools/gen_pinyin_dict.go tools/pinyin-data/pinyin.txt pinyin_dict.go + @go run _tools/gen_pinyin_dict.go _tools/pinyin-data/pinyin.txt pinyin_dict.go .PHONY: lint lint: - gofmt -s -w . pinyin tools + gofmt -s -w . pinyin _tools golint . golint pinyin - golint tools + golint _tools diff --git a/README.md b/README.md index cb88836..6c158b7 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ go get -u github.com/mozillazg/go-pinyin install CLI tool: ``` -go get -u github.com/mozillazg/go-pinyin/pinyin +go get -u github.com/mozillazg/go-pinyin/cmd/pinyin $ pinyin 中国人 zhōng guó rén ``` @@ -90,6 +90,12 @@ Related Projects * [mozillazg/rust-pinyin](https://github.com/mozillazg/rust-pinyin): 汉语拼音转换工具 Rust 版。 +pinyin data +----------------- + +* 使用 [pinyin-data](https://github.com/mozillazg/pinyin-data) 的拼音数据 + + License --------- diff --git a/tools/gen_pinyin_dict.go b/_tools/gen_pinyin_dict.go similarity index 100% rename from tools/gen_pinyin_dict.go rename to _tools/gen_pinyin_dict.go diff --git a/_tools/pinyin-data b/_tools/pinyin-data new file mode 160000 index 0000000..0b3d00b --- /dev/null +++ b/_tools/pinyin-data @@ -0,0 +1 @@ +Subproject commit 0b3d00bc70bd6f9599e0a489e0d1dc10d2ea6718 diff --git a/cmd/pinyin/main.go b/cmd/pinyin/main.go new file mode 100644 index 0000000..88f0d71 --- /dev/null +++ b/cmd/pinyin/main.go @@ -0,0 +1,63 @@ +package main + +import ( + "flag" + "fmt" + "io/ioutil" + "os" + "strings" + + "github.com/mattn/go-isatty" + "github.com/mozillazg/go-pinyin" +) + +func main() { + heteronym := flag.Bool("e", false, "启用多音字模式") + style := flag.String("s", "zh4ao", "指定拼音风格。可选值:zhao, zh4ao, zha4o, zhao4, zh, z, ao, 4ao, a4o, ao4") + flag.Parse() + hans := flag.Args() + stdin := []byte{} + if !isatty.IsTerminal(os.Stdin.Fd()) { + stdin, _ = ioutil.ReadAll(os.Stdin) + } + if len(stdin) > 0 { + hans = append(hans, string(stdin)) + } + + if len(hans) == 0 { + fmt.Fprintln(os.Stderr, "请至少输入一个汉字: pinyin [-e] [-s STYLE] HANS [HANS ...]") + os.Exit(1) + } + + args := pinyin.NewArgs() + if *heteronym { + args.Heteronym = true + } + + styleValues := map[string]int{ + "zhao": pinyin.Normal, + "zh4ao": pinyin.Tone, + "zha4o": pinyin.Tone2, + "zhao4": pinyin.Tone3, + "zh": pinyin.Initials, + "z": pinyin.FirstLetter, + "ao": pinyin.Finals, + "4ao": pinyin.FinalsTone, + "a4o": pinyin.FinalsTone2, + "ao4": pinyin.FinalsTone3, + } + if value, ok := styleValues[*style]; !ok { + fmt.Fprintf(os.Stderr, "无效的拼音风格:%s\n", *style) + os.Exit(1) + } else { + args.Style = value + } + + pys := pinyin.Pinyin(strings.Join(hans, ""), args) + for _, s := range pys { + fmt.Print(strings.Join(s, ","), " ") + } + if len(pys) > 0 { + fmt.Println() + } +} diff --git a/phonetic_symbol.go b/phonetic_symbol.go index 1d3bdc8..1632437 100644 --- a/phonetic_symbol.go +++ b/phonetic_symbol.go @@ -22,7 +22,7 @@ var phoneticSymbol = map[string]string{ "ú": "u2", "ǔ": "u3", "ù": "u4", - "ü": "v0", + "ü": "v", "ǘ": "v2", "ǚ": "v3", "ǜ": "v4", diff --git a/pinyin.go b/pinyin.go index e9e6db2..dac1c34 100644 --- a/pinyin.go +++ b/pinyin.go @@ -7,7 +7,7 @@ import ( // Meta const ( - Version = "0.10.0" + Version = "0.14.0" Author = "mozillazg, 闲耘" License = "MIT" Copyright = "Copyright (c) 2016 mozillazg, 闲耘" @@ -17,12 +17,14 @@ const ( const ( Normal = 0 // 普通风格,不带声调(默认风格)。如: zhong guo Tone = 1 // 声调风格1,拼音声调在韵母第一个字母上。如: zhōng guó - Tone2 = 2 // 声调风格2,即拼音声调在各个拼音之后,用数字 [0-4] 进行表示。如: zho1ng guo2 + Tone2 = 2 // 声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: zho1ng guo2 + Tone3 = 8 // 声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: zhong1 guo2 Initials = 3 // 声母风格,只返回各个拼音的声母部分。如: zh g FirstLetter = 4 // 首字母风格,只返回拼音的首字母部分。如: z g - Finals = 5 // 韵母风格1,只返回各个拼音的韵母部分,不带声调。如: ong uo - FinalsTone = 6 // 韵母风格2,带声调,声调在韵母第一个字母上。如: ōng uó - FinalsTone2 = 7 // 韵母风格2,带声调,声调在各个拼音之后,用数字 [0-4] 进行表示。如: o1ng uo2 + Finals = 5 // 韵母风格,只返回各个拼音的韵母部分,不带声调。如: ong uo + FinalsTone = 6 // 韵母风格1,带声调,声调在韵母第一个字母上。如: ōng uó + FinalsTone2 = 7 // 韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: o1ng uo2 + FinalsTone3 = 9 // 韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: ong1 uo2 ) // 拼音风格(兼容之前的版本) @@ -56,7 +58,10 @@ var rePhoneticSymbolSource = func(m map[string]string) string { var rePhoneticSymbol = regexp.MustCompile("[" + rePhoneticSymbolSource + "]") // 匹配使用数字标识声调的字符的正则表达式 -var reTone2 = regexp.MustCompile("([aeoiuvnm])([0-4])$") +var reTone2 = regexp.MustCompile("([aeoiuvnm])([1-4])$") + +// 匹配 Tone2 中标识韵母声调的正则表达式 +var reTone3 = regexp.MustCompile("^([a-z]+)([1-4])([a-z]*)$") // Args 配置信息 type Args struct { @@ -159,7 +164,7 @@ func toFixed(p string, a Args) string { case Normal, FirstLetter, Finals: // 去掉声调: a1 -> a m = reTone2.ReplaceAllString(symbol, "$1") - case Tone2, FinalsTone2: + case Tone2, FinalsTone2, Tone3, FinalsTone3: // 返回使用数字标识声调的字符 m = symbol default: @@ -168,12 +173,17 @@ func toFixed(p string, a Args) string { return m }) + switch a.Style { + // 将声调移动到最后 + case Tone3, FinalsTone3: + py = reTone3.ReplaceAllString(py, "$1$3$2") + } switch a.Style { // 首字母 case FirstLetter: py = py[:1] // 韵母 - case Finals, FinalsTone, FinalsTone2: + case Finals, FinalsTone, FinalsTone2, FinalsTone3: // 转换为 []rune unicode 编码用于获取第一个拼音字符 // 因为 string 是 utf-8 编码不方便获取第一个拼音字符 rs := []rune(origP) diff --git a/pinyin/main.go b/pinyin/main.go deleted file mode 100644 index dbde4d0..0000000 --- a/pinyin/main.go +++ /dev/null @@ -1,62 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "strings" - - "github.com/mattn/go-isatty" - "github.com/mozillazg/go-pinyin" -) - -func main() { - heteronym := flag.Bool("e", false, "启用多音字模式") - style := flag.String("s", "Tone", "指定拼音风格。可选值:Normal, Tone, Tone2, Initials, FirstLetter, Finals, FinalsTone, FinalsTone2") - flag.Parse() - hans := flag.Args() - stdin := []byte{} - if !isatty.IsTerminal(os.Stdin.Fd()) { - stdin, _ = ioutil.ReadAll(os.Stdin) - } - if len(stdin) > 0 { - hans = append(hans, string(stdin)) - } - - if len(hans) == 0 { - fmt.Println("请至少输入一个汉字: pinyin [-e] [-s STYLE] HANS [HANS ...]") - os.Exit(1) - } - - args := pinyin.NewArgs() - if *heteronym { - args.Heteronym = true - } - switch *style { - case "Normal": - args.Style = pinyin.Normal - case "Tone2": - args.Style = pinyin.Tone2 - case "Initials": - args.Style = pinyin.Initials - case "FirstLetter": - args.Style = pinyin.FirstLetter - case "Finals": - args.Style = pinyin.Finals - case "FinalsTone": - args.Style = pinyin.FinalsTone - case "FinalsTone2": - args.Style = pinyin.FinalsTone2 - default: - args.Style = pinyin.Tone - } - - pys := pinyin.Pinyin(strings.Join(hans, ""), args) - for _, s := range pys { - fmt.Print(strings.Join(s, ","), " ") - } - if len(pys) > 0 { - fmt.Println() - } -} diff --git a/pinyin_dict.go b/pinyin_dict.go index d9fd7f4..acf503b 100644 --- a/pinyin_dict.go +++ b/pinyin_dict.go @@ -3,7 +3,7 @@ package pinyin // PinyinDict is data map // Warning: Auto-generated file, don't edit. var PinyinDict = map[int]string{ - 0x3007: "líng", + 0x3007: "líng,yuán,xīng", 0x3400: "qiū", 0x3401: "tiàn", 0x3404: "kuà", @@ -966,7 +966,7 @@ var PinyinDict = map[int]string{ 0x3899: "qín", 0x389A: "lǔ", 0x389B: "yàn,qiān", - 0x389C: "kàng", + 0x389C: "kāng,kàng", 0x389D: "sū", 0x389E: "yì", 0x389F: "chān", @@ -1094,7 +1094,7 @@ var PinyinDict = map[int]string{ 0x3939: "qiú,jiù", 0x393A: "huǎng", 0x393D: "chóu", - 0x393E: "sàn", + 0x393E: "sàn,tàn", 0x393F: "yān", 0x3940: "zhí,dé", 0x3941: "dé", @@ -1928,6 +1928,7 @@ var PinyinDict = map[int]string{ 0x3D08: "yìn", 0x3D09: "jǐ", 0x3D0B: "sù", + 0x3D0E: "nài", 0x3D0F: "wǎng", 0x3D10: "miàn,miǎn", 0x3D11: "sù", @@ -2914,7 +2915,7 @@ var PinyinDict = map[int]string{ 0x417C: "mán,màn", 0x417D: "xīn,gǔ", 0x417E: "cén,qián", - 0x417F: "huáng", + 0x417F: "huá,huáng", 0x4180: "měi", 0x4181: "gāo", 0x4182: "lián", @@ -4129,7 +4130,7 @@ var PinyinDict = map[int]string{ 0x46BB: "yáo,yóu", 0x46BC: "nǜ", 0x46BD: "hào", - 0x46BE: "nín", + 0x46BE: "rén,nín", 0x46BF: "yìn,xī", 0x46C0: "fǎn,fàn,bàn", 0x46C1: "nán", @@ -5234,10 +5235,10 @@ var PinyinDict = map[int]string{ 0x4B75: "fán", 0x4B76: "qí", 0x4B77: "máo", - 0x4B78: "bǎo", + 0x4B78: "fù,bǎo", 0x4B79: "áng", 0x4B7A: "ǎng", - 0x4B7B: "fù", + 0x4B7B: "fēn,fù", 0x4B7C: "qí", 0x4B7D: "qún", 0x4B7E: "tuó", @@ -5539,7 +5540,7 @@ var PinyinDict = map[int]string{ 0x4CC6: "bái", 0x4CC7: "wǔ", 0x4CC8: "bǎo", - 0x4CC9: "dàn", + 0x4CC9: "dōng,dàn", 0x4CCA: "bá", 0x4CCB: "tóng,tōng,xiāo", 0x4CCD: "gōng", @@ -5711,7 +5712,7 @@ var PinyinDict = map[int]string{ 0x4D77: "wā", 0x4D79: "zhī", 0x4D7A: "tǐng,dǐng,tiǎn", - 0x4D7B: "gǔ", + 0x4D7B: "huì,gǔ", 0x4D7C: "shāng", 0x4D7D: "cà", 0x4D7E: "fú,fǔ", @@ -5842,7 +5843,7 @@ var PinyinDict = map[int]string{ 0x4E48: "me,yāo,mó,ma", 0x4E49: "yì", 0x4E4A: "yī", - 0x4E4B: "zhī,zhù,zhì", + 0x4E4B: "zhī,zhū,zhì", 0x4E4C: "wū,wù", 0x4E4D: "zhà,zuò", 0x4E4E: "hū", @@ -6866,7 +6867,7 @@ var PinyinDict = map[int]string{ 0x524A: "xuē,qiào,xiāo,shào", 0x524B: "kè,kēi", 0x524C: "lá,là", - 0x524D: "qián,qiǎn,jiǎn", + 0x524D: "qián,jiǎn", 0x524E: "shā", 0x524F: "chuàng", 0x5250: "guǎ", @@ -6920,7 +6921,7 @@ var PinyinDict = map[int]string{ 0x5280: "guā", 0x5281: "qiāo,qiáo", 0x5282: "jué", - 0x5283: "huà,huá,hua,huai", + 0x5283: "huà,huá,huai", 0x5284: "zhā,zhá", 0x5285: "zhuó", 0x5286: "lián", @@ -7128,7 +7129,7 @@ var PinyinDict = map[int]string{ 0x5350: "wàn", 0x5351: "bēi,bǐ,bì,pí,bān", 0x5352: "zú,cù,cuì", - 0x5353: "zhuō", + 0x5353: "zhuó,zhuō", 0x5354: "xié", 0x5355: "dān,chán,shàn", 0x5356: "mài", @@ -7658,7 +7659,7 @@ var PinyinDict = map[int]string{ 0x5562: "liǎng,yīng", 0x5563: "xián", 0x5564: "pí", - 0x5565: "shà", + 0x5565: "shá,shà", 0x5566: "la,lā", 0x5567: "zé", 0x5568: "yīng,qíng", @@ -7754,7 +7755,7 @@ var PinyinDict = map[int]string{ 0x55C2: "yáo", 0x55C3: "hè,xiāo,xiào,hù", 0x55C4: "á,shà,a,xià", - 0x55C5: "xiù,xù", + 0x55C5: "xiù", 0x55C6: "qiāng,qiàng,chéng", 0x55C7: "sè", 0x55C8: "yōng", @@ -7914,7 +7915,7 @@ var PinyinDict = map[int]string{ 0x5663: "zhòu,zhuó,zhú,dú", 0x5664: "jìn", 0x5665: "nóng,náng", - 0x5666: "huì,yué,yuě", + 0x5666: "yuě,huì", 0x5667: "xiè", 0x5668: "qì", 0x5669: "è", @@ -8280,7 +8281,7 @@ var PinyinDict = map[int]string{ 0x57D1: "zhé", 0x57D2: "liè", 0x57D3: "liè", - 0x57D4: "bù,pǔ", + 0x57D4: "pǔ,bù", 0x57D5: "chéng", 0x57D6: "huā", 0x57D7: "bù", @@ -8759,7 +8760,7 @@ var PinyinDict = map[int]string{ 0x59B0: "zhuó", 0x59B1: "zhāo", 0x59B2: "dá", - 0x59B3: "nǎi,nǐ", + 0x59B3: "nǐ,nǎi", 0x59B4: "yuàn", 0x59B5: "tǒu", 0x59B6: "xián,xuán,xù", @@ -8907,7 +8908,7 @@ var PinyinDict = map[int]string{ 0x5A44: "pǒu,péi,bù", 0x5A45: "jú", 0x5A46: "pó", - 0x5A47: "cāi", + 0x5A47: "cǎi,cāi", 0x5A48: "líng", 0x5A49: "wǎn", 0x5A4A: "biǎo", @@ -10227,7 +10228,7 @@ var PinyinDict = map[int]string{ 0x5F6C: "bīn,bān", 0x5F6D: "péng,páng,bāng,pēng", 0x5F6E: "yǒng", - 0x5F6F: "piǎo,piào,miǎo", + 0x5F6F: "piāo,piǎo,piào,miǎo", 0x5F70: "zhāng", 0x5F71: "yǐng", 0x5F72: "chī", @@ -10235,7 +10236,7 @@ var PinyinDict = map[int]string{ 0x5F74: "zhuó,bó", 0x5F75: "tuǒ,yí", 0x5F76: "jí", - 0x5F77: "fǎng,fáng,páng", + 0x5F77: "páng,fǎng,fáng", 0x5F78: "zhōng", 0x5F79: "yì", 0x5F7A: "wáng", @@ -10402,7 +10403,7 @@ var PinyinDict = map[int]string{ 0x601B: "dá,dàn", 0x601C: "lián,líng,lǐng", 0x601D: "sī,sāi", - 0x601E: "chóu,yòu", + 0x601E: "chóu,yóu", 0x601F: "dì", 0x6020: "dài,yí", 0x6021: "yí", @@ -10555,7 +10556,7 @@ var PinyinDict = map[int]string{ 0x60B4: "cuì", 0x60B5: "chàng", 0x60B6: "mèn,mēn", - 0x60B7: "sàn,tàn", + 0x60B7: "lì,sàn", 0x60B8: "jì", 0x60B9: "guàn", 0x60BA: "guàn", @@ -10575,7 +10576,7 @@ var PinyinDict = map[int]string{ 0x60C8: "guǒ", 0x60C9: "zhān", 0x60CA: "jīng,liáng", - 0x60CB: "wǎn,lì", + 0x60CB: "wǎn", 0x60CC: "yuān,wǎn,yù", 0x60CD: "jīn", 0x60CE: "jì", @@ -10743,7 +10744,7 @@ var PinyinDict = map[int]string{ 0x6170: "wèi", 0x6171: "tuán", 0x6172: "mán", - 0x6173: "qiān,xiǎn", + 0x6173: "qiān,xián", 0x6174: "shè,zhé", 0x6175: "yōng", 0x6176: "qìng,qīng,qiāng", @@ -11125,7 +11126,7 @@ var PinyinDict = map[int]string{ 0x62EE: "jié,jiá", 0x62EF: "zhěng", 0x62F0: "nǐn", - 0x62F1: "gǒng,jù", + 0x62F1: "gǒng,jú", 0x62F2: "gǒng", 0x62F3: "quán", 0x62F4: "shuān,quán", @@ -11905,7 +11906,7 @@ var PinyinDict = map[int]string{ 0x65FA: "wàng", 0x65FB: "mín", 0x65FC: "mín", - 0x65FD: "tùn,zhùn", + 0x65FD: "tūn,tùn,zhùn", 0x65FE: "chūn", 0x65FF: "wǔ,wù", 0x6600: "yún", @@ -12486,7 +12487,7 @@ var PinyinDict = map[int]string{ 0x683F: "fú", 0x6840: "jié", 0x6841: "héng,háng,hàng", - 0x6842: "guì,guī", + 0x6842: "guì", 0x6843: "táo,tiāo,zhào", 0x6844: "guāng,guàng", 0x6845: "wéi,guǐ", @@ -12942,7 +12943,7 @@ var PinyinDict = map[int]string{ 0x6A08: "qíng", 0x6A09: "shuǎng", 0x6A0A: "fán,fàn", - 0x6A0B: "tǒng", + 0x6A0B: "tōng,tǒng", 0x6A0C: "guàn", 0x6A0D: "zé", 0x6A0E: "sù", @@ -13149,7 +13150,7 @@ var PinyinDict = map[int]string{ 0x6AD7: "miè,mèi", 0x6AD8: "huì", 0x6AD9: "ōu", - 0x6ADA: "lú", + 0x6ADA: "lǘ,lú", 0x6ADB: "zhì", 0x6ADC: "gāo", 0x6ADD: "dú", @@ -14049,7 +14050,7 @@ var PinyinDict = map[int]string{ 0x6E5B: "zhàn,chén,dān,tán,jìn,yǐn,chěn,yín,shèn", 0x6E5C: "shí", 0x6E5D: "jiē,xié", - 0x6E5E: "chēng,zhēn", + 0x6E5E: "zhēn,chēng", 0x6E5F: "huáng,kuàng", 0x6E60: "tàn", 0x6E61: "yú", @@ -15284,7 +15285,7 @@ var PinyinDict = map[int]string{ 0x732F: "tuān", 0x7330: "yà,jiá,qiè", 0x7331: "náo", - 0x7332: "xiē,hè,gé", + 0x7332: "xiē,hè,gé,hài", 0x7333: "jiā", 0x7334: "hóu", 0x7335: "biān,piàn", @@ -15369,7 +15370,7 @@ var PinyinDict = map[int]string{ 0x7384: "xuán,xuàn", 0x7385: "miào,yāo", 0x7386: "zī,xuán", - 0x7387: "lǜ,shuài,lüe", + 0x7387: "lǜ,shuài,lüè", 0x7388: "lú", 0x7389: "yù", 0x738A: "sù", @@ -15448,7 +15449,7 @@ var PinyinDict = map[int]string{ 0x73D3: "jiào", 0x73D4: "jiàn", 0x73D5: "lì", - 0x73D6: "guàng", + 0x73D6: "guāng,guàng", 0x73D7: "xiān", 0x73D8: "zhōu", 0x73D9: "gǒng", @@ -16414,7 +16415,7 @@ var PinyinDict = map[int]string{ 0x779E: "mán,mén,mèn", 0x779F: "piǎo,piào,piāo", 0x77A0: "chēng,zhèng", - 0x77A1: "guǐ", + 0x77A1: "guī,guǐ", 0x77A2: "méng,máng,mèng", 0x77A3: "wàn", 0x77A4: "rún,shùn", @@ -17108,7 +17109,7 @@ var PinyinDict = map[int]string{ 0x7A54: "huáng", 0x7A55: "qiè", 0x7A56: "jǐ,jì", - 0x7A57: "suì,diàn", + 0x7A57: "suì", 0x7A58: "xiāo,rào", 0x7A59: "pú", 0x7A5A: "jiāo", @@ -17478,7 +17479,7 @@ var PinyinDict = map[int]string{ 0x7BC6: "zhuàn", 0x7BC7: "piān", 0x7BC8: "fēng", - 0x7BC9: "zhú,yuán", + 0x7BC9: "zhù,zhú", 0x7BCA: "huáng,hóng", 0x7BCB: "qiè", 0x7BCC: "hóu", @@ -17503,7 +17504,7 @@ var PinyinDict = map[int]string{ 0x7BDF: "qiàn", 0x7BE0: "xiǎo", 0x7BE1: "cuàn", - 0x7BE2: "lǒng,gōng", + 0x7BE2: "lǒng,gōng,gǎn", 0x7BE3: "péng,páng", 0x7BE4: "dǔ", 0x7BE5: "lì", @@ -18905,7 +18906,7 @@ var PinyinDict = map[int]string{ 0x8159: "zōng", 0x815A: "dìng", 0x815B: "wò", - 0x815C: "měi", + 0x815C: "méi,měi", 0x815D: "ní,ruǎn,nào,nèn,ér", 0x815E: "zhuàn,dùn,tú", 0x815F: "chì", @@ -18921,7 +18922,7 @@ var PinyinDict = map[int]string{ 0x8169: "nǎn", 0x816A: "yùn", 0x816B: "zhǒng", - 0x816C: "ròu", + 0x816C: "róu,ròu", 0x816D: "è", 0x816E: "sāi", 0x816F: "tú,dùn", @@ -18959,7 +18960,7 @@ var PinyinDict = map[int]string{ 0x818F: "gāo,gào", 0x8190: "lǚ", 0x8191: "bìn", - 0x8192: "óu", + 0x8192: "ōu,óu", 0x8193: "cháng", 0x8194: "lù,biāo", 0x8195: "guó,huò", @@ -19668,7 +19669,7 @@ var PinyinDict = map[int]string{ 0x8454: "hóu", 0x8455: "yàn", 0x8456: "tū", - 0x8457: "zhe,zhù,chú,zhuó,zhāo,zháo", + 0x8457: "zhù,zhe,chú,zhuó,zhāo,zháo", 0x8458: "zī", 0x8459: "xiāng", 0x845A: "rèn,shèn", @@ -19726,7 +19727,7 @@ var PinyinDict = map[int]string{ 0x848E: "pài", 0x848F: "you", 0x8490: "sōu,huì", - 0x8491: "yìn", + 0x8491: "yīn,yìn", 0x8492: "shī", 0x8493: "chún", 0x8494: "shí,shì", @@ -20954,7 +20955,7 @@ var PinyinDict = map[int]string{ 0x895A: "suì", 0x895B: "nóng", 0x895C: "chān,chàn,dān", - 0x895D: "liǎn,chǎn", + 0x895D: "liǎn,chān", 0x895E: "bì", 0x895F: "jīn", 0x8960: "dāng", @@ -21126,7 +21127,7 @@ var PinyinDict = map[int]string{ 0x8A06: "jiào", 0x8A07: "hōng,jùn,hēng", 0x8A08: "jì", - 0x8A09: "fān", + 0x8A09: "fàn,fān", 0x8A0A: "xùn", 0x8A0B: "diào", 0x8A0C: "hòng", @@ -21557,12 +21558,12 @@ var PinyinDict = map[int]string{ 0x8BB5: "jù", 0x8BB6: "yà", 0x8BB7: "nè", - 0x8BB8: "xǔ,hào", + 0x8BB8: "xǔ,hǔ", 0x8BB9: "é", 0x8BBA: "lùn,lún", 0x8BBB: "xiōng", 0x8BBC: "sòng", - 0x8BBD: "fèng,fěng", + 0x8BBD: "fěng,fèng", 0x8BBE: "shè", 0x8BBF: "fǎng", 0x8BC0: "jué", @@ -21571,7 +21572,7 @@ var PinyinDict = map[int]string{ 0x8BC3: "hē", 0x8BC4: "píng", 0x8BC5: "zǔ", - 0x8BC6: "shì,shí,zhì", + 0x8BC6: "shí,shì,zhì", 0x8BC7: "xiòng", 0x8BC8: "zhà", 0x8BC9: "sù", @@ -22478,7 +22479,7 @@ var PinyinDict = map[int]string{ 0x8F4E: "jiào", 0x8F4F: "zhàn", 0x8F50: "bú", - 0x8F51: "lǎo,láo,liáo,liǎo", + 0x8F51: "lǎo,láo,liáo,liǎo,liào", 0x8F52: "fén", 0x8F53: "fān", 0x8F54: "lín,lìn", @@ -22737,7 +22738,7 @@ var PinyinDict = map[int]string{ 0x9051: "huáng", 0x9052: "qiú,qiū", 0x9053: "dào,dǎo", - 0x9054: "dá,dā,tà", + 0x9054: "dá,tà", 0x9055: "wéi,huí", 0x9056: "nán", 0x9057: "yí,wèi", @@ -22869,7 +22870,7 @@ var PinyinDict = map[int]string{ 0x90D5: "chéng", 0x90D6: "dòu", 0x90D7: "xī,chī", - 0x90D8: "lǘ", + 0x90D8: "lǚ,lǘ", 0x90D9: "fǔ", 0x90DA: "wú,yú", 0x90DB: "fú", @@ -23587,7 +23588,7 @@ var PinyinDict = map[int]string{ 0x93A3: "yíng,yīng,jiǒng", 0x93A4: "huàng", 0x93A5: "tiáo", - 0x93A6: "liú", + 0x93A6: "liú,liù", 0x93A7: "kǎi", 0x93A8: "sǔn", 0x93A9: "shā,shì,sè", @@ -23850,7 +23851,7 @@ var PinyinDict = map[int]string{ 0x94AA: "kàng", 0x94AB: "fāng", 0x94AC: "huǒ", - 0x94AD: "tǒu", + 0x94AD: "tǒu,dǒu", 0x94AE: "niǔ", 0x94AF: "bǎ,pá", 0x94B0: "yù", @@ -24094,7 +24095,7 @@ var PinyinDict = map[int]string{ 0x959E: "biàn,guān", 0x959F: "bì", 0x95A0: "rùn", - 0x95A1: "ài,hé", + 0x95A1: "ài,hé,hài,gāi,kǎi", 0x95A2: "guān", 0x95A3: "gé", 0x95A4: "gé,gē,hé", @@ -24266,7 +24267,7 @@ var PinyinDict = map[int]string{ 0x964A: "duò", 0x964B: "lòu", 0x964C: "mò", - 0x964D: "jiàng,xiáng", + 0x964D: "jiàng,xiáng,xiàng", 0x964E: "shū", 0x964F: "duò,suí", 0x9650: "xiàn,wěn", @@ -25978,7 +25979,7 @@ var PinyinDict = map[int]string{ 0x9CFA: "fū,guī", 0x9CFB: "bān,fén", 0x9CFC: "wén", - 0x9CFD: "jiān,qiān,zhàn", + 0x9CFD: "jiān,qiān,zhān", 0x9CFE: "shī", 0x9CFF: "yù", 0x9D00: "fǒu", @@ -26010,14 +26011,14 @@ var PinyinDict = map[int]string{ 0x9D1A: "gē", 0x9D1B: "yuān", 0x9D1C: "cí", - 0x9D1D: "qú", + 0x9D1D: "qú,gōu,gòu", 0x9D1E: "xiāo", 0x9D1F: "chī", 0x9D20: "dàn", 0x9D21: "jū", 0x9D22: "yǎo,āo", 0x9D23: "gū", - 0x9D24: "dōng,dàn", + 0x9D24: "zhōng,dōng", 0x9D25: "yù", 0x9D26: "yāng", 0x9D27: "yù", @@ -26287,7 +26288,7 @@ var PinyinDict = map[int]string{ 0x9E2F: "yāng", 0x9E30: "líng", 0x9E31: "chī", - 0x9E32: "qú,zhōng", + 0x9E32: "qú", 0x9E33: "yuān", 0x9E34: "xué", 0x9E35: "tuó", @@ -26665,6 +26666,9 @@ var PinyinDict = map[int]string{ 0x9FCF: "mài", 0x9FD4: "gē", 0x9FD5: "dān", + 0x9FEB: "ào", + 0x9FEC: "tián", + 0x9FED: "nǐ", 0xE815: "yè", 0xE816: "zuǒ,yǒu", 0xE818: "gǔn", @@ -26886,7 +26890,7 @@ var PinyinDict = map[int]string{ 0x202FB: "jī", 0x20315: "gòng", 0x20316: "qióng", - 0x2031A: "ròng", + 0x2031A: "nòng,ròng", 0x2031E: "sǒu", 0x2031F: "sǒu", 0x20320: "yáo", @@ -28187,7 +28191,7 @@ var PinyinDict = map[int]string{ 0x21413: "kāng", 0x21414: "yín", 0x21416: "xiàn", - 0x2141D: "fù", + 0x2141D: "fú,fù", 0x2141E: "biē", 0x21420: "kuī", 0x21424: "qiè", @@ -28267,7 +28271,7 @@ var PinyinDict = map[int]string{ 0x21591: "gǒu", 0x21592: "yún", 0x21593: "dān", - 0x21594: "nuǒ", + 0x21594: "nuó,nuǒ", 0x2159B: "bǐng", 0x2159D: "rán", 0x2159E: "chān", @@ -28535,7 +28539,7 @@ var PinyinDict = map[int]string{ 0x21995: "ér", 0x2199B: "shú", 0x2199C: "tóng", - 0x2199D: "xiáo", + 0x2199D: "xiāo,xiáo", 0x2199F: "pí", 0x219A8: "dǎn", 0x219AA: "jí", @@ -28628,10 +28632,11 @@ var PinyinDict = map[int]string{ 0x21B0A: "yù", 0x21B0B: "jiào", 0x21B0C: "mèng", - 0x21B0D: "lóng", + 0x21B0D: "mí,lóng,mǐ", 0x21B0E: "qiāng", - 0x21B10: "mí,mǐ", + 0x21B10: "yí,mí", 0x21B13: "yí", + 0x21B15: "lóng", 0x21B16: "hān", 0x21B17: "nì", 0x21B18: "lào", @@ -29429,7 +29434,7 @@ var PinyinDict = map[int]string{ 0x22432: "fán", 0x22433: "biē", 0x2243E: "bó", - 0x2243F: "rǒng", + 0x2243F: "rǎng,rǒng", 0x22445: "dǐng", 0x22446: "quán", 0x22447: "jiù", @@ -29458,6 +29463,7 @@ var PinyinDict = map[int]string{ 0x224B1: "suì", 0x224B2: "xǐ", 0x224B7: "póu", + 0x224B9: "shǎn", 0x224BE: "jiào", 0x224C0: "yì", 0x224C3: "wán", @@ -29676,9 +29682,10 @@ var PinyinDict = map[int]string{ 0x22738: "náo", 0x2273B: "chěng", 0x2273C: "chěng", - 0x2273D: "kuǐ", + 0x2273D: "kuí,kuǐ", 0x2273F: "jià", 0x22740: "tú", + 0x22741: "hōng", 0x22742: "dú", 0x22745: "xiá", 0x22746: "zhòng", @@ -29769,7 +29776,7 @@ var PinyinDict = map[int]string{ 0x22882: "jié", 0x2288C: "chàng", 0x2288D: "zhé", - 0x22892: "sù", + 0x22892: "sū,sù", 0x22893: "yōng", 0x22896: "qì", 0x22897: "zhuó", @@ -29870,7 +29877,7 @@ var PinyinDict = map[int]string{ 0x22A01: "xū", 0x22A02: "wǔ", 0x22A0F: "jué", - 0x22A10: "jī", + 0x22A10: "jí,jī", 0x22A12: "chì", 0x22A14: "wǎn", 0x22A16: "miè", @@ -31789,7 +31796,7 @@ var PinyinDict = map[int]string{ 0x245EA: "shù", 0x245EB: "lí", 0x245EC: "lǘ", - 0x245ED: "xiā", + 0x245ED: "xià,xiā", 0x245EF: "cuī", 0x245F3: "bō", 0x245F4: "tuí", @@ -31918,7 +31925,7 @@ var PinyinDict = map[int]string{ 0x246FB: "zāng", 0x24701: "ǎn", 0x24702: "wèi,guì", - 0x24704: "huài", + 0x24704: "huái,huài", 0x24707: "zhàn", 0x24709: "yīng", 0x2470A: "gē", @@ -31999,7 +32006,7 @@ var PinyinDict = map[int]string{ 0x247A2: "yáng", 0x247A4: "xiǎn", 0x247A5: "bǎo", - 0x247AE: "zhāi", + 0x247AE: "zhài,zhāi", 0x247B0: "qiú", 0x247B2: "hú", 0x247B3: "zài", @@ -32069,7 +32076,7 @@ var PinyinDict = map[int]string{ 0x24853: "wò", 0x24854: "xiāo", 0x24855: "liè,wěn", - 0x24856: "yān", + 0x24856: "yán,yān", 0x2485D: "bì", 0x2485F: "huàn", 0x24861: "xī", @@ -32114,7 +32121,7 @@ var PinyinDict = map[int]string{ 0x248AD: "háo", 0x248AE: "yáng", 0x248B4: "shuò,lì", - 0x248B5: "ài", + 0x248B5: "lài,ài", 0x248B6: "qióng", 0x248B9: "lěi", 0x248BA: "xié", @@ -32186,7 +32193,7 @@ var PinyinDict = map[int]string{ 0x249E0: "ruǎn", 0x249E3: "jiàn", 0x249E9: "wàn", - 0x249EB: "jìn,duī", + 0x249EB: "jīn,jìn,duī", 0x249ED: "páng", 0x24A0D: "lù", 0x24A0E: "qú", @@ -33156,7 +33163,7 @@ var PinyinDict = map[int]string{ 0x25463: "wǒ", 0x25465: "chǎ", 0x2546A: "náo", - 0x2546B: "kǎn", + 0x2546B: "kān,kǎn", 0x2546F: "dú", 0x25470: "guài", 0x25471: "qióng", @@ -33482,8 +33489,9 @@ var PinyinDict = map[int]string{ 0x25887: "jiǎn", 0x2588A: "bèn", 0x2588C: "fán", - 0x2588D: "suì", + 0x2588D: "hù,suì", 0x2588E: "zùn", + 0x2588F: "diàn", 0x25890: "gāo", 0x25891: "gǎo,hào", 0x25892: "láo,lào", @@ -33520,6 +33528,7 @@ var PinyinDict = map[int]string{ 0x258F0: "biǎn", 0x258F8: "mù", 0x258F9: "ràn", + 0x258FA: "ràn", 0x25902: "niǎo", 0x2590A: "quán", 0x2590B: "zhé", @@ -33788,7 +33797,7 @@ var PinyinDict = map[int]string{ 0x25C1C: "táo", 0x25C1D: "xī", 0x25C1E: "chōu,sǒu", - 0x25C1F: "gǎn,lǒng", + 0x25C1F: "yuán,gǎn", 0x25C20: "lǘ", 0x25C21: "cè", 0x25C22: "shàn", @@ -35837,7 +35846,7 @@ var PinyinDict = map[int]string{ 0x272D2: "tóng,shì", 0x272D3: "kào", 0x272D4: "hòng", - 0x272D5: "kǔn", + 0x272D5: "kùn,kǔn", 0x272D6: "niè", 0x272D7: "chí", 0x272D8: "tí", @@ -36107,7 +36116,7 @@ var PinyinDict = map[int]string{ 0x27574: "nán", 0x27575: "mì", 0x27578: "huáng", - 0x2757A: "shuàng", + 0x2757A: "shuāng,shuàng", 0x2757C: "xǔ", 0x2757F: "fěi", 0x27581: "xiè,wén", @@ -36134,7 +36143,7 @@ var PinyinDict = map[int]string{ 0x275BF: "xiàng", 0x275C1: "jīn", 0x275C6: "zhēng", - 0x275C8: "n", + 0x275C8: "nú", 0x275CB: "sàn", 0x275CC: "hù", 0x275CE: "zú", @@ -36462,7 +36471,7 @@ var PinyinDict = map[int]string{ 0x27951: "bì", 0x27953: "chán", 0x27955: "zī", - 0x27956: "lì,shǐ", + 0x27956: "lí,lì,shǐ", 0x2795A: "fó", 0x2795B: "qiǎn", 0x2795C: "yǎn", @@ -37223,7 +37232,7 @@ var PinyinDict = map[int]string{ 0x2809F: "kāng", 0x280A0: "xū,lǚ", 0x280A1: "zòu", - 0x280A2: "jì", + 0x280A2: "jí,jì", 0x280A3: "wù", 0x280A6: "chuàn", 0x280A9: "pò", @@ -37366,7 +37375,7 @@ var PinyinDict = map[int]string{ 0x28241: "huàng", 0x28243: "rèn", 0x28245: "yè", - 0x2824B: "tuó", + 0x2824B: "tuō,tuó", 0x28256: "zuān", 0x28257: "yù", 0x2825A: "ā", @@ -37437,6 +37446,7 @@ var PinyinDict = map[int]string{ 0x282E9: "bì,fú", 0x282EB: "tiāo", 0x282EC: "zhěng,chèng", + 0x282EE: "hōng,chūn", 0x282EF: "yì", 0x282F0: "cì", 0x282F2: "bìng", @@ -37444,7 +37454,7 @@ var PinyinDict = map[int]string{ 0x282FA: "fá", 0x282FD: "yáng", 0x282FE: "xǔ", - 0x28301: "hōng,chūn", + 0x28301: "hōng", 0x28304: "zàng", 0x28305: "chái", 0x28306: "hóng", @@ -37619,7 +37629,7 @@ var PinyinDict = map[int]string{ 0x284A4: "cǐ", 0x284A6: "yǐn", 0x284A7: "shì", - 0x284A8: "nài", + 0x284A8: "hài,nài", 0x284A9: "ruǎn", 0x284AB: "yáng,nì", 0x284AC: "chī", @@ -38139,6 +38149,7 @@ var PinyinDict = map[int]string{ 0x28AB9: "lì", 0x28ABA: "chā", 0x28ABE: "dì", + 0x28ABF: "liú", 0x28AC0: "zhǎn", 0x28AC1: "pō", 0x28AD2: "lòu", @@ -38410,7 +38421,7 @@ var PinyinDict = map[int]string{ 0x28DE6: "lì", 0x28DE9: "tóu", 0x28DEC: "mǐ", - 0x28DED: "chǎn", + 0x28DED: "chán,chǎn", 0x28DEE: "huō", 0x28DF1: "zhuǎn", 0x28DF2: "yuè", @@ -38448,7 +38459,7 @@ var PinyinDict = map[int]string{ 0x28E2D: "pō", 0x28E2E: "yán,yǔn", 0x28E2F: "gū", - 0x28E30: "jù", + 0x28E30: "jú,jù", 0x28E31: "tiàn,niǎn", 0x28E37: "è", 0x28E3A: "yā", @@ -38784,7 +38795,7 @@ var PinyinDict = map[int]string{ 0x291D4: "nóng", 0x291D5: "jìng", 0x291D6: "chēn", - 0x291DC: "zhēn,chēng", + 0x291DC: "zhēn,chèng,chēng", 0x291DD: "qìng", 0x291DF: "qìng", 0x291E0: "è,yǎn", @@ -39049,7 +39060,7 @@ var PinyinDict = map[int]string{ 0x293C7: "duàn", 0x293C8: "ruǎn", 0x293C9: "wéi", - 0x293CF: "wěi", + 0x293CF: "wéi,wěi", 0x293D0: "guì,wěi", 0x293D2: "dá", 0x293D3: "xiá", @@ -39350,7 +39361,7 @@ var PinyinDict = map[int]string{ 0x295F1: "xī", 0x295F2: "zhēng", 0x295F4: "bèng", - 0x295F5: "zhěng", + 0x295F5: "zhēng,zhěng", 0x295F6: "suì", 0x295F7: "yǎn", 0x295FC: "qīng", @@ -39973,7 +39984,7 @@ var PinyinDict = map[int]string{ 0x29B52: "máng", 0x29B53: "jiū", 0x29B58: "xiū", - 0x29B5D: "wō", + 0x29B5D: "wǒ,wō", 0x29B5F: "dào", 0x29B61: "xī", 0x29B62: "àn", @@ -40461,7 +40472,7 @@ var PinyinDict = map[int]string{ 0x2A001: "gē", 0x2A008: "yuān", 0x2A009: "gē,kě", - 0x2A00A: "qú,gōu,gòu", + 0x2A00A: "qú", 0x2A00F: "jù,jiū", 0x2A012: "dié", 0x2A013: "yí", @@ -40488,7 +40499,7 @@ var PinyinDict = map[int]string{ 0x2A03E: "jié", 0x2A03F: "mǐ", 0x2A040: "yù", - 0x2A048: "zhuàng", + 0x2A048: "zhuāng,zhuàng", 0x2A049: "jiāo", 0x2A04A: "zhì,zhé", 0x2A04B: "chéng", @@ -40742,7 +40753,7 @@ var PinyinDict = map[int]string{ 0x2A295: "pí", 0x2A297: "cā", 0x2A29C: "bèn", - 0x2A2A2: "shǐ", + 0x2A2A2: "shí,shǐ", 0x2A2A5: "huán", 0x2A2A7: "guī", 0x2A2AA: "ǒu", @@ -41360,6 +41371,7 @@ var PinyinDict = map[int]string{ 0x2C488: "què", 0x2C494: "gěng", 0x2C497: "lán", + 0x2C4FC: "tuí", 0x2C542: "gōng", 0x2C613: "xún", 0x2C618: "dǎn", @@ -41367,7 +41379,7 @@ var PinyinDict = map[int]string{ 0x2C629: "tīng", 0x2C62B: "huán", 0x2C62C: "qiàn", - 0x2C62D: "lín", + 0x2C62D: "lín,chēn", 0x2C62F: "zhǔn", 0x2C642: "yǎn", 0x2C64A: "mò", @@ -41384,6 +41396,7 @@ var PinyinDict = map[int]string{ 0x2C907: "yīn", 0x2C90A: "shì", 0x2C91D: "huì", + 0x2C925: "zhuàn", 0x2CA02: "qí", 0x2CA0E: "yóu", 0x2CA7D: "xún", diff --git a/pinyin_test.go b/pinyin_test.go index e68d5f9..4311edb 100644 --- a/pinyin_test.go +++ b/pinyin_test.go @@ -68,6 +68,15 @@ func TestPinyin(t *testing.T) { {"re2n"}, }, }, + // Tone3 + { + Args{Style: Tone3}, + [][]string{ + {"zhong1"}, + {"guo2"}, + {"ren2"}, + }, + }, // Initials { Args{Style: Initials}, @@ -113,6 +122,15 @@ func TestPinyin(t *testing.T) { {"e2n"}, }, }, + // FinalsTone3 + { + Args{Style: FinalsTone3}, + [][]string{ + {"ong1"}, + {"uo2"}, + {"en2"}, + }, + }, // Heteronym { Args{Heteronym: true}, @@ -275,50 +293,70 @@ func TestUpdated(t *testing.T) { testData := []testItem{ // 误把 yu 放到声母列表了 {"鱼", Args{Style: Tone2}, [][]string{{"yu2"}}}, + {"鱼", Args{Style: Tone3}, [][]string{{"yu2"}}}, {"鱼", Args{Style: Finals}, [][]string{{"v"}}}, {"雨", Args{Style: Tone2}, [][]string{{"yu3"}}}, + {"雨", Args{Style: Tone3}, [][]string{{"yu3"}}}, {"雨", Args{Style: Finals}, [][]string{{"v"}}}, {"元", Args{Style: Tone2}, [][]string{{"yua2n"}}}, + {"元", Args{Style: Tone3}, [][]string{{"yuan2"}}}, {"元", Args{Style: Finals}, [][]string{{"van"}}}, // y, w 也不是拼音, yu的韵母是v, yi的韵母是i, wu的韵母是u {"呀", Args{Style: Initials}, [][]string{{""}}}, {"呀", Args{Style: Tone2}, [][]string{{"ya"}}}, + {"呀", Args{Style: Tone3}, [][]string{{"ya"}}}, {"呀", Args{Style: Finals}, [][]string{{"ia"}}}, {"无", Args{Style: Initials}, [][]string{{""}}}, {"无", Args{Style: Tone2}, [][]string{{"wu2"}}}, + {"无", Args{Style: Tone3}, [][]string{{"wu2"}}}, {"无", Args{Style: Finals}, [][]string{{"u"}}}, {"衣", Args{Style: Tone2}, [][]string{{"yi1"}}}, + {"衣", Args{Style: Tone3}, [][]string{{"yi1"}}}, {"衣", Args{Style: Finals}, [][]string{{"i"}}}, {"万", Args{Style: Tone2}, [][]string{{"wa4n"}}}, + {"万", Args{Style: Tone3}, [][]string{{"wan4"}}}, {"万", Args{Style: Finals}, [][]string{{"uan"}}}, // ju, qu, xu 的韵母应该是 v {"具", Args{Style: FinalsTone}, [][]string{{"ǜ"}}}, {"具", Args{Style: FinalsTone2}, [][]string{{"v4"}}}, + {"具", Args{Style: FinalsTone3}, [][]string{{"v4"}}}, {"具", Args{Style: Finals}, [][]string{{"v"}}}, {"取", Args{Style: FinalsTone}, [][]string{{"ǚ"}}}, {"取", Args{Style: FinalsTone2}, [][]string{{"v3"}}}, + {"取", Args{Style: FinalsTone3}, [][]string{{"v3"}}}, {"取", Args{Style: Finals}, [][]string{{"v"}}}, {"徐", Args{Style: FinalsTone}, [][]string{{"ǘ"}}}, {"徐", Args{Style: FinalsTone2}, [][]string{{"v2"}}}, + {"徐", Args{Style: FinalsTone3}, [][]string{{"v2"}}}, {"徐", Args{Style: Finals}, [][]string{{"v"}}}, // # ń {"嗯", Args{Style: Normal}, [][]string{{"n"}}}, {"嗯", Args{Style: Tone}, [][]string{{"ń"}}}, {"嗯", Args{Style: Tone2}, [][]string{{"n2"}}}, + {"嗯", Args{Style: Tone3}, [][]string{{"n2"}}}, {"嗯", Args{Style: Initials}, [][]string{{""}}}, {"嗯", Args{Style: FirstLetter}, [][]string{{"n"}}}, {"嗯", Args{Style: Finals}, [][]string{{"n"}}}, {"嗯", Args{Style: FinalsTone}, [][]string{{"ń"}}}, {"嗯", Args{Style: FinalsTone2}, [][]string{{"n2"}}}, + {"嗯", Args{Style: FinalsTone3}, [][]string{{"n2"}}}, // # ḿ \u1e3f U+1E3F {"呣", Args{Style: Normal}, [][]string{{"m"}}}, {"呣", Args{Style: Tone}, [][]string{{"ḿ"}}}, {"呣", Args{Style: Tone2}, [][]string{{"m2"}}}, + {"呣", Args{Style: Tone3}, [][]string{{"m2"}}}, {"呣", Args{Style: Initials}, [][]string{{""}}}, {"呣", Args{Style: FirstLetter}, [][]string{{"m"}}}, {"呣", Args{Style: Finals}, [][]string{{"m"}}}, {"呣", Args{Style: FinalsTone}, [][]string{{"ḿ"}}}, {"呣", Args{Style: FinalsTone2}, [][]string{{"m2"}}}, + {"呣", Args{Style: FinalsTone3}, [][]string{{"m2"}}}, + // 去除 0 + {"啊", Args{Style: Tone2}, [][]string{{"a"}}}, + {"啊", Args{Style: Tone3}, [][]string{{"a"}}}, + {"侵略", Args{Style: Tone2}, [][]string{{"qi1n"}, {"lve4"}}}, + {"侵略", Args{Style: FinalsTone2}, [][]string{{"i1n"}, {"ve4"}}}, + {"侵略", Args{Style: FinalsTone3}, [][]string{{"in1"}, {"ve4"}}}, } testPinyinUpdate(t, testData, Pinyin) } diff --git a/tools/pinyin-data b/tools/pinyin-data deleted file mode 160000 index 0fec9a7..0000000 --- a/tools/pinyin-data +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0fec9a7d0beded39253485624ebd1f0ade70e561