summaryrefslogtreecommitdiff
path: root/modules/thai/thai-charprop.h
blob: 98a8f8d2c2b386f0e6f321e4a2cccfc33dcfacd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* Pango
 * thai-charprop.h:
 *
 * Copyright (C) 1999 Red Hat Software
 * Author: Owen Taylor <otaylor@redhat.com>
 *
 * Copyright (C) 2004 Theppitak Karoonboonyanan
 * Copyright (C) 2002 Software and Language Engineering Laboratory, NECTEC
 * Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
 *
 * Copyright (c) 1996-2000 by Sun Microsystems, Inc.
 * Author: Chookij Vanatham <Chookij.Vanatham@Eng.Sun.COM>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef __THAI_CHARPROP_H__
#define __THAI_CHARPROP_H__

#include <glib.h>

#define isthai(wc)      (0x0E00 <= (wc) && (wc) < 0x0E60)
#define islao(wc)       (0x0E80 <= (wc) && (wc) < 0x0EE0)
/* ucs2tis()
 * Lao:  [0x0E80..0x0EDF] -> [0x20..0x7F]
 * Thai: [0x0E00..0x0E5F] -> [0xA0..0xFF]
 */
#define ucs2tis(wc)     (((wc) - 0x0E00 + 0x20)^0x80)

/* Define TACTIS character classes */
#define CTRL		0
#define NON		1
#define CONS		2
#define LV		3
#define FV1		4
#define FV2		5
#define FV3		6
#define AM		7
#define BV1		8
#define BV2		9
#define BD		10
#define TONE		11
#define AD1		12
#define AD2		13
#define AD3		14
#define AD4		15
#define AV1		16
#define AV2		17
#define AV3		18
#define BCON		19

#define _ND		0
#define _NC		1
#define _UC		(1<<1)
#define _BC		(1<<2)
#define _SC		(1<<3)
#define _AV		(1<<4)
#define _BV		(1<<5)
#define _TN		(1<<6)
#define _AD		(1<<7)
#define _BD		(1<<8)
#define _AM		(1<<9)

#define NoTailCons	_NC
#define UpTailCons	_UC
#define BotTailCons	_BC
#define SpltTailCons	_SC
#define Cons		(NoTailCons|UpTailCons|BotTailCons|SpltTailCons)
#define AboveVowel	_AV
#define BelowVowel	_BV
#define Tone		_TN
#define AboveDiac	_AD
#define BelowDiac	_BD
#define SaraAm		_AM

#define is_char_type(wc, mask)	(thai_char_type[ucs2tis ((wc))] & (mask))
#define TAC_char_class(wc) \
	(isthai(wc)||islao(wc) ? thai_TAC_char_class[ucs2tis (wc)] : NON)
#define TAC_compose_input(wc1,wc2) \
	thai_TAC_compose_input[TAC_char_class(wc1)][TAC_char_class(wc2)]

extern const gshort thai_char_type[256];
extern const gshort thai_TAC_char_class[256];
extern const gchar  thai_TAC_compose_input[20][20];

#endif /* __THAI_CHARPROP_H__ */