This source file includes following definitions.
- uc_width
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include <config.h>
19
20
21 #include "uniwidth.h"
22
23 #include "cjk.h"
24
25
26
27
28
29
30
31
32
33
34
35 static const unsigned char nonspacing_table_data[38*64] = {
36
37 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
38 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
39 0xff, 0xff, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00,
40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45
46 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
51 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54
55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf,
62 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63
64 0x3f, 0x00, 0xff, 0x17, 0x00, 0x00, 0x00, 0x00,
65 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00,
66 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 0x00, 0x00, 0xc0, 0xbf, 0x9f, 0x3d, 0x00, 0x00,
68 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff,
69 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00,
71 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00,
72
73 0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00,
74 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
77 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
78 0xfe, 0x21, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00,
79 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
80 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
81
82 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
83 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00,
84 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
85 0xbe, 0x21, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
86 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
87 0x1e, 0x20, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00,
88 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90
91 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
92 0xc1, 0x3d, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x00,
93 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
94 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
95 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
97 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00,
99
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x07,
101 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1b,
103 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02,
105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f,
106 0xdf, 0xe0, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f,
107 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108
109 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0x66,
110 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x1e, 0x00,
111 0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117
118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
123 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
126
127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
128 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00,
132 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00,
133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f,
134 0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00,
135
136 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
138 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0e,
141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144
145 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x40, 0x7f, 0xe5, 0x1f, 0xf8, 0x9f,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17,
150 0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00,
151 0x03, 0x00, 0x00, 0x00, 0x3c, 0x3b, 0x00, 0x00,
152 0x00, 0x00, 0x00, 0x00, 0x40, 0xa3, 0x03, 0x00,
153
154 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x00,
155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0xf7, 0xff, 0xfd, 0x21, 0x10, 0x03,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8,
162
163 0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
171
172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
175 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00,
176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
179 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
180
181 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
189
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x3f,
192 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198
199 0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x30, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00,
203 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00,
204 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x13,
206 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
207
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x00,
209 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc1,
211 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00,
212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
215 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00,
216
217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225
226 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
234
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
243
244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
247 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07,
250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
252
253 0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87,
254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
261
262 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
263 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
264 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266 0x07, 0x00, 0x00, 0x00, 0x80, 0xef, 0x1f, 0x00,
267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
268 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f,
269 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
270
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd3, 0x40,
272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x00, 0x00, 0x00, 0x80, 0xf8, 0x07, 0x00, 0x00,
275 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
276 0x01, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x1f, 0x00,
277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
278 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
279
280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
281 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x85,
283 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xb0,
287 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
288
289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa7,
290 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xbf, 0x00,
292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
293 0x00, 0x00, 0x00, 0xe0, 0xbc, 0x0f, 0x00, 0x00,
294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
297
298 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x3f,
299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
300 0x00, 0x00, 0xfc, 0xff, 0xff, 0xfc, 0x6d, 0x00,
301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
306
307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
311 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
312 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
315
316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
321 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
322 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
323 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
324
325 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
326 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
327 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00,
328 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
329 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
330 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
332 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
333
334 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
335 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
336 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
337 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
338 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
339 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf8, 0xff,
340 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
342
343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
344 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
348 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
351
352 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf8,
353 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x20, 0x00,
354 0x10, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x00, 0x00,
355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
360
361 0x7f, 0xff, 0xff, 0xf9, 0xdb, 0x07, 0x00, 0x00,
362 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
363 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
364 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369
370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
372 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
373 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
378 };
379 static const signed char nonspacing_table_ind[248] = {
380 0, 1, 2, 3, 4, 5, 6, 7,
381 8, 9, -1, 10, 11, 12, 13, -1,
382 14, -1, -1, -1, -1, -1, 15, -1,
383 16, -1, -1, -1, -1, -1, -1, -1,
384 -1, -1, -1, -1, -1, -1, -1, -1,
385 -1, -1, -1, -1, -1, -1, -1, -1,
386 -1, -1, -1, -1, -1, -1, -1, -1,
387 -1, -1, -1, -1, -1, -1, -1, -1,
388 -1, -1, -1, -1, -1, -1, -1, -1,
389 -1, -1, -1, -1, -1, -1, -1, -1,
390 -1, -1, -1, 17, 18, 19, -1, -1,
391 -1, -1, -1, -1, -1, -1, -1, -1,
392 -1, -1, -1, -1, -1, -1, -1, -1,
393 -1, -1, -1, -1, -1, -1, -1, -1,
394 -1, -1, -1, -1, -1, -1, -1, -1,
395 -1, -1, -1, -1, -1, 20, -1, 21,
396 22, 23, -1, -1, -1, 24, -1, -1,
397 25, 26, 27, 28, -1, -1, 29, -1,
398 -1, -1, -1, -1, -1, -1, -1, -1,
399 -1, -1, -1, -1, -1, -1, -1, -1,
400 -1, -1, -1, -1, -1, -1, -1, -1,
401 -1, -1, -1, -1, -1, -1, -1, -1,
402 -1, -1, -1, -1, -1, 30, -1, 31,
403 -1, -1, -1, -1, -1, -1, -1, -1,
404 -1, -1, -1, -1, -1, -1, -1, -1,
405 -1, -1, -1, -1, -1, -1, -1, -1,
406 -1, -1, -1, -1, -1, -1, -1, -1,
407 -1, -1, -1, -1, -1, -1, 32, -1,
408 -1, -1, -1, -1, -1, -1, -1, -1,
409 33, 34, -1, -1, -1, 35, -1, -1,
410 36, -1, -1, -1, 37, -1, -1, -1
411 };
412
413
414 int
415 uc_width (ucs4_t uc, const char *encoding)
416 {
417
418 if ((uc >> 9) < 248)
419 {
420 int ind = nonspacing_table_ind[uc >> 9];
421 if (ind >= 0)
422 if ((nonspacing_table_data[64*ind + ((uc >> 3) & 63)] >> (uc & 7)) & 1)
423 {
424 if (uc > 0 && uc < 0xa0)
425 return -1;
426 else
427 return 0;
428 }
429 }
430 else if ((uc >> 9) == (0xe0000 >> 9))
431 {
432 if (uc >= 0xe0100)
433 {
434 if (uc <= 0xe01ef)
435 return 0;
436 }
437 else
438 {
439 if (uc >= 0xe0020 ? uc <= 0xe007f : uc == 0xe0001)
440 return 0;
441 }
442 }
443
444
445
446
447 if (uc >= 0x1100
448 && ((uc < 0x1160)
449 || (uc >= 0x2329 && uc < 0x232b)
450 || (uc >= 0x2e80 && uc < 0xa4d0
451 && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
452 || (uc >= 0xac00 && uc < 0xd7a4)
453 || (uc >= 0xf900 && uc < 0xfb00)
454 || (uc >= 0xfe10 && uc < 0xfe20)
455 || (uc >= 0xfe30 && uc < 0xfe70)
456 || (uc >= 0xff00 && uc < 0xff61)
457 || (uc >= 0xffe0 && uc < 0xffe7)
458 || (uc >= 0x20000 && uc <= 0x2ffff)
459 || (uc >= 0x30000 && uc <= 0x3ffff)
460 ) )
461 return 2;
462
463
464 if (uc >= 0x00A1 && uc < 0xFF61 && uc != 0x20A9
465 && is_cjk_encoding (encoding))
466 return 2;
467 return 1;
468 }