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