* lisp/url/url-http.el (zlib-decompress-region): Declare.
[bpt/emacs.git] / lisp / language / chinese.el
CommitLineData
48b9bb83 1;;; chinese.el --- support for Chinese -*- coding: utf-8; -*-
4ed46869 2
ab422c4d 3;; Copyright (C) 2001-2013 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 112 (coding-system chinese-iso-8bit iso-2022-cn chinese-hz)
d607d303
KH
113 (coding-priority chinese-iso-8bit chinese-gbk chinese-big5
114 iso-2022-cn)
a564ccf9
KH
115 (input-method . "chinese-py-punct")
116 (features china-util)
48b9bb83 117 (sample-text . "Chinese (中文,普通话,汉语) 你好")
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
c80e3b4a 129 :mnemonic ?B
e1915ab3 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 143 (coding-system chinese-big5 chinese-iso-7bit)
d607d303
KH
144 (coding-priority chinese-big5 iso-2022-cn chinese-iso-8bit
145 chinese-gbk)
a564ccf9 146 (input-method . "chinese-py-punct-b5")
ae144b39 147 (ctext-non-standard-encodings "big5-0")
a564ccf9 148 (features china-util)
48b9bb83 149 (sample-text . "Cantonese (粵語,廣東話) 早晨, 你好")
6b61353c
KH
150 (documentation . "Support for Chinese Big5 character set.")
151 (tutorial . "TUTORIAL.zh"))
4138c943 152 '("Chinese"))
4ed46869 153
d69d2591
DL
154(define-coding-system 'chinese-big5-hkscs
155 "BIG5-HKSCS 8-bit encoding for Chinese, Hong Kong supplement (MIME:Big5-HKSCS)"
156 :coding-type 'charset
c80e3b4a 157 :mnemonic ?B
d69d2591
DL
158 :charset-list '(ascii big5-hkscs)
159 :mime-charset 'big5-hkscs)
160(define-coding-system-alias 'big5-hkscs 'chinese-big5-hkscs)
161(define-coding-system-alias 'cn-big5-hkscs 'chinese-big5-hkscs)
162
4ed46869
KH
163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
164;; Chinese CNS11643 (traditional)
165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
166
e1915ab3
KH
167(define-coding-system 'euc-tw
168 "ISO 2022 based EUC encoding for Chinese CNS11643."
169 :coding-type 'iso-2022
170 :mnemonic ?Z
171 :charset-list '(ascii
172 chinese-cns11643-1
173 chinese-cns11643-2
174 chinese-cns11643-3
175 chinese-cns11643-4
176 chinese-cns11643-5
177 chinese-cns11643-6
178 chinese-cns11643-7)
179 :designation [ascii chinese-cns11643-1 (chinese-cns11643-1
180 chinese-cns11643-2
181 chinese-cns11643-3
182 chinese-cns11643-4
183 chinese-cns11643-5
184 chinese-cns11643-6
185 chinese-cns11643-7) nil]
d21363d3 186 :mime-charset 'euc-tw)
285aac85
WL
187
188(define-coding-system-alias 'euc-taiwan 'euc-tw)
189
4ed46869 190(set-language-info-alist
a564ccf9 191 "Chinese-CNS" '((charset chinese-cns11643-1 chinese-cns11643-2
4138c943
KH
192 chinese-cns11643-3 chinese-cns11643-4
193 chinese-cns11643-5 chinese-cns11643-6
194 chinese-cns11643-7)
11d95776 195 (iso639-language . zh)
c80e3b4a 196 (setup-function . (lambda ()
565b4644
KH
197 (use-cjk-char-width-table 'zh_TW)))
198 (exit-function . use-default-char-width-table)
285aac85
WL
199 (coding-system iso-2022-cn euc-tw)
200 (coding-priority iso-2022-cn euc-tw chinese-big5
d607d303 201 chinese-iso-8bit chinese-gbk)
a564ccf9
KH
202 (features china-util)
203 (input-method . "chinese-cns-quick")
3fc58305 204 ;; Fixme: presumably it won't accept big5 now.
285aac85 205 (documentation . "\
9da20928 206Support for Chinese CNS character sets. Note that the EUC-TW coding system
285aac85 207accepts Big5 for input also (which is then converted to CNS)."))
4138c943 208 '("Chinese"))
4ed46869 209
9da20928
DL
210(set-language-info-alist
211 "Chinese-EUC-TW" '((charset chinese-cns11643-1 chinese-cns11643-2
212 chinese-cns11643-3 chinese-cns11643-4
213 chinese-cns11643-5 chinese-cns11643-6
214 chinese-cns11643-7 chinese-big5-1 chinese-big5-2)
11d95776 215 (iso639-language . zh)
c80e3b4a 216 (setup-function . (lambda ()
565b4644
KH
217 (use-cjk-char-width-table 'zh_TW)))
218 (exit-function . use-default-char-width-table)
9da20928
DL
219 (coding-system euc-tw iso-2022-cn)
220 (coding-priority euc-tw chinese-big5 iso-2022-cn
d607d303 221 chinese-iso-8bit chinese-gbk)
9da20928
DL
222 (features china-util)
223 (input-method . "chinese-cns-quick")
224 (documentation . "\
c80e3b4a 225Support for Chinese, preferring the EUC-TW character set. Note that
9da20928
DL
226the EUC-TW coding system accepts Big5 for input also (which is then
227converted to CNS)."))
228 '("Chinese"))
229
8f924df7 230
aee13d0b
DL
231;;; Chinese GBK
232
233(define-coding-system 'chinese-gbk
234 "GBK encoding for Chinese (MIME:GBK)."
235 :coding-type 'charset
236 :mnemonic ?c
1e21ea76 237 :charset-list '(ascii chinese-gbk)
aee13d0b
DL
238 :mime-charset 'gbk)
239(define-coding-system-alias 'gbk 'chinese-gbk)
240(define-coding-system-alias 'cp936 'chinese-gbk)
241(define-coding-system-alias 'windows-936 'chinese-gbk)
242
243(set-language-info-alist
244 "Chinese-GBK" '((charset chinese-gbk)
11d95776 245 (iso639-language . zh)
c80e3b4a 246 (setup-function . (lambda ()
565b4644
KH
247 (use-cjk-char-width-table 'zh_CN)))
248 (exit-function . use-default-char-width-table)
8be04b05
DL
249 (coding-system chinese-gbk)
250 (coding-priority gbk iso-2022-cn chinese-big5
251 chinese-iso-8bit) ; fixme?
c80e3b4a 252 (ctext-non-standard-encodings "gbk-0")
8be04b05 253 (input-method . "chinese-py-punct") ; fixme?
48b9bb83 254 (sample-text . "Chinese (中文,普通话,汉语) 妳好")
8be04b05 255 (features china-util)
b1e21c64
KH
256 (documentation . "Support for Chinese GBK character set.")
257 (tutorial . "TUTORIAL.cn"))
8be04b05
DL
258 '("Chinese"))
259
260;;; Chinese GB18030
261
262(define-coding-system 'chinese-gb18030
263 "GB18030 encoding for Chinese (MIME:GB18030)."
264 :coding-type 'charset
265 :mnemonic ?c
1b1314e0
KH
266 :charset-list '(ascii gb18030-2-byte
267 gb18030-4-byte-bmp gb18030-4-byte-smp
268 gb18030-4-byte-ext-1 gb18030-4-byte-ext-2)
8f924df7
KH
269 :mime-charset 'gb18030)
270
8be04b05
DL
271(define-coding-system-alias 'gb18030 'chinese-gb18030)
272
273(set-language-info-alist
3d9a29e0 274 "Chinese-GB18030" '((charset gb18030)
11d95776 275 (iso639-language . zh)
8be04b05
DL
276 (coding-system chinese-gb18030)
277 (coding-priority gb18030 gbk iso-2022-cn chinese-big5
278 chinese-iso-8bit) ; fixme?
279 (input-method . "chinese-py-punct") ; fixme?
48b9bb83 280 (sample-text . "Chinese (中文,普通话,汉语) 你好")
8be04b05
DL
281 (features china-util)
282 (documentation
b1e21c64
KH
283 . "Support for Chinese GB18030 character set.")
284 (tutorial . "TUTORIAL.cn"))
aee13d0b
DL
285 '("Chinese"))
286
8be04b05 287;; Fixme: add HKSCS
afb2e008 288
41da80b1
DL
289(provide 'chinese)
290
4ed46869 291;;; chinese.el ends here