1
/* Copyright 2002, 2003 Elliotte Rusty Harold
3
This library is free software; you can redistribute it and/or modify
4
it under the terms of version 2.1 of the GNU Lesser General Public
5
License as published by the Free Software Foundation.
7
This library is distributed in the hope that it will be useful,
8
but WITHOUT ANY WARRANTY; without even the implied warranty of
9
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
GNU Lesser General Public License for more details.
12
You should have received a copy of the GNU Lesser General Public
13
License along with this library; if not, write to the
14
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
15
Boston, MA 02111-1307 USA
17
You can contact Elliotte Rusty Harold by sending e-mail to
18
elharo@metalab.unc.edu. Please include the word "XOM" in the
19
subject line. The XOM home page is located at http://www.xom.nu/
24
import java.io.Writer;
28
* TIS-620, not quite the same as ISO 8859-11.
29
* TIS-620 does not have the non-breaking space or the C1 controls.
32
* @author Elliotte Rusty Harold
36
class ISOThaiWriter extends TextWriter {
38
ISOThaiWriter(Writer out, String encoding) {
43
* @see nu.xom.TextWriter#needsEscaping(char)
45
boolean needsEscaping(char c) {
47
if (c < 128) return false;
48
// C1 controls do not appear to be assigned in this character set
50
// http://www.inet.co.th/cyberclub/trin/thairef/tis620-iso10646.html
51
// "Special attention should be paid on codepoint A0. Contrary
52
// to many people's belief that TIS 620 defines codepoint A0
53
// as no-break space (U+00A0), the standard does not assign any
54
// character to this codepoint. Codepoints A0 as well as DB-DE
55
// and FC-FF are not part of the standard. Interpretations of
56
// these unassigned codepoints are implementation specific and
57
// may vary from implementation to implementation. To ensure full
58
// data interchangeability among various applications, it is
59
// suggested that Thai software implementors follows the
60
// TIS 620 standard strictly."
63
case 0x0E01: return false; // THAI CHARACTER KO KAI
64
case 0x0E02: return false; // THAI CHARACTER KHO KHAI
65
case 0x0E03: return false; // THAI CHARACTER KHO KHUAT
66
case 0x0E04: return false; // THAI CHARACTER KHO KHWAI
67
case 0x0E05: return false; // THAI CHARACTER KHO KHON
68
case 0x0E06: return false; // THAI CHARACTER KHO RAKHANG
69
case 0x0E07: return false; // THAI CHARACTER NGO NGU
70
case 0x0E08: return false; // THAI CHARACTER CHO CHAN
71
case 0x0E09: return false; // THAI CHARACTER CHO CHING
72
case 0x0E0A: return false; // THAI CHARACTER CHO CHANG
73
case 0x0E0B: return false; // THAI CHARACTER SO SO
74
case 0x0E0C: return false; // THAI CHARACTER CHO CHOE
75
case 0x0E0D: return false; // THAI CHARACTER YO YING
76
case 0x0E0E: return false; // THAI CHARACTER DO CHADA
77
case 0x0E0F: return false; // THAI CHARACTER TO PATAK
78
case 0x0E10: return false; // THAI CHARACTER THO THAN
79
case 0x0E11: return false; // THAI CHARACTER THO NANGMONTHO
80
case 0x0E12: return false; // THAI CHARACTER THO PHUTHAO
81
case 0x0E13: return false; // THAI CHARACTER NO NEN
82
case 0x0E14: return false; // THAI CHARACTER DO DEK
83
case 0x0E15: return false; // THAI CHARACTER TO TAO
84
case 0x0E16: return false; // THAI CHARACTER THO THUNG
85
case 0x0E17: return false; // THAI CHARACTER THO THAHAN
86
case 0x0E18: return false; // THAI CHARACTER THO THONG
87
case 0x0E19: return false; // THAI CHARACTER NO NU
88
case 0x0E1A: return false; // THAI CHARACTER BO BAIMAI
89
case 0x0E1B: return false; // THAI CHARACTER PO PLA
90
case 0x0E1C: return false; // THAI CHARACTER PHO PHUNG
91
case 0x0E1D: return false; // THAI CHARACTER FO FA
92
case 0x0E1E: return false; // THAI CHARACTER PHO PHAN
93
case 0x0E1F: return false; // THAI CHARACTER FO FAN
94
case 0x0E20: return false; // THAI CHARACTER PHO SAMPHAO
95
case 0x0E21: return false; // THAI CHARACTER MO MA
96
case 0x0E22: return false; // THAI CHARACTER YO YAK
97
case 0x0E23: return false; // THAI CHARACTER RO RUA
98
case 0x0E24: return false; // THAI CHARACTER RU
99
case 0x0E25: return false; // THAI CHARACTER LO LING
100
case 0x0E26: return false; // THAI CHARACTER LU
101
case 0x0E27: return false; // THAI CHARACTER WO WAEN
102
case 0x0E28: return false; // THAI CHARACTER SO SALA
103
case 0x0E29: return false; // THAI CHARACTER SO RUSI
104
case 0x0E2A: return false; // THAI CHARACTER SO SUA
105
case 0x0E2B: return false; // THAI CHARACTER HO HIP
106
case 0x0E2C: return false; // THAI CHARACTER LO CHULA
107
case 0x0E2D: return false; // THAI CHARACTER O ANG
108
case 0x0E2E: return false; // THAI CHARACTER HO NOKHUK
109
case 0x0E2F: return false; // THAI CHARACTER PAIYANNOI
110
case 0x0E30: return false; // THAI CHARACTER SARA A
111
case 0x0E31: return false; // THAI CHARACTER MAI HAN-AKAT
112
case 0x0E32: return false; // THAI CHARACTER SARA AA
113
case 0x0E33: return false; // THAI CHARACTER SARA AM
114
case 0x0E34: return false; // THAI CHARACTER SARA I
115
case 0x0E35: return false; // THAI CHARACTER SARA II
116
case 0x0E36: return false; // THAI CHARACTER SARA UE
117
case 0x0E37: return false; // THAI CHARACTER SARA UEE
118
case 0x0E38: return false; // THAI CHARACTER SARA U
119
case 0x0E39: return false; // THAI CHARACTER SARA UU
120
case 0x0E3A: return false; // THAI CHARACTER PHINTHU
122
// optimize by splitting switch into contiguous blocks per
123
// Chapter 7 of Java Performance Tuning, Jack Shirazi
125
case 0x0E3F: return false; // THAI CURRENCY SYMBOL BAHT
126
case 0x0E40: return false; // THAI CHARACTER SARA E
127
case 0x0E41: return false; // THAI CHARACTER SARA AE
128
case 0x0E42: return false; // THAI CHARACTER SARA O
129
case 0x0E43: return false; // THAI CHARACTER SARA AI MAIMUAN
130
case 0x0E44: return false; // THAI CHARACTER SARA AI MAIMALAI
131
case 0x0E45: return false; // THAI CHARACTER LAKKHANGYAO
132
case 0x0E46: return false; // THAI CHARACTER MAIYAMOK
133
case 0x0E47: return false; // THAI CHARACTER MAITAIKHU
134
case 0x0E48: return false; // THAI CHARACTER MAI EK
135
case 0x0E49: return false; // THAI CHARACTER MAI THO
136
case 0x0E4A: return false; // THAI CHARACTER MAI TRI
137
case 0x0E4B: return false; // THAI CHARACTER MAI CHATTAWA
138
case 0x0E4C: return false; // THAI CHARACTER THANTHAKHAT
139
case 0x0E4D: return false; // THAI CHARACTER NIKHAHIT
140
case 0x0E4E: return false; // THAI CHARACTER YAMAKKAN
141
case 0x0E4F: return false; // THAI CHARACTER FONGMAN
142
case 0x0E50: return false; // THAI DIGIT ZERO
143
case 0x0E51: return false; // THAI DIGIT ONE
144
case 0x0E52: return false; // THAI DIGIT TWO
145
case 0x0E53: return false; // THAI DIGIT THREE
146
case 0x0E54: return false; // THAI DIGIT FOUR
147
case 0x0E55: return false; // THAI DIGIT FIVE
148
case 0x0E56: return false; // THAI DIGIT SIX
149
case 0x0E57: return false; // THAI DIGIT SEVEN
150
case 0x0E58: return false; // THAI DIGIT EIGHT
151
case 0x0E59: return false; // THAI DIGIT NINE
152
case 0x0E5A: return false; // THAI CHARACTER ANGKHANKHU
153
case 0x0E5B: return false; // THAI CHARACTER KHOMUT
b'\\ No newline at end of file'