diff --git "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" index 852e002..cee09b7 100644 --- "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" +++ "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" @@ -17,7 +17,7 @@

(規一求) (居三去) (皆五柳) (伽五英) - (干五出) (鋼五喜) (姜三曾) (艍五門) (沽五英) (姆七英) (規一求) + (干五曾) (鋼五喜) (姜三曾) (艍五門) (沽五英) (姆七英) (規一求) (居三求) (艍七曾) (居二英) (金一時) (規七英) (經五喜) (迦八英) (伽五喜) (丩五地) (恭三地) (居五柳) (江八地) (居一邊) (沽七語) (居二英) (公二英) (居一曾) (姆七英) (干三求) @@ -25,7 +25,7 @@ (巾八時) (伽五門) (沽五地) (居五求) (居七門) (鋼七喜) (江四求) (巾一求) (居七時) (居五柳) (膠七曾) (規一喜) (丩一曾) (嬌五英) (嬌五英) (居二英) (巾一去) (恭五英) - (公一喜) (嬌一頗) (嬌一頗) (居五柳) (檜一出) (居一英) + (公一喜) (嬌一頗) (嬌一頗) (居五柳) (檜一曾) (居一英) (鋼七毛) (經一曾) (艍一喜) (居二英) (經五曾) (沽七柳) (巾七喜) (巾五時) (鋼一求) (居一曾) (居一喜) (居五門) (皆二耐) (兼一曾) (經五喜) (艍二英) @@ -33,34 +33,34 @@ (公五地) (江四頗) (官一喜) (迦五雅) (居七地) (驚二求) (交七喜) (鋼五毛) (監一時) (經三求) (茄七地) (褌一喜) - (經五出) (經四求) (嬌二英) (君五曾) + (經五曾) (經四求) (嬌二英) (君五曾) (伽五喜) (丩三英) (金八入) (巾四時) (艍七英) (丩二曾) (經五英) (君一曾) (巾二英) (沽五英) (恭一時) (居二英) (艍七曾) (恭四曾) (堅二門) (驚五地) (瓜一求) (居二英) (居五英) (干五語) (瓜二英) (甘五柳) (江一他) (居二英) (迦三求) (沽七雅) (金二時) (恭五英) (經四時) (居一曾) (居七英) (干一英) - (鋼五喜) (巾八柳) (兼八時) (居二英) (驚五時) (艍三出) + (鋼五喜) (巾八柳) (兼八時) (居二英) (驚五時) (艍三曾) (鋼五毛) (規一時) (堅四時) (居五柳) (姜五時) (觀一求) - (經四出) (沽五頗) (交七柳) (居二英) (交五柳) (伽三去) + (經四曾) (沽五頗) (交七柳) (居二英) (交五柳) (伽三去) (居五時) (嬌二求) (丩二時) (居五柳) (膠五喜) (觀一求) - (君五喜) (高五門) (金一時) (居二英) (君四出) (丩七時) + (君五喜) (高五門) (金一時) (居二英) (君四曾) (丩七時) (嬌二曾) (觀七求) (檜一邊) (居五柳) (皆一曾) (觀五喜) (經二求) (伽三英) (伽三英) (居二英) (姜三曾) (金八入) - (艍二喜) (沽一求) (經五出) (居五柳) (官五邊) (觀五喜) + (艍二喜) (沽一求) (經五曾) (居五柳) (官五邊) (觀五喜)

(規一求) (居三去) (皆五柳) (伽五英) - (驚二出) (巾四時) (膠一求) (居二英) (觀八曾) (丩五英) + (驚二曾) (巾四時) (膠一求) (居二英) (觀八曾) (丩五英) (伽三時) (艍二英) (瓜二語) (居五柳) (牛一時) (居五英) (公四喜) (膠三求) (干五語) (伽五英) (堅一英) (丩五求) - (堅八英) (巾一出) (經四出) (居一曾) (經五曾) (瓜七喜) + (堅八英) (巾一曾) (經四曾) (居一曾) (經五曾) (瓜七喜) (高八柳) (金五去) (艍一曾) (居二英) (嬌一時) (丩一英) - (公五柳) (江五柳) (高三求) (艍五英) (居二英) (君一出) (金八求) + (公五柳) (江五柳) (高三求) (艍五英) (居二英) (君一曾) (金八求) (姜三曾) (艍七英) (皆七地) (姑三喜) 西(皆一時) (丩五地) - (迦八英) (迦七毛) (君一求) (迦一出) + (迦八英) (迦七毛) (君一求) (迦一曾) (迦八英) (交七曾) (沽一求) (丩一曾) - (居三求) (嬌二英) (嬌二他) (居二英) (檜七出) (公四喜) + (居三求) (嬌二英) (嬌二他) (居二英) (檜七曾) (公四喜) (迦八英) (迦七求) (艍一去) (居五柳) (經一求) (艍一去) (江八門) (金一喜) (金一喜) (居二英) (恭三喜) (經五英) (官五曾) (觀一求) (觀一求) (居五柳) (艍二時) (交五柳) @@ -77,7 +77,7 @@ (乖五喜) (姜五柳) (巾五時) (居二英) (沽一求) (公二英) (迦八英) (巾八時) (鋼七他) (居五柳) (君五英) (艍二曾) (經一地) (江一地) (高一求) (居二英) (沽一時) (嬌三時) - (金五柳) (梔一出) (交五柳) (居五柳) (艍三喜) (居一時) + (金五柳) (梔一曾) (交五柳) (居五柳) (艍三喜) (居一時) (嬌五柳) (經五時) (瓜三喜) (居二英) (規一求) (巾七曾) (高八柳) (艍一喜) (梔一他) (迦七毛) (公四喜) (伽五喜) (居五語)

diff --git "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" index 89eaac6..91168a8 100644 --- "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" +++ "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" @@ -16,70 +16,70 @@

