1 ;;; euc-china.el --- Fixed EUC-CN/TW handling routines.
3 ;; Copyright (C) 1997, 1998 Mule Project,
4 ;; Powered by Electrotechnical Laboratory, JAPAN.
5 ;; Project Leader: Satoru Tomura <tomura@etl.go.jp>
7 ;; Author: KATAYAMA Yoshio <kate@pfu.co.jp>
8 ;; Maintainer: KATAYAMA Yoshio <kate@pfu.co.jp>
9 ;; Keywords: mule, multilingual, input method, chinese
11 ;; This file will be part of GNU Emacs (in future).
13 ;; EGG is free software; you can redistribute it and/or modify
14 ;; it under the terms of the GNU General Public License as published by
15 ;; the Free Software Foundation; either version 2, or (at your option)
18 ;; EGG is distributed in the hope that it will be useful,
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;; GNU General Public License for more details.
23 ;; You should have received a copy of the GNU General Public License
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
26 ;; Boston, MA 02111-1307, USA.
33 (defvar egg-zhuyin nil)
35 (defconst yincode-pinyin-shengmu
36 '(("" . 0) ("B" . 1) ("C" . 2) ("Ch" . 3) ("D" . 4)
37 ("F" . 5) ("G" . 6) ("H" . 7) ("J" . 8) ("K" . 9)
38 ("L" . 10) ("M" . 11) ("N" . 12) ("P" . 13) ("Q" . 14)
39 ("R" . 15) ("S" . 16) ("Sh" . 17) ("T" . 18) ("W" . 19)
40 ("X" . 20) ("Y" . 21) ("Z" . 22) ("Zh" . 23)))
42 (defconst yincode-pinyin-yunmu
43 '(("
\e(0@
\e(B" 0 0) ("
\e(0@
\e(B" 0 1) ("
\e(0@
\e(B" 0 3) ("
\e(0@
\e(B" 0 5) ("
\e(0@
\e(B" 0 7)
44 ("a
\e(0@
\e(B" 1 0) ("
\e(0!@
\e(B" 1 1) ("
\e(0"@
\e(B" 1 3) ("
\e(0#@
\e(B" 1 5) ("
\e(0$@
\e(B" 1 7)
45 ("ai
\e(0@
\e(B" 2 0) ("
\e(0!
\e(Bi
\e(0@
\e(B" 2 1) ("
\e(0"
\e(Bi
\e(0@
\e(B" 2 3) ("
\e(0#
\e(Bi
\e(0@
\e(B" 2 5) ("
\e(0$
\e(Bi
\e(0@
\e(B" 2 7)
46 ("an
\e(0@
\e(B" 3 0) ("
\e(0!
\e(Bn
\e(0@
\e(B" 3 1) ("
\e(0"
\e(Bn
\e(0@
\e(B" 3 3) ("
\e(0#
\e(Bn
\e(0@
\e(B" 3 5) ("
\e(0$
\e(Bn
\e(0@
\e(B" 3 7)
47 ("ang
\e(0@
\e(B" 4 0) ("
\e(0!
\e(Bng
\e(0@
\e(B" 4 1) ("
\e(0"
\e(Bng
\e(0@
\e(B" 4 3) ("
\e(0#
\e(Bng
\e(0@
\e(B" 4 5) ("
\e(0$
\e(Bng
\e(0@
\e(B" 4 7)
48 ("ao
\e(0@
\e(B" 5 0) ("
\e(0!
\e(Bo
\e(0@
\e(B" 5 1) ("
\e(0"
\e(Bo
\e(0@
\e(B" 5 3) ("
\e(0#
\e(Bo
\e(0@
\e(B" 5 5) ("
\e(0$
\e(Bo
\e(0@
\e(B" 5 7)
49 ("e
\e(0@
\e(B" 6 0) ("
\e(0%@
\e(B" 6 1) ("
\e(0&@
\e(B" 6 3) ("
\e(0'@
\e(B" 6 5) ("
\e(0(@
\e(B" 6 7)
50 ("ei
\e(0@
\e(B" 7 0) ("
\e(0%
\e(Bi
\e(0@
\e(B" 7 1) ("
\e(0&
\e(Bi
\e(0@
\e(B" 7 3) ("
\e(0'
\e(Bi
\e(0@
\e(B" 7 5) ("
\e(0(
\e(Bi
\e(0@
\e(B" 7 7)
51 ("en
\e(0@
\e(B" 8 0) ("
\e(0%
\e(Bn
\e(0@
\e(B" 8 1) ("
\e(0&
\e(Bn
\e(0@
\e(B" 8 3) ("
\e(0'
\e(Bn
\e(0@
\e(B" 8 5) ("
\e(0(
\e(Bn
\e(0@
\e(B" 8 7)
52 ("eng
\e(0@
\e(B" 9 0) ("
\e(0%
\e(Bng
\e(0@
\e(B" 9 1) ("
\e(0&
\e(Bng
\e(0@
\e(B" 9 3) ("
\e(0'
\e(Bng
\e(0@
\e(B" 9 5) ("
\e(0(
\e(Bng
\e(0@
\e(B" 9 7)
53 ("er
\e(0@
\e(B" 10 0) ("
\e(0%
\e(Br
\e(0@
\e(B" 10 1) ("
\e(0&
\e(Br
\e(0@
\e(B" 10 3) ("
\e(0'
\e(Br
\e(0@
\e(B" 10 5) ("
\e(0(
\e(Br
\e(0@
\e(B" 10 7)
54 ("i
\e(0@
\e(B" 11 0) ("
\e(0)@
\e(B" 11 1) ("
\e(0*@
\e(B" 11 3) ("
\e(0+@
\e(B" 11 5) ("
\e(0,@
\e(B" 11 7)
55 ("ia
\e(0@
\e(B" 12 0) ("i
\e(0!@
\e(B" 12 1) ("i
\e(0"@
\e(B" 12 3) ("i
\e(0#@
\e(B" 12 5) ("i
\e(0$@
\e(B" 12 7)
56 ("ian
\e(0@
\e(B" 13 0) ("i
\e(0!
\e(Bn
\e(0@
\e(B" 13 1) ("i
\e(0"
\e(Bn
\e(0@
\e(B" 13 3) ("i
\e(0#
\e(Bn
\e(0@
\e(B" 13 5) ("i
\e(0$
\e(Bn
\e(0@
\e(B" 13 7)
57 ("iang
\e(0@
\e(B" 14 0) ("i
\e(0!
\e(Bng
\e(0@
\e(B" 14 1) ("i
\e(0"
\e(Bng
\e(0@
\e(B" 14 3) ("i
\e(0#
\e(Bng
\e(0@
\e(B" 14 5) ("i
\e(0$
\e(Bng
\e(0@
\e(B" 14 7)
58 ("iao
\e(0@
\e(B" 15 0) ("i
\e(0!
\e(Bo
\e(0@
\e(B" 15 1) ("i
\e(0"
\e(Bo
\e(0@
\e(B" 15 3) ("i
\e(0#
\e(Bo
\e(0@
\e(B" 15 5) ("i
\e(0$
\e(Bo
\e(0@
\e(B" 15 7)
59 ("ie
\e(0@
\e(B" 16 0) ("i
\e(0%@
\e(B" 16 1) ("i
\e(0&@
\e(B" 16 3) ("i
\e(0'@
\e(B" 16 5) ("i
\e(0(@
\e(B" 16 7)
60 ("in
\e(0@
\e(B" 17 0) ("
\e(0)
\e(Bn
\e(0@
\e(B" 17 1) ("
\e(0*
\e(Bn
\e(0@
\e(B" 17 3) ("
\e(0+
\e(Bn
\e(0@
\e(B" 17 5) ("
\e(0,
\e(Bn
\e(0@
\e(B" 17 7)
61 ("ing
\e(0@
\e(B" 18 0) ("
\e(0)
\e(Bng
\e(0@
\e(B" 18 1) ("
\e(0*
\e(Bng
\e(0@
\e(B" 18 3) ("
\e(0+
\e(Bng
\e(0@
\e(B" 18 5) ("
\e(0,
\e(Bng
\e(0@
\e(B" 18 7)
62 ("iong
\e(0@
\e(B" 19 0) ("i
\e(0-
\e(Bng
\e(0@
\e(B" 19 1) ("i
\e(0.
\e(Bng
\e(0@
\e(B" 19 3) ("i
\e(0/
\e(Bng
\e(0@
\e(B" 19 5) ("i
\e(00
\e(Bng
\e(0@
\e(B" 19 7)
63 ("iu
\e(0@
\e(B" 20 0) ("i
\e(01@
\e(B" 20 1) ("i
\e(02@
\e(B" 20 3) ("i
\e(03@
\e(B" 20 5) ("i
\e(04@
\e(B" 20 7)
64 ("m
\e(0@
\e(B" 21 0) ("m
\e(0@
\e(B" 21 1) ("m
\e(0@
\e(B" 21 3) ("m
\e(0@
\e(B" 21 5) ("m
\e(0@
\e(B" 21 7)
65 ("n
\e(0@
\e(B" 22 0) ("n
\e(0@
\e(B" 22 1) ("
\e(0=@
\e(B" 22 3) ("
\e(0>@
\e(B" 22 5) ("
\e(0?@
\e(B" 22 7)
66 ("ng
\e(0@
\e(B" 23 0) ("ng
\e(0@
\e(B" 23 1) ("ng
\e(0@
\e(B" 23 3) ("ng
\e(0@
\e(B" 23 5) ("ng
\e(0@
\e(B" 23 7)
67 ("o
\e(0@
\e(B" 24 0) ("
\e(0-@
\e(B" 24 1) ("
\e(0.@
\e(B" 24 3) ("
\e(0/@
\e(B" 24 5) ("
\e(00@
\e(B" 24 7)
68 ("ong
\e(0@
\e(B" 25 0) ("
\e(0-
\e(Bng
\e(0@
\e(B" 25 1) ("
\e(0.
\e(Bng
\e(0@
\e(B" 25 3) ("
\e(0/
\e(Bng
\e(0@
\e(B" 25 5) ("
\e(00
\e(Bng
\e(0@
\e(B" 25 7)
69 ("ou
\e(0@
\e(B" 26 0) ("
\e(0-
\e(Bu
\e(0@
\e(B" 26 1) ("
\e(0.
\e(Bu
\e(0@
\e(B" 26 3) ("
\e(0/
\e(Bu
\e(0@
\e(B" 26 5) ("
\e(00
\e(Bu
\e(0@
\e(B" 26 7)
70 ("u
\e(0@
\e(B" 27 0) ("
\e(01@
\e(B" 27 1) ("
\e(02@
\e(B" 27 3) ("
\e(03@
\e(B" 27 5) ("
\e(04@
\e(B" 27 7)
71 ("ua
\e(0@
\e(B" 28 0) ("u
\e(0!@
\e(B" 28 1) ("u
\e(0"@
\e(B" 28 3) ("u
\e(0#@
\e(B" 28 5) ("u
\e(0$@
\e(B" 28 7)
72 ("uai
\e(0@
\e(B" 29 0) ("u
\e(0!
\e(Bi
\e(0@
\e(B" 29 1) ("u
\e(0"
\e(Bi
\e(0@
\e(B" 29 3) ("u
\e(0#
\e(Bi
\e(0@
\e(B" 29 5) ("u
\e(0$
\e(Bi
\e(0@
\e(B" 29 7)
73 ("uan
\e(0@
\e(B" 30 0) ("u
\e(0!
\e(Bn
\e(0@
\e(B" 30 1) ("u
\e(0"
\e(Bn
\e(0@
\e(B" 30 3) ("u
\e(0#
\e(Bn
\e(0@
\e(B" 30 5) ("u
\e(0$
\e(Bn
\e(0@
\e(B" 30 7)
74 ("uang
\e(0@
\e(B" 31 0) ("u
\e(0!
\e(Bng
\e(0@
\e(B" 31 1) ("u
\e(0"
\e(Bng
\e(0@
\e(B" 31 3) ("u
\e(0#
\e(Bng
\e(0@
\e(B" 31 5) ("u
\e(0$
\e(Bng
\e(0@
\e(B" 31 7)
75 ("ue
\e(0@
\e(B" 32 0) ("u
\e(0%@
\e(B" 32 1) ("u
\e(0&@
\e(B" 32 3) ("u
\e(0'@
\e(B" 32 5) ("u
\e(0(@
\e(B" 32 7)
76 ("ui
\e(0@
\e(B" 33 0) ("u
\e(0)@
\e(B" 33 1) ("u
\e(0*@
\e(B" 33 3) ("u
\e(0+@
\e(B" 33 5) ("u
\e(0,@
\e(B" 33 7)
77 ("un
\e(0@
\e(B" 34 0) ("
\e(01
\e(Bn
\e(0@
\e(B" 34 1) ("
\e(02
\e(Bn
\e(0@
\e(B" 34 3) ("
\e(03
\e(Bn
\e(0@
\e(B" 34 5) ("
\e(04
\e(Bn
\e(0@
\e(B" 34 7)
78 ("uo
\e(0@
\e(B" 35 0) ("u
\e(0-@
\e(B" 35 1) ("u
\e(0.@
\e(B" 35 3) ("u
\e(0/@
\e(B" 35 5) ("u
\e(00@
\e(B" 35 7)
79 ("
\e(09@
\e(B" 36 0) ("
\e(05@
\e(B" 36 1) ("
\e(06@
\e(B" 36 3) ("
\e(07@
\e(B" 36 5) ("
\e(08@
\e(B" 36 7)
80 ("
\e(09
\e(Be
\e(0@
\e(B" 37 0) ("
\e(09%@
\e(B" 37 1) ("
\e(09&@
\e(B" 37 3) ("
\e(09'@
\e(B" 37 5) ("
\e(09(@
\e(B" 37 7)
81 ("0
\e(0@
\e(B" 38 0) ("1
\e(0@
\e(B" 38 1) ("2
\e(0@
\e(B" 38 3) ("3
\e(0@
\e(B" 38 5) ("4
\e(0@
\e(B" 38 7)))
83 (defconst yincode-pinyin-table
85 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
86 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1
87 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1
88 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1
89 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1
90 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1
91 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1
92 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1
93 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1
94 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1
95 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1
96 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1
97 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1
98 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1
99 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1
100 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0 0 1
101 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1
102 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1
103 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1
104 0 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1
105 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1
106 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1
107 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1
108 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1
111 (defconst yincode-zhuyin-shengmu
112 '(("" . 0) ("
\e(0E
\e(B" . 1) ("
\e(0X
\e(B" . 2) ("
\e(0T
\e(B" . 3) ("
\e(0I
\e(B" . 4)
113 ("
\e(0H
\e(B" . 5) ("
\e(0M
\e(B" . 6) ("
\e(0O
\e(B" . 7) ("
\e(0P
\e(B" . 8) ("
\e(0N
\e(B" . 9)
114 ("
\e(0L
\e(B" . 10) ("
\e(0G
\e(B" . 11) ("
\e(0K
\e(B" . 12) ("
\e(0F
\e(B" . 13) ("
\e(0Q
\e(B" . 14)
115 ("
\e(0V
\e(B" . 15) ("
\e(0Y
\e(B" . 16) ("
\e(0U
\e(B" . 17) ("
\e(0J
\e(B" . 18) ("
\e(0h
\e(B" . 19)
116 ("
\e(0R
\e(B" . 20) ("
\e(0g
\e(B" . 21) ("
\e(0W
\e(B" . 22) ("
\e(0S
\e(B" . 23)))
118 (defconst yincode-zhuyin-yunmu
119 '(("
\e(0@
\e(B" 0 0) ("
\e(0A
\e(B" 0 1) ("
\e(0B
\e(B" 0 3) ("
\e(0C
\e(B" 0 5) ("
\e(0D
\e(B" 0 7) ; i
120 ("
\e(0Z@
\e(B" 1 0) ("
\e(0ZA
\e(B" 1 1) ("
\e(0ZB
\e(B" 1 3) ("
\e(0ZC
\e(B" 1 5) ("
\e(0ZD
\e(B" 1 7) ; a
121 ("
\e(0^@
\e(B" 2 0) ("
\e(0^A
\e(B" 2 1) ("
\e(0^B
\e(B" 2 3) ("
\e(0^C
\e(B" 2 5) ("
\e(0^D
\e(B" 2 7) ; ai
122 ("
\e(0b@
\e(B" 3 0) ("
\e(0bA
\e(B" 3 1) ("
\e(0bB
\e(B" 3 3) ("
\e(0bC
\e(B" 3 5) ("
\e(0bD
\e(B" 3 7) ; an
123 ("
\e(0d@
\e(B" 4 0) ("
\e(0dA
\e(B" 4 1) ("
\e(0dB
\e(B" 4 3) ("
\e(0dC
\e(B" 4 5) ("
\e(0dD
\e(B" 4 7) ; ang
124 ("
\e(0`@
\e(B" 5 0) ("
\e(0`A
\e(B" 5 1) ("
\e(0`B
\e(B" 5 3) ("
\e(0`C
\e(B" 5 5) ("
\e(0`D
\e(B" 5 7) ; ao
125 ("
\e(0\@
\e(B" 6 0) ("
\e(0\A
\e(B" 6 1) ("
\e(0\B
\e(B" 6 3) ("
\e(0\C
\e(B" 6 5) ("
\e(0\D
\e(B" 6 7) ; e
126 ("
\e(0_@
\e(B" 7 0) ("
\e(0_A
\e(B" 7 1) ("
\e(0_B
\e(B" 7 3) ("
\e(0_C
\e(B" 7 5) ("
\e(0_D
\e(B" 7 7) ; ei
127 ("
\e(0c@
\e(B" 8 0) ("
\e(0cA
\e(B" 8 1) ("
\e(0cB
\e(B" 8 3) ("
\e(0cC
\e(B" 8 5) ("
\e(0cD
\e(B" 8 7) ; en
128 ("
\e(0e@
\e(B" 9 0) ("
\e(0eA
\e(B" 9 1) ("
\e(0eB
\e(B" 9 3) ("
\e(0eC
\e(B" 9 5) ("
\e(0eD
\e(B" 9 7) ; eng
129 ("
\e(0f@
\e(B" 10 0) ("
\e(0fA
\e(B" 10 1) ("
\e(0fB
\e(B" 10 3) ("
\e(0fC
\e(B" 10 5) ("
\e(0fD
\e(B" 10 7) ; er
130 ("
\e(0g@
\e(B" 11 0) ("
\e(0gA
\e(B" 11 1) ("
\e(0gB
\e(B" 11 3) ("
\e(0gC
\e(B" 11 5) ("
\e(0gD
\e(B" 11 7) ; i
131 ("
\e(0gZ@
\e(B" 12 0) ("
\e(0gZA
\e(B" 12 1) ("
\e(0gZB
\e(B" 12 3) ("
\e(0gZC
\e(B" 12 5) ("
\e(0gZD
\e(B" 12 7) ; ia
132 ("
\e(0gb@
\e(B" 13 0) ("
\e(0gbA
\e(B" 13 1) ("
\e(0gbB
\e(B" 13 3) ("
\e(0gbC
\e(B" 13 5) ("
\e(0gbD
\e(B" 13 7) ; ian
133 ("
\e(0gd@
\e(B" 14 0) ("
\e(0gdA
\e(B" 14 1) ("
\e(0gdB
\e(B" 14 3) ("
\e(0gdC
\e(B" 14 5) ("
\e(0gdD
\e(B" 14 7) ; iang
134 ("
\e(0g`@
\e(B" 15 0) ("
\e(0g`A
\e(B" 15 1) ("
\e(0g`B
\e(B" 15 3) ("
\e(0g`C
\e(B" 15 5) ("
\e(0g`D
\e(B" 15 7) ; iao
135 ("
\e(0g]@
\e(B" 16 0) ("
\e(0g]A
\e(B" 16 1) ("
\e(0g]B
\e(B" 16 3) ("
\e(0g]C
\e(B" 16 5) ("
\e(0g]D
\e(B" 16 7) ; ie
136 ("
\e(0gc@
\e(B" 17 0) ("
\e(0gcA
\e(B" 17 1) ("
\e(0gcB
\e(B" 17 3) ("
\e(0gcC
\e(B" 17 5) ("
\e(0gcD
\e(B" 17 7) ; in
137 ("
\e(0ge@
\e(B" 18 0) ("
\e(0geA
\e(B" 18 1) ("
\e(0geB
\e(B" 18 3) ("
\e(0geC
\e(B" 18 5) ("
\e(0geD
\e(B" 18 7) ; ing
138 ("
\e(0ie@
\e(B" 19 0) ("
\e(0ieA
\e(B" 19 1) ("
\e(0ieB
\e(B" 19 3) ("
\e(0ieC
\e(B" 19 5) ("
\e(0ieD
\e(B" 19 7) ; iong
139 ("
\e(0ga@
\e(B" 20 0) ("
\e(0gaA
\e(B" 20 1) ("
\e(0gaB
\e(B" 20 3) ("
\e(0gaC
\e(B" 20 5) ("
\e(0gaD
\e(B" 20 7) ; iu
140 ("
\e(0G@
\e(B" 21 0) ("
\e(0GA
\e(B" 21 1) ("
\e(0GB
\e(B" 21 3) ("
\e(0GC
\e(B" 21 5) ("
\e(0GD
\e(B" 21 7) ; m
141 ("
\e(0K@
\e(B" 22 0) ("
\e(0KA
\e(B" 22 1) ("
\e(0KB
\e(B" 22 3) ("
\e(0KC
\e(B" 22 5) ("
\e(0KD
\e(B" 22 7) ; n
142 ("@
\e(0@
\e(B" 23 0) ("@
\e(0A
\e(B" 23 1) ("@
\e(0B
\e(B" 23 3) ("@
\e(0C
\e(B" 23 5) ("@
\e(0D
\e(B" 23 7) ; ng
143 ("
\e(0[@
\e(B" 24 0) ("
\e(0[A
\e(B" 24 1) ("
\e(0[B
\e(B" 24 3) ("
\e(0[C
\e(B" 24 5) ("
\e(0[D
\e(B" 24 7) ; o
144 ("
\e(0he@
\e(B" 25 0) ("
\e(0heA
\e(B" 25 1) ("
\e(0heB
\e(B" 25 3) ("
\e(0heC
\e(B" 25 5) ("
\e(0heD
\e(B" 25 7) ; ong
145 ("
\e(0a@
\e(B" 26 0) ("
\e(0aA
\e(B" 26 1) ("
\e(0aB
\e(B" 26 3) ("
\e(0aC
\e(B" 26 5) ("
\e(0aD
\e(B" 26 7) ; ou
146 ("
\e(0h@
\e(B" 27 0) ("
\e(0hA
\e(B" 27 1) ("
\e(0hB
\e(B" 27 3) ("
\e(0hC
\e(B" 27 5) ("
\e(0hD
\e(B" 27 7) ; u
147 ("
\e(0hZ@
\e(B" 28 0) ("
\e(0hZA
\e(B" 28 1) ("
\e(0hZB
\e(B" 28 3) ("
\e(0hZC
\e(B" 28 5) ("
\e(0hZD
\e(B" 28 7) ; ua
148 ("
\e(0h^@
\e(B" 29 0) ("
\e(0h^A
\e(B" 29 1) ("
\e(0h^B
\e(B" 29 3) ("
\e(0h^C
\e(B" 29 5) ("
\e(0h^D
\e(B" 29 7) ; uai
149 ("
\e(0hb@
\e(B" 30 0) ("
\e(0hbA
\e(B" 30 1) ("
\e(0hbB
\e(B" 30 3) ("
\e(0hbC
\e(B" 30 5) ("
\e(0hbD
\e(B" 30 7) ; uan
150 ("
\e(0hd@
\e(B" 31 0) ("
\e(0hdA
\e(B" 31 1) ("
\e(0hdB
\e(B" 31 3) ("
\e(0hdC
\e(B" 31 5) ("
\e(0hdD
\e(B" 31 7) ; uang
151 ("
\e(0i]@
\e(B" 37 0) ("
\e(0i]A
\e(B" 37 1) ("
\e(0i]B
\e(B" 37 3) ("
\e(0i]C
\e(B" 37 5) ("
\e(0i]D
\e(B" 37 7) ; ue
152 ("
\e(0h_@
\e(B" 33 0) ("
\e(0h_A
\e(B" 33 1) ("
\e(0h_B
\e(B" 33 3) ("
\e(0h_C
\e(B" 33 5) ("
\e(0h_D
\e(B" 33 7) ; ui
153 ("
\e(0hc@
\e(B" 34 0) ("
\e(0hcA
\e(B" 34 1) ("
\e(0hcB
\e(B" 34 3) ("
\e(0hcC
\e(B" 34 5) ("
\e(0hcD
\e(B" 34 7) ; un
154 ("
\e(0h[@
\e(B" 35 0) ("
\e(0h[A
\e(B" 35 1) ("
\e(0h[B
\e(B" 35 3) ("
\e(0h[C
\e(B" 35 5) ("
\e(0h[D
\e(B" 35 7) ; uo
155 ("
\e(0i@
\e(B" 36 0) ("
\e(0iA
\e(B" 36 1) ("
\e(0iB
\e(B" 36 3) ("
\e(0iC
\e(B" 36 5) ("
\e(0iD
\e(B" 36 7) ;
\e(09
\e(B
156 ("
\e(0i]@
\e(B" 37 0) ("
\e(0i]A
\e(B" 37 1) ("
\e(0i]B
\e(B" 37 3) ("
\e(0i]C
\e(B" 37 5) ("
\e(0i]D
\e(B" 37 7) ;
\e(09
\e(Be
157 ("0
\e(0@
\e(B" 38 0) ("1
\e(0A
\e(B" 38 1) ("2
\e(0B
\e(B" 38 3) ("3
\e(0C
\e(B" 38 5) ("4
\e(0D
\e(B" 38 7) ; undefined
158 ("
\e(0ib@
\e(B" 39 0) ("
\e(0ibA
\e(B" 39 1) ("
\e(0ibB
\e(B" 39 3) ("
\e(0ibC
\e(B" 39 5) ("
\e(0ibD
\e(B" 39 7) ;
\e(09
\e(Ban
159 ("
\e(0ic@
\e(B" 40 0) ("
\e(0icA
\e(B" 40 1) ("
\e(0icB
\e(B" 40 3) ("
\e(0icC
\e(B" 40 5) ("
\e(0icD
\e(B" 40 7) ;
\e(09
\e(Bn
162 (defconst yincode-zhuyin-table
165 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
166 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x9586 ?\x0000 ?\x9592 ?\x9599
167 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x0000 ?\x0000
168 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x959b ?\x95a0 ?\x0000 ?\x959e
171 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000
172 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
173 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x0000
174 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
177 ?\x828b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
178 ?\x0000 ?\x0280 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
179 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
180 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
183 ?\x838b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000
184 ?\x0000 ?\x0380 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
185 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
186 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
189 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
190 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x0000
191 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
192 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
195 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000
196 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
197 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
198 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
201 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
202 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
203 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
204 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
207 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
208 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
209 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
210 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
213 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
214 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
215 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x08a4 ?\x0000 ?\x0000
216 ?\x08a7 ?\x0000 ?\x08a5 ?\x0000 ?\x08a8 ?\x0000 ?\x889b ?\x88a0 ?\x8000 ?\x889e
219 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
220 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
221 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
222 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
225 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000
226 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
227 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
228 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
231 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
232 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
233 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
234 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
237 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
238 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
239 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
240 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
243 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000
244 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
245 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
246 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
249 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
250 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
251 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0ea4 ?\x0000 ?\x0000
252 ?\x0ea7 ?\x0000 ?\x0ea5 ?\x0000 ?\x0ea8 ?\x0000 ?\x8e9b ?\x8ea0 ?\x8000 ?\x8e9e
255 ?\x8f8b ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000
256 ?\x0000 ?\x0f80 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
257 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000
258 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
261 ?\x908b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000
262 ?\x0000 ?\x1080 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
263 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
264 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
267 ?\x918b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
268 ?\x0000 ?\x1180 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
269 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
270 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
273 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x8000
274 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x0000
275 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
276 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
279 ?\x939b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000
280 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
281 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000 ?\x0000 ?\x1380 ?\x0000 ?\x0000
282 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
285 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
286 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
287 ?\x8000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x14a4 ?\x0000 ?\x0000
288 ?\x14a7 ?\x0000 ?\x14a5 ?\x0000 ?\x14a8 ?\x0000 ?\x949b ?\x94a0 ?\x8000 ?\x949e
291 ?\x958b ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0090 ?\x0000 ?\x9591 ?\x9592
292 ?\x0000 ?\x1580 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x1588 ?\x1589 ?\x0000
293 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0093 ?\x8000 ?\x00a4 ?\x0000 ?\x0000
294 ?\x00a7 ?\x0000 ?\x00a5 ?\x0000 ?\x00a8 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
297 ?\x968b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
298 ?\x0000 ?\x1680 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
299 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000
300 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
303 ?\x978b ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
304 ?\x0000 ?\x1780 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000
305 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x8000 ?\x8000
306 ?\x8000 ?\x8000 ?\x0000 ?\x8000 ?\x8000 ?\x8000 ?\x0000 ?\x0000 ?\x8000 ?\x0000
310 (defun egg-chinese-syllable (str &optional start)
312 (setq str (substring str start)))
313 (or (car (egg-pinyin-syllable str))
314 (car (egg-zhuyin-syllable str))))
316 (defsubst egg-make-fixed-euc-china-code (s y)
318 (+ (* 2 (nth 1 y)) (logand (nth 2 y) 1) 32)
319 (+ (* 4 (if (= s 0) 20 s)) (lsh (nth 2 y) -1) 156))))
321 (defun egg-pinyin-syllable (str)
323 (if (string-match "^[A-Za-z
\e(0!
\e(B-
\e(0?
\e(B]+
\e(0@
\e(B" str)
325 (setq end (match-end 0))
327 ((setq s (cdr (assoc (substring str 0 2) yincode-pinyin-shengmu)))
328 (setq y (substring str 2 end)))
329 ((setq s (cdr (assoc (substring str 0 1) yincode-pinyin-shengmu)))
330 (setq y (substring str 1 end)))
332 (setq s 0 y (substring str 0 end))))
333 (if (and (setq y (assoc y yincode-pinyin-yunmu))
334 (= (aref yincode-pinyin-table (+ (* 39 s) (nth 1 y))) 1))
335 (cons end (egg-make-fixed-euc-china-code s y)))))))
337 (defun egg-zhuyin-syllable (str)
338 (let (end s y c z (zhuyin-len (charset-bytes 'chinese-sisheng)))
339 (if (string-match "^[
\e(0E
\e(B-
\e(0i
\e(B@0-4]+[
\e(0@ABCD
\e(B]" str)
341 (setq end (match-end 0)
342 c (substring str 0 zhuyin-len)
343 s (cdr (assoc c yincode-zhuyin-shengmu))
344 y (assoc (substring str zhuyin-len end) yincode-zhuyin-yunmu))
347 y (assoc (substring str 0 end) yincode-zhuyin-yunmu)))
349 (setq z (aref yincode-zhuyin-table (+ (* 41 s) (nth 1 y))))
350 (/= (logand z ?\x8000) 0))
351 (if (/= (logand z ?\x80) 0)
352 (cons end (egg-make-fixed-euc-china-code
353 (logand (lsh z -8) ?\x7f)
354 (list nil (logand z ?\x7f) (nth 2 y))))
355 (cons end (egg-make-fixed-euc-china-code s y))))))))
357 (defun encode-fixed-euc-china-region (beg end type)
358 "Encode the text in the region to EUC-CN/TW."
359 (let (s syl c cset (maxlen (max (length "Zhu
\e(0!
\e(Bng
\e(0@
\e(B") (length "
\e(0ShdA
\e(B"))))
362 (narrow-to-region beg end)
363 (goto-char (point-min))
364 (while (< (point) (point-max))
365 (setq s (buffer-substring (point)
366 (min (+ (point) maxlen) (point-max))))
368 ((setq syl (egg-pinyin-syllable s))
369 (delete-region (point) (+ (point) (car syl)))
371 ((setq syl (egg-zhuyin-syllable s))
372 (delete-region (point) (+ (point) (car syl)))
375 (setq c (split-char (following-char))
378 ((or (and (eq cset 'chinese-gb2312) (eq type 'cn))
379 (and (eq cset 'chinese-cns11643-1) (eq type 'tw)))
381 (insert (+ (nth 1 c) 128) (+ (nth 2 c) 128)))
382 ((and (eq cset 'chinese-cns11643-2) (eq type 'tw))
384 (insert (+ (nth 1 c) 128) (nth 2 c)))
385 ((eq cset 'chinese-sisheng)
387 (insert 0 (+ (nth 1 c) 128)))
389 (delete-region (point) (1+ (point)))
390 (insert 0 (nth 1 c)))))))
391 (- (point-max) (point-min))))))
393 (defun pre-write-encode-fixed-euc-china (from to type)
394 (let ((buf (current-buffer))
395 (work (get-buffer-create " *pre-write-encoding-work*")))
400 (insert-buffer-substring buf from to))
401 (encode-fixed-euc-china-region 1 (point-max) type)
404 (defun pre-write-encode-euc-cn (from to)
405 (pre-write-encode-fixed-euc-china from to 'cn))
407 (defun pre-write-encode-euc-tw (from to)
408 (pre-write-encode-fixed-euc-china from to 'tw))
410 (defun decode-fixed-euc-china-region (beg end type)
411 "Decode EUC-CN/TW encoded text in the region.
412 Return the length of resulting text."
417 (narrow-to-region beg end)
418 (goto-char (point-min))
419 (while (< (point) (point-max))
420 (setq c1 (buffer-substring (point) (+ (point) 2))
423 (delete-region (point) (+ (point) 2))
427 (insert leading-code-private-11
428 (charset-id 'chinese-sisheng)
434 (insert (charset-id 'chinese-gb2312) c0 (logior c1 ?\x80)))
436 (insert (charset-id 'chinese-cns11643-1) c0 c1))
438 (insert (charset-id 'chinese-cns11643-2) c0 (+ c1 ?\x80)))))
440 (setq c1 (logand c1 ?\x7f))
441 (setq s (- (lsh c1 -2) 7) ;;(+ (lsh (- c1 32) -2) 1)
442 y (- (lsh c0 -1) 16) ;;(lsh (- c0 32) -1)
443 ss (+ (logand c0 1) (logand c1 3)))
446 (setq c0 (aref yincode-zhuyin-table (+ (* 41 s) y)))
447 (if (eq (logand c0 ?\x8080) ?\x80)
449 y (logand c0 ?\x7f)))
451 (eq (aref yincode-pinyin-table (+ (* 39 s) y)) 0))
453 (insert (car (nth s yincode-zhuyin-shengmu))
454 (car (nth (+ (* 5 y) ss) yincode-zhuyin-yunmu))))
456 (eq (aref yincode-pinyin-table (+ (* 39 s) y)) 0))
458 (insert (car (nth s yincode-pinyin-shengmu))
459 (car (nth (+ (* 5 y) ss) yincode-pinyin-yunmu)))))))
460 (- (point-max) (point-min))))
461 (if (looking-at "\0\0") (forward-char 2))))
463 (defun post-read-decode-fixed-euc-china (len type)
465 (buffer-modified-p (buffer-modified-p)))
467 (decode-fixed-euc-china-region pos (+ pos len) type)
468 (set-buffer-modified-p buffer-modified-p))))
470 (defun post-read-decode-euc-cn (len)
471 (post-read-decode-fixed-euc-china len 'cn))
473 (defun post-read-decode-euc-tw (len)
474 (post-read-decode-fixed-euc-china len 'tw))
476 (make-coding-system 'fixed-euc-cn 5 ?W "Coding System for fixed EUC Chinese-gb2312")
477 (put 'fixed-euc-cn 'pre-write-conversion 'pre-write-encode-euc-cn)
478 (put 'fixed-euc-cn 'post-read-conversion 'post-read-decode-euc-cn)
480 (make-coding-system 'fixed-euc-tw 5 ?W "Coding System for fixed EUC Chinese-cns11643")
481 (put 'fixed-euc-tw 'pre-write-conversion 'pre-write-encode-euc-tw)
482 (put 'fixed-euc-tw 'post-read-conversion 'post-read-decode-euc-tw)
484 ;;; euc-china.el ends here.