2 * thai-charprop.c: character property tables
4 * Copyright (C) 2004 Theppitak Karoonboonyanan
5 * Copyright (C) 2002 Software and Language Engineering Laboratory, NECTEC
6 * Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
8 * Copyright (c) 1996-2000 by Sun Microsystems, Inc.
9 * Author: Chookij Vanatham <Chookij.Vanatham@Eng.Sun.COM>
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version.
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details.
21 * You should have received a copy of the GNU Library General Public
22 * License along with this library; if not, write to the
23 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24 * Boston, MA 02111-1307, USA.
27 #include "thai-charprop.h"
29 const gshort thai_char_type[256] = {
30 /* 0, 1, 2, 3, 4, 5, 6, 7,
31 8, 9, A, B, C, D, E, F */
34 /*00*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
35 _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
36 /*10*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
37 _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
39 /* Lao zone: [U+0E80..U+0EDF] */
40 /*20*/ _ND, _NC, _NC, _ND, _NC, _ND, _ND, _NC,
41 _NC, _ND, _NC, _ND, _ND, _NC, _ND, _ND,
42 /*30*/ _ND, _ND, _ND, _ND, _NC, _NC, _NC, _NC,
43 _ND, _NC, _NC, _UC, _NC, _UC, _NC, _UC,
44 /*40*/ _ND, _NC, _UC, _NC, _ND, _NC, _ND, _NC,
45 _ND, _ND, _NC, _NC, _ND, _NC, _NC, _ND,
46 /*50*/ _ND, _AV, _ND, _AM, _AV, _AV, _AV, _AV,
47 _BV, _BV, _ND, _AV, _BD, _NC, _ND, _ND,
48 /*60*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _AD,
49 _TN, _TN, _TN, _TN, _AD, _AD, _ND, _ND,
50 /*70*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
51 _ND, _ND, _ND, _ND, _NC, _NC, _ND, _ND,
54 /*80*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
55 _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
56 /*90*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
57 _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
59 /* Thai zone: [U+0E00..U+0E5F] */
60 /*A0*/ _ND, _NC, _NC, _NC, _NC, _NC, _NC, _NC,
61 _NC, _NC, _NC, _NC, _NC, _SC, _BC, _BC,
62 /*B0*/ _SC, _NC, _NC, _NC, _NC, _NC, _NC, _NC,
63 _NC, _NC, _NC, _UC, _NC, _UC, _NC, _UC,
64 /*C0*/ _NC, _NC, _NC, _NC, _ND, _NC, _ND, _NC,
65 _NC, _NC, _NC, _NC, _UC, _NC, _NC, _ND,
66 /*D0*/ _ND, _AV, _ND, _AM, _AV, _AV, _AV, _AV,
67 _BV, _BV, _BD, _ND, _ND, _ND, _ND, _ND,
68 /*E0*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _AD,
69 _TN, _TN, _TN, _TN, _AD, _AD, _AD, _ND,
70 /*F0*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
71 _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
74 const gshort thai_TAC_char_class[256] = {
75 /* 0, 1, 2, 3, 4, 5, 6, 7,
76 8, 9, A, B, C, D, E, F */
79 /*00*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
80 CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
81 /*10*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
82 CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
84 /* Lao zone: [U+0E80..U+0EDF] */
85 /*20*/ NON,CONS,CONS, NON,CONS, NON, NON,CONS,
86 CONS, NON,CONS, NON, NON,CONS, NON, NON,
87 /*30*/ NON, NON, NON, NON,CONS,CONS,CONS,CONS,
88 NON,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
89 /*40*/ NON,CONS,CONS,CONS, NON,CONS, NON,CONS,
90 NON, NON,CONS,CONS, NON,CONS,CONS, NON,
91 /*50*/ FV1, AV2, FV1, AM, AV1, AV3, AV2, AV3,
92 BV1, BV2, NON, AV2,BCON, FV3, NON, NON,
93 /*60*/ LV, LV, LV, LV, LV, NON, NON, NON,
94 TONE,TONE,TONE,TONE, AD1, AD4, NON, NON,
95 /*70*/ NON, NON, NON, NON, NON, NON, NON, NON,
96 NON, NON, NON, NON,CONS,CONS, NON,CTRL,
99 /*80*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
100 CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
101 /*90*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
102 CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
104 /* Thai zone: [U+0E00..U+0E5F] */
105 /*A0*/ NON,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
106 CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
107 /*B0*/ CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
108 CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
109 /*C0*/ CONS,CONS,CONS,CONS, FV3,CONS, FV3,CONS,
110 CONS,CONS,CONS,CONS,CONS,CONS,CONS, NON,
111 /*D0*/ FV1, AV2, FV1, AM, AV1, AV3, AV2, AV3,
112 BV1, BV2, BD, NON, NON, NON, NON, NON,
113 /*E0*/ LV, LV, LV, LV, LV, FV2, NON, AD2,
114 TONE,TONE,TONE,TONE, AD1, AD4, AD3, NON,
115 /*F0*/ NON, NON, NON, NON, NON, NON, NON, NON,
116 NON, NON, NON, NON, NON, NON, NON,CTRL,
119 const gchar thai_TAC_compose_input[20][20] = {
120 /* row: Cn-1, column: Cn */
121 /*CTRL NON CONS LV FV1 FV2 FV3 AM BV1 BV2
122 * BD TONE AD1 AD2 AD3 AD4 AV1 AV2 AV3 BCON*/
123 /*CTRL*/{'X','A','A','A','A','A','A','R','R','R',
124 'R','R','R','R','R','R','R','R','R','R'},
125 /*NON */{'X','A','A','A','S','S','A','R','R','R',
126 'R','R','R','R','R','R','R','R','R','R'},
127 /*CONS*/{'X','A','A','A','A','S','A','C','C','C',
128 'C','C','C','C','C','C','C','C','C','C'},
129 /*LV */{'X','S','A','S','S','S','S','R','R','R',
130 'R','R','R','R','R','R','R','R','R','R'},
131 /*FV1 */{'X','A','A','A','A','S','A','R','R','R',
132 'R','R','R','R','R','R','R','R','R','R'},
133 /*FV2 */{'X','A','A','A','A','S','A','R','R','R',
134 'R','R','R','R','R','R','R','R','R','R'},
135 /*FV3 */{'X','A','A','A','S','A','S','R','R','R',
136 'R','R','R','R','R','R','R','R','R','R'},
137 /*AM */{'X','A','A','A','S','S','A','R','R','R',
138 'R','R','R','R','R','R','R','R','R','R'},
139 /*BV1 */{'X','A','A','A','S','S','A','R','R','R',
140 'R','C','C','R','R','C','R','R','R','R'},
141 /*BV2 */{'X','A','A','A','S','S','A','R','R','R',
142 'R','C','R','R','R','R','R','R','R','R'},
143 /*BD */{'X','A','A','A','S','S','A','R','R','R',
144 'R','R','R','R','R','R','R','R','R','R'},
145 /*TONE*/{'X','A','A','A','A','A','A','C','R','R',
146 'R','R','R','R','R','R','R','R','R','R'},
147 /*AD1 */{'X','A','A','A','S','S','A','R','R','R',
148 'R','R','R','R','R','R','R','R','R','R'},
149 /*AD2 */{'X','A','A','A','S','S','A','R','R','R',
150 'R','R','R','R','R','R','R','R','R','R'},
151 /*AD3 */{'X','A','A','A','S','S','A','R','R','R',
152 'R','R','R','R','R','R','R','R','R','R'},
153 /*AD4 */{'X','A','A','A','S','S','A','R','R','R',
154 'R','C','R','R','R','R','R','R','R','R'},
155 /*AV1 */{'X','A','A','A','S','S','A','R','R','R',
156 'R','C','C','R','R','C','R','R','R','R'},
157 /*AV2 */{'X','A','A','A','S','S','A','R','R','R',
158 'R','C','R','R','R','R','R','R','R','R'},
159 /*AV3 */{'X','A','A','A','S','S','A','R','R','R',
160 'R','C','R','C','R','R','R','R','R','R'},
161 /*BCON*/{'X','A','A','A','A','S','A','C','C','C',
162 'R','C','R','R','R','C','C','C','C','R'},