- (ㄍㄨㄧ) (ㄎㄧ˪) (ㄌㄞˊ) (ㆤˊ) - (ㄘㄢˊ) (ㄏㆭˊ) (ㄐㄧㄤ˪) (ㆠㄨˊ) (ㆦˊ) (ㆬ˫) (ㄍㄨㄧ) - (ㄍㄧ˪) (ㄗㄨ˫) (ㄧˋ) (ㄒㄧㆬ) (ㄨㄧ˫) (ㄏㄧㄥˊ) (ㄧㄚㆷ˙) - (ㄏㆤˊ) (ㄉㄧㄨˊ) (ㄉㄧㆲ˪) (ㄌㄧˊ) (ㄉㄚㆻ˙) (ㄅㄧ) - (ㆣㆦ˫) (ㄧˋ) (ㆲˋ) (ㄐㄧ) (ㆬ˫) (ㄍㄢ˪) - (ㄗㄞ) (ㄌㄞˊ) (ㄐㄧㄚˋ) (ㄐㄧ) (ㄎㄜˋ) (ㄉㄨㄧ) - (ㄒㄧㆵ˙) (ㆠㆤˊ) (ㄉㆦˊ) (ㄍㄧˊ) (ㆠㄧ˫) (ㄏㆭ˫) - (ㄍㄚㆻ) (ㄍㄧㄣ) (ㄒㄧ˫) (ㄌㄧˊ) (ㄗㄚ˫) (ㄏㄨㄧ) - (ㄐㄧㄨ) (ㄧㄠˊ) (ㄧㄠˊ) (ㄧˋ) (ㄎㄧㄣ) (ㄧㆲˊ) - (ㄏㆲ) (ㄆㄧㄠ) (ㄆㄧㄠ) (ㄌㄧˊ) (ㄘㄨㆤ) () - (ㄇㆭ˫) (ㄐㄧㄥ) (ㄏㄨ) (ㄧˋ) (ㄐㄧㄥˊ) (ㄌㆦ˫) - (ㄏㄧㄣ˫) (ㄒㄧㄣˊ) (ㄍㆭ) (ㄐㄧ) (ㄏㄧ) (ㆠㄧˊ) - (ㄋㄞˋ) (ㄐㄧㆰ) (ㄏㄧㄥˊ) (ㄨˋ) - (ㄗㄞˋ) (ㄏㄧㆬ) (ㄗㄞˋ) (ㄆㄨㄣ) - (ㄉㆲˊ) (ㄆㄚㆻ) (ㄏㄨㆩ) (ㄫㄧㄚˊ) - (ㄉㄧ˫) (ㄍㄧㆩˋ) (ㄏㄠ˫) (ㄇㆭˊ) - (ㄙㆩ) (ㄍㄧㄥ˪) (ㄉㄧㄜ˫) (ㄏㄨㆪ) - (ㄑㄧㄥˊ) (ㄍㄧㆻ) (ㄧㄠˋ) (ㄗㄨㄣˊ) - (ㄏㆤˊ) (ㄧㄨ˪) (ㆢㄧㆴ˙) (ㄒㄧㆵ) - (ㄨ˫) (ㄐㄧㄨˋ) (ㄧㄥˊ) (ㄗㄨㄣ) - (ㄧㄣˋ) (ㆦˊ) (ㄒㄧㆲ) (ㄧˋ) (ㄗㄨ˫) (ㄐㄧㆦㆻ) - (ㆠㄧㄢˋ) (ㄉㄧㆩˊ) (ㄍㄨㄚ) (ㄧˋ) (ㄧˊ) (ㆣㄢˊ) - (ㄨㄚˋ) (ㄌㆰˊ) (ㄊㄤ) (ㄧˋ) (ㄍㄧㄚ˪) (ㄫㆦ˫) - (ㄒㄧㆬˋ) (ㄧㆲˊ) (ㄒㄧㆻ) (ㄐㄧ) (ㄧ˫) () - (ㄏㆭˊ) (ㄌㄧㆵ˙) (ㄒㄧㄚㆴ˙) (ㄧˋ) (ㄒㄧㆩˊ) (ㄘㄨ˪) - (ㄇㆭˊ) (ㄙㄨㄧ) (ㄒㄧㄚㆵ) (ㄌㄧˊ) (ㄒㄧㄤˊ) (ㄍㄨㄢ) - (ㄑㄧㆻ) (ㄆㆦˊ) (ㄌㄠ˫) (ㄧˋ) (ㄌㄠˊ) (ㄎㆤ˪) - (ㄒㄧˊ) (ㄍㄧㄠˋ) (ㄒㄧㄨˋ) (ㄌㄧˊ) (ㄏㄚˊ) (ㄍㄨㄢ) - (ㄏㄨㄣˊ) (ㆠㄜˊ) (ㄒㄧㆬ) (ㄧˋ) (ㄘㄨㆵ) (ㄒㄧㄨ˫) - (ㄐㄧㄠˋ) (ㄍㄨㄢ˫) (ㄅㄨㆤ) (ㄌㄧˊ) (ㄗㄞ) (ㄏㄨㄢˊ) - (ㄍㄧㄥˋ) (ㆤ˪) (ㆤ˪) (ㄧˋ) (ㄐㄧㄤ˪) (ㆢㄧㆴ˙) - (ㄏㄨˋ) (ㄍㆦ) (ㄑㄧㄥˊ) (ㄌㄧˊ) (ㄅㄨㆩˊ) (ㄏㄨㄢˊ) + kui1(ㄍㄨㄧ) khi3(ㄎㄧ˪) lai5(ㄌㄞˊ) e5(ㆤˊ) + can5(ㄗㄢˊ) hng5(ㄏㆭˊ) ziang3(ㄐㄧㄤ˪) bu5(ㆠㄨˊ) oo5(ㆦˊ) m7(ㆬ˫) kui1(ㄍㄨㄧ) + ki3(ㄍㄧ˪) zu7(ㄗㄨ˫) i2(ㄧˋ) sim1(ㄒㄧㆬ) ui7(ㄨㄧ˫) hing5(ㄏㄧㄥˊ) iah8(ㄧㄚㆷ˙) + he5(ㄏㆤˊ) tiu5(ㄉㄧㄨˊ) tiong3(ㄉㄧㆲ˪) li5(ㄌㄧˊ) tak8(ㄉㄚㆻ˙) pi1(ㄅㄧ) + goo7(ㆣㆦ˫) i2(ㄧˋ) ong2(ㆲˋ) zi1(ㄐㄧ) m7(ㆬ˫) kan3(ㄍㄢ˪) + zai1(ㄗㄞ) lai5(ㄌㄞˊ) zia2(ㄐㄧㄚˋ) zi1(ㄐㄧ) kho2(ㄎㄜˋ) tui1(ㄉㄨㄧ) + sit8(ㄒㄧㆵ˙) be5(ㆠㆤˊ) too5(ㄉㆦˊ) ki5(ㄍㄧˊ) bi7(ㆠㄧ˫) hng7(ㄏㆭ˫) + kak4(ㄍㄚㆻ) kin1(ㄍㄧㄣ) si7(ㄒㄧ˫) li5(ㄌㄧˊ) za7(ㄗㄚ˫) hui1(ㄏㄨㄧ) + ziu1(ㄐㄧㄨ) iau5(ㄧㄠˊ) iau5(ㄧㄠˊ) i2(ㄧˋ) khin1(ㄎㄧㄣ) iong5(ㄧㆲˊ) + hong1(ㄏㆲ) phiau1(ㄆㄧㄠ) phiau1(ㄆㄧㄠ) li5(ㄌㄧˊ) cue1(ㄗㄨㆤ) i1() + mng7(ㄇㆭ˫) zing1(ㄐㄧㄥ) hu1(ㄏㄨ) i2(ㄧˋ) zing5(ㄐㄧㄥˊ) loo7(ㄌㆦ˫) + hin7(ㄏㄧㄣ˫) sin5(ㄒㄧㄣˊ) kng1(ㄍㆭ) zi1(ㄐㄧ) hi1(ㄏㄧ) bi5(ㆠㄧˊ) + nai2(ㄋㄞˋ) ziam1(ㄐㄧㆰ) hing5(ㄏㄧㄥˊ) u2(ㄨˋ) + zai2(ㄗㄞˋ) him1(ㄏㄧㆬ) zai2(ㄗㄞˋ) phun1(ㄆㄨㄣ) + tong5(ㄉㆲˊ) phak4(ㄆㄚㆻ) huann1(ㄏㄨㆩ) ngia5(ㄫㄧㄚˊ) + ti7(ㄉㄧ˫) kiann2(ㄍㄧㆩˋ) hau7(ㄏㄠ˫) mng5(ㄇㆭˊ) + sann1(ㄙㆩ) king3(ㄍㄧㄥ˪) tio7(ㄉㄧㄜ˫) huinn1(ㄏㄨㆪ) + cing5(ㄐㄧㄥˊ) kik4(ㄍㄧㆻ) iau2(ㄧㄠˋ) zun5(ㄗㄨㄣˊ) + he5(ㄏㆤˊ) iu3(ㄧㄨ˪) jip8(ㆢㄧㆴ˙) sit4(ㄒㄧㆵ) + u7(ㄨ˫) ziu2(ㄐㄧㄨˋ) ing5(ㄧㄥˊ) zun1(ㄗㄨㄣ) + in2(ㄧㄣˋ) oo5(ㆦˊ) siong1(ㄒㄧㆲ) i2(ㄧˋ) zu7(ㄗㄨ˫) ziok4(ㄐㄧㆦㆻ) + bian2(ㆠㄧㄢˋ) tiann5(ㄉㄧㆩˊ) kua1(ㄍㄨㄚ) i2(ㄧˋ) i5(ㄧˊ) gan5(ㆣㄢˊ) + ua2(ㄨㄚˋ) lam5(ㄌㆰˊ) thang1(ㄊㄤ) i2(ㄧˋ) kia3(ㄍㄧㄚ˪) ngoo7(ㄫㆦ˫) + sim2(ㄒㄧㆬˋ) iong5(ㄧㆲˊ) sik4(ㄒㄧㆻ) zi1(ㄐㄧ) i7(ㄧ˫) an1() + hng5(ㄏㆭˊ) lit8(ㄌㄧㆵ˙) siap8(ㄒㄧㄚㆴ˙) i2(ㄧˋ) siann5(ㄒㄧㆩˊ) cu3(ㄗㄨ˪) + mng5(ㄇㆭˊ) sui1(ㄙㄨㄧ) siat4(ㄒㄧㄚㆵ) li5(ㄌㄧˊ) siang5(ㄒㄧㄤˊ) kuan1(ㄍㄨㄢ) + cik4(ㄐㄧㆻ) phoo5(ㄆㆦˊ) lau7(ㄌㄠ˫) i2(ㄧˋ) lau5(ㄌㄠˊ) khe3(ㄎㆤ˪) + si5(ㄒㄧˊ) kiau2(ㄍㄧㄠˋ) siu2(ㄒㄧㄨˋ) li5(ㄌㄧˊ) ha5(ㄏㄚˊ) kuan1(ㄍㄨㄢ) + hun5(ㄏㄨㄣˊ) bo5(ㆠㄜˊ) sim1(ㄒㄧㆬ) i2(ㄧˋ) cut4(ㄗㄨㆵ) siu7(ㄒㄧㄨ˫) + ziau2(ㄐㄧㄠˋ) kuan7(ㄍㄨㄢ˫) pue1(ㄅㄨㆤ) li5(ㄌㄧˊ) zai1(ㄗㄞ) huan5(ㄏㄨㄢˊ) + king2(ㄍㄧㄥˋ) e3(ㆤ˪) e3(ㆤ˪) i2(ㄧˋ) ziang3(ㄐㄧㄤ˪) jip8(ㆢㄧㆴ˙) + hu2(ㄏㄨˋ) koo1(ㄍㆦ) cing5(ㄐㄧㄥˊ) li5(ㄌㄧˊ) puann5(ㄅㄨㆩˊ) huan5(ㄏㄨㄢˊ)

