Git init
[external/pango1.0.git] / modules / thai / thai-charprop.c
1 /* Pango
2  * thai-charprop.c: character property tables
3  *
4  * Copyright (C) 2004 Theppitak Karoonboonyanan
5  * Copyright (C) 2002 Software and Language Engineering Laboratory, NECTEC
6  * Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
7  *
8  * Copyright (c) 1996-2000 by Sun Microsystems, Inc.
9  * Author: Chookij Vanatham <Chookij.Vanatham@Eng.Sun.COM>
10  *
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.
15  *
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.
20  *
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.
25  */
26 #include "config.h"
27 #include "thai-charprop.h"
28
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  */
32
33          /* CL1 */
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,
38
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,
52
53          /* CL2 */
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,
58
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,
72 };
73
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  */
77
78          /* CL1 */
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,
83
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,
97
98          /* CL2 */
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,
103
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,
117 };
118
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'},
163 };
164