aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2002-03-01 02:28:29 +0000
committerKenichi Handa2002-03-01 02:28:29 +0000
commite1915ab396259f967733e4a6247a975c3dbdccad (patch)
treede64d08548fb722472bc9a665eb7a1170f7b1659
parentc184177262bc93a25ae7c781dcabbcc1ba213b04 (diff)
downloademacs-e1915ab396259f967733e4a6247a975c3dbdccad.tar.gz
emacs-e1915ab396259f967733e4a6247a975c3dbdccad.zip
Call define-coding-system instead of make-coding-system. All CCL program deleted.
-rw-r--r--lisp/language/chinese.el269
-rw-r--r--lisp/language/cyrillic.el190
-rw-r--r--lisp/language/european.el347
-rw-r--r--lisp/language/greek.el17
-rw-r--r--lisp/language/hebrew.el19
-rw-r--r--lisp/language/indian.el18
-rw-r--r--lisp/language/japanese.el102
-rw-r--r--lisp/language/korean.el31
-rw-r--r--lisp/language/lao.el33
-rw-r--r--lisp/language/thai.el23
-rw-r--r--lisp/language/tibetan.el21
-rw-r--r--lisp/language/vietnamese.el151
12 files changed, 321 insertions, 900 deletions
diff --git a/lisp/language/chinese.el b/lisp/language/chinese.el
index 7d0f85ac902..5ee58bb7582 100644
--- a/lisp/language/chinese.el
+++ b/lisp/language/chinese.el
@@ -33,47 +33,50 @@
33;;; Chinese (general) 33;;; Chinese (general)
34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
35 35
36(make-coding-system 36(define-coding-system 'iso-2022-cn
37 'iso-2022-cn 2 ?C
38 "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN)." 37 "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN)."
39 '(ascii 38 :coding-type 'iso-2022
40 (nil chinese-gb2312 chinese-cns11643-1) 39 :mnemonic ?C
41 (nil chinese-cns11643-2) 40 :charset-list '(ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2)
42 nil 41 :designation [ascii
43 nil ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil 42 (nil chinese-gb2312 chinese-cns11643-1)
44 init-bol) 43 (nil chinese-cns11643-2)
45 '((safe-charsets ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2) 44 nil]
46 (mime-charset . iso-2022-cn))) 45 :flags '(ascii-at-eol ascii-at-cntl 7-bit
46 designation locking-shift single-shift init-at-bol)
47 :plist '(mime-charset . iso-2022-cn))
47 48
48(define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn) 49(define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn)
49 50
50(make-coding-system 51(define-coding-system 'iso-2022-cn-ext
51 'iso-2022-cn-ext 2 ?C 52 "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN-EXT)."
52 "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN-EXT)." 53 :coding-type 'iso-2022
53 '(ascii 54 :mnemonic ?C
54 (nil chinese-gb2312 chinese-cns11643-1) 55 :charset-list '(ascii
55 (nil chinese-cns11643-2) 56 chinese-gb2312 chinese-cns11643-1
56 (nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 57 chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4
57 chinese-cns11643-6 chinese-cns11643-7) 58 chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7)
58 nil ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil 59 :designation '[ascii
59 init-bol) 60 (nil chinese-gb2312 chinese-cns11643-1)
60 '((safe-charsets ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2 61 (nil chinese-cns11643-2)
61 chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 62 (nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
62 chinese-cns11643-6 chinese-cns11643-7) 63 chinese-cns11643-6 chinese-cns11643-7)]
63 (mime-charset . iso-2022-cn-ext))) 64 :flags '(ascii-at-eol ascii-at-cntl 7-bit
65 designation locking-shift single-shift init-at-bol)
66 :plist '(mime-charset iso-2022-cn-ext))
64 67
65 68
66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
67;;; Chinese GB2312 (simplified) 70;;; Chinese GB2312 (simplified)
68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
69 72
70(make-coding-system 73(define-coding-system 'chinese-iso-8bit
71 'chinese-iso-8bit 2 ?c 74 "ISO 2022 based EUC encoding for Chinese GB2312 (MIME:CN-GB)."
72 "ISO 2022 based EUC encoding for Chinese GB2312 (MIME:GB2312)." 75 :coding-type 'iso-2022
73 '(ascii chinese-gb2312 nil nil 76 :mnemonic ?c
74 nil ascii-eol ascii-cntl nil nil nil nil) 77 :charset-list '(ascii chinese-gb2312)
75 '((safe-charsets ascii chinese-gb2312) 78 :designation [ascii chinese-gb2312 nil nil]
76 (mime-charset . gb2312))) 79 :plist '(mime-charset cn-gb))
77 80
78(define-coding-system-alias 'cn-gb-2312 'chinese-iso-8bit) 81(define-coding-system-alias 'cn-gb-2312 'chinese-iso-8bit)
79(define-coding-system-alias 'euc-china 'chinese-iso-8bit) 82(define-coding-system-alias 'euc-china 'chinese-iso-8bit)
@@ -81,14 +84,14 @@
81(define-coding-system-alias 'cn-gb 'chinese-iso-8bit) 84(define-coding-system-alias 'cn-gb 'chinese-iso-8bit)
82(define-coding-system-alias 'gb2312 'chinese-iso-8bit) 85(define-coding-system-alias 'gb2312 'chinese-iso-8bit)
83 86
84(make-coding-system 87(define-coding-system 'chinese-hz
85 'chinese-hz 0 ?z
86 "Hz/ZW 7-bit encoding for Chinese GB2312 (MIME:HZ-GB-2312)." 88 "Hz/ZW 7-bit encoding for Chinese GB2312 (MIME:HZ-GB-2312)."
87 nil 89 :coding-type 'utf-8
88 '((safe-charsets ascii chinese-gb2312) 90 :mnemonic ?z
89 (mime-charset . hz-gb-2312) 91 :charset-list '(ascii chinese-gb2312)
90 (post-read-conversion . post-read-decode-hz) 92 :plist '(mime-charset hz-gb-2312)
91 (pre-write-conversion . pre-write-encode-hz))) 93 :post-read-conversion 'post-read-decode-hz
94 :pre-write-conversion 'pre-write-encode-hz)
92 95
93(define-coding-system-alias 'hz-gb-2312 'chinese-hz) 96(define-coding-system-alias 'hz-gb-2312 'chinese-hz)
94(define-coding-system-alias 'hz 'chinese-hz) 97(define-coding-system-alias 'hz 'chinese-hz)
@@ -125,36 +128,16 @@
125;; Chinese BIG5 (traditional) 128;; Chinese BIG5 (traditional)
126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
127 130
128(make-coding-system 131(define-coding-system 'chinese-big5
129 'chinese-big5 3 ?B 132 "BIG5 8-bit encoding for Chinese (MIME:Big5)"
130 "BIG5 8-bit encoding for Chinese (MIME:Big5)." 133 :coding-type 'big5
131 nil 134 :mnemonic ?B
132 '((safe-charsets ascii chinese-big5-1 chinese-big5-2) 135 :charset-list '(ascii big5)
133 (mime-charset . big5) 136 :plist '(mime-charset big5))
134 (charset-origin-alist (chinese-big5-1 "BIG5" encode-big5-char)
135 (chinese-big5-2 "BIG5" encode-big5-char))))
136 137
137(define-coding-system-alias 'big5 'chinese-big5) 138(define-coding-system-alias 'big5 'chinese-big5)
138(define-coding-system-alias 'cn-big5 'chinese-big5) 139(define-coding-system-alias 'cn-big5 'chinese-big5)
139 140
140;; Big5 font requires special encoding.
141(define-ccl-program ccl-encode-big5-font
142 `(0
143 ;; In: R0:chinese-big5-1 or chinese-big5-2
144 ;; R1:position code 1
145 ;; R2:position code 2
146 ;; Out: R1:font code point 1
147 ;; R2:font code point 2
148 ((r2 = ((((r1 - ?\x21) * 94) + r2) - ?\x21))
149 (if (r0 == ,(charset-id 'chinese-big5-2)) (r2 += 6280))
150 (r1 = ((r2 / 157) + ?\xA1))
151 (r2 %= 157)
152 (if (r2 < ?\x3F) (r2 += ?\x40) (r2 += ?\x62))))
153 "CCL program to encode a Big5 code to code point of Big5 font.")
154
155(setq font-ccl-encoder-alist
156 (cons (cons "big5" ccl-encode-big5-font) font-ccl-encoder-alist))
157
158(set-language-info-alist 141(set-language-info-alist
159 "Chinese-BIG5" '((charset chinese-big5-1 chinese-big5-2) 142 "Chinese-BIG5" '((charset chinese-big5-1 chinese-big5-2)
160 (coding-system chinese-big5 chinese-iso-7bit) 143 (coding-system chinese-big5 chinese-iso-7bit)
@@ -169,144 +152,26 @@
169;; Chinese CNS11643 (traditional) 152;; Chinese CNS11643 (traditional)
170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
171 154
172(defvar big5-to-cns (make-translation-table) 155(define-coding-system 'euc-tw
173 "Translation table for encoding to `euc-tw'.") 156 "ISO 2022 based EUC encoding for Chinese CNS11643."
174;; Could have been done by china-util loaded before. 157 :coding-type 'iso-2022
175(unless (get 'big5-to-cns 'translation-table) 158 :mnemonic ?Z
176 (define-translation-table 'big5-to-cns big5-to-cns)) 159 :charset-list '(ascii
177 160 chinese-cns11643-1
178(define-ccl-program ccl-decode-euc-tw 161 chinese-cns11643-2
179 ;; CNS plane 1 needs either two or four bytes in EUC-TW encoding; 162 chinese-cns11643-3
180 ;; CNS planes 2 to 7 always need four bytes. In internal encoding of 163 chinese-cns11643-4
181 ;; Emacs, CNS planes 1 and 2 need three bytes, and planes 3 to 7 need 164 chinese-cns11643-5
182 ;; four bytes. Thus a buffer magnification value of 2 (for both 165 chinese-cns11643-6
183 ;; encoding and decoding) is sufficient. 166 chinese-cns11643-7)
184 `(2 167 :designation [ascii chinese-cns11643-1 (chinese-cns11643-1
185 ;; we don't have enough registers to hold all charset-ids 168 chinese-cns11643-2
186 ((r4 = ,(charset-id 'chinese-cns11643-1)) 169 chinese-cns11643-3
187 (r5 = ,(charset-id 'chinese-cns11643-2)) 170 chinese-cns11643-4
188 (r6 = ,(charset-id 'chinese-cns11643-3)) 171 chinese-cns11643-5
189 (loop 172 chinese-cns11643-6
190 (read-if (r0 < #x80) 173 chinese-cns11643-7) nil]
191 ;; ASCII 174 :plist '(mime-charset euc-tw))
192 (write-repeat r0)
193 ;; not ASCII
194 (if (r0 == #x8E)
195 ;; single shift
196 (read-if (r1 < #xA1)
197 ;; invalid byte
198 ((write r0)
199 (write-repeat r1))
200 (if (r1 > #xA7)
201 ;; invalid plane
202 ((write r0)
203 (write-repeat r1))
204 ;; OK, we have a plane
205 (read-if (r2 < #xA1)
206 ;; invalid first byte
207 ((write r0 r1)
208 (write-repeat r2))
209 (read-if (r3 < #xA1)
210 ;; invalid second byte
211 ((write r0 r1 r2)
212 (write-repeat r3))
213 ;; CNS 1-7, finally
214 ((branch (r1 - #xA1)
215 (r1 = r4)
216 (r1 = r5)
217 (r1 = r6)
218 (r1 = ,(charset-id 'chinese-cns11643-4))
219 (r1 = ,(charset-id 'chinese-cns11643-5))
220 (r1 = ,(charset-id 'chinese-cns11643-6))
221 (r1 = ,(charset-id 'chinese-cns11643-7)))
222 (r2 = ((((r2 - #x80) << 7) + r3) - #x80))
223 (write-multibyte-character r1 r2)
224 (repeat))))))
225 ;; standard EUC
226 (if (r0 < #xA1)
227 ;; invalid first byte
228 (write-repeat r0)
229 (read-if (r1 < #xA1)
230 ;; invalid second byte
231 ((write r0)
232 (write-repeat r1))
233 ;; CNS 1, finally
234 ((r1 = ((((r0 - #x80) << 7) + r1) - #x80))
235 (write-multibyte-character r4 r1)
236 (repeat)))))))))
237 "CCL program to decode EUC-TW encoding."
238)
239
240(define-ccl-program ccl-encode-euc-tw
241 `(2
242 ;; we don't have enough registers to hold all charset-ids
243 ((r2 = ,(charset-id 'ascii))
244 (r3 = ,(charset-id 'chinese-big5-1))
245 (r4 = ,(charset-id 'chinese-big5-2))
246 (r5 = ,(charset-id 'chinese-cns11643-1))
247 (r6 = ,(charset-id 'chinese-cns11643-2))
248 (loop
249 (read-multibyte-character r0 r1)
250 (if (r0 == r2)
251 (write-repeat r1)
252 (;; Big 5 encoded characters are first translated to CNS
253 (if (r0 == r3)
254 (translate-character big5-to-cns r0 r1)
255 (if (r0 == r4)
256 (translate-character big5-to-cns r0 r1)))
257 (if (r0 == r5)
258 (r0 = #xA1)
259 (if (r0 == r6)
260 (r0 = #xA2)
261 (if (r0 == ,(charset-id 'chinese-cns11643-3))
262 (r0 = #xA3)
263 (if (r0 == ,(charset-id 'chinese-cns11643-4))
264 (r0 = #xA4)
265 (if (r0 == ,(charset-id 'chinese-cns11643-5))
266 (r0 = #xA5)
267 (if (r0 == ,(charset-id 'chinese-cns11643-6))
268 (r0 = #xA6)
269 (if (r0 == ,(charset-id 'chinese-cns11643-7))
270 (r0 = #xA7)
271 ;; not CNS. We use a dummy character which
272 ;; can't occur in EUC-TW encoding to indicate
273 ;; this.
274 (write-repeat #xFF))))))))))
275 (if (r0 != #xA1)
276 ;; single shift and CNS plane
277 ((write #x8E)
278 (write r0)))
279 (write ((r1 >> 7) + #x80))
280 (write ((r1 % #x80) + #x80))
281 (repeat))))
282 "CCL program to encode EUC-TW encoding."
283)
284
285(defun euc-tw-pre-write-conversion (beg end)
286 "Semi-dummy pre-write function effectively to autoload china-util."
287 ;; Ensure translation table is loaded.
288 (require 'china-util)
289 ;; Don't do this again.
290 (coding-system-put 'euc-tw 'pre-write-conversion nil)
291 nil)
292
293(make-coding-system
294 'euc-tw 4 ?Z
295 "ISO 2022 based EUC encoding for Chinese CNS11643.
296Big5 encoding is accepted for input also (which is then converted to CNS)."
297 '(ccl-decode-euc-tw . ccl-encode-euc-tw)
298 '((safe-charsets ascii
299 chinese-big5-1
300 chinese-big5-2
301 chinese-cns11643-1
302 chinese-cns11643-2
303 chinese-cns11643-3
304 chinese-cns11643-4
305 chinese-cns11643-5
306 chinese-cns11643-6
307 chinese-cns11643-7)
308 (valid-codes (0 . 255))
309 (pre-write-conversion . euc-tw-pre-write-conversion)))
310 175
311(define-coding-system-alias 'euc-taiwan 'euc-tw) 176(define-coding-system-alias 'euc-taiwan 'euc-tw)
312 177
diff --git a/lisp/language/cyrillic.el b/lisp/language/cyrillic.el
index 43d91e46a3d..8deb053b25b 100644
--- a/lisp/language/cyrillic.el
+++ b/lisp/language/cyrillic.el
@@ -34,22 +34,21 @@
34 34
35;; ISO-8859-5 staff 35;; ISO-8859-5 staff
36 36
37(make-coding-system 37(define-coding-system 'cyrillic-iso-8bit
38 'cyrillic-iso-8bit 2 ?5 38 "ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)."
39 "ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)." 39 :coding-type 'charset
40 '(ascii cyrillic-iso8859-5 nil nil 40 :mnemonic ?5
41 nil nil nil nil nil nil nil) 41 :charset-list '(iso-8859-5)
42 '((safe-charsets ascii cyrillic-iso8859-5) 42 :plist '(mime-charset iso-8859-5))
43 (mime-charset . iso-8859-5)))
44 43
45(define-coding-system-alias 'iso-8859-5 'cyrillic-iso-8bit) 44(define-coding-system-alias 'iso-8859-5 'cyrillic-iso-8bit)
46 45
47(set-language-info-alist 46(set-language-info-alist
48 "Cyrillic-ISO" '((charset cyrillic-iso8859-5) 47 "Cyrillic-ISO" '((charset iso-8859-5)
49 (coding-system cyrillic-iso-8bit) 48 (coding-system cyrillic-iso-8bit)
50 (coding-priority cyrillic-iso-8bit) 49 (coding-priority cyrillic-iso-8bit)
50 (nonascii-translation . iso-8859-5)
51 (input-method . "cyrillic-yawerty") 51 (input-method . "cyrillic-yawerty")
52 (nonascii-translation . cyrillic-iso8859-5)
53 (unibyte-display . cyrillic-iso-8bit) 52 (unibyte-display . cyrillic-iso-8bit)
54 (features cyril-util) 53 (features cyril-util)
55 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!") 54 (sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
@@ -58,91 +57,24 @@
58 57
59;; KOI-8 staff 58;; KOI-8 staff
60 59
61(defvar cyrillic-koi8-r-decode-table 60(define-coding-system 'cyrillic-koi8
62 [ 61 "KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)."
63 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 62 :coding-type 'charset
64 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 63 ;; We used to use ?K. It is true that ?K is more strictly correct,
65 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 64 ;; but it is also used for Korean. So people who use koi8 for
66 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 ;; languages other than Russian will have to forgive us.
67 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 66 :mnemonic ?R
68 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 67 :charset-list '(koi8)
69 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 68 :plist '(mime-charset koi8-r))
70 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
71 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
72 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
73 160 161 162 ?,Lq(B 164 165 166 167 168 169 170 171 172 173 174 175
74 176 177 178 ?,L!(B 180 181 182 183 184 185 186 187 188 189 190 191
75 ?,Ln(B ?,LP(B ?,LQ(B ?,Lf(B ?,LT(B ?,LU(B ?,Ld(B ?,LS(B ?,Le(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B
76 ?,L_(B ?,Lo(B ?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,LV(B ?,LR(B ?,Ll(B ?,Lk(B ?,LW(B ?,Lh(B ?,Lm(B ?,Li(B ?,Lg(B ?,Lj(B
77 ?,LN(B ?,L0(B ?,L1(B ?,LF(B ?,L4(B ?,L5(B ?,LD(B ?,L3(B ?,LE(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B
78 ?,L?(B ?,LO(B ?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,L6(B ?,L2(B ?,LL(B ?,LK(B ?,L7(B ?,LH(B ?,LM(B ?,LI(B ?,LG(B ?,LJ(B ]
79 "Cyrillic KOI8-R decoding table.")
80
81(let ((table (make-translation-table-from-vector
82 cyrillic-koi8-r-decode-table)))
83 (define-translation-table 'cyrillic-koi8-r-nonascii-translation-table table)
84 (define-translation-table 'cyrillic-koi8-r-encode-table
85 (char-table-extra-slot table 0)))
86
87(define-ccl-program ccl-decode-koi8
88 `(3
89 ((loop
90 (r0 = 0)
91 (read r1)
92 (if (r1 < 128)
93 (write-repeat r1)
94 ((translate-character cyrillic-koi8-r-nonascii-translation-table r0 r1)
95 (write-multibyte-character r0 r1)
96 (repeat))))))
97 "CCL program to decode KOI8.")
98
99(define-ccl-program ccl-encode-koi8
100 `(1
101 ((loop
102 (read-multibyte-character r0 r1)
103 (if (r0 == ,(charset-id 'cyrillic-iso8859-5))
104 (translate-character cyrillic-koi8-r-encode-table r0 r1))
105 (write-repeat r1))))
106 "CCL program to encode KOI8.")
107
108(make-coding-system
109 'cyrillic-koi8 4
110 ;; We used to use ?K. It is true that ?K is more strictly correct,
111 ;; but it is also used for Korean.
112 ;; So people who use koi8 for languages other than Russian
113 ;; will have to forgive us.
114 ?R
115 "KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)."
116 '(ccl-decode-koi8 . ccl-encode-koi8)
117 `((safe-chars . ,(let ((table (make-char-table 'safe-chars))
118 (i 0))
119 (while (< i 256)
120 (aset table (aref cyrillic-koi8-r-decode-table i) t)
121 (setq i (1+ i)))
122 table))
123 (mime-charset . koi8-r)
124 (valid-codes (0 . 127) 163 179 (192 . 255))
125 (charset-origin-alist (cyrillic-iso8859-5 "KOI8-R"
126 cyrillic-encode-koi8-r-char))))
127 69
128(define-coding-system-alias 'koi8-r 'cyrillic-koi8) 70(define-coding-system-alias 'koi8-r 'cyrillic-koi8)
129(define-coding-system-alias 'koi8 'cyrillic-koi8) 71(define-coding-system-alias 'koi8 'cyrillic-koi8)
130 72
131(define-ccl-program ccl-encode-koi8-font
132 `(0
133 ((translate-character cyrillic-koi8-r-encode-table r0 r1)))
134 "CCL program to encode Cyrillic chars to KOI font.")
135
136(setq font-ccl-encoder-alist
137 (cons '("koi8" . ccl-encode-koi8-font) font-ccl-encoder-alist))
138
139(set-language-info-alist 73(set-language-info-alist
140 "Cyrillic-KOI8" `((charset cyrillic-iso8859-5) 74 "Cyrillic-KOI8" `((charset koi8)
141 (nonascii-translation
142 . ,(get 'cyrillic-koi8-r-nonascii-translation-table
143 'translation-table))
144 (coding-system cyrillic-koi8) 75 (coding-system cyrillic-koi8)
145 (coding-priority cyrillic-koi8) 76 (coding-priority cyrillic-koi8)
77 (nonascii-translation . koi8)
146 (input-method . "cyrillic-jcuken") 78 (input-method . "cyrillic-jcuken")
147 (features cyril-util) 79 (features cyril-util)
148 (unibyte-display . cyrillic-koi8) 80 (unibyte-display . cyrillic-koi8)
@@ -152,89 +84,19 @@
152 84
153;;; ALTERNATIVNYJ staff 85;;; ALTERNATIVNYJ staff
154 86
155(defvar cyrillic-alternativnyj-decode-table 87(define-coding-system 'cyrillic-alternativnyj
156 [ 88 "ALTERNATIVNYJ 8-bit encoding for Cyrillic."
157 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 89 :coding-type 'charset
158 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 90 :mnemonic ?A
159 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 91 :charset-list '(alternativnyj))
160 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
161 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
162 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
163 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
164 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
165 ?,L0(B ?,L1(B ?,L2(B ?,L3(B ?,L4(B ?,L5(B ?,L6(B ?,L7(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B ?,L?(B
166 ?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,LD(B ?,LE(B ?,LF(B ?,LG(B ?,LH(B ?,LI(B ?,LJ(B ?,LK(B ?,LL(B ?,LM(B ?,LN(B ?,LO(B
167 ?,LP(B ?,LQ(B ?,LR(B ?,LS(B ?,LT(B ?,LU(B ?,LV(B ?,LW(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B ?,L_(B
168 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
169 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
170 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
171 ?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,Ld(B ?,Le(B ?,Lf(B ?,Lg(B ?,Lh(B ?,Li(B ?,Lj(B ?,Lk(B ?,Ll(B ?,Lm(B ?,Ln(B ?,Lo(B
172 ?,L!(B ?,Lq(B 242 243 244 245 246 247 248 249 250 251 252 253 254 ?,Lp(B]
173 "Cyrillic ALTERNATIVNYJ decoding table.")
174
175(let ((table (make-translation-table-from-vector
176 cyrillic-alternativnyj-decode-table)))
177 (define-translation-table 'cyrillic-alternativnyj-nonascii-translation-table
178 table)
179 (define-translation-table 'cyrillic-alternativnyj-encode-table
180 (char-table-extra-slot table 0)))
181
182
183(define-ccl-program ccl-decode-alternativnyj
184 `(3
185 ((loop
186 (r0 = 0)
187 (read r1)
188 (if (r1 < 128)
189 (write-repeat r1)
190 ((translate-character cyrillic-alternativnyj-nonascii-translation-table
191 r0 r1)
192 (write-multibyte-character r0 r1)
193 (repeat))))))
194 "CCL program to decode Alternativnyj.")
195
196(define-ccl-program ccl-encode-alternativnyj
197 `(1
198 ((loop
199 (read-multibyte-character r0 r1)
200 (translate-character cyrillic-alternativnyj-encode-table r0 r1)
201 (write-repeat r1))))
202 "CCL program to encode Alternativnyj.")
203
204(make-coding-system
205 'cyrillic-alternativnyj 4 ?A
206 "ALTERNATIVNYJ 8-bit encoding for Cyrillic."
207 '(ccl-decode-alternativnyj . ccl-encode-alternativnyj)
208 `((safe-chars . ,(let ((table (make-char-table 'safe-chars))
209 (i 0))
210 (while (< i 256)
211 (aset table (aref cyrillic-alternativnyj-decode-table i)
212 t)
213 (setq i (1+ i)))
214 table))
215 (valid-codes (0 . 175) (224 . 241) 255)
216 (charset-origin-alist (cyrillic-iso8859-5 "ALTERNATIVNYJ"
217 cyrillic-encode-koi8-r-char))))
218
219 92
220(define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj) 93(define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
221 94
222(define-ccl-program ccl-encode-alternativnyj-font
223 '(0
224 ((translate-character cyrillic-alternativnyj-encode-table r0 r1)))
225 "CCL program to encode Cyrillic chars to Alternativnyj font.")
226
227(setq font-ccl-encoder-alist
228 (cons '("alternativnyj" . ccl-encode-alternativnyj-font)
229 font-ccl-encoder-alist))
230
231(set-language-info-alist 95(set-language-info-alist
232 "Cyrillic-ALT" `((charset cyrillic-iso8859-5) 96 "Cyrillic-ALT" `((charset alternativnyj)
233 (nonascii-translation
234 . ,(get 'cyrillic-alternativnyj-nonascii-translation-table
235 'translation-table))
236 (coding-system cyrillic-alternativnyj) 97 (coding-system cyrillic-alternativnyj)
237 (coding-priority cyrillic-alternativnyj) 98 (coding-priority cyrillic-alternativnyj)
99 (nonascii-translation . alternativnyj)
238 (input-method . "cyrillic-jcuken") 100 (input-method . "cyrillic-jcuken")
239 (features cyril-util) 101 (features cyril-util)
240 (unibyte-display . cyrillic-alternativnyj) 102 (unibyte-display . cyrillic-alternativnyj)
diff --git a/lisp/language/european.el b/lisp/language/european.el
index 6de7ca9b662..5698c740936 100644
--- a/lisp/language/european.el
+++ b/lisp/language/european.el
@@ -32,22 +32,11 @@
32 32
33;; Latin-1 (ISO-8859-1) 33;; Latin-1 (ISO-8859-1)
34 34
35(make-coding-system
36 'iso-latin-1 2 ?1
37 "ISO 2022 based 8-bit encoding for Latin-1 (MIME:ISO-8859-1)."
38 '(ascii latin-iso8859-1 nil nil
39 nil nil nil nil nil nil nil nil nil nil nil nil t)
40 '((safe-charsets ascii latin-iso8859-1)
41 (mime-charset . iso-8859-1)))
42
43(define-coding-system-alias 'iso-8859-1 'iso-latin-1)
44(define-coding-system-alias 'latin-1 'iso-latin-1)
45
46(set-language-info-alist 35(set-language-info-alist
47 "Latin-1" '((charset ascii latin-iso8859-1) 36 "Latin-1" '((charset iso-8859-1)
48 (coding-system iso-latin-1) 37 (coding-system iso-latin-1)
49 (coding-priority iso-latin-1) 38 (coding-priority iso-latin-1)
50 (nonascii-translation . latin-iso8859-1) 39 (nonascii-translation . iso-8859-1)
51 (unibyte-syntax . "latin-1") 40 (unibyte-syntax . "latin-1")
52 (unibyte-display . iso-latin-1) 41 (unibyte-display . iso-latin-1)
53 (input-method . "latin-1-prefix") 42 (input-method . "latin-1-prefix")
@@ -74,22 +63,21 @@ Indonesian/Malay, Tagalog (Philippines), Swahili and Afrikaans."))
74 63
75;; Latin-2 (ISO-8859-2) 64;; Latin-2 (ISO-8859-2)
76 65
77(make-coding-system 66(define-coding-system 'iso-latin-2
78 'iso-latin-2 2 ?2 67 "ISO 2022 based 8-bit encoding for Latin-2 (MIME:ISO-8859-2)."
79 "ISO 2022 based 8-bit encoding for Latin-2 (MIME:ISO-8859-2)." 68 :coding-type 'charset
80 '(ascii latin-iso8859-2 nil nil 69 :mnemonic ?2
81 nil nil nil nil nil nil nil) 70 :charset-list '(iso-8859-2)
82 '((safe-charsets ascii latin-iso8859-2) 71 :plist '(mime-charset iso-8859-2))
83 (mime-charset . iso-8859-2)))
84 72
85(define-coding-system-alias 'iso-8859-2 'iso-latin-2) 73(define-coding-system-alias 'iso-8859-2 'iso-latin-2)
86(define-coding-system-alias 'latin-2 'iso-latin-2) 74(define-coding-system-alias 'latin-2 'iso-latin-2)
87 75
88(set-language-info-alist 76(set-language-info-alist
89 "Latin-2" '((charset ascii latin-iso8859-2) 77 "Latin-2" '((charset iso-8859-2)
90 (coding-system iso-latin-2) 78 (coding-system iso-latin-2)
91 (coding-priority iso-latin-2) 79 (coding-priority iso-latin-2)
92 (nonascii-translation . latin-iso8859-2) 80 (nonascii-translation . iso-8859-2)
93 (unibyte-syntax . "latin-2") 81 (unibyte-syntax . "latin-2")
94 (unibyte-display . iso-latin-2) 82 (unibyte-display . iso-latin-2)
95 (input-method . "latin-2-prefix") 83 (input-method . "latin-2-prefix")
@@ -108,22 +96,21 @@ We also have specific language environments for the following languages:
108 96
109;; Latin-3 (ISO-8859-3) 97;; Latin-3 (ISO-8859-3)
110 98
111(make-coding-system 99(define-coding-system 'iso-latin-3
112 'iso-latin-3 2 ?3 100 "ISO 2022 based 8-bit encoding for Latin-3 (MIME:ISO-8859-3)."
113 "ISO 2022 based 8-bit encoding for Latin-3 (MIME:ISO-8859-3)." 101 :coding-type 'charset
114 '(ascii latin-iso8859-3 nil nil 102 :mnemonic ?3
115 nil nil nil nil nil nil nil) 103 :charset-list '(iso-8859-3)
116 '((safe-charsets ascii latin-iso8859-3) 104 :plist '(mime-charset iso-8859-3))
117 (mime-charset . iso-8859-3)))
118 105
119(define-coding-system-alias 'iso-8859-3 'iso-latin-3) 106(define-coding-system-alias 'iso-8859-3 'iso-latin-3)
120(define-coding-system-alias 'latin-3 'iso-latin-3) 107(define-coding-system-alias 'latin-3 'iso-latin-3)
121 108
122(set-language-info-alist 109(set-language-info-alist
123 "Latin-3" '((charset ascii latin-iso8859-3) 110 "Latin-3" '((charset iso-8859-3)
124 (coding-system iso-latin-3) 111 (coding-system iso-latin-3)
125 (coding-priority iso-latin-3) 112 (coding-priority iso-latin-3)
126 (nonascii-translation . latin-iso8859-3) 113 (nonascii-translation . iso-8859-3)
127 (unibyte-syntax . "latin-3") 114 (unibyte-syntax . "latin-3")
128 (unibyte-display . iso-latin-3) 115 (unibyte-display . iso-latin-3)
129 (input-method . "latin-3-prefix") 116 (input-method . "latin-3-prefix")
@@ -136,22 +123,21 @@ These languages are supported with the Latin-3 (ISO-8859-3) character set:
136 123
137;; Latin-4 (ISO-8859-4) 124;; Latin-4 (ISO-8859-4)
138 125
139(make-coding-system 126(define-coding-system 'iso-latin-4
140 'iso-latin-4 2 ?4 127 "ISO 2022 based 8-bit encoding for Latin-4 (MIME:ISO-8859-4)."
141 "ISO 2022 based 8-bit encoding for Latin-4 (MIME:ISO-8859-4)." 128 :coding-type 'charset
142 '(ascii latin-iso8859-4 nil nil 129 :mnemonic ?4
143 nil nil nil nil nil nil nil) 130 :charset-list '(iso-8859-4)
144 '((safe-charsets ascii latin-iso8859-4) 131 :plist '(mime-charset iso-8859-4))
145 (mime-charset . iso-8859-4)))
146 132
147(define-coding-system-alias 'iso-8859-4 'iso-latin-4) 133(define-coding-system-alias 'iso-8859-4 'iso-latin-4)
148(define-coding-system-alias 'latin-4 'iso-latin-4) 134(define-coding-system-alias 'latin-4 'iso-latin-4)
149 135
150(set-language-info-alist 136(set-language-info-alist
151 "Latin-4" '((charset ascii latin-iso8859-4) 137 "Latin-4" '((charset iso-8859-4)
152 (coding-system iso-8859-4) 138 (coding-system iso-8859-4)
153 (coding-priority iso-8859-4) 139 (coding-priority iso-8859-4)
154 (nonascii-translation . latin-iso8859-4) 140 (nonascii-translation . iso-8859-4)
155 (unibyte-syntax . "latin-4") 141 (unibyte-syntax . "latin-4")
156 (unibyte-display . iso-8859-4) 142 (unibyte-display . iso-8859-4)
157 (input-method . "latin-4-postfix") 143 (input-method . "latin-4-postfix")
@@ -164,22 +150,21 @@ These languages are supported with the Latin-4 (ISO-8859-4) character set:
164 150
165;; Latin-5 (ISO-8859-9) 151;; Latin-5 (ISO-8859-9)
166 152
167(make-coding-system 153(define-coding-system 'iso-latin-5
168 'iso-latin-5 2 ?9 154 "ISO 2022 based 8-bit encoding for Latin-5 (MIME:ISO-8859-9)."
169 "ISO 2022 based 8-bit encoding for Latin-5 (MIME:ISO-8859-9)." 155 :coding-type 'charset
170 '(ascii latin-iso8859-9 nil nil 156 :mnemonic ?9
171 nil nil nil nil nil nil nil) 157 :charset-list '(iso-8859-9)
172 '((safe-charsets ascii latin-iso8859-9) 158 :plist '(mime-charset iso-8859-9))
173 (mime-charset . iso-8859-9)))
174 159
175(define-coding-system-alias 'iso-8859-9 'iso-latin-5) 160(define-coding-system-alias 'iso-8859-9 'iso-latin-5)
176(define-coding-system-alias 'latin-5 'iso-latin-5) 161(define-coding-system-alias 'latin-5 'iso-latin-5)
177 162
178(set-language-info-alist 163(set-language-info-alist
179 "Latin-5" '((charset ascii latin-iso8859-9) 164 "Latin-5" '((charset iso-8859-9)
180 (coding-system iso-latin-5) 165 (coding-system iso-latin-5)
181 (coding-priority iso-latin-5) 166 (coding-priority iso-latin-5)
182 (nonascii-translation . latin-iso8859-9) 167 (nonascii-translation . iso-8859-9)
183 (unibyte-syntax . "latin-5") 168 (unibyte-syntax . "latin-5")
184 (unibyte-display . iso-latin-5) 169 (unibyte-display . iso-latin-5)
185 (input-method . "latin-5-postfix") 170 (input-method . "latin-5-postfix")
@@ -189,23 +174,22 @@ These languages are supported with the Latin-4 (ISO-8859-4) character set:
189 174
190;; Latin-8 (ISO-8859-14) 175;; Latin-8 (ISO-8859-14)
191 176
192(make-coding-system 177(define-coding-system 'iso-latin-8
193 'iso-latin-8 2 ?W ; `W' for `Welsh', since `C' 178 "ISO 2022 based 8-bit encoding for Latin-8 (MIME:ISO-8859-14)."
194 ; for `Celtic' is taken. 179 :coding-type 'charset
195 "ISO 2022 based 8-bit encoding for Latin-8 (MIME:ISO-8859-14)." 180 ;; `W' for `Welsh', since `C' for `Celtic' is taken.
196 '(ascii latin-iso8859-14 nil nil 181 :mnemonic ?W
197 nil nil nil nil nil nil nil nil nil nil nil nil t) 182 :charset-list '(iso-8859-14)
198 '((safe-charsets ascii latin-iso8859-14) 183 :plist '(mime-charset iso-8859-14))
199 (mime-charset . iso-8859-14)))
200 184
201(define-coding-system-alias 'iso-8859-14 'iso-latin-8) 185(define-coding-system-alias 'iso-8859-14 'iso-latin-8)
202(define-coding-system-alias 'latin-8 'iso-latin-8) 186(define-coding-system-alias 'latin-8 'iso-latin-8)
203 187
204(set-language-info-alist 188(set-language-info-alist
205 "Latin-8" '((charset ascii latin-iso8859-14) 189 "Latin-8" '((charset iso-8859-14)
206 (coding-system iso-latin-8) 190 (coding-system iso-latin-8)
207 (coding-priority iso-latin-8) 191 (coding-priority iso-latin-8)
208 (nonascii-translation . latin-iso8859-14) 192 (nonascii-translation . iso-8859-14)
209 (unibyte-syntax . "latin-8") 193 (unibyte-syntax . "latin-8")
210 (unibyte-display . iso-latin-8) 194 (unibyte-display . iso-latin-8)
211 (input-method . "latin-8-prefix") 195 (input-method . "latin-8-prefix")
@@ -220,23 +204,23 @@ covered by other ISO-8859 character sets:
220 204
221;; Latin-9 (ISO-8859-15) 205;; Latin-9 (ISO-8859-15)
222 206
223(make-coding-system 207(define-coding-system 'iso-latin-9
224 'iso-latin-9 2 ?0 ; `0' for `Latin-0' 208 "ISO 2022 based 8-bit encoding for Latin-9 (MIME:ISO-8859-15)."
225 "ISO 2022 based 8-bit encoding for Latin-9 (MIME:ISO-8859-15)." 209 :coding-type 'charset
226 '(ascii latin-iso8859-15 nil nil 210 ;; `0' for `Latin-0'
227 nil nil nil nil nil nil nil nil nil nil nil nil t) 211 :mnemonic ?0
228 '((safe-charsets ascii latin-iso8859-15) 212 :charset-list '(iso-8859-15)
229 (mime-charset . iso-8859-15))) 213 :plist '(mime-charset iso-8859-15))
230 214
231(define-coding-system-alias 'iso-8859-15 'iso-latin-9) 215(define-coding-system-alias 'iso-8859-15 'iso-latin-9)
232(define-coding-system-alias 'latin-9 'iso-latin-9) 216(define-coding-system-alias 'latin-9 'iso-latin-9)
233(define-coding-system-alias 'latin-0 'iso-latin-9) 217(define-coding-system-alias 'latin-0 'iso-latin-9)
234 218
235(set-language-info-alist 219(set-language-info-alist
236 "Latin-9" '((charset ascii latin-iso8859-15) 220 "Latin-9" '((charset iso-8859-15)
237 (coding-system iso-latin-9) 221 (coding-system iso-latin-9)
238 (coding-priority iso-latin-9) 222 (coding-priority iso-latin-9)
239 (nonascii-translation . latin-iso8859-15) 223 (nonascii-translation . iso-8859-15)
240 (unibyte-syntax . "latin-9") 224 (unibyte-syntax . "latin-9")
241 (unibyte-display . iso-latin-9) 225 (unibyte-display . iso-latin-9)
242 (input-method . "latin-9-prefix") 226 (input-method . "latin-9-prefix")
@@ -251,11 +235,11 @@ Latin-9 is sometimes nicknamed `Latin-0'."))
251 235
252(set-language-info-alist 236(set-language-info-alist
253 "German" '((tutorial . "TUTORIAL.de") 237 "German" '((tutorial . "TUTORIAL.de")
254 (charset ascii latin-iso8859-1) 238 (charset iso-8859-1)
255 (coding-system iso-latin-1) 239 (coding-system iso-latin-1)
256 (coding-priority iso-latin-1) 240 (coding-priority iso-latin-1)
241 (nonascii-translation . iso-8859-1)
257 (input-method . "german-postfix") 242 (input-method . "german-postfix")
258 (nonascii-translation . iso-latin-1)
259 (unibyte-syntax . "latin-1") 243 (unibyte-syntax . "latin-1")
260 (unibyte-display . iso-latin-1) 244 (unibyte-display . iso-latin-1)
261 (sample-text . "\ 245 (sample-text . "\
@@ -269,10 +253,10 @@ Additionally, it selects the German tutorial."))
269 253
270(set-language-info-alist 254(set-language-info-alist
271 "French" '((tutorial . "TUTORIAL.fr") 255 "French" '((tutorial . "TUTORIAL.fr")
272 (charset ascii latin-iso8859-1) 256 (charset iso-8859-1)
273 (coding-system iso-latin-1) 257 (coding-system iso-latin-1)
274 (coding-priority iso-latin-1) 258 (coding-priority iso-latin-1)
275 (nonascii-translation . latin-iso8859-1) 259 (nonascii-translation . iso-8859-1)
276 (unibyte-syntax . "latin-1") 260 (unibyte-syntax . "latin-1")
277 (unibyte-display . iso-latin-1) 261 (unibyte-display . iso-latin-1)
278 (input-method . "latin-1-prefix") 262 (input-method . "latin-1-prefix")
@@ -283,10 +267,10 @@ but it selects the French tutorial."))
283 '("European")) 267 '("European"))
284 268
285(set-language-info-alist 269(set-language-info-alist
286 "Slovenian" '((charset . (ascii latin-iso8859-2)) 270 "Slovenian" '((charset iso-8859-2)
287 (coding-system . (iso-8859-2)) 271 (coding-system . (iso-8859-2))
288 (coding-priority . (iso-8859-2)) 272 (coding-priority . (iso-8859-2))
289 (nonascii-translation . latin-iso8859-2) 273 (nonascii-translation . iso-8859-2)
290 (input-method . "latin-2-postfix") 274 (input-method . "latin-2-postfix")
291 (unibyte-syntax . "latin-2") 275 (unibyte-syntax . "latin-2")
292 (unibyte-display . iso-8859-2) 276 (unibyte-display . iso-8859-2)
@@ -297,11 +281,11 @@ but it selects the French tutorial."))
297 281
298(set-language-info-alist 282(set-language-info-alist
299 "Spanish" '((tutorial . "TUTORIAL.es") 283 "Spanish" '((tutorial . "TUTORIAL.es")
300 (charset ascii latin-iso8859-1) 284 (charset iso-8859-1)
301 (coding-system iso-latin-1) 285 (coding-system iso-latin-1)
302 (coding-priority iso-latin-1) 286 (coding-priority iso-latin-1)
287 (nonascii-translation . iso-8859-1)
303 (input-method . "spanish-postfix") 288 (input-method . "spanish-postfix")
304 (nonascii-translation . iso-latin-1)
305 (unibyte-syntax . "latin-1") 289 (unibyte-syntax . "latin-1")
306 (unibyte-display . iso-latin-1) 290 (unibyte-display . iso-latin-1)
307 (sample-text . "Spanish (Espa,Aq(Bol) ,A!(BHola!") 291 (sample-text . "Spanish (Espa,Aq(Bol) ,A!(BHola!")
@@ -313,10 +297,10 @@ and it selects the Spanish tutorial."))
313 297
314(set-language-info-alist 298(set-language-info-alist
315 "Dutch" '((tutorial . "TUTORIAL.nl") 299 "Dutch" '((tutorial . "TUTORIAL.nl")
316 (charset ascii latin-iso8859-1) 300 (charset iso-8859-1)
317 (coding-system iso-latin-1) 301 (coding-system iso-latin-1)
318 (coding-priority iso-latin-1) 302 (coding-priority iso-latin-1)
319 (nonascii-translation . iso-latin-1) 303 (nonascii-translation . iso-8859-1)
320 (unibyte-syntax . "latin-1") 304 (unibyte-syntax . "latin-1")
321 (unibyte-display . iso-latin-1) 305 (unibyte-display . iso-latin-1)
322 (sample-text . "Er is een aantal manieren waarop je dit kan doen") 306 (sample-text . "Er is een aantal manieren waarop je dit kan doen")
@@ -331,10 +315,10 @@ but it selects the Dutch tutorial."))
331;; "Latin-3" language environment. 315;; "Latin-3" language environment.
332 316
333(set-language-info-alist 317(set-language-info-alist
334 "Turkish" '((charset ascii latin-iso8859-9) 318 "Turkish" '((charset iso-8859-9)
335 (coding-system iso-latin-5) 319 (coding-system iso-latin-5)
336 (coding-priority iso-latin-5) 320 (coding-priority iso-latin-5)
337 (nonascii-translation . latin-iso8859-9) 321 (nonascii-translation . iso-8859-9)
338 (unibyte-syntax . "latin-5") 322 (unibyte-syntax . "latin-5")
339 (unibyte-display . iso-latin-5) 323 (unibyte-display . iso-latin-5)
340 (input-method . "turkish-postfix") 324 (input-method . "turkish-postfix")
@@ -346,11 +330,11 @@ but it selects the Dutch tutorial."))
346;; Keywords: multilingual, Polish 330;; Keywords: multilingual, Polish
347 331
348(set-language-info-alist 332(set-language-info-alist
349 "Polish" '((charset . (ascii latin-iso8859-2)) 333 "Polish" '((charset . (iso-8859-2))
350 (coding-system . (iso-8859-2)) 334 (coding-system . (iso-8859-2))
351 (coding-priority . (iso-8859-2)) 335 (coding-priority . (iso-8859-2))
336 (nonascii-translation . iso-8859-2)
352 (input-method . "polish-slash") 337 (input-method . "polish-slash")
353 (nonascii-translation . latin-iso8859-2)
354 (unibyte-syntax . "latin-2") 338 (unibyte-syntax . "latin-2")
355 (unibyte-display . iso-8859-2) 339 (unibyte-display . iso-8859-2)
356 (tutorial . "TUTORIAL.pl") 340 (tutorial . "TUTORIAL.pl")
@@ -361,6 +345,7 @@ but it selects the Dutch tutorial."))
361(set-language-info-alist 345(set-language-info-alist
362 "Welsh" `((coding-system utf-8 latin-8) ; the input method is Unicode-based 346 "Welsh" `((coding-system utf-8 latin-8) ; the input method is Unicode-based
363 (coding-priority utf-8 latin-8) 347 (coding-priority utf-8 latin-8)
348 (nonascii-translation . iso-8859-14)
364 (input-method . "welsh") 349 (input-method . "welsh")
365 (documentation . "Support for Welsh, using Unicode.")) 350 (documentation . "Support for Welsh, using Unicode."))
366 '("European")) 351 '("European"))
@@ -368,6 +353,7 @@ but it selects the Dutch tutorial."))
368(set-language-info-alist 353(set-language-info-alist
369 "Latin-7" `((coding-system latin-7) 354 "Latin-7" `((coding-system latin-7)
370 (coding-priority latin-7) 355 (coding-priority latin-7)
356 (nonascii-translation . iso-8859-13)
371 ;; Fixme: input-method 357 ;; Fixme: input-method
372 (features code-pages) 358 (features code-pages)
373 (documentation . "Support for Latin-7, e.g. Latvian, Lithuanian.")) 359 (documentation . "Support for Latin-7, e.g. Latvian, Lithuanian."))
@@ -376,6 +362,7 @@ but it selects the Dutch tutorial."))
376(set-language-info-alist 362(set-language-info-alist
377 "Lithuanian" `((coding-system latin-7) 363 "Lithuanian" `((coding-system latin-7)
378 (coding-priority latin-7) 364 (coding-priority latin-7)
365 (nonascii-translation . iso-8859-13)
379 (input-method . "lithuanian-keyboard") 366 (input-method . "lithuanian-keyboard")
380 (features code-pages) 367 (features code-pages)
381 (documentation . "Support for Lithuanian.")) 368 (documentation . "Support for Lithuanian."))
@@ -384,194 +371,20 @@ but it selects the Dutch tutorial."))
384(set-language-info-alist 371(set-language-info-alist
385 "Latvian" `((coding-system latin-7) 372 "Latvian" `((coding-system latin-7)
386 (coding-priority latin-7) 373 (coding-priority latin-7)
374 (nonascii-translation . iso-8859-13)
387 (input-method . "latvian-keyboard") 375 (input-method . "latvian-keyboard")
388 (features code-pages) 376 (features code-pages)
389 (documentation . "Support for Latvian.")) 377 (documentation . "Support for Latvian."))
390 '("European")) 378 '("European"))
379
391 380
392;; Definitions for the Mac Roman character sets and coding system. 381(define-coding-system 'mac-roman
393;; The Mac Roman encoding uses all 128 code points in the range 128 to 382 "Mac Roman Encoding (MIME:MACINTOSH)."
394;; 255 for actual characters. Emacs decodes them to one of the 383 :coding-type 'charset
395;; following character sets. 384 :mnemonic ?M
396;; ascii, latin-iso8859-1, mule-unicode-0100-24ff, 385 :charset-list '(mac-roman)
397;; mule-unicode-2500-33ff, mule-unicode-e000-ffff 386 ;; per IANA, rfc1345
398 387 :mime-charset 'macintosh)
399(let
400 ((encoding-vector (make-vector 256 nil))
401 (i 0)
402 (vec ;; mac-roman (128..255) -> UCS mapping
403 [ #x00C4 ;; 128:LATIN CAPITAL LETTER A WITH DIAERESIS
404 #x00C5 ;; 129:LATIN CAPITAL LETTER A WITH RING ABOVE
405 #x00C7 ;; 130:LATIN CAPITAL LETTER C WITH CEDILLA
406 #x00C9 ;; 131:LATIN CAPITAL LETTER E WITH ACUTE
407 #x00D1 ;; 132:LATIN CAPITAL LETTER N WITH TILDE
408 #x00D6 ;; 133:LATIN CAPITAL LETTER O WITH DIAERESIS
409 #x00DC ;; 134:LATIN CAPITAL LETTER U WITH DIAERESIS
410 #x00E1 ;; 135:LATIN SMALL LETTER A WITH ACUTE
411 #x00E0 ;; 136:LATIN SMALL LETTER A WITH GRAVE
412 #x00E2 ;; 137:LATIN SMALL LETTER A WITH CIRCUMFLEX
413 #x00E4 ;; 138:LATIN SMALL LETTER A WITH DIAERESIS
414 #x00E3 ;; 139:LATIN SMALL LETTER A WITH TILDE
415 #x00E5 ;; 140:LATIN SMALL LETTER A WITH RING ABOVE
416 #x00E7 ;; 141:LATIN SMALL LETTER C WITH CEDILLA
417 #x00E9 ;; 142:LATIN SMALL LETTER E WITH ACUTE
418 #x00E8 ;; 143:LATIN SMALL LETTER E WITH GRAVE
419 #x00EA ;; 144:LATIN SMALL LETTER E WITH CIRCUMFLEX
420 #x00EB ;; 145:LATIN SMALL LETTER E WITH DIAERESIS
421 #x00ED ;; 146:LATIN SMALL LETTER I WITH ACUTE
422 #x00EC ;; 147:LATIN SMALL LETTER I WITH GRAVE
423 #x00EE ;; 148:LATIN SMALL LETTER I WITH CIRCUMFLEX
424 #x00EF ;; 149:LATIN SMALL LETTER I WITH DIAERESIS
425 #x00F1 ;; 150:LATIN SMALL LETTER N WITH TILDE
426 #x00F3 ;; 151:LATIN SMALL LETTER O WITH ACUTE
427 #x00F2 ;; 152:LATIN SMALL LETTER O WITH GRAVE
428 #x00F4 ;; 153:LATIN SMALL LETTER O WITH CIRCUMFLEX
429 #x00F6 ;; 154:LATIN SMALL LETTER O WITH DIAERESIS
430 #x00F5 ;; 155:LATIN SMALL LETTER O WITH TILDE
431 #x00FA ;; 156:LATIN SMALL LETTER U WITH ACUTE
432 #x00F9 ;; 157:LATIN SMALL LETTER U WITH GRAVE
433 #x00FB ;; 158:LATIN SMALL LETTER U WITH CIRCUMFLEX
434 #x00FC ;; 159:LATIN SMALL LETTER U WITH DIAERESIS
435 #x2020 ;; 160:DAGGER
436 #x00B0 ;; 161:DEGREE SIGN
437 #x00A2 ;; 162:CENT SIGN
438 #x00A3 ;; 163:POUND SIGN
439 #x00A7 ;; 164:SECTION SIGN
440 #x2022 ;; 165:BULLET
441 #x00B6 ;; 166:PILCROW SIGN
442 #x00DF ;; 167:LATIN SMALL LETTER SHARP S
443 #x00AE ;; 168:REGISTERED SIGN
444 #x00A9 ;; 169:COPYRIGHT SIGN
445 #x2122 ;; 170:TRADE MARK SIGN
446 #x00B4 ;; 171:ACUTE ACCENT
447 #x00A8 ;; 172:DIAERESIS
448 #x2260 ;; 173:NOT EQUAL TO
449 #x00C6 ;; 174:LATIN CAPITAL LETTER AE
450 #x00D8 ;; 175:LATIN CAPITAL LETTER O WITH STROKE
451 #x221E ;; 176:INFINITY
452 #x00B1 ;; 177:PLUS-MINUS SIGN
453 #x2264 ;; 178:LESS-THAN OR EQUAL TO
454 #x2265 ;; 179:GREATER-THAN OR EQUAL TO
455 #x00A5 ;; 180:YEN SIGN
456 #x00B5 ;; 181:MICRO SIGN
457 #x2202 ;; 182:PARTIAL DIFFERENTIAL
458 #x2211 ;; 183:N-ARY SUMMATION
459 #x220F ;; 184:N-ARY PRODUCT
460 #x03C0 ;; 185:GREEK SMALL LETTER PI
461 #x222B ;; 186:INTEGRAL
462 #x00AA ;; 187:FEMININE ORDINAL INDICATOR
463 #x00BA ;; 188:MASCULINE ORDINAL INDICATOR
464 #x03A9 ;; 189:GREEK CAPITAL LETTER OMEGA
465 #x00E6 ;; 190:LATIN SMALL LETTER AE
466 #x00F8 ;; 191:LATIN SMALL LETTER O WITH STROKE
467 #x00BF ;; 192:INVERTED QUESTION MARK
468 #x00A1 ;; 193:INVERTED EXCLAMATION MARK
469 #x00AC ;; 194:NOT SIGN
470 #x221A ;; 195:SQUARE ROOT
471 #x0192 ;; 196:LATIN SMALL LETTER F WITH HOOK
472 #x2248 ;; 197:ALMOST EQUAL TO
473 #x2206 ;; 198:INCREMENT
474 #x00AB ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
475 #x00BB ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
476 #x2026 ;; 201:HORIZONTAL ELLIPSIS
477 #x00A0 ;; 202:NO-BREAK SPACE
478 #x00C0 ;; 203:LATIN CAPITAL LETTER A WITH GRAVE
479 #x00C3 ;; 204:LATIN CAPITAL LETTER A WITH TILDE
480 #x00D5 ;; 205:LATIN CAPITAL LETTER O WITH TILDE
481 #x0152 ;; 206:LATIN CAPITAL LIGATURE OE
482 #x0153 ;; 207:LATIN SMALL LIGATURE OE
483 #x2013 ;; 208:EN DASH
484 #x2014 ;; 209:EM DASH
485 #x201C ;; 210:LEFT DOUBLE QUOTATION MARK
486 #x201D ;; 211:RIGHT DOUBLE QUOTATION MARK
487 #x2018 ;; 212:LEFT SINGLE QUOTATION MARK
488 #x2019 ;; 213:RIGHT SINGLE QUOTATION MARK
489 #x00F7 ;; 214:DIVISION SIGN
490 #x25CA ;; 215:LOZENGE
491 #x00FF ;; 216:LATIN SMALL LETTER Y WITH DIAERESIS
492 #x0178 ;; 217:LATIN CAPITAL LETTER Y WITH DIAERESIS
493 #x2044 ;; 218:FRACTION SLASH
494 #x20AC ;; 219:EURO SIGN
495 #x2039 ;; 220:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
496 #x203A ;; 221:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
497 #xFB01 ;; 222:LATIN SMALL LIGATURE FI
498 #xFB02 ;; 223:LATIN SMALL LIGATURE FL
499 #x2021 ;; 224:DOUBLE DAGGER
500 #x00B7 ;; 225:MIDDLE DOT
501 #x201A ;; 226:SINGLE LOW-9 QUOTATION MARK
502 #x201E ;; 227:DOUBLE LOW-9 QUOTATION MARK
503 #x2030 ;; 228:PER MILLE SIGN
504 #x00C2 ;; 229:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
505 #x00CA ;; 230:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
506 #x00C1 ;; 231:LATIN CAPITAL LETTER A WITH ACUTE
507 #x00CB ;; 232:LATIN CAPITAL LETTER E WITH DIAERESIS
508 #x00C8 ;; 233:LATIN CAPITAL LETTER E WITH GRAVE
509 #x00CD ;; 234:LATIN CAPITAL LETTER I WITH ACUTE
510 #x00CE ;; 235:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
511 #x00CF ;; 236:LATIN CAPITAL LETTER I WITH DIAERESIS
512 #x00CC ;; 237:LATIN CAPITAL LETTER I WITH GRAVE
513 #x00D3 ;; 238:LATIN CAPITAL LETTER O WITH ACUTE
514 #x00D4 ;; 239:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
515 #xF8FF ;; 240:Apple logo
516 #x00D2 ;; 241:LATIN CAPITAL LETTER O WITH GRAVE
517 #x00DA ;; 242:LATIN CAPITAL LETTER U WITH ACUTE
518 #x00DB ;; 243:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
519 #x00D9 ;; 244:LATIN CAPITAL LETTER U WITH GRAVE
520 #x0131 ;; 245:LATIN SMALL LETTER DOTLESS I
521 #x02C6 ;; 246:MODIFIER LETTER CIRCUMFLEX ACCENT
522 #x02DC ;; 247:SMALL TILDE
523 #x00AF ;; 248:MACRON
524 #x02D8 ;; 249:BREVE
525 #x02D9 ;; 250:DOT ABOVE
526 #x02DA ;; 251:RING ABOVE
527 #x00B8 ;; 252:CEDILLA
528 #x02DD ;; 253:DOUBLE ACUTE ACCENT
529 #x02DB ;; 254:OGONEK
530 #x02C7 ;; 255:CARON
531 ])
532 translation-table)
533 (while (< i 128)
534 (aset encoding-vector i i)
535 (setq i (1+ i)))
536 (while (< i 256)
537 (aset encoding-vector i
538 (decode-char 'ucs (aref vec (- i 128))))
539 (setq i (1+ i)))
540 (setq translation-table
541 (make-translation-table-from-vector encoding-vector))
542 (define-translation-table 'mac-roman-decoder translation-table)
543 (define-translation-table 'mac-roman-encoder
544 (char-table-extra-slot translation-table 0)))
545
546(define-ccl-program decode-mac-roman
547 `(4
548 ((loop
549 (read r1)
550 (if (r1 < 128) ;; ASCII
551 (r0 = ,(charset-id 'ascii))
552 (if (r1 < 160)
553 (r0 = ,(charset-id 'eight-bit-control))
554 (r0 = ,(charset-id 'eight-bit-graphic))))
555 (translate-character mac-roman-decoder r0 r1)
556 (write-multibyte-character r0 r1)
557 (repeat))))
558 "CCL program to decode Mac Roman")
559
560(define-ccl-program encode-mac-roman
561 `(1
562 ((loop
563 (read-multibyte-character r0 r1)
564 (translate-character mac-roman-encoder r0 r1)
565 (write-repeat r1))))
566 "CCL program to encode Mac Roman")
567
568(make-coding-system
569 'mac-roman 4 ?M
570 "Mac Roman Encoding (MIME:MACINTOSH)."
571 '(decode-mac-roman . encode-mac-roman)
572 '((safe-chars . mac-roman-encoder)
573 (valid-codes (0 . 255))
574 (mime-charset . macintosh))) ; per IANA, rfc1345
575 388
576(defconst diacritic-composition-pattern "\\C^\\c^+") 389(defconst diacritic-composition-pattern "\\C^\\c^+")
577 390
@@ -621,11 +434,11 @@ The return value is number of composed characters."
621(let ((patterns '(("\\C^\\c^+" . diacritic-composition-function)))) 434(let ((patterns '(("\\C^\\c^+" . diacritic-composition-function))))
622 (let ((c #x300)) 435 (let ((c #x300))
623 (while (<= c #x362) 436 (while (<= c #x362)
624 (aset composition-function-table (decode-char 'ucs c) patterns) 437 (aset composition-function-table (decode-char 'unicode c) patterns)
625 (setq c (1+ c))) 438 (setq c (1+ c)))
626 (setq c #x20d0) 439 (setq c #x20d0)
627 (while (<= c #x20e3) 440 (while (<= c #x20e3)
628 (aset composition-function-table (decode-char 'ucs c) patterns) 441 (aset composition-function-table (decode-char 'unicode c) patterns)
629 (setq c (1+ c))))) 442 (setq c (1+ c)))))
630 443
631(provide 'european) 444(provide 'european)
diff --git a/lisp/language/greek.el b/lisp/language/greek.el
index 2066e8a4951..16df9e68d79 100644
--- a/lisp/language/greek.el
+++ b/lisp/language/greek.el
@@ -28,21 +28,20 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(make-coding-system 31(define-coding-system 'greek-iso-8bit
32 'greek-iso-8bit 2 ?7 32 "ISO 2022 based 8-bit encoding for Greek (MIME:ISO-8859-7)."
33 "ISO 2022 based 8-bit encoding for Greek (MIME:ISO-8859-7)." 33 :coding-type 'charset
34 '(ascii greek-iso8859-7 nil nil 34 :mnemonic ?7
35 nil nil nil nil nil nil nil) 35 :charset-list'(iso-8859-7)
36 '((safe-charsets ascii greek-iso8859-7) 36 :plist '(mime-charset iso-8859-7))
37 (mime-charset . iso-8859-7)))
38 37
39(define-coding-system-alias 'iso-8859-7 'greek-iso-8bit) 38(define-coding-system-alias 'iso-8859-7 'greek-iso-8bit)
40 39
41(set-language-info-alist 40(set-language-info-alist
42 "Greek" '((charset . (greek-iso8859-7)) 41 "Greek" '((charset iso-8859-7)
43 (coding-system . (greek-iso-8bit)) 42 (coding-system . (greek-iso-8bit))
44 (coding-priority greek-iso-8bit) 43 (coding-priority greek-iso-8bit)
45 (nonascii-translation . greek-iso8859-7) 44 (nonascii-translation . iso-8859-7)
46 (input-method . "greek") 45 (input-method . "greek")
47 (unibyte-display . greek-iso-8bit) 46 (unibyte-display . greek-iso-8bit)
48 (documentation . t))) 47 (documentation . t)))
diff --git a/lisp/language/hebrew.el b/lisp/language/hebrew.el
index ad349495a7b..a56084686d4 100644
--- a/lisp/language/hebrew.el
+++ b/lisp/language/hebrew.el
@@ -31,13 +31,12 @@
31 31
32;;; Code: 32;;; Code:
33 33
34(make-coding-system 34(define-coding-system 'hebrew-iso-8bit
35 'hebrew-iso-8bit 2 ?8 35 "ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)."
36 "ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)." 36 :coding-type 'charset
37 '(ascii hebrew-iso8859-8 nil nil 37 :mnemonic ?8
38 nil ascii-eol ascii-cntl nil nil nil nil nil t) 38 :charset-list '(iso-8859-8)
39 '((safe-charsets ascii hebrew-iso8859-8) 39 :plist '(mime-charset iso-8859-8))
40 (mime-charset . iso-8859-8)))
41 40
42(define-coding-system-alias 'iso-8859-8 'hebrew-iso-8bit) 41(define-coding-system-alias 'iso-8859-8 'hebrew-iso-8bit)
43 42
@@ -49,10 +48,10 @@
49(define-coding-system-alias 'iso-8859-8-i 'hebrew-iso-8bit) 48(define-coding-system-alias 'iso-8859-8-i 'hebrew-iso-8bit)
50 49
51(set-language-info-alist 50(set-language-info-alist
52 "Hebrew" '((charset . (hebrew-iso8859-8)) 51 "Hebrew" '((charset . iso-8859-8)
53 (coding-priority hebrew-iso-8bit) 52 (coding-priority hebrew-iso-8bit)
54 (coding-system . (hebrew-iso-8bit)) 53 (coding-system hebrew-iso-8bit)
55 (nonascii-translation . hebrew-iso8859-8) 54 (nonascii-translation . iso-8859-8)
56 (input-method . "hebrew") 55 (input-method . "hebrew")
57 (unibyte-display . hebrew-iso-8bit) 56 (unibyte-display . hebrew-iso-8bit)
58 (sample-text . "Hebrew ,Hylem(B") 57 (sample-text . "Hebrew ,Hylem(B")
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 474ac74dd06..24cb84da250 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -29,14 +29,16 @@
29 29
30;;; Code: 30;;; Code:
31 31
32(make-coding-system 32(define-coding-system 'in-is13194-devanagari
33 'in-is13194 2 ?D 33 "8-bit encoding for ASCII (MSB=0) and IS13194-Devanagari (MSB=1)."
34 "8-bit encoding for ASCII (MSB=0) and IS13194-Devanagari (MSB=1)." 34 :coding-type 'iso-2022
35 '(ascii indian-is13194 nil nil 35 :mnemonic ?D
36 nil ascii-eol) 36 :designation [ascii indian-is13194 nil nil]
37 '((safe-charsets ascii indian-is13194) 37 :charset-list '(ascii indian-is13194)
38 (post-read-conversion . in-is13194-post-read-conversion) 38 :post-read-conversion 'in-is13194-devanagari-post-read-conversion
39 (pre-write-conversion . in-is13194-pre-write-conversion))) 39 :pre-write-conversion 'in-is13194-devanagari-pre-write-conversion)
40
41(define-coding-system-alias 'devanagari 'in-is13194-devanagari)
40 42
41(defvar indian-script-table 43(defvar indian-script-table
42 '[ 44 '[
diff --git a/lisp/language/japanese.el b/lisp/language/japanese.el
index 9e4c92c20c1..fa55cc2a47e 100644
--- a/lisp/language/japanese.el
+++ b/lisp/language/japanese.el
@@ -29,64 +29,72 @@
29 29
30;;; Code: 30;;; Code:
31 31
32(make-coding-system 32(define-coding-system 'iso-2022-jp
33 'iso-2022-jp 2 ?J 33 "ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)."
34 "ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)." 34 :coding-type 'iso-2022
35 '((ascii japanese-jisx0208-1978 japanese-jisx0208 35 :mnemonic ?J
36 latin-jisx0201 japanese-jisx0212) nil nil nil 36 :designation [(ascii japanese-jisx0208-1978 japanese-jisx0208
37 short ascii-eol ascii-cntl seven) 37 latin-jisx0201 japanese-jisx0212)
38 '((safe-charsets ascii japanese-jisx0208-1978 japanese-jisx0208 38 nil nil nil]
39 latin-jisx0201 japanese-jisx0212) 39 :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation)
40 (mime-charset . iso-2022-jp))) 40 :charset-list '(ascii japanese-jisx0208-1978 japanese-jisx0208
41 latin-jisx0201 japanese-jisx0212)
42 :plist '(mime-charset iso-2022-jp))
41 43
42(define-coding-system-alias 'junet 'iso-2022-jp) 44(define-coding-system-alias 'junet 'iso-2022-jp)
43 45
44(make-coding-system 46(define-coding-system 'iso-2022-jp-2
45 'iso-2022-jp-2 2 ?J 47 "ISO 2022 based 7bit encoding for CJK, Latin-1, Greek (MIME:ISO-2022-JP-2)."
46 "ISO 2022 based 7bit encoding for CJK, Latin-1, and Greek (MIME:ISO-2022-JP-2)." 48 :coding-type 'iso-2022
47 '((ascii japanese-jisx0208-1978 japanese-jisx0208 49 :mnemonic ?J
48 latin-jisx0201 japanese-jisx0212 50 :designation [(ascii japanese-jisx0208-1978 japanese-jisx0208
49 chinese-gb2312 korean-ksc5601) nil 51 latin-jisx0201 japanese-jisx0212
50 (nil latin-iso8859-1 greek-iso8859-7) nil 52 chinese-gb2312 korean-ksc5601)
51 short ascii-eol ascii-cntl seven nil single-shift nil nil nil init-bol) 53 nil
52 '((safe-charsets ascii japanese-jisx0208-1978 japanese-jisx0208 54 (nil latin-iso8859-1 greek-iso8859-7)
53 latin-jisx0201 japanese-jisx0212 55 nil]
54 chinese-gb2312 korean-ksc5601 56 :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation single-shift
55 latin-iso8859-1 greek-iso8859-7) 57 init-at-bol)
56 (mime-charset . iso-2022-jp-2))) 58 :charset-list '(ascii japanese-jisx0208-1978 japanese-jisx0208
57 59 latin-jisx0201 japanese-jisx0212
58(make-coding-system 60 chinese-gb2312 korean-ksc5601
59 'japanese-shift-jis 1 ?S 61 latin-iso8859-1 greek-iso8859-7)
60 "Shift-JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS)." 62 :plist '(mime-charset iso-2022-jp-2))
61 nil 63
62 '((safe-charsets ascii japanese-jisx0208 japanese-jisx0208-1978 64(define-coding-system 'japanese-shift-jis
63 latin-jisx0201 katakana-jisx0201) 65 "Shift-JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS)"
64 (mime-charset . shift_jis) 66 :coding-type 'shift-jis
65 (charset-origin-alist (japanese-jisx0208 "SJIS" encode-sjis-char) 67 :mnemonic ?S
66 (katakana-jisx0201 "SJIS" encode-sjis-char)))) 68 :charset-list '(ascii katakana-jisx0201 japanese-jisx0208)
69 :plist '(mime-charset shift_jis))
67 70
68(define-coding-system-alias 'shift_jis 'japanese-shift-jis) 71(define-coding-system-alias 'shift_jis 'japanese-shift-jis)
69(define-coding-system-alias 'sjis 'japanese-shift-jis) 72(define-coding-system-alias 'sjis 'japanese-shift-jis)
70 73
71(make-coding-system 74(define-coding-system 'japanese-iso-7bit-1978-irv
72 'japanese-iso-7bit-1978-irv 2 ?j 75 "ISO 2022 based 7-bit encoding for Japanese JISX0208-1978 and JISX0201-Roman."
73 "ISO 2022 based 7-bit encoding for Japanese JISX0208-1978 and JISX0201-Roman." 76 :coding-type 'iso-2022
74 '((ascii japanese-jisx0208-1978 japanese-jisx0208 77 :mnemonic ?j
75 latin-jisx0201 japanese-jisx0212 katakana-jisx0201 t) nil nil nil 78 :designation [(latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208
76 short ascii-eol ascii-cntl seven nil nil use-roman use-oldjis) 79 japanese-jisx0212 katakana-jisx0201)
77 '(ascii japanese-jisx0208-1978 japanese-jisx0208 latin-jisx0201)) 80 nil nil nil]
81 :flags '(short ascii-at-eol ascii-at-cntl 7-bit use-roman use-oldjis)
82 :charset-list '(latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208
83 japanese-jisx0212))
78 84
79(define-coding-system-alias 'iso-2022-jp-1978-irv 'japanese-iso-7bit-1978-irv) 85(define-coding-system-alias 'iso-2022-jp-1978-irv 'japanese-iso-7bit-1978-irv)
80(define-coding-system-alias 'old-jis 'japanese-iso-7bit-1978-irv) 86(define-coding-system-alias 'old-jis 'japanese-iso-7bit-1978-irv)
81 87
82(make-coding-system 88(define-coding-system 'japanese-iso-8bit
83 'japanese-iso-8bit 2 ?E 89 "ISO 2022 based EUC encoding for Japanese (MIME:EUC-JP)."
84 "ISO 2022 based EUC encoding for Japanese (MIME:EUC-JP)." 90 :coding-type 'iso-2022
85 '(ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212 91 :mnemonic ?E
86 short ascii-eol ascii-cntl nil nil single-shift) 92 :designation [ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212]
87 '((safe-charsets ascii latin-jisx0201 japanese-jisx0208 japanese-jisx0208-1978 93 :flags '(short ascii-at-eol ascii-at-cntl single-shift)
88 katakana-jisx0201 japanese-jisx0212) 94 :charset-list '(ascii latin-jisx0201 japanese-jisx0208
89 (mime-charset . euc-jp))) 95 japanese-jisx0208-1978
96 katakana-jisx0201 japanese-jisx0212)
97 :plist '(mime-charset euc-jp))
90 98
91(define-coding-system-alias 'euc-japan-1990 'japanese-iso-8bit) 99(define-coding-system-alias 'euc-japan-1990 'japanese-iso-8bit)
92(define-coding-system-alias 'euc-japan 'japanese-iso-8bit) 100(define-coding-system-alias 'euc-japan 'japanese-iso-8bit)
diff --git a/lisp/language/korean.el b/lisp/language/korean.el
index 5398ef79ff6..bd267437a17 100644
--- a/lisp/language/korean.el
+++ b/lisp/language/korean.el
@@ -28,25 +28,26 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(make-coding-system 31(define-coding-system 'korean-iso-8bit
32 'korean-iso-8bit 2 ?K 32 "ISO 2022 based EUC encoding for Korean KSC5601 (MIME:EUC-KR)."
33 "ISO 2022 based EUC encoding for Korean KSC5601 (MIME:EUC-KR)." 33 :coding-type 'iso-2022
34 '(ascii korean-ksc5601 nil nil 34 :mnemonic ?K
35 nil ascii-eol ascii-cntl) 35 :designation [ascii korean-ksc5601 nil nil]
36 '((safe-charsets ascii korean-ksc5601) 36 :charset-list '(ascii korean-ksc5601)
37 (mime-charset . euc-kr))) 37 :plist '(mime-charset euc-kr))
38 38
39(define-coding-system-alias 'euc-kr 'korean-iso-8bit) 39(define-coding-system-alias 'euc-kr 'korean-iso-8bit)
40(define-coding-system-alias 'euc-korea 'korean-iso-8bit) 40(define-coding-system-alias 'euc-korea 'korean-iso-8bit)
41 41
42(make-coding-system 42(define-coding-system 'iso-2022-kr
43 'iso-2022-kr 2 ?k 43 "ISO 2022 based 7-bit encoding for Korean KSC5601 (MIME:ISO-2022-KR)."
44 "ISO 2022 based 7-bit encoding for Korean KSC5601 (MIME:ISO-2022-KR)." 44 :coding-type 'iso-2022
45 '(ascii (nil korean-ksc5601) nil nil 45 :mnemonic ?k
46 nil ascii-eol ascii-cntl seven locking-shift nil nil nil nil nil 46 :designation [ascii (nil korean-ksc5601) nil nil]
47 designation-bol) 47 :flags '(ascii-at-eol ascii-at-cntl 7-bit designation locking-shift
48 '((safe-charsets ascii korean-ksc5601) 48 designation-bol)
49 (mime-charset . iso-2022-kr))) 49 :charset-list '(ascii korean-ksc5601)
50 :plist '(mime-charset iso-2022-kr))
50 51
51(define-coding-system-alias 'korean-iso-7bit-lock 'iso-2022-kr) 52(define-coding-system-alias 'korean-iso-7bit-lock 'iso-2022-kr)
52 53
diff --git a/lisp/language/lao.el b/lisp/language/lao.el
index 86d0caf8a46..200d843eb43 100644
--- a/lisp/language/lao.el
+++ b/lisp/language/lao.el
@@ -27,41 +27,26 @@
27 27
28;;; Code: 28;;; Code:
29 29
30(make-coding-system 30(define-coding-system 'lao
31 'lao 2 ?L 31 "8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)."
32 "8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)." 32 :coding-type 'charset
33 '(ascii lao nil nil 33 :mnemonic ?L
34 nil nil) 34 :charset-list '(lao))
35 '((safe-charsets ascii lao)
36 (post-read-conversion . lao-post-read-conversion)))
37 35
38(set-language-info-alist 36(set-language-info-alist
39 "Lao" '((charset lao) 37 "Lao" '((charset lao)
40 (coding-system lao) 38 (coding-system lao)
41 (coding-priority lao) 39 (coding-priority lao)
42 (input-method . "lao") 40 (input-method . "lao")
43 (nonascii-translation . lao)
44 (unibyte-display . lao) 41 (unibyte-display . lao)
45 (features lao-util) 42 (features lao-util)
46 (documentation . t))) 43 (documentation . t)))
47 44
48(aset use-default-ascent ?(1;(B t)
49(aset use-default-ascent ?$,1D;(B t)
50(aset use-default-ascent ?(1=(B t)
51(aset use-default-ascent ?$,1D=(B t)
52(aset use-default-ascent ?(1?(B t)
53(aset use-default-ascent ?$,1D?(B t)
54(aset use-default-ascent ?(1B(B t)
55(aset use-default-ascent ?$,1DB(B t)
56(aset ignore-relative-composition ?(1\(B t)
57(aset ignore-relative-composition ?$,1D\(B t)
58
59;; Register a function to compose Lao characters. 45;; Register a function to compose Lao characters.
60(let ((patterns '(("\\c0\\c9?\\(\\(\\c2\\|\\c3\\)\\c4?\\|\\c4\\)?" 46(set-char-table-range composition-function-table
61 . lao-composition-function)))) 47 '(#x0F00 . #x0F7F)
62 (aset composition-function-table (make-char 'lao) patterns) 48 '(("\\c0\\c9?\\(\\(\\c2\\|\\c3\\)\\c4?\\|\\c4\\)?"
63 (dotimes (i (1+ (- #xeff #xe80))) 49 . lao-composition-function)))
64 (aset composition-function-table (decode-char 'ucs (+ i #xe80)) patterns)))
65 50
66(provide 'lao) 51(provide 'lao)
67 52
diff --git a/lisp/language/thai.el b/lisp/language/thai.el
index 931142f727b..b511bfd946f 100644
--- a/lisp/language/thai.el
+++ b/lisp/language/thai.el
@@ -28,13 +28,11 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(make-coding-system 31(define-coding-system 'thai-tis620
32 'thai-tis620 2 ?T 32 "8-bit encoding for ASCII (MSB=0) and Thai TIS620 (MSB=1)."
33 "8-bit encoding for ASCII (MSB=0) and Thai TIS620 (MSB=1)." 33 :coding-type 'charset
34 '(ascii thai-tis620 nil nil 34 :mnemonic ?T
35 nil ascii-eol) 35 :charset-list '(tis620-2533))
36 '((safe-charsets ascii thai-tis620)
37 (post-read-conversion . thai-post-read-conversion)))
38 36
39(define-coding-system-alias 'th-tis620 'thai-tis620) 37(define-coding-system-alias 'th-tis620 'thai-tis620)
40(define-coding-system-alias 'tis620 'thai-tis620) 38(define-coding-system-alias 'tis620 'thai-tis620)
@@ -45,7 +43,7 @@
45 (charset thai-tis620) 43 (charset thai-tis620)
46 (coding-system thai-tis620) 44 (coding-system thai-tis620)
47 (coding-priority thai-tis620) 45 (coding-priority thai-tis620)
48 (nonascii-translation . thai-tis620) 46 (nonascii-translation . tis620-2533)
49 (input-method . "thai-kesmanee") 47 (input-method . "thai-kesmanee")
50 (unibyte-display . thai-tis620) 48 (unibyte-display . thai-tis620)
51 (features thai-util) 49 (features thai-util)
@@ -56,11 +54,10 @@
56 54
57 55
58;; Register a function to compose Thai characters. 56;; Register a function to compose Thai characters.
59(let ((patterns '(("\\c0\\c4\\|\\c0\\(\\c2\\|\\c3\\)\\c4?" 57(set-char-table-range composition-function-table
60 . thai-composition-function)))) 58 '(#x0E00 . #x0E7F)
61 (aset composition-function-table (make-char 'thai-tis620) patterns) 59 '(("\\c0\\c4\\|\\c0\\(\\c2\\|\\c3\\)\\c4?"
62 (dotimes (i (1+ (- #xe7f #xe00))) 60 . thai-composition-function)))
63 (aset composition-function-table (decode-char 'ucs (+ i #xe00)) patterns)))
64 61
65(provide 'thai) 62(provide 'thai)
66 63
diff --git a/lisp/language/tibetan.el b/lisp/language/tibetan.el
index c993bb57c01..3a51b709fe2 100644
--- a/lisp/language/tibetan.el
+++ b/lisp/language/tibetan.el
@@ -82,14 +82,12 @@
82;;; 82;;;
83 83
84 84
85(make-coding-system 85(define-coding-system 'tibetan-iso-8bit
86 'tibetan-iso-8bit 2 ?Q 86 "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
87 "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)." 87 :coding-type 'iso-2022
88 '(ascii tibetan nil nil 88 :mnemonic ?Q
89 nil nil) 89 :designation [ascii tibetan nil nil]
90 '((safe-charsets ascii tibetan) 90 :charset-list '(ascii tibetan))
91 (post-read-conversion . tibetan-post-read-conversion)
92 (pre-write-conversion . tibetan-pre-write-conversion)))
93 91
94(define-coding-system-alias 'tibetan 'tibetan-iso-8bit) 92(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
95 93
@@ -119,8 +117,11 @@
119 "Regexp matching a composable sequence of Tibetan characters.") 117 "Regexp matching a composable sequence of Tibetan characters.")
120 118
121;; Register a function to compose Tibetan characters. 119;; Register a function to compose Tibetan characters.
122(aset composition-function-table (make-char 'tibetan) 120(set-char-table-range composition-function-table
123 (list (cons tibetan-composable-pattern 'tibetan-composition-function))) 121 (cons (decode-char 'tibetan #x2121)
122 (decode-char 'tibetan #x7E7E))
123 (list (cons tibetan-composable-pattern
124 'tibetan-composition-function)))
124 125
125;;; 126;;;
126;;; Definitions of conversion data. 127;;; Definitions of conversion data.
diff --git a/lisp/language/vietnamese.el b/lisp/language/vietnamese.el
index c79c84e9631..aa523279b25 100644
--- a/lisp/language/vietnamese.el
+++ b/lisp/language/vietnamese.el
@@ -28,139 +28,30 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(defvar viet-viscii-decode-table 31(define-coding-system 'vietnamese-viscii
32 [;; VISCII is a full 8-bit code. 32 "8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)."
33 0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15 33 :coding-type 'charset
34 16 17 18 19 ?,2V(B 21 22 23 24 ?,2[(B 26 27 28 29 ?,2\(B 31 34 :mnemonic ?V
35 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 35 :charset-list '(viscii)
36 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 36 :plist '(mime-charset viscii))
37 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
38 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
39 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
40 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
41 ?,2U(B ?,2!(B ?,2"(B ?,2#(B ?,2$(B ?,2%(B ?,2&(B ?,2'(B ?,2((B ?,2)(B ?,2*(B ?,2+(B ?,2,(B ?,2-(B ?,2.(B ?,2/(B
42 ?,20(B ?,21(B ?,22(B ?,25(B ?,2~(B ?,2>(B ?,26(B ?,27(B ?,28(B ?,2v(B ?,2w(B ?,2o(B ?,2|(B ?,2{(B ?,2x(B ?,2O(B
43 ?,2u(B ?,1!(B ?,1"(B ?,1#(B ?,1$(B ?,1%(B ?,1&(B ?,1'(B ?,1((B ?,1)(B ?,1*(B ?,1+(B ?,1,(B ?,1-(B ?,1.(B ?,1/(B
44 ?,10(B ?,11(B ?,12(B ?,2^(B ?,2=(B ?,15(B ?,16(B ?,17(B ?,18(B ?,2q(B ?,2Q(B ?,2W(B ?,2X(B ?,1=(B ?,1>(B ?,2_(B
45 ?,2`(B ?,2a(B ?,2b(B ?,2c(B ?,2d(B ?,2e(B ?,1F(B ?,1G(B ?,2h(B ?,2i(B ?,2j(B ?,2k(B ?,2l(B ?,2m(B ?,2n(B ?,1O(B
46 ?,2p(B ?,1Q(B ?,2r(B ?,2s(B ?,2t(B ?,1U(B ?,1V(B ?,1W(B ?,1X(B ?,2y(B ?,2z(B ?,1[(B ?,1\(B ?,2}(B ?,1^(B ?,1_(B
47 ?,1`(B ?,1a(B ?,1b(B ?,1c(B ?,1d(B ?,1e(B ?,1f(B ?,1g(B ?,1h(B ?,1i(B ?,1j(B ?,1k(B ?,1l(B ?,1m(B ?,1n(B ?,1o(B
48 ?,1p(B ?,1q(B ?,1r(B ?,1s(B ?,1t(B ?,1u(B ?,1v(B ?,1w(B ?,1x(B ?,1y(B ?,1z(B ?,1{(B ?,1|(B ?,1}(B ?,1~(B ?,2f(B ]
49 "Vietnamese VISCII decoding table.")
50
51(let ((table (make-translation-table-from-vector viet-viscii-decode-table)))
52 (define-translation-table 'viet-viscii-nonascii-translation-table table)
53 (define-translation-table 'viet-viscii-encode-table
54 (char-table-extra-slot table 0)))
55
56(defvar viet-vscii-decode-table
57 [;; VSCII is a full 8-bit code.
58 0 ?,2z(B ?,2x(B 3 ?,2W(B ?,2X(B ?,2f(B 7 8 9 10 11 12 13 14 15
59 16 ?,2Q(B ?,2_(B ?,2O(B ?,2V(B ?,2[(B ?,2}(B ?,2\(B 24 25 26 27 28 29 30 31
60 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
61 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
63 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
64 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
65 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
66 ?,2`(B ?,2d(B ?,2c(B ?,2a(B ?,2U(B ?,2#(B ?,2'(B ?,2h(B ?,2k(B ?,2((B ?,2i(B ?,2)(B ?,2.(B ?,2l(B ?,2o(B ?,2n(B
67 ?,2m(B ?,28(B ?,2r(B ?,2v(B ?,2u(B ?,2s(B ?,2w(B ?,25(B ?,26(B ?,27(B ?,2^(B ?,2>(B ?,2~(B ?,2y(B ?,2|(B ?,2{(B
68 160 ?,2e(B ?,2b(B ?,2j(B ?,2t(B ?,2=(B ?,2_(B ?,2p(B ?,1e(B ?,1b(B ?,1j(B ?,1t(B ?,1=(B ?,1y(B ?,1p(B ?,2"(B
69 192 193 194 195 196 ?,1`(B ?,1d(B ?,1c(B ?,1a(B ?,1U(B ?,2F(B ?,1"(B ?,1F(B ?,1G(B ?,1!(B ?,2G(B
70 ?,2!(B ?,2%(B ?,2&(B ?,2g(B ?,2%(B ?,2+(B ?,1#(B ?,1%(B ?,1&(B ?,1g(B ?,1$(B ?,1'(B ?,1h(B ?,2,(B ?,1k(B ?,1((B
71 ?,1i(B ?,1)(B ?,1+(B ?,1,(B ?,1-(B ?,1*(B ?,1.(B ?,1l(B ?,1o(B ?,2-(B ?,2*(B ?,20(B ?,1n(B ?,1m(B ?,18(B ?,1r(B
72 ?,21(B ?,1v(B ?,1u(B ?,1s(B ?,1w(B ?,10(B ?,11(B ?,12(B ?,1/(B ?,15(B ?,16(B ?,17(B ?,1^(B ?,1>(B ?,1~(B ?,1y(B
73 ?,22(B ?,1|(B ?,1{(B ?,1z(B ?,1x(B ?,1W(B ?,1X(B ?,1f(B ?,1Q(B ?,1q(B ?,1O(B ?,1V(B ?,1[(B ?,1}(B ?,1\(B ?,2/(B]
74 "Vietnamese VSCII decoding table.")
75
76(let ((table (make-translation-table-from-vector viet-vscii-decode-table)))
77 (define-translation-table 'viet-vscii-nonascii-translation-table table)
78 (define-translation-table 'viet-vscii-encode-table
79 (char-table-extra-slot table 0)))
80
81(define-ccl-program ccl-decode-viscii
82 `(3
83 ((loop
84 (r0 = 0)
85 (read r1)
86 (translate-character viet-viscii-nonascii-translation-table r0 r1)
87 (write-multibyte-character r0 r1)
88 (repeat))))
89 "CCL program to decode VISCII 1.1")
90
91(define-ccl-program ccl-encode-viscii
92 `(1
93 ((loop
94 (read-multibyte-character r0 r1)
95 (translate-character viet-viscii-encode-table r0 r1)
96 (write-repeat r1))))
97 "CCL program to encode VISCII 1.1")
98
99(define-ccl-program ccl-encode-viscii-font
100 `(0
101 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
102 ;; R1:position code
103 ;; Out: R1:font code point
104 (translate-character viet-viscii-encode-table r0 r1))
105 "CCL program to encode Vietnamese chars to VISCII 1.1 font")
106
107(define-ccl-program ccl-decode-vscii
108 `(3
109 ((loop
110 (r0 = 0)
111 (read r1)
112 (translate-character viet-vscii-nonascii-translation-table r0 r1)
113 (write-multibyte-character r0 r1)
114 (repeat))))
115 "CCL program to decode VSCII-1.")
116
117(define-ccl-program ccl-encode-vscii
118 `(1
119 ((loop
120 (read-multibyte-character r0 r1)
121 (translate-character viet-vscii-encode-table r0 r1)
122 (write-repeat r1))))
123 "CCL program to encode VSCII-1.")
124
125(define-ccl-program ccl-encode-vscii-font
126 `(0
127 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
128 ;; R1:position code
129 ;; Out: R1:font code point
130 (translate-character viet-vscii-encode-table r0 r1))
131 "CCL program to encode Vietnamese chars to VSCII-1 font.")
132
133
134(make-coding-system
135 'vietnamese-viscii 4 ?V
136 "8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)."
137 '(ccl-decode-viscii . ccl-encode-viscii)
138 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
139 (mime-charset . viscii)
140 (valid-codes (0 . 255))))
141 37
142(define-coding-system-alias 'viscii 'vietnamese-viscii) 38(define-coding-system-alias 'viscii 'vietnamese-viscii)
143 39
144(make-coding-system 40(define-coding-system 'vietnamese-vscii
145 'vietnamese-vscii 4 ?v 41 "8-bit encoding for Vietnamese VSCII-1."
146 "8-bit encoding for Vietnamese VSCII-1." 42 :coding-type 'charset
147 '(ccl-decode-vscii . ccl-encode-vscii) 43 :mnemonic ?v
148 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper) 44 :charset-list '(vscii))
149 (valid-codes (0 . 255))))
150 45
151(define-coding-system-alias 'vscii 'vietnamese-vscii) 46(define-coding-system-alias 'vscii 'vietnamese-vscii)
152 47
153(make-coding-system 48(define-coding-system 'vietnamese-viqr
154 'vietnamese-viqr 0 ?q 49 "Vietnamese latin transcription (VIQR)."
155 "Encoding for Vietnamese latin transcription (VIQR)." 50 :coding-type 'utf-8
156 nil 51 :mnemonic ?q
157 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper) 52 :charset-list '(ascii viscii)
158 (post-read-conversion . viqr-post-read-conversion) 53 :post-read-conversion 'viqr-post-read-conversion
159 (pre-write-conversion . viqr-pre-write-conversion) 54 :pre-write-conversion 'viqr-pre-write-conversion)
160 (charset-origin-alist
161 (vietnamese-viscii-lower "VISCII" viet-encode-viscii-char)
162 (vietnamese-viscii-upper "VISCII" viet-encode-viscii-char))))
163
164 55
165(define-coding-system-alias 'viqr 'vietnamese-viqr) 56(define-coding-system-alias 'viqr 'vietnamese-viqr)
166 57
@@ -171,13 +62,11 @@
171 (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist)) 62 (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist))
172 63
173(set-language-info-alist 64(set-language-info-alist
174 "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper) 65 "Vietnamese" `((charset viscii)
175 (nonascii-translation
176 . ,(get 'viet-viscii-nonascii-translation-table
177 'translation-table))
178 (coding-system vietnamese-viscii vietnamese-vscii 66 (coding-system vietnamese-viscii vietnamese-vscii
179 vietnamese-viqr) 67 vietnamese-viqr)
180 (coding-priority vietnamese-viscii) 68 (coding-priority vietnamese-viscii)
69 (nonascii-translation . viscii)
181 (input-method . "vietnamese-viqr") 70 (input-method . "vietnamese-viqr")
182 (unibyte-display . vietnamese-viscii) 71 (unibyte-display . vietnamese-viscii)
183 (features viet-util) 72 (features viet-util)