- (ㄍㄨㄧ) (ㄎㄧ˪) (ㄌㄞˊ) (ㆤˊ) - (ㄑㄧㆩˋ) (ㄒㄧㆵ) (ㄍㄚ) (ㄧˋ) (ㄗㄨㄚㆵ˙) (ㄧㄨˊ) - (ㄙㆤ˪) (ㄨˋ) (ㆣㄨㄚˋ) (ㄌㄧˊ) (ㄒㄧㆫ) (ㄧˊ) - (ㄏㆦㆻ) (ㄍㄚ˪) (ㆣㄢˊ) (ㆤˊ) (ㄧㄢ) (ㄍㄧㄨˊ) - (ㄧㄚㆵ˙) (ㄑㄧㄣ) (ㄑㄧㆻ) (ㄐㄧ) (ㄐㄧㄥˊ) (ㄏㄨㄚ˫) - (ㄌㄜㆷ˙) (ㄎㄧㆬˊ) (ㄗㄨ) (ㄧˋ) (ㄒㄧㄠ) (ㄧㄨ) - (ㄌㆲˊ) (ㄌㄤˊ) (ㄍㄜ˪) (ㄨˊ) (ㄧˋ) (ㄘㄨㄣ) (ㄍㄧㆴ˙) - (ㄐㄧㄤ˪) (ㄨ˫) (ㄉㄞ˫) (ㄏㆧ˪) 西(ㄙㄞ) (ㄉㄧㄨˊ) - (ㄧㄚㆷ˙) (ㄇㄧㄚ˫) (ㄍㄨㄣ) (ㄑㄧㄚ) - (ㄧㄚㆷ˙) (ㄗㄠ˫) (ㄍㆦ) (ㄐㄧㄨ) - (ㄍㄧ˪) (ㄧㄠˋ) (ㄊㄧㄠˋ) (ㄧˋ) (ㄘㄨㆤ˫) (ㄏㆦㆻ) - (ㄧㄚㆷ˙) (ㄍㄧㄚ˫) (ㄎㄨ) (ㄌㄧˊ) (ㄍㄧㄥ) (ㄎㄨ) - (ㆠㄚㆻ˙) (ㄏㄧㆬ) (ㄏㄧㆬ) (ㄧˋ) (ㄏㄧㆲ˪) (ㄧㄥˊ) - (ㄗㄨㆩˊ) (ㄍㄨㄢ) (ㄍㄨㄢ) (ㄌㄧˊ) (ㄙㄨˋ) (ㄌㄠˊ) - (ㄒㄧㄢ˫) (ㆠㄢ˫) (ㄇㄧㆷ˙) (ㄐㄧ) (ㄉㄧㆵ) (ㄒㄧˊ) - (ㄍㆰˋ) (ㄫㆦˊ) (ㄙㆥ) (ㄐㄧ) (ㄍㄧㆩˊ) (ㄏㄧㄨ) + kui1(ㄍㄨㄧ) khi3(ㄎㄧ˪) lai5(ㄌㄞˊ) e5(ㆤˊ) + ciann2(ㄐㄧㆩˋ) sit4(ㄒㄧㆵ) ka1(ㄍㄚ) i2(ㄧˋ) zuat8(ㄗㄨㄚㆵ˙) iu5(ㄧㄨˊ) + se3(ㄙㆤ˪) u2(ㄨˋ) gua2(ㆣㄨㄚˋ) li5(ㄌㄧˊ) siunn1(ㄒㄧㆫ) i5(ㄧˊ) + hok4(ㄏㆦㆻ) ka3(ㄍㄚ˪) gan5(ㆣㄢˊ) e5(ㆤˊ) ian1(ㄧㄢ) kiu5(ㄍㄧㄨˊ) + iat8(ㄧㄚㆵ˙) cin1(ㄐㄧㄣ) cik4(ㄐㄧㆻ) zi1(ㄐㄧ) zing5(ㄐㄧㄥˊ) hua7(ㄏㄨㄚ˫) + loh8(ㄌㄜㆷ˙) khim5(ㄎㄧㆬˊ) zu1(ㄗㄨ) i2(ㄧˋ) siau1(ㄒㄧㄠ) iu1(ㄧㄨ) + long5(ㄌㆲˊ) lang5(ㄌㄤˊ) ko3(ㄍㄜ˪) u5(ㄨˊ) i2(ㄧˋ) cun1(ㄗㄨㄣ) kip8(ㄍㄧㆴ˙) + ziang3(ㄐㄧㄤ˪) u7(ㄨ˫) tai7(ㄉㄞ˫) hoonn3(ㄏㆧ˪) 西sai1(ㄙㄞ) tiu5(ㄉㄧㄨˊ) + iah8(ㄧㄚㆷ˙) mia7(ㄇㄧㄚ˫) kun1(ㄍㄨㄣ) cia1(ㄐㄧㄚ) + iah8(ㄧㄚㆷ˙) zau7(ㄗㄠ˫) koo1(ㄍㆦ) ziu1(ㄐㄧㄨ) + ki3(ㄍㄧ˪) iau2(ㄧㄠˋ) thiau2(ㄊㄧㄠˋ) i2(ㄧˋ) cue7(ㄗㄨㆤ˫) hok4(ㄏㆦㆻ) + iah8(ㄧㄚㆷ˙) kia7(ㄍㄧㄚ˫) khu1(ㄎㄨ) li5(ㄌㄧˊ) king1(ㄍㄧㄥ) khu1(ㄎㄨ) + bak8(ㆠㄚㆻ˙) him1(ㄏㄧㆬ) him1(ㄏㄧㆬ) i2(ㄧˋ) hiong3(ㄏㄧㆲ˪) ing5(ㄧㄥˊ) + zuann5(ㄗㄨㆩˊ) kuan1(ㄍㄨㄢ) kuan1(ㄍㄨㄢ) li5(ㄌㄧˊ) su2(ㄙㄨˋ) lau5(ㄌㄠˊ) + sian7(ㄒㄧㄢ˫) ban7(ㆠㄢ˫) mih8(ㄇㄧㆷ˙) zi1(ㄐㄧ) tit4(ㄉㄧㆵ) si5(ㄒㄧˊ) + kam2(ㄍㆰˋ) ngoo5(ㄫㆦˊ) senn1(ㄙㆥ) zi1(ㄐㄧ) kiann5(ㄍㄧㆩˊ) hiu1(ㄏㄧㄨ)

