]> code.delx.au - gnu-emacs/blob - lisp/language/vietnamese.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / language / vietnamese.el
1 ;;; vietnamese.el --- support for Vietnamese -*- coding: iso-2022-7bit; -*-
2
3 ;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
4 ;; Free Software Foundation, Inc.
5 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
6 ;; 2005, 2006, 2007, 2008
7 ;; National Institute of Advanced Industrial Science and Technology (AIST)
8 ;; Registration Number H14PRO021
9
10 ;; Keywords: multilingual, Vietnamese
11
12 ;; This file is part of GNU Emacs.
13
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by
16 ;; the Free Software Foundation; either version 3, or (at your option)
17 ;; any later version.
18
19 ;; GNU Emacs is distributed in the hope that it will be useful,
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 ;; GNU General Public License for more details.
23
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
27 ;; Boston, MA 02110-1301, USA.
28
29 ;;; Commentary:
30
31 ;; For Vietnames, the character sets VISCII, VSCII and TCVN-5712 are
32 ;; supported.
33
34 ;;; Code:
35
36 (defvar viet-viscii-decode-table
37 [;; VISCII is a full 8-bit code.
38 0 1 ?\e,2F\e(B 3 4 ?\e,2G\e(B ?\e,2g\e(B 7 8 9 10 11 12 13 14 15
39 16 17 18 19 ?\e,2V\e(B 21 22 23 24 ?\e,2[\e(B 26 27 28 29 ?\e,2\\e(B 31
40 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
41 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
42 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
43 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
44 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
45 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
46 ?\e,2U\e(B ?\e,2!\e(B ?\e,2"\e(B ?\e,2#\e(B ?\e,2$\e(B ?\e,2%\e(B ?\e,2&\e(B ?\e,2'\e(B ?\e,2(\e(B ?\e,2)\e(B ?\e,2*\e(B ?\e,2+\e(B ?\e,2,\e(B ?\e,2-\e(B ?\e,2.\e(B ?\e,2/\e(B
47 ?\e,20\e(B ?\e,21\e(B ?\e,22\e(B ?\e,25\e(B ?\e,2~\e(B ?\e,2>\e(B ?\e,26\e(B ?\e,27\e(B ?\e,28\e(B ?\e,2v\e(B ?\e,2w\e(B ?\e,2o\e(B ?\e,2|\e(B ?\e,2{\e(B ?\e,2x\e(B ?\e,2O\e(B
48 ?\e,2u\e(B ?\e,1!\e(B ?\e,1"\e(B ?\e,1#\e(B ?\e,1$\e(B ?\e,1%\e(B ?\e,1&\e(B ?\e,1'\e(B ?\e,1(\e(B ?\e,1)\e(B ?\e,1*\e(B ?\e,1+\e(B ?\e,1,\e(B ?\e,1-\e(B ?\e,1.\e(B ?\e,1/\e(B
49 ?\e,10\e(B ?\e,11\e(B ?\e,12\e(B ?\e,2^\e(B ?\e,2=\e(B ?\e,15\e(B ?\e,16\e(B ?\e,17\e(B ?\e,18\e(B ?\e,2q\e(B ?\e,2Q\e(B ?\e,2W\e(B ?\e,2X\e(B ?\e,1=\e(B ?\e,1>\e(B ?\e,2_\e(B
50 ?\e,2`\e(B ?\e,2a\e(B ?\e,2b\e(B ?\e,2c\e(B ?\e,2d\e(B ?\e,2e\e(B ?\e,1F\e(B ?\e,1G\e(B ?\e,2h\e(B ?\e,2i\e(B ?\e,2j\e(B ?\e,2k\e(B ?\e,2l\e(B ?\e,2m\e(B ?\e,2n\e(B ?\e,1O\e(B
51 ?\e,2p\e(B ?\e,1Q\e(B ?\e,2r\e(B ?\e,2s\e(B ?\e,2t\e(B ?\e,1U\e(B ?\e,1V\e(B ?\e,1W\e(B ?\e,1X\e(B ?\e,2y\e(B ?\e,2z\e(B ?\e,1[\e(B ?\e,1\\e(B ?\e,2}\e(B ?\e,1^\e(B ?\e,1_\e(B
52 ?\e,1`\e(B ?\e,1a\e(B ?\e,1b\e(B ?\e,1c\e(B ?\e,1d\e(B ?\e,1e\e(B ?\e,1f\e(B ?\e,1g\e(B ?\e,1h\e(B ?\e,1i\e(B ?\e,1j\e(B ?\e,1k\e(B ?\e,1l\e(B ?\e,1m\e(B ?\e,1n\e(B ?\e,1o\e(B
53 ?\e,1p\e(B ?\e,1q\e(B ?\e,1r\e(B ?\e,1s\e(B ?\e,1t\e(B ?\e,1u\e(B ?\e,1v\e(B ?\e,1w\e(B ?\e,1x\e(B ?\e,1y\e(B ?\e,1z\e(B ?\e,1{\e(B ?\e,1|\e(B ?\e,1}\e(B ?\e,1~\e(B ?\e,2f\e(B ]
54 "Vietnamese VISCII decoding table.")
55
56 (let ((table (make-translation-table-from-vector viet-viscii-decode-table)))
57 (define-translation-table 'viet-viscii-nonascii-translation-table table)
58 (define-translation-table 'viet-viscii-encode-table
59 (char-table-extra-slot table 0)))
60
61 ;;;
62 ;;; VSCII is a pre-version of TCVN-5712 and deprecated
63 ;;;
64 (defvar viet-vscii-decode-table
65 [;; VSCII is a full 8-bit code.
66 0 ?\e,2z\e(B ?\e,2x\e(B 3 ?\e,2W\e(B ?\e,2X\e(B ?\e,2f\e(B 7 8 9 10 11 12 13 14 15
67 16 ?\e,2Q\e(B ?\e,2_\e(B ?\e,2O\e(B ?\e,2V\e(B ?\e,2[\e(B ?\e,2}\e(B ?\e,2\\e(B 24 25 26 27 28 29 30 31
68 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
69 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
70 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
71 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
72 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
73 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
74 ?\e,2`\e(B ?\e,2d\e(B ?\e,2c\e(B ?\e,2a\e(B ?\e,2U\e(B ?\e,2#\e(B ?\e,2'\e(B ?\e,2h\e(B ?\e,2k\e(B ?\e,2(\e(B ?\e,2i\e(B ?\e,2)\e(B ?\e,2.\e(B ?\e,2l\e(B ?\e,2o\e(B ?\e,2n\e(B
75 ?\e,2m\e(B ?\e,28\e(B ?\e,2r\e(B ?\e,2v\e(B ?\e,2u\e(B ?\e,2s\e(B ?\e,2w\e(B ?\e,25\e(B ?\e,26\e(B ?\e,27\e(B ?\e,2^\e(B ?\e,2>\e(B ?\e,2~\e(B ?\e,2y\e(B ?\e,2|\e(B ?\e,2{\e(B
76 160 ?\e,2e\e(B ?\e,2b\e(B ?\e,2j\e(B ?\e,2t\e(B ?\e,2=\e(B ?\e,2_\e(B ?\e,2p\e(B ?\e,1e\e(B ?\e,1b\e(B ?\e,1j\e(B ?\e,1t\e(B ?\e,1=\e(B ?\e,1y\e(B ?\e,1p\e(B ?\e,2"\e(B
77 192 193 194 195 196 ?\e,1`\e(B ?\e,1d\e(B ?\e,1c\e(B ?\e,1a\e(B ?\e,1U\e(B ?\e,2F\e(B ?\e,1"\e(B ?\e,1F\e(B ?\e,1G\e(B ?\e,1!\e(B ?\e,2G\e(B
78 ?\e,2!\e(B ?\e,2%\e(B ?\e,2&\e(B ?\e,2g\e(B ?\e,2%\e(B ?\e,2+\e(B ?\e,1#\e(B ?\e,1%\e(B ?\e,1&\e(B ?\e,1g\e(B ?\e,1$\e(B ?\e,1'\e(B ?\e,1h\e(B ?\e,2,\e(B ?\e,1k\e(B ?\e,1(\e(B
79 ?\e,1i\e(B ?\e,1)\e(B ?\e,1+\e(B ?\e,1,\e(B ?\e,1-\e(B ?\e,1*\e(B ?\e,1.\e(B ?\e,1l\e(B ?\e,1o\e(B ?\e,2-\e(B ?\e,2*\e(B ?\e,20\e(B ?\e,1n\e(B ?\e,1m\e(B ?\e,18\e(B ?\e,1r\e(B
80 ?\e,21\e(B ?\e,1v\e(B ?\e,1u\e(B ?\e,1s\e(B ?\e,1w\e(B ?\e,10\e(B ?\e,11\e(B ?\e,12\e(B ?\e,1/\e(B ?\e,15\e(B ?\e,16\e(B ?\e,17\e(B ?\e,1^\e(B ?\e,1>\e(B ?\e,1~\e(B ?\e,1y\e(B
81 ?\e,22\e(B ?\e,1|\e(B ?\e,1{\e(B ?\e,1z\e(B ?\e,1x\e(B ?\e,1W\e(B ?\e,1X\e(B ?\e,1f\e(B ?\e,1Q\e(B ?\e,1q\e(B ?\e,1O\e(B ?\e,1V\e(B ?\e,1[\e(B ?\e,1}\e(B ?\e,1\\e(B ?\e,2/\e(B]
82 "Vietnamese VSCII decoding table.")
83
84 (let ((table (make-translation-table-from-vector viet-vscii-decode-table)))
85 (define-translation-table 'viet-vscii-nonascii-translation-table table)
86 (define-translation-table 'viet-vscii-encode-table
87 (char-table-extra-slot table 0)))
88
89 ;; Does not support combining characters in the range [176, 180]
90 (defvar viet-tcvn-decode-table
91 [;; TCVN is a full 8-bit code.
92 0 ?\e,2z\e(B ?\e,2x\e(B 3 ?\e,2W\e(B ?\e,2X\e(B ?\e,2f\e(B 7 8 9 10 11 12 13 14 15
93 16 ?\e,2Q\e(B ?\e,2q\e(B ?\e,2O\e(B ?\e,2V\e(B ?\e,2[\e(B ?\e,2}\e(B ?\e,2\\e(B 24 25 26 27 28 29 30 31
94 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
95 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
96 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
97 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
98 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
99 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
100 ?\e,2`\e(B ?\e,2d\e(B ?\e,2c\e(B ?\e,2a\e(B ?\e,2U\e(B ?\e,2#\e(B ?\e,2'\e(B ?\e,2h\e(B ?\e,2k\e(B ?\e,2(\e(B ?\e,2i\e(B ?\e,2)\e(B ?\e,2.\e(B ?\e,2l\e(B ?\e,2o\e(B ?\e,2n\e(B
101 ?\e,2m\e(B ?\e,28\e(B ?\e,2r\e(B ?\e,2v\e(B ?\e,2u\e(B ?\e,2s\e(B ?\e,2w\e(B ?\e,25\e(B ?\e,26\e(B ?\e,27\e(B ?\e,2^\e(B ?\e,2>\e(B ?\e,2~\e(B ?\e,2y\e(B ?\e,2|\e(B ?\e,2{\e(B
102 160 ?\e,2e\e(B ?\e,2b\e(B ?\e,2j\e(B ?\e,2t\e(B ?\e,2=\e(B ?\e,2_\e(B ?\e,2p\e(B ?\e,1e\e(B ?\e,1b\e(B ?\e,1j\e(B ?\e,1t\e(B ?\e,1=\e(B ?\e,1_\e(B ?\e,1p\e(B ?\e,2"\e(B
103 176 177 178 179 180 ?\e,1`\e(B ?\e,1d\e(B ?\e,1c\e(B ?\e,1a\e(B ?\e,1U\e(B ?\e,2F\e(B ?\e,1"\e(B ?\e,1F\e(B ?\e,1G\e(B ?\e,1!\e(B ?\e,2G\e(B
104 ?\e,2!\e(B ?\e,2%\e(B ?\e,2&\e(B ?\e,2g\e(B ?\e,2$\e(B ?\e,2+\e(B ?\e,1#\e(B ?\e,1%\e(B ?\e,1&\e(B ?\e,1g\e(B ?\e,1$\e(B ?\e,1'\e(B ?\e,1h\e(B ?\e,2,\e(B ?\e,1k\e(B ?\e,1(\e(B
105 ?\e,1i\e(B ?\e,1)\e(B ?\e,1+\e(B ?\e,1,\e(B ?\e,1-\e(B ?\e,1*\e(B ?\e,1.\e(B ?\e,1l\e(B ?\e,1o\e(B ?\e,2-\e(B ?\e,2*\e(B ?\e,20\e(B ?\e,1n\e(B ?\e,1m\e(B ?\e,18\e(B ?\e,1r\e(B
106 ?\e,21\e(B ?\e,1v\e(B ?\e,1u\e(B ?\e,1s\e(B ?\e,1w\e(B ?\e,10\e(B ?\e,11\e(B ?\e,12\e(B ?\e,1/\e(B ?\e,15\e(B ?\e,16\e(B ?\e,17\e(B ?\e,1^\e(B ?\e,1>\e(B ?\e,1~\e(B ?\e,1y\e(B
107 ?\e,22\e(B ?\e,1|\e(B ?\e,1{\e(B ?\e,1z\e(B ?\e,1x\e(B ?\e,1W\e(B ?\e,1X\e(B ?\e,1f\e(B ?\e,1Q\e(B ?\e,1q\e(B ?\e,1O\e(B ?\e,1V\e(B ?\e,1[\e(B ?\e,1}\e(B ?\e,1\\e(B ?\e,2/\e(B]
108 "Vietnamese TCVN-5712 decoding table.")
109
110 (let ((table (make-translation-table-from-vector viet-tcvn-decode-table)))
111 (define-translation-table 'viet-tcvn-nonascii-translation-table table)
112 (define-translation-table 'viet-tcvn-encode-table
113 (char-table-extra-slot table 0)))
114
115 ;; (defvar viet-vps-decode-table
116 ;; [;; VPS is a full 8-bit code.
117 ;; 0 1 ?\e,2U\e(B ?\e,2'\e(B ?\e,2#\e(B ?\e,2)\e(B ?\e,2.\e(B 7 8 9 10 11 12 13 14 15
118 ;; ?\e,28\e(B ?\e,2w\e(B ?\e,25\e(B ?\e,2~\e(B ?\e,2x\e(B ?\e,2q\e(B 22 23 24 ?\e,2\\e(B 26 27 ?\e,2g\e(B ?\e,2f\e(B 30 31
119 ;; 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
120 ;; 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
121 ;; 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
122 ;; 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
123 ;; 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
124 ;; 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
125 ;; ?\e,2`\e(B ?\e,2d\e(B ?\e,2c\e(B ?\e,2$\e(B ?\e,2%\e(B ?\e,2&\e(B ?\e,1w\e(B ?\e,12\e(B ?\e,2e\e(B ?\e,1*\e(B ?\e,1+\e(B ?\e,1,\e(B ?\e,1.\e(B ?\e,2!\e(B ?\e,2"\e(B ?\e,2F\e(B
126 ;; ?\e,2*\e(B 145 146 ?\e,2+\e(B ?\e,2,\e(B ?\e,2-\e(B ?\e,2/\e(B ?\e,20\e(B ?\e,21\e(B ?\e,22\e(B ?\e,1}\e(B ?\e,1V\e(B ?\e,1\\e(B ?\e,2>\e(B ?\e,26\e(B ?\e,27\e(B
127 ;; 160 ?\e,1!\e(B ?\e,1"\e(B ?\e,1F\e(B ?\e,1G\e(B ?\e,1#\e(B ?\e,2^\e(B ?\e,1>\e(B ?\e,2y\e(B ?\e,16\e(B ?\e,17\e(B ?\e,1^\e(B ?\e,2{\e(B ?\e,2Q\e(B ?\e,1~\e(B ?\e,2W\e(B
128 ;; ?\e,11\e(B ?\e,2X\e(B ?\e,2O\e(B ?\e,2[\e(B ?\e,2m\e(B ?\e,2l\e(B ?\e,15\e(B ?\e,2o\e(B ?\e,2n\e(B ?\e,2s\e(B ?\e,1X\e(B ?\e,1f\e(B ?\e,2r\e(B ?\e,2v\e(B ?\e,2u\e(B ?\e,1q\e(B
129 ;; ?\e,1%\e(B ?\e,2a\e(B ?\e,2b\e(B ?\e,1$\e(B ?\e,1&\e(B ?\e,1g\e(B ?\e,1'\e(B ?\e,1p\e(B ?\e,1k\e(B ?\e,2i\e(B ?\e,2j\e(B ?\e,1)\e(B ?\e,1o\e(B ?\e,1-\e(B ?\e,18\e(B ?\e,1[\e(B
130 ;; ?\e,2_\e(B ?\e,2|\e(B ?\e,10\e(B ?\e,1/\e(B ?\e,2t\e(B ?\e,1v\e(B ?\e,1=\e(B ?\e,2h\e(B ?\e,1W\e(B ?\e,1Q\e(B ?\e,2z\e(B ?\e,1{\e(B ?\e,1_\e(B ?\e,2}\e(B ?\e,2k\e(B 223
131 ;; ?\e,1`\e(B ?\e,1a\e(B ?\e,1b\e(B ?\e,1c\e(B ?\e,1d\e(B ?\e,1U\e(B ?\e,1e\e(B 231 ?\e,1h\e(B ?\e,1i\e(B ?\e,1j\e(B ?\e,1(\e(B ?\e,1l\e(B ?\e,1m\e(B 238 ?\e,1n\e(B
132 ;; ?\e,2G\e(B ?\e,2p\e(B ?\e,1r\e(B ?\e,1s\e(B ?\e,1t\e(B ?\e,1u\e(B 246 ?\e,2=\e(B ?\e,1x\e(B ?\e,1y\e(B ?\e,1z\e(B ?\e,1|\e(B 252 ?\e,2V\e(B ?\e,2(\e(B ?\e,1O\e(B]
133 ;; "Vietnamese VPS decoding table.")
134 ;;
135 ;; (let ((table (make-translation-table-from-vector viet-vps-decode-table)))
136 ;; (define-translation-table 'viet-vps-nonascii-translation-table table)
137 ;; (define-translation-table 'viet-vps-encode-table
138 ;; (char-table-extra-slot table 0)))
139
140 (define-ccl-program ccl-decode-viscii
141 `(3
142 ((loop
143 (r0 = 0)
144 (read r1)
145 (translate-character viet-viscii-nonascii-translation-table r0 r1)
146 (write-multibyte-character r0 r1)
147 (repeat))))
148 "CCL program to decode VISCII 1.1")
149
150 (define-ccl-program ccl-encode-viscii
151 `(1
152 ((loop
153 (read-multibyte-character r0 r1)
154 (translate-character viet-viscii-encode-table r0 r1)
155 (write-repeat r1))))
156 "CCL program to encode VISCII 1.1")
157
158 (define-ccl-program ccl-encode-viscii-font
159 `(0
160 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
161 ;; R1:position code
162 ;; Out: R1:font code point
163 (translate-character viet-viscii-encode-table r0 r1))
164 "CCL program to encode Vietnamese chars to VISCII 1.1 font")
165
166 (define-ccl-program ccl-decode-vscii
167 `(3
168 ((loop
169 (r0 = 0)
170 (read r1)
171 (translate-character viet-vscii-nonascii-translation-table r0 r1)
172 (write-multibyte-character r0 r1)
173 (repeat))))
174 "CCL program to decode VSCII-1.")
175
176 (define-ccl-program ccl-encode-vscii
177 `(1
178 ((loop
179 (read-multibyte-character r0 r1)
180 (translate-character viet-vscii-encode-table r0 r1)
181 (write-repeat r1))))
182 "CCL program to encode VSCII-1.")
183
184 (define-ccl-program ccl-encode-vscii-font
185 `(0
186 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
187 ;; R1:position code
188 ;; Out: R1:font code point
189 (translate-character viet-vscii-encode-table r0 r1))
190 "CCL program to encode Vietnamese chars to VSCII-1 font.")
191
192 (define-ccl-program ccl-decode-tcvn
193 `(3
194 ((loop
195 (r0 = 0)
196 (read r1)
197 (translate-character viet-tcvn-nonascii-translation-table r0 r1)
198 (write-multibyte-character r0 r1)
199 (repeat))))
200 "CCL program to decode TCVN-5712.")
201
202 (define-ccl-program ccl-encode-tcvn
203 `(1
204 ((loop
205 (read-multibyte-character r0 r1)
206 (translate-character viet-tcvn-encode-table r0 r1)
207 (write-repeat r1))))
208 "CCL program to encode TCVN-5712.")
209
210 (define-ccl-program ccl-encode-tcvn-font
211 `(0
212 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
213 ;; R1:position code
214 ;; Out: R1:font code point
215 (translate-character viet-tcvn-encode-table r0 r1))
216 "CCL program to encode Vietnamese chars to TCVN-5712 font.")
217
218 ;; (define-ccl-program ccl-decode-vps
219 ;; `(3
220 ;; ((loop
221 ;; (r0 = 0)
222 ;; (read r1)
223 ;; (translate-character viet-vps-nonascii-translation-table r0 r1)
224 ;; (write-multibyte-character r0 r1)
225 ;; (repeat))))
226 ;; "CCL program to decode VPS.")
227 ;;
228 ;; (define-ccl-program ccl-encode-vps
229 ;; `(1
230 ;; ((loop
231 ;; (read-multibyte-character r0 r1)
232 ;; (translate-character viet-vps-encode-table r0 r1)
233 ;; (write-repeat r1))))
234 ;; "CCL program to encode VPS.")
235 ;;
236 ;; (define-ccl-program ccl-encode-vps-font
237 ;; `(0
238 ;; ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
239 ;; ;; R1:position code
240 ;; ;; Out: R1:font code point
241 ;; (translate-character viet-vps-encode-table r0 r1))
242 ;; "CCL program to encode Vietnamese chars to VPS font.")
243
244 (make-coding-system
245 'vietnamese-viscii 4 ?V
246 "8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)"
247 '(ccl-decode-viscii . ccl-encode-viscii)
248 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
249 (mime-charset . viscii)
250 (valid-codes (0 . 255))))
251
252 (define-coding-system-alias 'viscii 'vietnamese-viscii)
253
254 (make-coding-system
255 'vietnamese-vscii 4 ?v
256 "8-bit encoding for Vietnamese VSCII-1"
257 '(ccl-decode-vscii . ccl-encode-vscii)
258 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
259 (valid-codes (0 . 255))))
260
261 (define-coding-system-alias 'vscii 'vietnamese-vscii)
262
263 (make-coding-system
264 'vietnamese-tcvn 4 ?t
265 "8-bit encoding for Vietnamese TCVN-5712"
266 '(ccl-decode-tcvn . ccl-encode-tcvn)
267 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
268 (valid-codes (0 . 255))))
269
270 (define-coding-system-alias 'tcvn 'vietnamese-tcvn)
271 (define-coding-system-alias 'tcvn-5712 'vietnamese-tcvn)
272
273 ;; (make-coding-system
274 ;; 'vietnamese-vps 4 ?p
275 ;; "8-bit encoding for Vietnamese VPS"
276 ;; '(ccl-decode-vps . ccl-encode-vps)
277 ;; '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
278 ;; (valid-codes (0 . 255))))
279 ;;
280 ;; (define-coding-system-alias 'vps 'vietnamese-vps)
281
282 (make-coding-system
283 'vietnamese-viqr 0 ?q
284 "Vietnamese latin transcription (VIQR)"
285 nil
286 '((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
287 (post-read-conversion . viqr-post-read-conversion)
288 (pre-write-conversion . viqr-pre-write-conversion)
289 (charset-origin-alist
290 (vietnamese-viscii-lower "VISCII" viet-encode-viscii-char)
291 (vietnamese-viscii-upper "VISCII" viet-encode-viscii-char))))
292
293
294 (define-coding-system-alias 'viqr 'vietnamese-viqr)
295
296 (setq font-ccl-encoder-alist
297 (cons '("viscii" . ccl-encode-viscii-font) font-ccl-encoder-alist))
298
299 (setq font-ccl-encoder-alist
300 (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist))
301
302 (setq font-ccl-encoder-alist
303 (cons '("tcvn" . ccl-encode-tcvn-font) font-ccl-encoder-alist))
304
305 (set-language-info-alist
306 "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper)
307 (nonascii-translation
308 . ,(get 'viet-viscii-nonascii-translation-table
309 'translation-table))
310 (coding-system vietnamese-viscii vietnamese-vscii vietnamese-tcvn
311 vietnamese-viqr)
312 (coding-priority vietnamese-viscii)
313 (input-method . "vietnamese-viqr")
314 (unibyte-display . vietnamese-viscii)
315 (features viet-util)
316 (sample-text . "Vietnamese (Ti\e,1*\e(Bng Vi\e,1.\e(Bt) Ch\e,1`\e(Bo b\e,1U\e(Bn")
317 (documentation . "\
318 For Vietnamese, Emacs uses special charsets internally.
319 They can be decoded from and encoded to VISCII, VSCII, TCVN-5712, and
320 VIQR. VSCII is deprecated in favour of TCVN-5712. Current setting
321 puts higher priority to the coding system VISCII than TCVN-5712. If
322 you prefer TCVN-5712, please do: (prefer-coding-system 'vietnamese-tcvn).
323 There are two Vietnamese input methods: VIQR and Telex, VIQR is the
324 default setting.")
325 ))
326
327 (provide 'vietnamese)
328
329 ;;; arch-tag: 5bd4f1aa-2d4e-4f33-b7d8-0679c6a19ee6
330 ;;; vietnamese.el ends here