1 ;;; vietnamese.el --- support for Vietnamese -*- coding: iso-2022-7bit; -*-
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
10 ;; Keywords: multilingual, Vietnamese
12 ;; This file is part of GNU Emacs.
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)
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.
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.
31 ;; For Vietnames, the character sets VISCII, VSCII and TCVN-5712 are
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.")
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)))
62 ;;; VSCII is a pre-version of TCVN-5712 and deprecated
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.")
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)))
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.")
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)))
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.")
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)))
140 (define-ccl-program ccl-decode-viscii
145 (translate-character viet-viscii-nonascii-translation-table r0 r1)
146 (write-multibyte-character r0 r1)
148 "CCL program to decode VISCII 1.1")
150 (define-ccl-program ccl-encode-viscii
153 (read-multibyte-character r0 r1)
154 (translate-character viet-viscii-encode-table r0 r1)
156 "CCL program to encode VISCII 1.1")
158 (define-ccl-program ccl-encode-viscii-font
160 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
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")
166 (define-ccl-program ccl-decode-vscii
171 (translate-character viet-vscii-nonascii-translation-table r0 r1)
172 (write-multibyte-character r0 r1)
174 "CCL program to decode VSCII-1.")
176 (define-ccl-program ccl-encode-vscii
179 (read-multibyte-character r0 r1)
180 (translate-character viet-vscii-encode-table r0 r1)
182 "CCL program to encode VSCII-1.")
184 (define-ccl-program ccl-encode-vscii-font
186 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
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.")
192 (define-ccl-program ccl-decode-tcvn
197 (translate-character viet-tcvn-nonascii-translation-table r0 r1)
198 (write-multibyte-character r0 r1)
200 "CCL program to decode TCVN-5712.")
202 (define-ccl-program ccl-encode-tcvn
205 (read-multibyte-character r0 r1)
206 (translate-character viet-tcvn-encode-table r0 r1)
208 "CCL program to encode TCVN-5712.")
210 (define-ccl-program ccl-encode-tcvn-font
212 ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
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.")
218 ;; (define-ccl-program ccl-decode-vps
223 ;; (translate-character viet-vps-nonascii-translation-table r0 r1)
224 ;; (write-multibyte-character r0 r1)
226 ;; "CCL program to decode VPS.")
228 ;; (define-ccl-program ccl-encode-vps
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.")
236 ;; (define-ccl-program ccl-encode-vps-font
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.")
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))))
252 (define-coding-system-alias 'viscii 'vietnamese-viscii)
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))))
261 (define-coding-system-alias 'vscii 'vietnamese-vscii)
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))))
270 (define-coding-system-alias 'tcvn 'vietnamese-tcvn)
271 (define-coding-system-alias 'tcvn-5712 'vietnamese-tcvn)
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))))
280 ;; (define-coding-system-alias 'vps 'vietnamese-vps)
283 'vietnamese-viqr 0 ?q
284 "Vietnamese latin transcription (VIQR)"
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))))
294 (define-coding-system-alias 'viqr 'vietnamese-viqr)
296 (setq font-ccl-encoder-alist
297 (cons '("viscii" . ccl-encode-viscii-font) font-ccl-encoder-alist))
299 (setq font-ccl-encoder-alist
300 (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist))
302 (setq font-ccl-encoder-alist
303 (cons '("tcvn" . ccl-encode-tcvn-font) font-ccl-encoder-alist))
305 (set-language-info-alist
306 "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper)
307 (nonascii-translation
308 . ,(get 'viet-viscii-nonascii-translation-table
310 (coding-system vietnamese-viscii vietnamese-vscii vietnamese-tcvn
312 (coding-priority vietnamese-viscii)
313 (input-method . "vietnamese-viqr")
314 (unibyte-display . vietnamese-viscii)
316 (sample-text . "Vietnamese (Ti
\e,1*
\e(Bng Vi
\e,1.
\e(Bt) Ch
\e,1`
\e(Bo b
\e,1U
\e(Bn")
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
327 (provide 'vietnamese)
329 ;;; arch-tag: 5bd4f1aa-2d4e-4f33-b7d8-0679c6a19ee6
330 ;;; vietnamese.el ends here