- (ㄧˋ) (ㄧˋ) (ㄏㆧ˪) - (ㆣㄨ˫) (ㄏㄧㄥˊ) (ㄨˋ) (ㄌㄞ˫) (ㄏㆦㆻ) (ㄍㄨㄧˋ) (ㄒㄧˊ) - (ㄏㄚㆵ) (ㆬ˫) (ㄨㄧˋ) (ㄒㄧㆬ) (ㆢㄧㆬ˫) (ㄎㄧ˪) (ㄌㄠˊ) - (ㆦˊ) (ㄨㄧ˫) (ㄏㆲˊ) (ㄏㆲˊ) (ㆠㆤㆷ) (ㄏㄜˊ) (ㄐㄧ) - (ㄏㄨ˪) (ㄍㄨㄧ˪) (ㄏㄨㄧ) (ㄫㆦˊ) (ㆣㄨㄢ˫) - (ㄉㆤ˪) (ㄏㄧㄤ) (ㆬ˫) (ㄎㄜˋ) (ㄍㄧˊ) - (ㄏㄨㄞˊ) (ㄌㄧㄤˊ) (ㄒㄧㄣˊ) (ㄧˋ) (ㄍㆦ) (ㆲˋ) - (ㄧㄚㆷ˙) (ㄒㄧㆵ˙) (ㄊㆭ˫) (ㄌㄧˊ) (ㄨㄣˊ) (ㄗㄨˋ) - (ㄉㄧㄥ) (ㄉㄤ) (ㄍㄜ) (ㄧˋ) (ㄙㆦ) (ㄒㄧㄠ˪) - (ㄌㄧㆬˊ) (ㄘㆪ) (ㄌㄠˊ) (ㄌㄧˊ) (ㄏㄨ˪) (ㄒㄧ) - (ㄌㄧㄠˊ) (ㄒㄧㄥˊ) (ㄏㄨㄚ˪) (ㄧˋ) (ㄍㄨㄧ) (ㄐㄧㄣ˫) - (ㄌㄜㆷ˙) (ㄏㄨ) (ㄊㆪ) (ㄇㄧㄚ˫) (ㄏㆦㆻ) (ㄏㆤˊ) (ㆣㄧˊ) + i2(ㄧˋ) i2(ㄧˋ) hoonn3(ㄏㆧ˪) + gu7(ㆣㄨ˫) hing5(ㄏㄧㄥˊ) u2(ㄨˋ) lai7(ㄌㄞ˫) hok4(ㄏㆦㆻ) kui2(ㄍㄨㄧˋ) si5(ㄒㄧˊ) + hat4(ㄏㄚㆵ) m7(ㆬ˫) ui2(ㄨㄧˋ) sim1(ㄒㄧㆬ) jim7(ㆢㄧㆬ˫) khi3(ㄎㄧ˪) lau5(ㄌㄠˊ) + oo5(ㆦˊ) ui7(ㄨㄧ˫) hong5(ㄏㆲˊ) hong5(ㄏㆲˊ) beh4(ㆠㆤㆷ) ho5(ㄏㄜˊ) zi1(ㄐㄧ) + hu3(ㄏㄨ˪) kui3(ㄍㄨㄧ˪) hui1(ㄏㄨㄧ) ngoo5(ㄫㆦˊ) guan7(ㆣㄨㄢ˫) + te3(ㄉㆤ˪) hiang1(ㄏㄧㄤ) m7(ㆬ˫) kho2(ㄎㄜˋ) ki5(ㄍㄧˊ) + huai5(ㄏㄨㄞˊ) liang5(ㄌㄧㄤˊ) sin5(ㄒㄧㄣˊ) i2(ㄧˋ) koo1(ㄍㆦ) ong2(ㆲˋ) + iah8(ㄧㄚㆷ˙) sit8(ㄒㄧㆵ˙) thng7(ㄊㆭ˫) li5(ㄌㄧˊ) un5(ㄨㄣˊ) zu2(ㄗㄨˋ) + ting1(ㄉㄧㄥ) tang1(ㄉㄤ) ko1(ㄍㄜ) i2(ㄧˋ) soo1(ㄙㆦ) siau3(ㄒㄧㄠ˪) + lim5(ㄌㄧㆬˊ) cinn1(ㄗㆪ) lau5(ㄌㄠˊ) li5(ㄌㄧˊ) hu3(ㄏㄨ˪) si1(ㄒㄧ) + liau5(ㄌㄧㄠˊ) sing5(ㄒㄧㄥˊ) hua3(ㄏㄨㄚ˪) i2(ㄧˋ) kui1(ㄍㄨㄧ) zin7(ㄐㄧㄣ˫) + loh8(ㄌㄜㆷ˙) hu1(ㄏㄨ) thinn1(ㄊㆪ) mia7(ㄇㄧㄚ˫) hok4(ㄏㆦㆻ) he5(ㄏㆤˊ) gi5(ㆣㄧˊ)

