comparison lisp/mule/vietnamese.el @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents 74fd4e045ea6
children e804706bfb8c
comparison
equal deleted inserted replaced
411:12e008d41344 412:697ef44129c6
1 ;;; vietnamese.el --- Support for Vietnamese -*- coding: iso-2022-7bit; -*- 1 ;;; vietnamese.el --- Support for Vietnamese
2 2
3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. 3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
4 ;; Licensed to the Free Software Foundation. 4 ;; Licensed to the Free Software Foundation.
5 ;; Copyright (C) 1997 MORIOKA Tomohiko 5 ;; Copyright (C) 1997 MORIOKA Tomohiko
6 6
31 31
32 (eval-and-compile 32 (eval-and-compile
33 33
34 (defvar viet-viscii-decode-table 34 (defvar viet-viscii-decode-table
35 [;; VISCII is a full 8-bit code. 35 [;; VISCII is a full 8-bit code.
36 0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15 36 0 1 ?.2NF 3 4 ?NG ?Ng 7 8 9 10 11 12 13 14 15
37 16 17 18 19 ?,2V(B 21 22 23 24 ?,2[(B 26 27 28 29 ?,2\(B 31 37 16 17 18 19 ?.2NV 21 22 23 24 ?N[ 26 27 28 29 ?N\ 31
38 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 38 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
39 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 39 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
40 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 40 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
41 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 41 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
42 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 42 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
43 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 43 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
44 ?,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 44 ?.2NU ?N! ?N" ?N# ?N$ ?N% ?N& ?N' ?N( ?N) ?N* ?N+ ?N, ?N- ?N. ?N/
45 ?,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 45 ?.2N0 ?N1 ?N2 ?N5 ?N~ ?N> ?N6 ?N7 ?N8 ?Nv ?Nw ?No ?N| ?N{ ?Nx ?NO
46 ?,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 46 ?.2Nu ?.1N! ?N" ?N# ?N$ ?N% ?N& ?N' ?N( ?N) ?N* ?N+ ?N, ?N- ?N. ?N/
47 ?,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 47 ?.1N0 ?N1 ?N2 ?.2N^ ?N= ?.1N5 ?N6 ?N7 ?N8 ?.2Nq ?NQ ?NW ?NX ?.1N= ?N> ?.2N_
48 ?,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 48 ?.2N` ?Na ?Nb ?Nc ?Nd ?Ne ?.1NF ?NG ?.2Nh ?Ni ?Nj ?Nk ?Nl ?Nm ?Nn ?.1NO
49 ?,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 49 ?.2Np ?.1NQ ?.2Nr ?Ns ?Nt ?.1NU ?NV ?NW ?NX ?.2Ny ?Nz ?.1N[ ?N\ ?.2N} ?.1N^ ?N_
50 ?,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 50 ?.1N` ?Na ?Nb ?Nc ?Nd ?Ne ?Nf ?Ng ?Nh ?Ni ?Nj ?Nk ?Nl ?Nm ?Nn ?No
51 ?,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 ] 51 ?.1Np ?Nq ?Nr ?Ns ?Nt ?Nu ?Nv ?Nw ?Nx ?Ny ?Nz ?N{ ?N| ?N} ?N~ ?.2Nf ]
52 "Vietnamese VISCII decoding table.") 52 "Vietnamese VISCII decoding table.")
53 53
54 (defvar viet-viscii-encode-table 54 (defvar viet-viscii-encode-table
55 (let ((table-lower (make-vector 128 0)) 55 (let ((table-lower (make-vector 128 0))
56 (table-upper (make-vector 128 0)) 56 (table-upper (make-vector 128 0))
57 (i 0) 57 (i 0)
58 char-component) 58 char-component)
59 (while (< i 256) 59 (while (< i 256)
60 (setq char-component 60 (setq char-component
61 (split-char (aref viet-viscii-decode-table i))) 61 (split-char-or-char-int (aref viet-viscii-decode-table i)))
62 (cond ((eq (car char-component) 'vietnamese-viscii-lower) 62 (cond ((eq (car char-component) 'vietnamese-viscii-lower)
63 (aset table-lower (nth 1 char-component) i)) 63 (aset table-lower (nth 1 char-component) i))
64 ((eq (car char-component) 'vietnamese-viscii-upper) 64 ((eq (car char-component) 'vietnamese-viscii-upper)
65 (aset table-upper (nth 1 char-component) i))) 65 (aset table-upper (nth 1 char-component) i)))
66 (setq i (1+ i))) 66 (setq i (1+ i)))
69 Cons of tables for encoding lower-case chars and upper-case characters. 69 Cons of tables for encoding lower-case chars and upper-case characters.
70 Both tables are indexed by the position code of Vietnamese characters.") 70 Both tables are indexed by the position code of Vietnamese characters.")
71 71
72 (defvar viet-vscii-decode-table 72 (defvar viet-vscii-decode-table
73 [;; VSCII is a full 8-bit code. 73 [;; VSCII is a full 8-bit code.
74 0 ?,2z(B ?,2x(B 3 ?,2W(B ?,2X(B ?,2f(B 7 8 9 10 11 12 13 14 15 74 0 ?.2Nz ?Nx 3 ?NW ?NX ?Nf 7 8 9 10 11 12 13 14 15
75 16 ?,2Q(B ?,2_(B ?,2O(B ?,2V(B ?,2[(B ?,2}(B ?,2\(B 24 25 26 27 28 29 30 31 75 16 ?.2NQ ?N_ ?NO ?NV ?N[ ?N} ?N\ 24 25 26 27 28 29 30 31
76 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 76 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
77 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 77 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
78 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 78 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
80 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 80 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
81 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 81 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
82 ?,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 82 ?.2N` ?Nd ?Nc ?Na ?NU ?N# ?N' ?Nh ?Nk ?N( ?Ni ?N) ?N. ?Nl ?No ?Nn
83 ?,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 83 ?.2Nm ?N8 ?Nr ?Nv ?Nu ?Ns ?Nw ?N5 ?N6 ?N7 ?N^ ?N> ?N~ ?Ny ?N| ?N{
84 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 84 160 ?.2Ne ?Nb ?Nj ?Nt ?N= ?N_ ?Np ?.1Ne ?Nb ?Nj ?Nt ?N> ?Ny ?Np ?.2N"
85 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 85 192 193 194 195 196 ?.1N` ?Nd ?Nc ?Na ?NU ?.2NF ?.1N" ?NF ?NG ?N! ?.2NG
86 ?,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 86 ?.2N! ?N% ?N& ?Ng ?N% ?N+ ?.1N# ?N% ?N& ?Ng ?N$ ?N' ?Nh ?.2N, ?.1Nk ?N(
87 ?,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 87 ?.1Ni ?N) ?N+ ?N, ?N- ?N* ?N. ?Nl ?No ?.2N- ?N* ?N0 ?.1Nn ?Nm ?N8 ?Nr
88 ?,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 88 ?.2N1 ?.1Nv ?Nu ?Ns ?Nw ?N0 ?N1 ?N2 ?N/ ?N5 ?N6 ?N7 ?N^ ?N> ?N~ ?Ny
89 ?,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] 89 ?.2N2 ?.1N| ?N{ ?Nz ?Nx ?NW ?NX ?Nf ?NQ ?Nq ?NO ?NV ?N[ ?N} ?N\ ?.2N/]
90 "Vietnamese VSCII decoding table.") 90 "Vietnamese VSCII decoding table.")
91 91
92 (defvar viet-vscii-encode-table 92 (defvar viet-vscii-encode-table
93 (let ((table-lower (make-vector 128 0)) 93 (let ((table-lower (make-vector 128 0))
94 (table-upper (make-vector 128 0)) 94 (table-upper (make-vector 128 0))
95 (i 0) 95 (i 0)
96 char-component) 96 char-component)
97 (while (< i 256) 97 (while (< i 256)
98 (setq char-component 98 (setq char-component
99 (split-char (aref viet-vscii-decode-table i))) 99 (split-char-or-char-int (aref viet-vscii-decode-table i)))
100 (cond ((eq (car char-component) 'vietnamese-viscii-lower) 100 (cond ((eq (car char-component) 'vietnamese-viscii-lower)
101 (aset table-lower (nth 1 char-component) i)) 101 (aset table-lower (nth 1 char-component) i))
102 ((eq (car char-component) 'vietnamese-viscii-upper) 102 ((eq (car char-component) 'vietnamese-viscii-upper)
103 (aset table-upper (nth 1 char-component) i))) 103 (aset table-upper (nth 1 char-component) i)))
104 (setq i (1+ i))) 104 (setq i (1+ i)))
186 (write-read-repeat r0 ,(car viet-vscii-encode-table))) 186 (write-read-repeat r0 ,(car viet-vscii-encode-table)))
187 (if (r0 == ,(charset-id 'vietnamese-viscii-upper)) 187 (if (r0 == ,(charset-id 'vietnamese-viscii-upper))
188 (;; Vietnamese upper 188 (;; Vietnamese upper
189 (read r0) 189 (read r0)
190 (r0 -= 128) 190 (r0 -= 128)
191 (write-read-repeat r0 ,(cdr viet-vscii-encode-table))) 191 (write-read-repeat r0 ,(cdr viet-viscii-encode-table)))
192 ;; not Vietnamese 192 ;; not Vietnamese
193 (write-read-repeat r0)))))))) 193 (write-read-repeat r0))))))))
194 "CCL program to encode VSCII-1.") 194 "CCL program to encode VSCII-1.")
195 195
196 (define-ccl-program ccl-encode-vscii-font 196 (define-ccl-program ccl-encode-vscii-font
210 "Coding-system used for VISCII 1.1." 210 "Coding-system used for VISCII 1.1."
211 `(mnemonic "VISCII" 211 `(mnemonic "VISCII"
212 decode ,ccl-decode-viscii 212 decode ,ccl-decode-viscii
213 encode ,ccl-encode-viscii)) 213 encode ,ccl-encode-viscii))
214 214
215 ;; it is not correct, but XEmacs doesn't have `ccl' category...
216 (coding-system-put 'viscii 'category 'iso-8-1)
217
218 ;; (make-coding-system 215 ;; (make-coding-system
219 ;; 'vietnamese-viscii 4 ?V 216 ;; 'vietnamese-viscii 4 ?V
220 ;; "8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)" 217 ;; "8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)"
221 ;; '(ccl-decode-viscii . ccl-encode-viscii) 218 ;; (cons ccl-decode-viscii ccl-encode-viscii))
222 ;; '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
223 ;; (mime-charset . viscii)
224 ;; (valid-codes (0 . 255))))
225 219
226 ;; (define-coding-system-alias 'viscii 'vietnamese-viscii) 220 ;; (define-coding-system-alias 'viscii 'vietnamese-viscii)
227 221
228 (make-coding-system 222 (make-coding-system
229 'vscii 'ccl 223 'vscii 'ccl
233 encode ,ccl-encode-vscii)) 227 encode ,ccl-encode-vscii))
234 228
235 ;; (make-coding-system 229 ;; (make-coding-system
236 ;; 'vietnamese-vscii 4 ?v 230 ;; 'vietnamese-vscii 4 ?v
237 ;; "8-bit encoding for Vietnamese VSCII-1" 231 ;; "8-bit encoding for Vietnamese VSCII-1"
238 ;; '(ccl-decode-vscii . ccl-encode-vscii) 232 ;; (cons ccl-decode-vscii ccl-encode-vscii))
239 ;; '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
240 ;; (valid-codes (0 . 255))))
241 233
242 ;; (define-coding-system-alias 'vscii 'vietnamese-vscii) 234 ;; (define-coding-system-alias 'vscii 'vietnamese-vscii)
243 235
244 (make-coding-system 236 (make-coding-system
245 'viqr 'no-conversion 237 'viqr 'no-conversion
250 pre-write-conversion viqr-pre-write-conversion)) 242 pre-write-conversion viqr-pre-write-conversion))
251 243
252 ;; (make-coding-system 244 ;; (make-coding-system
253 ;; 'vietnamese-viqr 0 ?q 245 ;; 'vietnamese-viqr 0 ?q
254 ;; "Vietnamese latin transcription (VIQR)" 246 ;; "Vietnamese latin transcription (VIQR)"
255 ;; nil 247 ;; nil)
256 ;; '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper) 248 ;; (put 'vietnamese-viqr 'post-read-conversion 'viqr-post-read-conversion)
257 ;; (post-read-conversion . viqr-post-read-conversion) 249 ;; (put 'vietnamese-viqr 'pre-write-conversion 'viqr-pre-write-conversion)
258 ;; (pre-write-conversion . viqr-pre-write-conversion)
259 ;; (charset-origin-alist
260 ;; (vietnamese-viscii-lower "VISCII" viet-encode-viscii-char)
261 ;; (vietnamese-viscii-upper "VISCII" viet-encode-viscii-char))))
262 250
263 ;; (define-coding-system-alias 'viqr 'vietnamese-viqr) 251 ;; (define-coding-system-alias 'viqr 'vietnamese-viqr)
264 252
265 ;; For VISCII users 253 ;; For VISCII users
266 (set-charset-ccl-program 'vietnamese-viscii-lower 254 (set-charset-ccl-program 'vietnamese-viscii-lower
275 ;; (cons (cons "viscii" ccl-encode-viscii-font) font-ccl-encoder-alist)) 263 ;; (cons (cons "viscii" ccl-encode-viscii-font) font-ccl-encoder-alist))
276 264
277 ;; (setq font-ccl-encoder-alist 265 ;; (setq font-ccl-encoder-alist
278 ;; (cons (cons "vscii" ccl-encode-vscii-font) font-ccl-encoder-alist)) 266 ;; (cons (cons "vscii" ccl-encode-vscii-font) font-ccl-encoder-alist))
279 267
280 ;; (defvar viet-viscii-nonascii-translation-table
281 ;; (make-translation-table-from-vector viet-viscii-decode-table)
282 ;; "Value of `nonascii-translation-table' in Vietnamese language environment.")
283
284 (set-language-info-alist 268 (set-language-info-alist
285 "Vietnamese" '((charset vietnamese-viscii-lower vietnamese-viscii-upper) 269 "Vietnamese" '((setup-function . setup-vietnamese-environment)
286 (coding-system viscii vscii viqr) 270 (charset . (vietnamese-viscii-lower
287 (coding-priority viscii) 271 vietnamese-viscii-upper))
288 (input-method . "vietnamese-viqr") 272 (coding-system . (viscii vscii viqr))
289 (features viet-util) 273 (sample-text . "Vietnamese (Ti.1N*ng ViN.t) ChN`o bNUn")
290 (sample-text . "Vietnamese (Ti,1*(Bng Vi,1.(Bt) Ch,1`(Bo b,1U(Bn")
291 (documentation . "\ 274 (documentation . "\
292 For Vietnamese, Emacs uses special charsets internally. 275 For Vietnamese, Emacs uses special charasets internally.
293 They can be decoded from and encoded to VISCC, VSCII, and VIQR. 276 They can be decoded from and encoded to VISCC, VSCII, and VIQR.")
294 Current setting put higher priority to the coding system VISCII than VSCII.
295 If you prefer VSCII, please do: (prefer-coding-system 'vietnamese-vscii)")
296 )) 277 ))
297 278
298 ;;; vietnamese.el ends here 279 ;;; vietnamese.el ends here