Commit | Line | Data |
---|---|---|
60370d40 | 1 | ;;; chinese.el --- support for Chinese -*- coding: iso-2022-7bit; -*- |
4ed46869 | 2 | |
73b0cd50 | 3 | ;; Copyright (C) 2001-2011 |
d4877ac1 | 4 | ;; Free Software Foundation, Inc. |
7976eda0 | 5 | ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
5df4f04c | 6 | ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
eaa61218 KH |
7 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
8 | ;; Registration Number H14PRO021 | |
8f924df7 KH |
9 | ;; Copyright (C) 2003 |
10 | ;; National Institute of Advanced Industrial Science and Technology (AIST) | |
11 | ;; Registration Number H13PRO009 | |
4ed46869 KH |
12 | |
13 | ;; Keywords: multilingual, Chinese | |
14 | ||
15 | ;; This file is part of GNU Emacs. | |
16 | ||
4936186e | 17 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
4ed46869 | 18 | ;; it under the terms of the GNU General Public License as published by |
4936186e GM |
19 | ;; the Free Software Foundation, either version 3 of the License, or |
20 | ;; (at your option) any later version. | |
4ed46869 KH |
21 | |
22 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
23 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 | ;; GNU General Public License for more details. | |
26 | ||
27 | ;; You should have received a copy of the GNU General Public License | |
4936186e | 28 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
4ed46869 KH |
29 | |
30 | ;;; Commentary: | |
31 | ||
32 | ;; For Chinese, three character sets GB2312, BIG5, and CNS11643 are | |
33 | ;; supported. | |
34 | ||
35 | ;;; Code: | |
36 | ||
37 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
38 | ;;; Chinese (general) | |
39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
40 | ||
8f924df7 | 41 | |
e1915ab3 | 42 | (define-coding-system 'iso-2022-cn |
8f924df7 KH |
43 | "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN)." |
44 | :coding-type 'iso-2022 | |
45 | :mnemonic ?C | |
46 | :charset-list '(ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2) | |
47 | :designation [ascii | |
48 | (nil chinese-gb2312 chinese-cns11643-1) | |
49 | (nil chinese-cns11643-2) | |
50 | nil] | |
51 | :flags '(ascii-at-eol ascii-at-cntl 7-bit | |
52 | designation locking-shift single-shift init-at-bol) | |
6c7c9d23 KH |
53 | :mime-charset 'iso-2022-cn |
54 | :suitable-for-keyboard t) | |
4138c943 KH |
55 | |
56 | (define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn) | |
57 | ||
e1915ab3 KH |
58 | (define-coding-system 'iso-2022-cn-ext |
59 | "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN-EXT)." | |
60 | :coding-type 'iso-2022 | |
61 | :mnemonic ?C | |
62 | :charset-list '(ascii | |
63 | chinese-gb2312 chinese-cns11643-1 | |
64 | chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4 | |
65 | chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7) | |
66 | :designation '[ascii | |
67 | (nil chinese-gb2312 chinese-cns11643-1) | |
68 | (nil chinese-cns11643-2) | |
69 | (nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 | |
70 | chinese-cns11643-6 chinese-cns11643-7)] | |
71 | :flags '(ascii-at-eol ascii-at-cntl 7-bit | |
72 | designation locking-shift single-shift init-at-bol) | |
6c7c9d23 KH |
73 | :mime-charset 'iso-2022-cn-ext |
74 | :suitable-for-keyboard t) | |
4138c943 | 75 | |
335a7ad7 | 76 | \f |
4ed46869 | 77 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
a1506d29 | 78 | ;;; Chinese GB2312 (simplified) |
4ed46869 KH |
79 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
80 | ||
e1915ab3 | 81 | (define-coding-system 'chinese-iso-8bit |
3f885231 | 82 | "ISO 2022 based EUC encoding for Chinese GB2312 (MIME:GB2312)." |
e1915ab3 KH |
83 | :coding-type 'iso-2022 |
84 | :mnemonic ?c | |
85 | :charset-list '(ascii chinese-gb2312) | |
86 | :designation [ascii chinese-gb2312 nil nil] | |
3f885231 | 87 | :mime-charset 'gb2312) |
4ed46869 | 88 | |
71eabd24 RS |
89 | (define-coding-system-alias 'cn-gb-2312 'chinese-iso-8bit) |
90 | (define-coding-system-alias 'euc-china 'chinese-iso-8bit) | |
a18aa841 | 91 | (define-coding-system-alias 'euc-cn 'chinese-iso-8bit) |
4f35555a KH |
92 | (define-coding-system-alias 'cn-gb 'chinese-iso-8bit) |
93 | (define-coding-system-alias 'gb2312 'chinese-iso-8bit) | |
f3f18123 | 94 | |
e1915ab3 | 95 | (define-coding-system 'chinese-hz |
8f924df7 KH |
96 | "Hz/ZW 7-bit encoding for Chinese GB2312 (MIME:HZ-GB-2312)." |
97 | :coding-type 'utf-8 | |
98 | :mnemonic ?z | |
99 | :charset-list '(ascii chinese-gb2312) | |
100 | :mime-charset 'hz-gb-2312 | |
101 | :post-read-conversion 'post-read-decode-hz | |
102 | :pre-write-conversion 'pre-write-encode-hz) | |
f3f18123 | 103 | |
71eabd24 RS |
104 | (define-coding-system-alias 'hz-gb-2312 'chinese-hz) |
105 | (define-coding-system-alias 'hz 'chinese-hz) | |
4ed46869 | 106 | |
4ed46869 | 107 | (set-language-info-alist |
a564ccf9 | 108 | "Chinese-GB" '((charset chinese-gb2312 chinese-sisheng) |
11d95776 | 109 | (iso639-language . zh) |
565b4644 KH |
110 | (setup-function . (lambda () |
111 | (use-cjk-char-width-table 'zh_CN))) | |
112 | (exit-function . use-default-char-width-table) | |
4138c943 KH |
113 | (coding-system chinese-iso-8bit iso-2022-cn chinese-hz) |
114 | (coding-priority chinese-iso-8bit chinese-big5 iso-2022-cn) | |
a564ccf9 KH |
115 | (input-method . "chinese-py-punct") |
116 | (features china-util) | |
fab8252e | 117 | (sample-text . "Chinese (\e$AVPND\e(B,\e$AFUM(;0\e(B,\e$A::So\e(B) \e$ADc:C\e(B") |
6b61353c KH |
118 | (documentation . "Support for Chinese GB2312 character set.") |
119 | (tutorial . "TUTORIAL.cn")) | |
4138c943 | 120 | '("Chinese")) |
4ed46869 KH |
121 | |
122 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
123 | ;; Chinese BIG5 (traditional) | |
124 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
125 | ||
e1915ab3 KH |
126 | (define-coding-system 'chinese-big5 |
127 | "BIG5 8-bit encoding for Chinese (MIME:Big5)" | |
be757201 | 128 | :coding-type 'big5 |
e1915ab3 KH |
129 | :mnemonic ?B |
130 | :charset-list '(ascii big5) | |
d21363d3 | 131 | :mime-charset 'big5) |
4ed46869 | 132 | |
71eabd24 RS |
133 | (define-coding-system-alias 'big5 'chinese-big5) |
134 | (define-coding-system-alias 'cn-big5 'chinese-big5) | |
6eac8f52 | 135 | (define-coding-system-alias 'cp950 'chinese-big5) |
f3f18123 | 136 | |
4ed46869 | 137 | (set-language-info-alist |
a564ccf9 | 138 | "Chinese-BIG5" '((charset chinese-big5-1 chinese-big5-2) |
11d95776 | 139 | (iso639-language . zh) |
565b4644 KH |
140 | (setup-function . (lambda () |
141 | (use-cjk-char-width-table 'zh_HK))) | |
142 | (exit-function . use-default-char-width-table) | |
4138c943 KH |
143 | (coding-system chinese-big5 chinese-iso-7bit) |
144 | (coding-priority chinese-big5 iso-2022-cn chinese-iso-8bit) | |
a564ccf9 | 145 | (input-method . "chinese-py-punct-b5") |
ae144b39 | 146 | (ctext-non-standard-encodings "big5-0") |
a564ccf9 | 147 | (features china-util) |
d9ed262d | 148 | (sample-text . "Cantonese (\e$(0GnM$\e(B,\e$(0N]0*Hd\e(B) \e$(0*/=(\e(B, \e$(0+$)p\e(B") |
6b61353c KH |
149 | (documentation . "Support for Chinese Big5 character set.") |
150 | (tutorial . "TUTORIAL.zh")) | |
4138c943 | 151 | '("Chinese")) |
4ed46869 | 152 | |
d69d2591 DL |
153 | (define-coding-system 'chinese-big5-hkscs |
154 | "BIG5-HKSCS 8-bit encoding for Chinese, Hong Kong supplement (MIME:Big5-HKSCS)" | |
155 | :coding-type 'charset | |
156 | :mnemonic ?B | |
157 | :charset-list '(ascii big5-hkscs) | |
158 | :mime-charset 'big5-hkscs) | |
159 | (define-coding-system-alias 'big5-hkscs 'chinese-big5-hkscs) | |
160 | (define-coding-system-alias 'cn-big5-hkscs 'chinese-big5-hkscs) | |
161 | ||
4ed46869 KH |
162 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
163 | ;; Chinese CNS11643 (traditional) | |
164 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
165 | ||
e1915ab3 KH |
166 | (define-coding-system 'euc-tw |
167 | "ISO 2022 based EUC encoding for Chinese CNS11643." | |
168 | :coding-type 'iso-2022 | |
169 | :mnemonic ?Z | |
170 | :charset-list '(ascii | |
171 | chinese-cns11643-1 | |
172 | chinese-cns11643-2 | |
173 | chinese-cns11643-3 | |
174 | chinese-cns11643-4 | |
175 | chinese-cns11643-5 | |
176 | chinese-cns11643-6 | |
177 | chinese-cns11643-7) | |
178 | :designation [ascii chinese-cns11643-1 (chinese-cns11643-1 | |
179 | chinese-cns11643-2 | |
180 | chinese-cns11643-3 | |
181 | chinese-cns11643-4 | |
182 | chinese-cns11643-5 | |
183 | chinese-cns11643-6 | |
184 | chinese-cns11643-7) nil] | |
d21363d3 | 185 | :mime-charset 'euc-tw) |
285aac85 WL |
186 | |
187 | (define-coding-system-alias 'euc-taiwan 'euc-tw) | |
188 | ||
4ed46869 | 189 | (set-language-info-alist |
a564ccf9 | 190 | "Chinese-CNS" '((charset chinese-cns11643-1 chinese-cns11643-2 |
4138c943 KH |
191 | chinese-cns11643-3 chinese-cns11643-4 |
192 | chinese-cns11643-5 chinese-cns11643-6 | |
193 | chinese-cns11643-7) | |
11d95776 | 194 | (iso639-language . zh) |
565b4644 KH |
195 | (setup-function . (lambda () |
196 | (use-cjk-char-width-table 'zh_TW))) | |
197 | (exit-function . use-default-char-width-table) | |
285aac85 WL |
198 | (coding-system iso-2022-cn euc-tw) |
199 | (coding-priority iso-2022-cn euc-tw chinese-big5 | |
200 | chinese-iso-8bit) | |
a564ccf9 KH |
201 | (features china-util) |
202 | (input-method . "chinese-cns-quick") | |
3fc58305 | 203 | ;; Fixme: presumably it won't accept big5 now. |
285aac85 | 204 | (documentation . "\ |
9da20928 | 205 | Support for Chinese CNS character sets. Note that the EUC-TW coding system |
285aac85 | 206 | accepts Big5 for input also (which is then converted to CNS).")) |
4138c943 | 207 | '("Chinese")) |
4ed46869 | 208 | |
9da20928 DL |
209 | (set-language-info-alist |
210 | "Chinese-EUC-TW" '((charset chinese-cns11643-1 chinese-cns11643-2 | |
211 | chinese-cns11643-3 chinese-cns11643-4 | |
212 | chinese-cns11643-5 chinese-cns11643-6 | |
213 | chinese-cns11643-7 chinese-big5-1 chinese-big5-2) | |
11d95776 | 214 | (iso639-language . zh) |
565b4644 KH |
215 | (setup-function . (lambda () |
216 | (use-cjk-char-width-table 'zh_TW))) | |
217 | (exit-function . use-default-char-width-table) | |
9da20928 DL |
218 | (coding-system euc-tw iso-2022-cn) |
219 | (coding-priority euc-tw chinese-big5 iso-2022-cn | |
220 | chinese-iso-8bit) | |
221 | (features china-util) | |
222 | (input-method . "chinese-cns-quick") | |
223 | (documentation . "\ | |
224 | Support for Chinese, prefering the EUC-TW character set. Note that | |
225 | the EUC-TW coding system accepts Big5 for input also (which is then | |
226 | converted to CNS).")) | |
227 | '("Chinese")) | |
228 | ||
8f924df7 | 229 | |
aee13d0b DL |
230 | ;;; Chinese GBK |
231 | ||
232 | (define-coding-system 'chinese-gbk | |
233 | "GBK encoding for Chinese (MIME:GBK)." | |
234 | :coding-type 'charset | |
235 | :mnemonic ?c | |
1e21ea76 | 236 | :charset-list '(ascii chinese-gbk) |
aee13d0b DL |
237 | :mime-charset 'gbk) |
238 | (define-coding-system-alias 'gbk 'chinese-gbk) | |
239 | (define-coding-system-alias 'cp936 'chinese-gbk) | |
240 | (define-coding-system-alias 'windows-936 'chinese-gbk) | |
241 | ||
242 | (set-language-info-alist | |
243 | "Chinese-GBK" '((charset chinese-gbk) | |
11d95776 | 244 | (iso639-language . zh) |
565b4644 KH |
245 | (setup-function . (lambda () |
246 | (use-cjk-char-width-table 'zh_CN))) | |
247 | (exit-function . use-default-char-width-table) | |
8be04b05 DL |
248 | (coding-system chinese-gbk) |
249 | (coding-priority gbk iso-2022-cn chinese-big5 | |
250 | chinese-iso-8bit) ; fixme? | |
ae144b39 | 251 | (ctext-non-standard-encodings "gbk-0") |
8be04b05 | 252 | (input-method . "chinese-py-punct") ; fixme? |
ae144b39 | 253 | (sample-text . "Chinese (\e$BCfJ8\e(B,\e$BIaDL\e$A;0\e(B,\e$A::So\e(B) \e$(D95\e$B9%\e(B") |
8be04b05 | 254 | (features china-util) |
b1e21c64 KH |
255 | (documentation . "Support for Chinese GBK character set.") |
256 | (tutorial . "TUTORIAL.cn")) | |
8be04b05 DL |
257 | '("Chinese")) |
258 | ||
259 | ;;; Chinese GB18030 | |
260 | ||
261 | (define-coding-system 'chinese-gb18030 | |
262 | "GB18030 encoding for Chinese (MIME:GB18030)." | |
263 | :coding-type 'charset | |
264 | :mnemonic ?c | |
1b1314e0 KH |
265 | :charset-list '(ascii gb18030-2-byte |
266 | gb18030-4-byte-bmp gb18030-4-byte-smp | |
267 | gb18030-4-byte-ext-1 gb18030-4-byte-ext-2) | |
8f924df7 KH |
268 | :mime-charset 'gb18030) |
269 | ||
8be04b05 DL |
270 | (define-coding-system-alias 'gb18030 'chinese-gb18030) |
271 | ||
272 | (set-language-info-alist | |
3d9a29e0 | 273 | "Chinese-GB18030" '((charset gb18030) |
11d95776 | 274 | (iso639-language . zh) |
8be04b05 DL |
275 | (coding-system chinese-gb18030) |
276 | (coding-priority gb18030 gbk iso-2022-cn chinese-big5 | |
277 | chinese-iso-8bit) ; fixme? | |
278 | (input-method . "chinese-py-punct") ; fixme? | |
b1e21c64 | 279 | (sample-text . "Chinese (\e$BCfJ8\e(B,\e$BIaDL\e$A;0\e(B,\e$A::So\e(B) \e$(D0_\e$B9%\e(B") |
8be04b05 DL |
280 | (features china-util) |
281 | (documentation | |
b1e21c64 KH |
282 | . "Support for Chinese GB18030 character set.") |
283 | (tutorial . "TUTORIAL.cn")) | |
aee13d0b DL |
284 | '("Chinese")) |
285 | ||
8be04b05 | 286 | ;; Fixme: add HKSCS |
afb2e008 | 287 | |
41da80b1 DL |
288 | (provide 'chinese) |
289 | ||
4ed46869 | 290 | ;;; chinese.el ends here |