diff --git "a/mod_\346\250\231\351\237\263.py" "b/mod_\346\250\231\351\237\263.py" index 60c1090..f62cc60 100644 --- "a/mod_\346\250\231\351\237\263.py" +++ "b/mod_\346\250\231\351\237\263.py" @@ -1,7 +1,6 @@ import re import sqlite3 -global Siann_Bu_Dict, Un_Bu_Dict # ========================================================= # 判斷是否為標點符號的輔助函數 @@ -219,71 +218,358 @@ def dict_to_str(zu_im_hu_ho): return f"{zu_im_hu_ho['聲母']}{zu_im_hu_ho['韻母']}{zu_im_hu_ho['聲調']}" -def init_piau_im_dict(han_ji_khoo): - if han_ji_khoo == "河洛話": - db_name = 'Ho_Lok_Ue.db' - else: - db_name = 'Kong_Un.db' - - conn = sqlite3.connect(db_name) - cursor = conn.cursor() - - Siann_Bu_Dict = init_siann_bu_dict(cursor) - Un_Bu_Dict = init_un_bu_dict(cursor) - - conn.close() - - return Siann_Bu_Dict, Un_Bu_Dict - - -def init_siann_bu_dict(cursor): - # 執行 SQL 查詢 - cursor.execute("SELECT * FROM 聲母對照表") - - # 獲取所有資料 - rows = cursor.fetchall() - - # 初始化字典 - siann_bu_dict = {} +# ========================================================== - # 從查詢結果中提取資料並將其整理成一個字典 - for row in rows: - siann_bu_dict[row[1]] = { - '台語音標': row[1], - '國際音標': row[2], - '台羅拼音': row[3], - '白話字': row[4], - '閩拼方案': row[5], - '方音符號': row[6], - '十五音': row[7], +class PiauIm: + + TONE_MARKS = { + "十五音": { + 1: "一", + 2: "二", + 3: "三", + 4: "四", + 5: "五", + 7: "七", + 8: "八" + }, + "方音符號": { + 1: "", + 2: "ˋ", + 3: "˪", + 4: "", + 5: "ˊ", + 7: "˫", + 8: "\u02D9" + }, + "閩拼方案": { + 1: "\u0304", + 2: "\u0341", + 3: "\u030C", + 5: "\u0300", + 6: "\u0302", + 7: "\u0304", + 8: "\u0341" + }, + "台羅拼音": { + 1: "", + 2: "\u0301", + 3: "\u0300", + 4: "", + 5: "\u0302", + 6: "\u030C", + 7: "\u0304", + 8: "\u030D" } + } - return siann_bu_dict - - -def init_un_bu_dict(cursor): - # 執行 SQL 查詢 - cursor.execute("SELECT * FROM 韻母對照表") + def __init__(self, han_ji_khoo): + self.Siann_Bu_Dict = None + self.Un_Bu_Dict = None + self.init_piau_im_dict(han_ji_khoo) + self.pattern1 = re.compile(r"(uai|uan|uah|ueh|ee|ei|oo)", re.I) + self.pattern2 = re.compile(r"(o|e|a|u|i|ng|m)", re.I) + + def _init_siann_bu_dict(self, cursor): + # 執行 SQL 查詢 + cursor.execute("SELECT * FROM 聲母對照表") + + # 獲取所有資料 + rows = cursor.fetchall() + + # 初始化字典 + siann_bu_dict = {} + + # 從查詢結果中提取資料並將其整理成一個字典 + for row in rows: + siann_bu_dict[row[1]] = { + '台語音標': row[1], + '國際音標': row[2], + '台羅拼音': row[3], + '白話字': row[4], + '閩拼方案': row[5], + '方音符號': row[6], + '十五音': row[7], + } + return siann_bu_dict + + def _init_un_bu_dict(self, cursor): + # 執行 SQL 查詢 + cursor.execute("SELECT * FROM 韻母對照表") + + # 獲取所有資料 + rows = cursor.fetchall() + + # 初始化字典 + un_bu_dict = {} + + # 從查詢結果中提取資料並將其整理成一個字典 + for row in rows: + un_bu_dict[row[1]] = { + '台語音標': row[1], + '國際音標': row[2], + '台羅拼音': row[3], + '白話字': row[4], + '閩拼方案': row[5], + '方音符號': row[6], + '十五音': row[7], + '十五音舒促聲': row[8], + '十五音序': int(row[9]), + } + return un_bu_dict + + def init_piau_im_dict(self, han_ji_khoo): + if han_ji_khoo == "河洛話": + db_name = 'Ho_Lok_Ue.db' + else: + db_name = 'Kong_Un.db' + + with sqlite3.connect(db_name) as conn: + cursor = conn.cursor() + self.Siann_Bu_Dict = self._init_siann_bu_dict(cursor) + self.Un_Bu_Dict = self._init_un_bu_dict(cursor) + + #================================================================ + # 在韻母加調號:白話字(POJ)與台羅(TL)同 + #================================================================ + def un_bu_ga_tiau_ho(self, guan_im, tiau): + tiau_hu_dict = { + 1: "", + 2: "\u0301", + 3: "\u0300", + 4: "", + 5: "\u0302", + 6: "\u030C", + 7: "\u0304", + 8: "\u030D", + 9: "\u030B", + } + guan_im_u_ga_tiau_ho = f"{guan_im}{tiau_hu_dict[int(tiau)]}" + return guan_im_u_ga_tiau_ho + + #================================================================ + # 在韻母加調號:閩拼方案(BP) + #================================================================ + def bp_un_bu_ga_tiau_ho(self, guan_im, tiau): + tiau_hu_dict = { + 1: "\u0304", # 陰平 + 2: "\u0341", # 陽平 + 3: "\u030C", # 上声 + 5: "\u0300", # 陰去 + 6: "\u0302", # 陽去 + 7: "\u0304", # 陰入 + 8: "\u0341", # 陽入 + } + return f"{guan_im}{tiau_hu_dict[tiau]}" - # 獲取所有資料 - rows = cursor.fetchall() + #================================================================ + # 台羅拼音(TL) + # 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 + #================================================================ + def TL_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "台羅拼音" - # 初始化字典 - un_bu_dict = {} + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 韻母為複元音 + searchObj = self.pattern1.search(piau_im) + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "ee" or found == "ei" or found == "oo": + idx = 0 + else: + # found = uai/uan/uah/ueh + idx = 1 + guan_im = un_chars[idx] + un_chars[idx] = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + else: + # 韻母為單元音或鼻音韻 + searchObj2 = self.pattern2.search(piau_im) + if searchObj2: + found = searchObj2.group(1) + guan_im = found + new_un = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + piau_im = piau_im.replace(found, new_un) + + return piau_im + + #================================================================ + # 白話字(POJ) + # 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 + # 例外: + # - oai、oan、oat、oah 標在 a 上。 + # - oeh 標在 e 上。 + #================================================================ + def POJ_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "白話字" + + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 韻母為複元音 + POJ_pattern1 = r"(oai|oan|oah|oeh|ee|ei)" + searchObj = re.search(POJ_pattern1, piau_im, re.M | re.I) + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "ee" or found == "ei": + idx = 0 + else: + # found = oai/oan/oah/oeh + idx = 1 + guan_im = un_chars[idx] + un_chars[idx] = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + else: + # 韻母為單元音或鼻音韻 + POJ_pattern2 = r"(o|e|a|u|i|ng|m)" + searchObj2 = re.search(POJ_pattern2, piau_im, re.M | re.I) + if searchObj2: + found = searchObj2.group(1) + guan_im = found + new_un = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + piau_im = piau_im.replace(found, new_un) + + return piau_im + + #================================================================ + # 閩拼(BP) + # + # 【調號標示規則】 + # 當一個音節有多個字母時,調號得標示在響度最大的字母上面(通常在韻腹)。由規則可以判定確切的字母: + # + # - 響度優先順序: a > oo > (e = o) > (i = u)〈低元音 > 高元音 > 無擦通音 > 擦音 > 塞音〉 + # - 二合字母 iu 及 ui ,調號都標在後一個字母上;因為前一個字母是介音。 + # - m 作韻腹時則標於字母 m 上。 + # - 二合字母 oo 及 ng,標於前一個字母上;比如 ng 標示在字母 n 上。 + # - 三合字母 ere,標於最後的字母 e 上。 + #================================================================ + def BP_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "閩拼方案" + # 將「台羅八聲調」轉換成閩拼使用的調號 + tiau_ho_remap_for_BP = { + 1: 1, # 陰平: 44 + 2: 3, # 上聲:53 + 3: 5, # 陰去:21 + 4: 7, # 上聲:53 + 5: 2, # 陽平:24 + 7: 6, # 陰入:3? + 8: 8, # 陽入:4? + } - # 從查詢結果中提取資料並將其整理成一個字典 - for row in rows: - un_bu_dict[row[1]] = { - '台語音標': row[1], - '國際音標': row[2], - '台羅拼音': row[3], - '白話字': row[4], - '閩拼方案': row[5], - '方音符號': row[6], - '十五音': row[7], - '十五音舒促聲': row[8], - '十五音序': int(row[9]), + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 當聲母為「空白」,韻母為:i 或 u 時,調整聲母 + un_chars = list(un) + if siann == "": + if un_chars[0] == "i": + siann = "y" + elif un_chars[0] == "u": + siann = "w" + + pattern = r"(a|oo|ere|iu|ui|ng|e|o|i|u|m)" + searchObj = re.search(pattern, piau_im, re.M | re.I) + + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "iu" or found == "ui": + idx = 1 + elif found == "oo" or found == "ng": + idx = 0 + elif found == "ere": + idx = 2 + + # 處理韻母加聲調符號 + guan_im = un_chars[idx] + tiau = tiau_ho_remap_for_BP[int(tiau_ho)] # 將「傳統八聲調」轉換成閩拼使用的調號 + un_chars[idx] = self.bp_un_bu_ga_tiau_ho(guan_im, tiau) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + + return piau_im + + #================================================================ + # 方音符號注音(TPS) + # TPS_mapping_dict = { + # "p": "ㆴ˙", + # "t": "ㆵ˙", + # "k": "ㆻ˙", + # "h": "ㆷ˙", + # } + #================================================================ + def TPS_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "方音符號" + tiau_ho_remap_for_TPS = { + 1: "", + 2: "ˋ", + 3: "˪", + 4: "", + 5: "ˊ", + 7: "˫", + 8: "\u02D9", + } + TPS_piau_im_remap_dict = { + "ㄗㄧ": "ㄐㄧ", + "ㄘㄧ": "ㄑㄧ", + "ㄙㄧ": "ㄒㄧ", + "ㆡㄧ": "ㆢㄧ", } - return un_bu_dict + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + tiau = self.TONE_MARKS[piau_im_huat][int(tiau_ho)] + piau_im = f"{siann}{un}{tiau}" + + pattern = r"(ㄗㄧ|ㄘㄧ|ㄙㄧ|ㆡㄧ)" + searchObj = re.search(pattern, piau_im, re.M | re.I) + if searchObj: + key_value = searchObj.group(1) + piau_im = piau_im.replace(key_value, TPS_piau_im_remap_dict[key_value]) + + return piau_im + + #================================================================ + # 雅俗通十五音(SNI:Nga-Siok-Thong) + #================================================================ + def SNI_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "十五音" + tiau_ho_remap_for_sip_ngoo_im = { + 1: "一", + 2: "二", + 3: "三", + 4: "四", + 5: "五", + 7: "七", + 8: "八", + } + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + # tiau = tiau_ho_remap_for_sip_ngoo_im[tiau_ho] + tiau = self.TONE_MARKS[piau_im_huat][int(tiau_ho)] + piau_im = f"{un}{tiau}{siann}" + return piau_im diff --git "a/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" "b/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" index 221e1f3..7356956 100644 Binary files "a/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" and "b/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" differ diff --git a/p730_Tng_Sing_Bang_Iah.py b/p730_Tng_Sing_Bang_Iah.py index 9e1bfef..f5b6dd3 100644 --- a/p730_Tng_Sing_Bang_Iah.py +++ b/p730_Tng_Sing_Bang_Iah.py @@ -7,13 +7,7 @@ import xlwings as xw from mod_file_access import get_named_value -from mod_標音 import ( - init_piau_im_dict, - init_siann_bu_dict, - init_un_bu_dict, - is_punctuation, - split_zu_im, -) +from mod_標音 import PiauIm, is_punctuation, split_zu_im # ========================================================== # 注音法設定和共用變數 @@ -28,295 +22,6 @@ "DBL": ["Siang_Pai", "rtc", "雙排注音"], } -TONE_MARKS = { - "十五音": { - 1: "一", - 2: "二", - 3: "三", - 4: "四", - 5: "五", - 7: "七", - 8: "八" - }, - "方音符號": { - 1: "", - 2: "ˋ", - 3: "˪", - 4: "", - 5: "ˊ", - 7: "˫", - 8: "\u02D9" - }, - "閩拼方案": { - 1: "\u0304", - 2: "\u0341", - 3: "\u030C", - 5: "\u0300", - 6: "\u0302", - 7: "\u0304", - 8: "\u0341" - }, - "台羅拼音": { - 1: "", - 2: "\u0301", - 3: "\u0300", - 4: "", - 5: "\u0302", - 6: "\u030C", - 7: "\u0304", - 8: "\u030D" - } -} - - -#================================================================ -# 方音符號注音(TPS) -# TPS_mapping_dict = { -# "p": "ㆴ˙", -# "t": "ㆵ˙", -# "k": "ㆻ˙", -# "h": "ㆷ˙", -# } -#================================================================ -def TPS_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "方音符號" - tiau_ho_remap_for_TPS = { - 1: "", - 2: "ˋ", - 3: "˪", - 4: "", - 5: "ˊ", - 7: "˫", - 8: "\u02D9", - } - - TPS_piau_im_remap_dict = { - "ㄗㄧ": "ㄐㄧ", - "ㄘㄧ": "ㄑㄧ", - "ㄙㄧ": "ㄒㄧ", - "ㆡㄧ": "ㆢㄧ", - } - - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - un = Un_Bu_Dict[un_bu][piau_im_huat] - tiau = TONE_MARKS[piau_im_huat][int(tiau_ho)] - piau_im = f"{siann}{un}{tiau}" - - pattern = r"(ㄗㄧ|ㄘㄧ|ㄙㄧ|ㆡㄧ)" - searchObj = re.search(pattern, piau_im, re.M | re.I) - if searchObj: - key_value = searchObj.group(1) - piau_im = piau_im.replace(key_value, TPS_piau_im_remap_dict[key_value]) - - return piau_im - -#================================================================ -# 雅俗通十五音(SNI:Nga-Siok-Thong) -#================================================================ -def SNI_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "十五音" - tiau_ho_remap_for_sip_ngoo_im = { - 1: "一", - 2: "二", - 3: "三", - 4: "四", - 5: "五", - 7: "七", - 8: "八", - } - - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - un = Un_Bu_Dict[un_bu][piau_im_huat] - # tiau = tiau_ho_remap_for_sip_ngoo_im[tiau_ho] - tiau = TONE_MARKS[piau_im_huat][int(tiau_ho)] - piau_im = f"{un}{tiau}{siann}" - return piau_im - -#================================================================ -# 在韻母加調號:白話字(POJ)與台羅(TL)同 -#================================================================ -def un_bu_ga_tiau_ho(guan_im, tiau): - tiau_hu_dict = { - 1: "", - 2: "\u0301", - 3: "\u0300", - 4: "", - 5: "\u0302", - 6: "\u030C", - 7: "\u0304", - 8: "\u030D", - 9: "\u030B", - } - guan_im_u_ga_tiau_ho = f"{guan_im}{tiau_hu_dict[int(tiau)]}" - return guan_im_u_ga_tiau_ho - -#================================================================ -# 台羅拼音(TL) -# 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 -#================================================================ -def TL_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "台羅拼音" - - if siann_bu == None or siann_bu == "Ø": - siann = "" - else: - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - - un = Un_Bu_Dict[un_bu][piau_im_huat] - piau_im = f"{siann}{un}" - - # 韻母為複元音 - pattern1 = r"(uai|uan|uah|ueh|ee|ei|oo)" - searchObj = re.search(pattern1, piau_im, re.M | re.I) - if searchObj: - found = searchObj.group(1) - un_chars = list(found) - idx = 0 - if found == "ee" or found == "ei" or found == "oo": - idx = 0 - else: - # found = uai/uan/uah/ueh - idx = 1 - guan_im = un_chars[idx] - un_chars[idx] = un_bu_ga_tiau_ho(guan_im, tiau_ho) - un_str = "".join(un_chars) - piau_im = piau_im.replace(found, un_str) - else: - # 韻母為單元音或鼻音韻 - pattern2 = r"(o|e|a|u|i|ng|m)" - searchObj2 = re.search(pattern2, piau_im, re.M | re.I) - if searchObj2: - found = searchObj2.group(1) - guan_im = found - new_un = un_bu_ga_tiau_ho(guan_im, tiau_ho) - piau_im = piau_im.replace(found, new_un) - - return piau_im - -#================================================================ -# 白話字(POJ) -# 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 -# 例外: -# - oai、oan、oat、oah 標在 a 上。 -# - oeh 標在 e 上。 -#================================================================ -def POJ_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "白話字" - - if siann_bu == None or siann_bu == "Ø": - siann = "" - else: - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - - un = Un_Bu_Dict[un_bu][piau_im_huat] - piau_im = f"{siann}{un}" - - # 韻母為複元音 - # pattern1 = r"(oai|oan|oah|oeh|ee|ei)" - pattern1 = r"(oai|oan|oah|oeh)" - searchObj = re.search(pattern1, piau_im, re.M | re.I) - if searchObj: - found = searchObj.group(1) - un_chars = list(found) - idx = 0 - if found == "ee" or found == "ei": - idx = 0 - else: - # found = oai/oan/oah/oeh - idx = 1 - guan_im = un_chars[idx] - un_chars[idx] = un_bu_ga_tiau_ho(guan_im, tiau_ho) - un_str = "".join(un_chars) - piau_im = piau_im.replace(found, un_str) - else: - # 韻母為單元音或鼻音韻 - pattern2 = r"(o|e|a|u|i|ng|m)" - searchObj2 = re.search(pattern2, piau_im, re.M | re.I) - if searchObj2: - found = searchObj2.group(1) - guan_im = found - new_un = un_bu_ga_tiau_ho(guan_im, tiau_ho) - piau_im = piau_im.replace(found, new_un) - - return piau_im - -#================================================================ -# 閩拼(BP) -# -# 【調號標示規則】 -# 當一個音節有多個字母時,調號得標示在響度最大的字母上面(通常在韻腹)。由規則可以判定確切的字母: -# -# - 響度優先順序: a > oo > (e = o) > (i = u)〈低元音 > 高元音 > 無擦通音 > 擦音 > 塞音〉 -# - 二合字母 iu 及 ui ,調號都標在後一個字母上;因為前一個字母是介音。 -# - m 作韻腹時則標於字母 m 上。 -# - 二合字母 oo 及 ng,標於前一個字母上;比如 ng 標示在字母 n 上。 -# - 三合字母 ere,標於最後的字母 e 上。 -#================================================================ - -# 將「台羅八聲調」轉換成閩拼使用的調號 -tiau_ho_remap_for_BP = { - 1: 1, # 陰平: 44 - 2: 3, # 上聲:53 - 3: 5, # 陰去:21 - 4: 7, # 上聲:53 - 5: 2, # 陽平:24 - 7: 6, # 陰入:3? - 8: 8, # 陽入:4? -} - -def bp_un_bu_ga_tiau_ho(guan_im, tiau): - tiau_hu_dict = { - 1: "\u0304", # 陰平 - 2: "\u0341", # 陽平 - 3: "\u030C", # 上声 - 5: "\u0300", # 陰去 - 6: "\u0302", # 陽去 - 7: "\u0304", # 陰入 - 8: "\u0341", # 陽入 - } - return f"{guan_im}{tiau_hu_dict[tiau]}" - -def BP_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "閩拼方案" - - if siann_bu == None or siann_bu == "Ø": - siann = "" - else: - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - - un = Un_Bu_Dict[un_bu][piau_im_huat] - piau_im = f"{siann}{un}" - - # 當聲母為「空白」,韻母為:i 或 u 時,調整聲母 - un_chars = list(un) - if siann == "": - if un_chars[0] == "i": - siann = "y" - elif un_chars[0] == "u": - siann = "w" - - pattern = r"(a|oo|ere|iu|ui|ng|e|o|i|u|m)" - searchObj = re.search(pattern, piau_im, re.M | re.I) - - if searchObj: - found = searchObj.group(1) - un_chars = list(found) - idx = 0 - if found == "iu" or found == "ui": - idx = 1 - elif found == "oo" or found == "ng": - idx = 0 - elif found == "ere": - idx = 2 - - # 處理韻母加聲調符號 - guan_im = un_chars[idx] - tiau = tiau_ho_remap_for_BP[int(tiau_ho)] # 將「傳統八聲調」轉換成閩拼使用的調號 - un_chars[idx] = bp_un_bu_ga_tiau_ho(guan_im, tiau) - un_str = "".join(un_chars) - piau_im = piau_im.replace(found, un_str) - - return piau_im def create_html_file(output_path, content, title='您的標題'): template = f""" @@ -364,21 +69,21 @@ def put_picture(wb, source_sheet_name): html_str += (div_tag % (title, image_url) + "\n") return html_str -def choose_piau_im_method(zu_im_huat, siann_bu, un_bu, tiau_ho): +def choose_piau_im_method(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho): """選擇並執行對應的注音方法""" if zu_im_huat == "十五音": - return SNI_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.SNI_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "白話字": - return POJ_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.POJ_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "台羅拼音": - return TL_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.TL_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "閩拼方案": - return BP_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.BP_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "方音符號": - return TPS_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.TPS_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "台語音標": - siann = Siann_Bu_Dict[siann_bu]["台語音標"] or "" - un = Un_Bu_Dict[un_bu]["台語音標"] + siann = piau_im.Siann_Bu_Dict[siann_bu]["台語音標"] or "" + un = piau_im.Un_Bu_Dict[un_bu]["台語音標"] return f"{siann}{un}{tiau_ho}" return "" @@ -398,7 +103,7 @@ def concat_ruby_tag(style, han_ji, tlpa_im_piau, han_ji_piau_im): # ========================================================= # 依據指定的【注音方法】,輸出含 Ruby Tags 之 HTML 網頁 # ========================================================= -def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', piau_im_huat='方音符號'): +def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', piau_im_huat='方音符號', piau_im=None): write_buffer = "" # ========================================================= @@ -444,7 +149,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', write_buffer += ("

\n") index += 1 print("\n") - break; + break else: han_ji = sheet.range((row, col)).value # 取得漢字 # 當 han_ji 是標點符號時,不需要注音 @@ -469,6 +174,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', siann_bu = zu_im_list[0] han_ji_piau_im = choose_piau_im_method( + piau_im, piau_im_huat, siann_bu, zu_im_list[1], @@ -505,8 +211,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含頁頭'): global source_sheet # 宣告 source_sheet 為全域變數 global source_sheet_name # 宣告 source_sheet_name 為全域變數 - global total_length # 宣告 end_of_source_row 為全域變數 - global Siann_Bu_Dict, Un_Bu_Dict + global total_length # 宣告 total_length 為全域變數 global Web_Page_Style # ------------------------------------------------------------------------- @@ -514,7 +219,7 @@ def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含 # ------------------------------------------------------------------------- han_ji_khoo = get_named_value(wb, '漢字庫', '河洛話') Web_Page_Style = get_named_value(wb, '網頁格式', 'DBL') - Siann_Bu_Dict, Un_Bu_Dict = init_piau_im_dict(han_ji_khoo) + piau_im = PiauIm(han_ji_khoo) # ------------------------------------------------------------------------- # 選擇指定的工作表 @@ -554,7 +259,7 @@ def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含 # ========================================================== print(f"開始製作【漢字注音】網頁!") html_content = build_web_page( - wb, sheet, source_chars, total_length, page_type, han_ji_piau_im_huat + wb, sheet, source_chars, total_length, page_type, han_ji_piau_im_huat, piau_im ) # 輸出到網頁檔案