v2 / vlib / encoding / utf8 / east_asian / east_asian_width.v
1203 lines · 1193 sloc · 37.87 KB · 8e35f4d9848f7ad35d857a187dddbfd2eca5e19d
Raw
1// Copyright (c) 2021 Takahiro Yaota, a.k.a. zakuro. All rights reserved.
2// Use of this source code is governed by an MIT license
3// that can be found in the LICENSE file.
4
5module east_asian
6
7import encoding.utf8
8
9// EastAsianWidthType represents East_Asian_Width informative prorperty
10pub enum EastAsianWidthProperty {
11 full
12 half
13 wide
14 narrow
15 ambiguous
16 neutral
17}
18
19// display_width return the display width as number of unicode chars from a string.
20pub fn display_width(s string, ambiguous_width int) int {
21 mut i, mut n := 0, 0
22 for i < s.len {
23 c_len := utf8_char_len(s[i])
24 n += match east_asian_width_property_at(s, i) {
25 .ambiguous { ambiguous_width }
26 .full, .wide { int(2) }
27 else { int(1) }
28 }
29
30 i += c_len
31 }
32 return n
33}
34
35// width_property_at returns the East Asian Width properties at string[index]
36pub fn east_asian_width_property_at(s string, index int) EastAsianWidthProperty {
37 codepoint := utf8.get_rune(s, index)
38 mut left, mut right := 0, east_asian_width_data.len - 1
39 for left <= right {
40 middle := left + ((right - left) / 2)
41 entry := east_asian_width_data[middle]
42 if codepoint < entry.point {
43 right = middle - 1
44 continue
45 }
46
47 last := entry.point + entry.len
48 if codepoint > last {
49 left = middle + 1
50 continue
51 }
52
53 return entry.property
54 }
55 return .neutral
56}
57
58struct EAWEntry {
59 property EastAsianWidthProperty
60 point int
61 len int
62}
63
64// EastAsianWidth-13.0.0.txt
65const east_asian_width_data = [
66 EAWEntry{.neutral, 0x0000, 32},
67 EAWEntry{.narrow, 0x0020, 95},
68 EAWEntry{.neutral, 0x007f, 34},
69 EAWEntry{.ambiguous, 0x00a1, 1},
70 EAWEntry{.narrow, 0x00a2, 2},
71 EAWEntry{.ambiguous, 0x00a4, 1},
72 EAWEntry{.narrow, 0x00a5, 2},
73 EAWEntry{.ambiguous, 0x00a7, 2},
74 EAWEntry{.neutral, 0x00a9, 1},
75 EAWEntry{.ambiguous, 0x00aa, 1},
76 EAWEntry{.neutral, 0x00ab, 1},
77 EAWEntry{.narrow, 0x00ac, 1},
78 EAWEntry{.ambiguous, 0x00ad, 2},
79 EAWEntry{.narrow, 0x00af, 1},
80 EAWEntry{.ambiguous, 0x00b0, 5},
81 EAWEntry{.neutral, 0x00b5, 1},
82 EAWEntry{.ambiguous, 0x00b6, 5},
83 EAWEntry{.neutral, 0x00bb, 1},
84 EAWEntry{.ambiguous, 0x00bc, 4},
85 EAWEntry{.neutral, 0x00c0, 6},
86 EAWEntry{.ambiguous, 0x00c6, 1},
87 EAWEntry{.neutral, 0x00c7, 9},
88 EAWEntry{.ambiguous, 0x00d0, 1},
89 EAWEntry{.neutral, 0x00d1, 6},
90 EAWEntry{.ambiguous, 0x00d7, 2},
91 EAWEntry{.neutral, 0x00d9, 5},
92 EAWEntry{.ambiguous, 0x00de, 4},
93 EAWEntry{.neutral, 0x00e2, 4},
94 EAWEntry{.ambiguous, 0x00e6, 1},
95 EAWEntry{.neutral, 0x00e7, 1},
96 EAWEntry{.ambiguous, 0x00e8, 3},
97 EAWEntry{.neutral, 0x00eb, 1},
98 EAWEntry{.ambiguous, 0x00ec, 2},
99 EAWEntry{.neutral, 0x00ee, 2},
100 EAWEntry{.ambiguous, 0x00f0, 1},
101 EAWEntry{.neutral, 0x00f1, 1},
102 EAWEntry{.ambiguous, 0x00f2, 2},
103 EAWEntry{.neutral, 0x00f4, 3},
104 EAWEntry{.ambiguous, 0x00f7, 4},
105 EAWEntry{.neutral, 0x00fb, 1},
106 EAWEntry{.ambiguous, 0x00fc, 1},
107 EAWEntry{.neutral, 0x00fd, 1},
108 EAWEntry{.ambiguous, 0x00fe, 1},
109 EAWEntry{.neutral, 0x00ff, 2},
110 EAWEntry{.ambiguous, 0x0101, 1},
111 EAWEntry{.neutral, 0x0102, 15},
112 EAWEntry{.ambiguous, 0x0111, 1},
113 EAWEntry{.neutral, 0x0112, 1},
114 EAWEntry{.ambiguous, 0x0113, 1},
115 EAWEntry{.neutral, 0x0114, 7},
116 EAWEntry{.ambiguous, 0x011b, 1},
117 EAWEntry{.neutral, 0x011c, 10},
118 EAWEntry{.ambiguous, 0x0126, 2},
119 EAWEntry{.neutral, 0x0128, 3},
120 EAWEntry{.ambiguous, 0x012b, 1},
121 EAWEntry{.neutral, 0x012c, 5},
122 EAWEntry{.ambiguous, 0x0131, 3},
123 EAWEntry{.neutral, 0x0134, 4},
124 EAWEntry{.ambiguous, 0x0138, 1},
125 EAWEntry{.neutral, 0x0139, 6},
126 EAWEntry{.ambiguous, 0x013f, 4},
127 EAWEntry{.neutral, 0x0143, 1},
128 EAWEntry{.ambiguous, 0x0144, 1},
129 EAWEntry{.neutral, 0x0145, 3},
130 EAWEntry{.ambiguous, 0x0148, 4},
131 EAWEntry{.neutral, 0x014c, 1},
132 EAWEntry{.ambiguous, 0x014d, 1},
133 EAWEntry{.neutral, 0x014e, 4},
134 EAWEntry{.ambiguous, 0x0152, 2},
135 EAWEntry{.neutral, 0x0154, 18},
136 EAWEntry{.ambiguous, 0x0166, 2},
137 EAWEntry{.neutral, 0x0168, 3},
138 EAWEntry{.ambiguous, 0x016b, 1},
139 EAWEntry{.neutral, 0x016c, 98},
140 EAWEntry{.ambiguous, 0x01ce, 1},
141 EAWEntry{.neutral, 0x01cf, 1},
142 EAWEntry{.ambiguous, 0x01d0, 1},
143 EAWEntry{.neutral, 0x01d1, 1},
144 EAWEntry{.ambiguous, 0x01d2, 1},
145 EAWEntry{.neutral, 0x01d3, 1},
146 EAWEntry{.ambiguous, 0x01d4, 1},
147 EAWEntry{.neutral, 0x01d5, 1},
148 EAWEntry{.ambiguous, 0x01d6, 1},
149 EAWEntry{.neutral, 0x01d7, 1},
150 EAWEntry{.ambiguous, 0x01d8, 1},
151 EAWEntry{.neutral, 0x01d9, 1},
152 EAWEntry{.ambiguous, 0x01da, 1},
153 EAWEntry{.neutral, 0x01db, 1},
154 EAWEntry{.ambiguous, 0x01dc, 1},
155 EAWEntry{.neutral, 0x01dd, 116},
156 EAWEntry{.ambiguous, 0x0251, 1},
157 EAWEntry{.neutral, 0x0252, 15},
158 EAWEntry{.ambiguous, 0x0261, 1},
159 EAWEntry{.neutral, 0x0262, 98},
160 EAWEntry{.ambiguous, 0x02c4, 1},
161 EAWEntry{.neutral, 0x02c5, 2},
162 EAWEntry{.ambiguous, 0x02c7, 1},
163 EAWEntry{.neutral, 0x02c8, 1},
164 EAWEntry{.ambiguous, 0x02c9, 3},
165 EAWEntry{.neutral, 0x02cc, 1},
166 EAWEntry{.ambiguous, 0x02cd, 1},
167 EAWEntry{.neutral, 0x02ce, 2},
168 EAWEntry{.ambiguous, 0x02d0, 1},
169 EAWEntry{.neutral, 0x02d1, 7},
170 EAWEntry{.ambiguous, 0x02d8, 4},
171 EAWEntry{.neutral, 0x02dc, 1},
172 EAWEntry{.ambiguous, 0x02dd, 1},
173 EAWEntry{.neutral, 0x02de, 1},
174 EAWEntry{.ambiguous, 0x02df, 1},
175 EAWEntry{.neutral, 0x02e0, 32},
176 EAWEntry{.ambiguous, 0x0300, 112},
177 EAWEntry{.neutral, 0x0370, 8},
178 EAWEntry{.neutral, 0x037a, 6},
179 EAWEntry{.neutral, 0x0384, 7},
180 EAWEntry{.neutral, 0x038c, 1},
181 EAWEntry{.neutral, 0x038e, 3},
182 EAWEntry{.ambiguous, 0x0391, 17},
183 EAWEntry{.ambiguous, 0x03a3, 7},
184 EAWEntry{.neutral, 0x03aa, 7},
185 EAWEntry{.ambiguous, 0x03b1, 17},
186 EAWEntry{.neutral, 0x03c2, 1},
187 EAWEntry{.ambiguous, 0x03c3, 7},
188 EAWEntry{.neutral, 0x03ca, 55},
189 EAWEntry{.ambiguous, 0x0401, 1},
190 EAWEntry{.neutral, 0x0402, 14},
191 EAWEntry{.ambiguous, 0x0410, 64},
192 EAWEntry{.neutral, 0x0450, 1},
193 EAWEntry{.ambiguous, 0x0451, 1},
194 EAWEntry{.neutral, 0x0452, 222},
195 EAWEntry{.neutral, 0x0531, 38},
196 EAWEntry{.neutral, 0x0559, 50},
197 EAWEntry{.neutral, 0x058d, 3},
198 EAWEntry{.neutral, 0x0591, 55},
199 EAWEntry{.neutral, 0x05d0, 27},
200 EAWEntry{.neutral, 0x05ef, 6},
201 EAWEntry{.neutral, 0x0600, 29},
202 EAWEntry{.neutral, 0x061e, 240},
203 EAWEntry{.neutral, 0x070f, 60},
204 EAWEntry{.neutral, 0x074d, 101},
205 EAWEntry{.neutral, 0x07c0, 59},
206 EAWEntry{.neutral, 0x07fd, 49},
207 EAWEntry{.neutral, 0x0830, 15},
208 EAWEntry{.neutral, 0x0840, 28},
209 EAWEntry{.neutral, 0x085e, 1},
210 EAWEntry{.neutral, 0x0860, 11},
211 EAWEntry{.neutral, 0x08a0, 21},
212 EAWEntry{.neutral, 0x08b6, 18},
213 EAWEntry{.neutral, 0x08d3, 177},
214 EAWEntry{.neutral, 0x0985, 8},
215 EAWEntry{.neutral, 0x098f, 2},
216 EAWEntry{.neutral, 0x0993, 22},
217 EAWEntry{.neutral, 0x09aa, 7},
218 EAWEntry{.neutral, 0x09b2, 1},
219 EAWEntry{.neutral, 0x09b6, 4},
220 EAWEntry{.neutral, 0x09bc, 9},
221 EAWEntry{.neutral, 0x09c7, 2},
222 EAWEntry{.neutral, 0x09cb, 4},
223 EAWEntry{.neutral, 0x09d7, 1},
224 EAWEntry{.neutral, 0x09dc, 2},
225 EAWEntry{.neutral, 0x09df, 5},
226 EAWEntry{.neutral, 0x09e6, 25},
227 EAWEntry{.neutral, 0x0a01, 3},
228 EAWEntry{.neutral, 0x0a05, 6},
229 EAWEntry{.neutral, 0x0a0f, 2},
230 EAWEntry{.neutral, 0x0a13, 22},
231 EAWEntry{.neutral, 0x0a2a, 7},
232 EAWEntry{.neutral, 0x0a32, 2},
233 EAWEntry{.neutral, 0x0a35, 2},
234 EAWEntry{.neutral, 0x0a38, 2},
235 EAWEntry{.neutral, 0x0a3c, 1},
236 EAWEntry{.neutral, 0x0a3e, 5},
237 EAWEntry{.neutral, 0x0a47, 2},
238 EAWEntry{.neutral, 0x0a4b, 3},
239 EAWEntry{.neutral, 0x0a51, 1},
240 EAWEntry{.neutral, 0x0a59, 4},
241 EAWEntry{.neutral, 0x0a5e, 1},
242 EAWEntry{.neutral, 0x0a66, 17},
243 EAWEntry{.neutral, 0x0a81, 3},
244 EAWEntry{.neutral, 0x0a85, 9},
245 EAWEntry{.neutral, 0x0a8f, 3},
246 EAWEntry{.neutral, 0x0a93, 22},
247 EAWEntry{.neutral, 0x0aaa, 7},
248 EAWEntry{.neutral, 0x0ab2, 2},
249 EAWEntry{.neutral, 0x0ab5, 5},
250 EAWEntry{.neutral, 0x0abc, 10},
251 EAWEntry{.neutral, 0x0ac7, 3},
252 EAWEntry{.neutral, 0x0acb, 3},
253 EAWEntry{.neutral, 0x0ad0, 1},
254 EAWEntry{.neutral, 0x0ae0, 4},
255 EAWEntry{.neutral, 0x0ae6, 12},
256 EAWEntry{.neutral, 0x0af9, 7},
257 EAWEntry{.neutral, 0x0b01, 3},
258 EAWEntry{.neutral, 0x0b05, 8},
259 EAWEntry{.neutral, 0x0b0f, 2},
260 EAWEntry{.neutral, 0x0b13, 22},
261 EAWEntry{.neutral, 0x0b2a, 7},
262 EAWEntry{.neutral, 0x0b32, 2},
263 EAWEntry{.neutral, 0x0b35, 5},
264 EAWEntry{.neutral, 0x0b3c, 9},
265 EAWEntry{.neutral, 0x0b47, 2},
266 EAWEntry{.neutral, 0x0b4b, 3},
267 EAWEntry{.neutral, 0x0b55, 3},
268 EAWEntry{.neutral, 0x0b5c, 2},
269 EAWEntry{.neutral, 0x0b5f, 5},
270 EAWEntry{.neutral, 0x0b66, 18},
271 EAWEntry{.neutral, 0x0b82, 2},
272 EAWEntry{.neutral, 0x0b85, 6},
273 EAWEntry{.neutral, 0x0b8e, 3},
274 EAWEntry{.neutral, 0x0b92, 4},
275 EAWEntry{.neutral, 0x0b99, 2},
276 EAWEntry{.neutral, 0x0b9c, 1},
277 EAWEntry{.neutral, 0x0b9e, 2},
278 EAWEntry{.neutral, 0x0ba3, 2},
279 EAWEntry{.neutral, 0x0ba8, 3},
280 EAWEntry{.neutral, 0x0bae, 12},
281 EAWEntry{.neutral, 0x0bbe, 5},
282 EAWEntry{.neutral, 0x0bc6, 3},
283 EAWEntry{.neutral, 0x0bca, 4},
284 EAWEntry{.neutral, 0x0bd0, 1},
285 EAWEntry{.neutral, 0x0bd7, 1},
286 EAWEntry{.neutral, 0x0be6, 21},
287 EAWEntry{.neutral, 0x0c00, 13},
288 EAWEntry{.neutral, 0x0c0e, 3},
289 EAWEntry{.neutral, 0x0c12, 23},
290 EAWEntry{.neutral, 0x0c2a, 16},
291 EAWEntry{.neutral, 0x0c3d, 8},
292 EAWEntry{.neutral, 0x0c46, 3},
293 EAWEntry{.neutral, 0x0c4a, 4},
294 EAWEntry{.neutral, 0x0c55, 2},
295 EAWEntry{.neutral, 0x0c58, 3},
296 EAWEntry{.neutral, 0x0c60, 4},
297 EAWEntry{.neutral, 0x0c66, 10},
298 EAWEntry{.neutral, 0x0c77, 22},
299 EAWEntry{.neutral, 0x0c8e, 3},
300 EAWEntry{.neutral, 0x0c92, 23},
301 EAWEntry{.neutral, 0x0caa, 10},
302 EAWEntry{.neutral, 0x0cb5, 5},
303 EAWEntry{.neutral, 0x0cbc, 9},
304 EAWEntry{.neutral, 0x0cc6, 3},
305 EAWEntry{.neutral, 0x0cca, 4},
306 EAWEntry{.neutral, 0x0cd5, 2},
307 EAWEntry{.neutral, 0x0cde, 1},
308 EAWEntry{.neutral, 0x0ce0, 4},
309 EAWEntry{.neutral, 0x0ce6, 10},
310 EAWEntry{.neutral, 0x0cf1, 2},
311 EAWEntry{.neutral, 0x0d00, 13},
312 EAWEntry{.neutral, 0x0d0e, 3},
313 EAWEntry{.neutral, 0x0d12, 51},
314 EAWEntry{.neutral, 0x0d46, 3},
315 EAWEntry{.neutral, 0x0d4a, 6},
316 EAWEntry{.neutral, 0x0d54, 16},
317 EAWEntry{.neutral, 0x0d66, 26},
318 EAWEntry{.neutral, 0x0d81, 3},
319 EAWEntry{.neutral, 0x0d85, 18},
320 EAWEntry{.neutral, 0x0d9a, 24},
321 EAWEntry{.neutral, 0x0db3, 9},
322 EAWEntry{.neutral, 0x0dbd, 1},
323 EAWEntry{.neutral, 0x0dc0, 7},
324 EAWEntry{.neutral, 0x0dca, 1},
325 EAWEntry{.neutral, 0x0dcf, 6},
326 EAWEntry{.neutral, 0x0dd6, 1},
327 EAWEntry{.neutral, 0x0dd8, 8},
328 EAWEntry{.neutral, 0x0de6, 10},
329 EAWEntry{.neutral, 0x0df2, 3},
330 EAWEntry{.neutral, 0x0e01, 58},
331 EAWEntry{.neutral, 0x0e3f, 29},
332 EAWEntry{.neutral, 0x0e81, 2},
333 EAWEntry{.neutral, 0x0e84, 1},
334 EAWEntry{.neutral, 0x0e86, 5},
335 EAWEntry{.neutral, 0x0e8c, 24},
336 EAWEntry{.neutral, 0x0ea5, 1},
337 EAWEntry{.neutral, 0x0ea7, 23},
338 EAWEntry{.neutral, 0x0ec0, 5},
339 EAWEntry{.neutral, 0x0ec6, 1},
340 EAWEntry{.neutral, 0x0ec8, 6},
341 EAWEntry{.neutral, 0x0ed0, 10},
342 EAWEntry{.neutral, 0x0edc, 4},
343 EAWEntry{.neutral, 0x0f00, 72},
344 EAWEntry{.neutral, 0x0f49, 36},
345 EAWEntry{.neutral, 0x0f71, 39},
346 EAWEntry{.neutral, 0x0f99, 36},
347 EAWEntry{.neutral, 0x0fbe, 15},
348 EAWEntry{.neutral, 0x0fce, 13},
349 EAWEntry{.neutral, 0x1000, 198},
350 EAWEntry{.neutral, 0x10c7, 1},
351 EAWEntry{.neutral, 0x10cd, 1},
352 EAWEntry{.neutral, 0x10d0, 48},
353 EAWEntry{.wide, 0x1100, 96},
354 EAWEntry{.neutral, 0x1160, 233},
355 EAWEntry{.neutral, 0x124a, 4},
356 EAWEntry{.neutral, 0x1250, 7},
357 EAWEntry{.neutral, 0x1258, 1},
358 EAWEntry{.neutral, 0x125a, 4},
359 EAWEntry{.neutral, 0x1260, 41},
360 EAWEntry{.neutral, 0x128a, 4},
361 EAWEntry{.neutral, 0x1290, 33},
362 EAWEntry{.neutral, 0x12b2, 4},
363 EAWEntry{.neutral, 0x12b8, 7},
364 EAWEntry{.neutral, 0x12c0, 1},
365 EAWEntry{.neutral, 0x12c2, 4},
366 EAWEntry{.neutral, 0x12c8, 15},
367 EAWEntry{.neutral, 0x12d8, 57},
368 EAWEntry{.neutral, 0x1312, 4},
369 EAWEntry{.neutral, 0x1318, 67},
370 EAWEntry{.neutral, 0x135d, 32},
371 EAWEntry{.neutral, 0x1380, 26},
372 EAWEntry{.neutral, 0x13a0, 86},
373 EAWEntry{.neutral, 0x13f8, 6},
374 EAWEntry{.neutral, 0x1400, 669},
375 EAWEntry{.neutral, 0x16a0, 89},
376 EAWEntry{.neutral, 0x1700, 13},
377 EAWEntry{.neutral, 0x170e, 7},
378 EAWEntry{.neutral, 0x1720, 23},
379 EAWEntry{.neutral, 0x1740, 20},
380 EAWEntry{.neutral, 0x1760, 13},
381 EAWEntry{.neutral, 0x176e, 3},
382 EAWEntry{.neutral, 0x1772, 2},
383 EAWEntry{.neutral, 0x1780, 94},
384 EAWEntry{.neutral, 0x17e0, 10},
385 EAWEntry{.neutral, 0x17f0, 10},
386 EAWEntry{.neutral, 0x1800, 15},
387 EAWEntry{.neutral, 0x1810, 10},
388 EAWEntry{.neutral, 0x1820, 89},
389 EAWEntry{.neutral, 0x1880, 43},
390 EAWEntry{.neutral, 0x18b0, 70},
391 EAWEntry{.neutral, 0x1900, 31},
392 EAWEntry{.neutral, 0x1920, 12},
393 EAWEntry{.neutral, 0x1930, 12},
394 EAWEntry{.neutral, 0x1940, 1},
395 EAWEntry{.neutral, 0x1944, 42},
396 EAWEntry{.neutral, 0x1970, 5},
397 EAWEntry{.neutral, 0x1980, 44},
398 EAWEntry{.neutral, 0x19b0, 26},
399 EAWEntry{.neutral, 0x19d0, 11},
400 EAWEntry{.neutral, 0x19de, 62},
401 EAWEntry{.neutral, 0x1a1e, 65},
402 EAWEntry{.neutral, 0x1a60, 29},
403 EAWEntry{.neutral, 0x1a7f, 11},
404 EAWEntry{.neutral, 0x1a90, 10},
405 EAWEntry{.neutral, 0x1aa0, 14},
406 EAWEntry{.neutral, 0x1ab0, 17},
407 EAWEntry{.neutral, 0x1b00, 76},
408 EAWEntry{.neutral, 0x1b50, 45},
409 EAWEntry{.neutral, 0x1b80, 116},
410 EAWEntry{.neutral, 0x1bfc, 60},
411 EAWEntry{.neutral, 0x1c3b, 15},
412 EAWEntry{.neutral, 0x1c4d, 60},
413 EAWEntry{.neutral, 0x1c90, 43},
414 EAWEntry{.neutral, 0x1cbd, 11},
415 EAWEntry{.neutral, 0x1cd0, 43},
416 EAWEntry{.neutral, 0x1d00, 250},
417 EAWEntry{.neutral, 0x1dfb, 283},
418 EAWEntry{.neutral, 0x1f18, 6},
419 EAWEntry{.neutral, 0x1f20, 38},
420 EAWEntry{.neutral, 0x1f48, 6},
421 EAWEntry{.neutral, 0x1f50, 8},
422 EAWEntry{.neutral, 0x1f59, 1},
423 EAWEntry{.neutral, 0x1f5b, 1},
424 EAWEntry{.neutral, 0x1f5d, 1},
425 EAWEntry{.neutral, 0x1f5f, 31},
426 EAWEntry{.neutral, 0x1f80, 53},
427 EAWEntry{.neutral, 0x1fb6, 15},
428 EAWEntry{.neutral, 0x1fc6, 14},
429 EAWEntry{.neutral, 0x1fd6, 6},
430 EAWEntry{.neutral, 0x1fdd, 19},
431 EAWEntry{.neutral, 0x1ff2, 3},
432 EAWEntry{.neutral, 0x1ff6, 9},
433 EAWEntry{.neutral, 0x2000, 16},
434 EAWEntry{.ambiguous, 0x2010, 1},
435 EAWEntry{.neutral, 0x2011, 2},
436 EAWEntry{.ambiguous, 0x2013, 4},
437 EAWEntry{.neutral, 0x2017, 1},
438 EAWEntry{.ambiguous, 0x2018, 2},
439 EAWEntry{.neutral, 0x201a, 2},
440 EAWEntry{.ambiguous, 0x201c, 2},
441 EAWEntry{.neutral, 0x201e, 2},
442 EAWEntry{.ambiguous, 0x2020, 3},
443 EAWEntry{.neutral, 0x2023, 1},
444 EAWEntry{.ambiguous, 0x2024, 4},
445 EAWEntry{.neutral, 0x2028, 8},
446 EAWEntry{.ambiguous, 0x2030, 1},
447 EAWEntry{.neutral, 0x2031, 1},
448 EAWEntry{.ambiguous, 0x2032, 2},
449 EAWEntry{.neutral, 0x2034, 1},
450 EAWEntry{.ambiguous, 0x2035, 1},
451 EAWEntry{.neutral, 0x2036, 5},
452 EAWEntry{.ambiguous, 0x203b, 1},
453 EAWEntry{.neutral, 0x203c, 2},
454 EAWEntry{.ambiguous, 0x203e, 1},
455 EAWEntry{.neutral, 0x203f, 38},
456 EAWEntry{.neutral, 0x2066, 12},
457 EAWEntry{.ambiguous, 0x2074, 1},
458 EAWEntry{.neutral, 0x2075, 10},
459 EAWEntry{.ambiguous, 0x207f, 1},
460 EAWEntry{.neutral, 0x2080, 1},
461 EAWEntry{.ambiguous, 0x2081, 4},
462 EAWEntry{.neutral, 0x2085, 10},
463 EAWEntry{.neutral, 0x2090, 13},
464 EAWEntry{.neutral, 0x20a0, 9},
465 EAWEntry{.half, 0x20a9, 1},
466 EAWEntry{.neutral, 0x20aa, 2},
467 EAWEntry{.ambiguous, 0x20ac, 1},
468 EAWEntry{.neutral, 0x20ad, 19},
469 EAWEntry{.neutral, 0x20d0, 33},
470 EAWEntry{.neutral, 0x2100, 3},
471 EAWEntry{.ambiguous, 0x2103, 1},
472 EAWEntry{.neutral, 0x2104, 1},
473 EAWEntry{.ambiguous, 0x2105, 1},
474 EAWEntry{.neutral, 0x2106, 3},
475 EAWEntry{.ambiguous, 0x2109, 1},
476 EAWEntry{.neutral, 0x210a, 9},
477 EAWEntry{.ambiguous, 0x2113, 1},
478 EAWEntry{.neutral, 0x2114, 2},
479 EAWEntry{.ambiguous, 0x2116, 1},
480 EAWEntry{.neutral, 0x2117, 10},
481 EAWEntry{.ambiguous, 0x2121, 2},
482 EAWEntry{.neutral, 0x2123, 3},
483 EAWEntry{.ambiguous, 0x2126, 1},
484 EAWEntry{.neutral, 0x2127, 4},
485 EAWEntry{.ambiguous, 0x212b, 1},
486 EAWEntry{.neutral, 0x212c, 39},
487 EAWEntry{.ambiguous, 0x2153, 2},
488 EAWEntry{.neutral, 0x2155, 6},
489 EAWEntry{.ambiguous, 0x215b, 4},
490 EAWEntry{.neutral, 0x215f, 1},
491 EAWEntry{.ambiguous, 0x2160, 12},
492 EAWEntry{.neutral, 0x216c, 4},
493 EAWEntry{.ambiguous, 0x2170, 10},
494 EAWEntry{.neutral, 0x217a, 15},
495 EAWEntry{.ambiguous, 0x2189, 1},
496 EAWEntry{.neutral, 0x218a, 2},
497 EAWEntry{.ambiguous, 0x2190, 10},
498 EAWEntry{.neutral, 0x219a, 30},
499 EAWEntry{.ambiguous, 0x21b8, 2},
500 EAWEntry{.neutral, 0x21ba, 24},
501 EAWEntry{.ambiguous, 0x21d2, 1},
502 EAWEntry{.neutral, 0x21d3, 1},
503 EAWEntry{.ambiguous, 0x21d4, 1},
504 EAWEntry{.neutral, 0x21d5, 18},
505 EAWEntry{.ambiguous, 0x21e7, 1},
506 EAWEntry{.neutral, 0x21e8, 24},
507 EAWEntry{.ambiguous, 0x2200, 1},
508 EAWEntry{.neutral, 0x2201, 1},
509 EAWEntry{.ambiguous, 0x2202, 2},
510 EAWEntry{.neutral, 0x2204, 3},
511 EAWEntry{.ambiguous, 0x2207, 2},
512 EAWEntry{.neutral, 0x2209, 2},
513 EAWEntry{.ambiguous, 0x220b, 1},
514 EAWEntry{.neutral, 0x220c, 3},
515 EAWEntry{.ambiguous, 0x220f, 1},
516 EAWEntry{.neutral, 0x2210, 1},
517 EAWEntry{.ambiguous, 0x2211, 1},
518 EAWEntry{.neutral, 0x2212, 3},
519 EAWEntry{.ambiguous, 0x2215, 1},
520 EAWEntry{.neutral, 0x2216, 4},
521 EAWEntry{.ambiguous, 0x221a, 1},
522 EAWEntry{.neutral, 0x221b, 2},
523 EAWEntry{.ambiguous, 0x221d, 4},
524 EAWEntry{.neutral, 0x2221, 2},
525 EAWEntry{.ambiguous, 0x2223, 1},
526 EAWEntry{.neutral, 0x2224, 1},
527 EAWEntry{.ambiguous, 0x2225, 1},
528 EAWEntry{.neutral, 0x2226, 1},
529 EAWEntry{.ambiguous, 0x2227, 6},
530 EAWEntry{.neutral, 0x222d, 1},
531 EAWEntry{.ambiguous, 0x222e, 1},
532 EAWEntry{.neutral, 0x222f, 5},
533 EAWEntry{.ambiguous, 0x2234, 4},
534 EAWEntry{.neutral, 0x2238, 4},
535 EAWEntry{.ambiguous, 0x223c, 2},
536 EAWEntry{.neutral, 0x223e, 10},
537 EAWEntry{.ambiguous, 0x2248, 1},
538 EAWEntry{.neutral, 0x2249, 3},
539 EAWEntry{.ambiguous, 0x224c, 1},
540 EAWEntry{.neutral, 0x224d, 5},
541 EAWEntry{.ambiguous, 0x2252, 1},
542 EAWEntry{.neutral, 0x2253, 13},
543 EAWEntry{.ambiguous, 0x2260, 2},
544 EAWEntry{.neutral, 0x2262, 2},
545 EAWEntry{.ambiguous, 0x2264, 4},
546 EAWEntry{.neutral, 0x2268, 2},
547 EAWEntry{.ambiguous, 0x226a, 2},
548 EAWEntry{.neutral, 0x226c, 2},
549 EAWEntry{.ambiguous, 0x226e, 2},
550 EAWEntry{.neutral, 0x2270, 18},
551 EAWEntry{.ambiguous, 0x2282, 2},
552 EAWEntry{.neutral, 0x2284, 2},
553 EAWEntry{.ambiguous, 0x2286, 2},
554 EAWEntry{.neutral, 0x2288, 13},
555 EAWEntry{.ambiguous, 0x2295, 1},
556 EAWEntry{.neutral, 0x2296, 3},
557 EAWEntry{.ambiguous, 0x2299, 1},
558 EAWEntry{.neutral, 0x229a, 11},
559 EAWEntry{.ambiguous, 0x22a5, 1},
560 EAWEntry{.neutral, 0x22a6, 25},
561 EAWEntry{.ambiguous, 0x22bf, 1},
562 EAWEntry{.neutral, 0x22c0, 82},
563 EAWEntry{.ambiguous, 0x2312, 1},
564 EAWEntry{.neutral, 0x2313, 7},
565 EAWEntry{.wide, 0x231a, 2},
566 EAWEntry{.neutral, 0x231c, 13},
567 EAWEntry{.wide, 0x2329, 2},
568 EAWEntry{.neutral, 0x232b, 190},
569 EAWEntry{.wide, 0x23e9, 4},
570 EAWEntry{.neutral, 0x23ed, 3},
571 EAWEntry{.wide, 0x23f0, 1},
572 EAWEntry{.neutral, 0x23f1, 2},
573 EAWEntry{.wide, 0x23f3, 1},
574 EAWEntry{.neutral, 0x23f4, 51},
575 EAWEntry{.neutral, 0x2440, 11},
576 EAWEntry{.ambiguous, 0x2460, 138},
577 EAWEntry{.neutral, 0x24ea, 1},
578 EAWEntry{.ambiguous, 0x24eb, 97},
579 EAWEntry{.neutral, 0x254c, 4},
580 EAWEntry{.ambiguous, 0x2550, 36},
581 EAWEntry{.neutral, 0x2574, 12},
582 EAWEntry{.ambiguous, 0x2580, 16},
583 EAWEntry{.neutral, 0x2590, 2},
584 EAWEntry{.ambiguous, 0x2592, 4},
585 EAWEntry{.neutral, 0x2596, 10},
586 EAWEntry{.ambiguous, 0x25a0, 2},
587 EAWEntry{.neutral, 0x25a2, 1},
588 EAWEntry{.ambiguous, 0x25a3, 7},
589 EAWEntry{.neutral, 0x25aa, 8},
590 EAWEntry{.ambiguous, 0x25b2, 2},
591 EAWEntry{.neutral, 0x25b4, 2},
592 EAWEntry{.ambiguous, 0x25b6, 2},
593 EAWEntry{.neutral, 0x25b8, 4},
594 EAWEntry{.ambiguous, 0x25bc, 2},
595 EAWEntry{.neutral, 0x25be, 2},
596 EAWEntry{.ambiguous, 0x25c0, 2},
597 EAWEntry{.neutral, 0x25c2, 4},
598 EAWEntry{.ambiguous, 0x25c6, 3},
599 EAWEntry{.neutral, 0x25c9, 2},
600 EAWEntry{.ambiguous, 0x25cb, 1},
601 EAWEntry{.neutral, 0x25cc, 2},
602 EAWEntry{.ambiguous, 0x25ce, 4},
603 EAWEntry{.neutral, 0x25d2, 16},
604 EAWEntry{.ambiguous, 0x25e2, 4},
605 EAWEntry{.neutral, 0x25e6, 9},
606 EAWEntry{.ambiguous, 0x25ef, 1},
607 EAWEntry{.neutral, 0x25f0, 13},
608 EAWEntry{.wide, 0x25fd, 2},
609 EAWEntry{.neutral, 0x25ff, 6},
610 EAWEntry{.ambiguous, 0x2605, 2},
611 EAWEntry{.neutral, 0x2607, 2},
612 EAWEntry{.ambiguous, 0x2609, 1},
613 EAWEntry{.neutral, 0x260a, 4},
614 EAWEntry{.ambiguous, 0x260e, 2},
615 EAWEntry{.neutral, 0x2610, 4},
616 EAWEntry{.wide, 0x2614, 2},
617 EAWEntry{.neutral, 0x2616, 6},
618 EAWEntry{.ambiguous, 0x261c, 1},
619 EAWEntry{.neutral, 0x261d, 1},
620 EAWEntry{.ambiguous, 0x261e, 1},
621 EAWEntry{.neutral, 0x261f, 33},
622 EAWEntry{.ambiguous, 0x2640, 1},
623 EAWEntry{.neutral, 0x2641, 1},
624 EAWEntry{.ambiguous, 0x2642, 1},
625 EAWEntry{.neutral, 0x2643, 5},
626 EAWEntry{.wide, 0x2648, 12},
627 EAWEntry{.neutral, 0x2654, 12},
628 EAWEntry{.ambiguous, 0x2660, 2},
629 EAWEntry{.neutral, 0x2662, 1},
630 EAWEntry{.ambiguous, 0x2663, 3},
631 EAWEntry{.neutral, 0x2666, 1},
632 EAWEntry{.ambiguous, 0x2667, 4},
633 EAWEntry{.neutral, 0x266b, 1},
634 EAWEntry{.ambiguous, 0x266c, 2},
635 EAWEntry{.neutral, 0x266e, 1},
636 EAWEntry{.ambiguous, 0x266f, 1},
637 EAWEntry{.neutral, 0x2670, 15},
638 EAWEntry{.wide, 0x267f, 1},
639 EAWEntry{.neutral, 0x2680, 19},
640 EAWEntry{.wide, 0x2693, 1},
641 EAWEntry{.neutral, 0x2694, 10},
642 EAWEntry{.ambiguous, 0x269e, 2},
643 EAWEntry{.neutral, 0x26a0, 1},
644 EAWEntry{.wide, 0x26a1, 1},
645 EAWEntry{.neutral, 0x26a2, 8},
646 EAWEntry{.wide, 0x26aa, 2},
647 EAWEntry{.neutral, 0x26ac, 17},
648 EAWEntry{.wide, 0x26bd, 2},
649 EAWEntry{.ambiguous, 0x26bf, 1},
650 EAWEntry{.neutral, 0x26c0, 4},
651 EAWEntry{.wide, 0x26c4, 2},
652 EAWEntry{.ambiguous, 0x26c6, 8},
653 EAWEntry{.wide, 0x26ce, 1},
654 EAWEntry{.ambiguous, 0x26cf, 5},
655 EAWEntry{.wide, 0x26d4, 1},
656 EAWEntry{.ambiguous, 0x26d5, 13},
657 EAWEntry{.neutral, 0x26e2, 1},
658 EAWEntry{.ambiguous, 0x26e3, 1},
659 EAWEntry{.neutral, 0x26e4, 4},
660 EAWEntry{.ambiguous, 0x26e8, 2},
661 EAWEntry{.wide, 0x26ea, 1},
662 EAWEntry{.ambiguous, 0x26eb, 7},
663 EAWEntry{.wide, 0x26f2, 2},
664 EAWEntry{.ambiguous, 0x26f4, 1},
665 EAWEntry{.wide, 0x26f5, 1},
666 EAWEntry{.ambiguous, 0x26f6, 4},
667 EAWEntry{.wide, 0x26fa, 1},
668 EAWEntry{.ambiguous, 0x26fb, 2},
669 EAWEntry{.wide, 0x26fd, 1},
670 EAWEntry{.ambiguous, 0x26fe, 2},
671 EAWEntry{.neutral, 0x2700, 5},
672 EAWEntry{.wide, 0x2705, 1},
673 EAWEntry{.neutral, 0x2706, 4},
674 EAWEntry{.wide, 0x270a, 2},
675 EAWEntry{.neutral, 0x270c, 28},
676 EAWEntry{.wide, 0x2728, 1},
677 EAWEntry{.neutral, 0x2729, 20},
678 EAWEntry{.ambiguous, 0x273d, 1},
679 EAWEntry{.neutral, 0x273e, 14},
680 EAWEntry{.wide, 0x274c, 1},
681 EAWEntry{.neutral, 0x274d, 1},
682 EAWEntry{.wide, 0x274e, 1},
683 EAWEntry{.neutral, 0x274f, 4},
684 EAWEntry{.wide, 0x2753, 3},
685 EAWEntry{.neutral, 0x2756, 1},
686 EAWEntry{.wide, 0x2757, 1},
687 EAWEntry{.neutral, 0x2758, 30},
688 EAWEntry{.ambiguous, 0x2776, 10},
689 EAWEntry{.neutral, 0x2780, 21},
690 EAWEntry{.wide, 0x2795, 3},
691 EAWEntry{.neutral, 0x2798, 24},
692 EAWEntry{.wide, 0x27b0, 1},
693 EAWEntry{.neutral, 0x27b1, 14},
694 EAWEntry{.wide, 0x27bf, 1},
695 EAWEntry{.neutral, 0x27c0, 38},
696 EAWEntry{.narrow, 0x27e6, 8},
697 EAWEntry{.neutral, 0x27ee, 407},
698 EAWEntry{.narrow, 0x2985, 2},
699 EAWEntry{.neutral, 0x2987, 404},
700 EAWEntry{.wide, 0x2b1b, 2},
701 EAWEntry{.neutral, 0x2b1d, 51},
702 EAWEntry{.wide, 0x2b50, 1},
703 EAWEntry{.neutral, 0x2b51, 4},
704 EAWEntry{.wide, 0x2b55, 1},
705 EAWEntry{.ambiguous, 0x2b56, 4},
706 EAWEntry{.neutral, 0x2b5a, 26},
707 EAWEntry{.neutral, 0x2b76, 32},
708 EAWEntry{.neutral, 0x2b97, 152},
709 EAWEntry{.neutral, 0x2c30, 47},
710 EAWEntry{.neutral, 0x2c60, 148},
711 EAWEntry{.neutral, 0x2cf9, 45},
712 EAWEntry{.neutral, 0x2d27, 1},
713 EAWEntry{.neutral, 0x2d2d, 1},
714 EAWEntry{.neutral, 0x2d30, 56},
715 EAWEntry{.neutral, 0x2d6f, 2},
716 EAWEntry{.neutral, 0x2d7f, 24},
717 EAWEntry{.neutral, 0x2da0, 7},
718 EAWEntry{.neutral, 0x2da8, 7},
719 EAWEntry{.neutral, 0x2db0, 7},
720 EAWEntry{.neutral, 0x2db8, 7},
721 EAWEntry{.neutral, 0x2dc0, 7},
722 EAWEntry{.neutral, 0x2dc8, 7},
723 EAWEntry{.neutral, 0x2dd0, 7},
724 EAWEntry{.neutral, 0x2dd8, 7},
725 EAWEntry{.neutral, 0x2de0, 115},
726 EAWEntry{.wide, 0x2e80, 26},
727 EAWEntry{.wide, 0x2e9b, 89},
728 EAWEntry{.wide, 0x2f00, 214},
729 EAWEntry{.wide, 0x2ff0, 12},
730 EAWEntry{.full, 0x3000, 1},
731 EAWEntry{.wide, 0x3001, 62},
732 EAWEntry{.neutral, 0x303f, 1},
733 EAWEntry{.wide, 0x3041, 86},
734 EAWEntry{.wide, 0x3099, 103},
735 EAWEntry{.wide, 0x3105, 43},
736 EAWEntry{.wide, 0x3131, 94},
737 EAWEntry{.wide, 0x3190, 84},
738 EAWEntry{.wide, 0x31f0, 47},
739 EAWEntry{.wide, 0x3220, 40},
740 EAWEntry{.ambiguous, 0x3248, 8},
741 EAWEntry{.wide, 0x3250, 7024},
742 EAWEntry{.neutral, 0x4dc0, 64},
743 EAWEntry{.wide, 0x4e00, 22157},
744 EAWEntry{.wide, 0xa490, 55},
745 EAWEntry{.neutral, 0xa4d0, 348},
746 EAWEntry{.neutral, 0xa640, 184},
747 EAWEntry{.neutral, 0xa700, 192},
748 EAWEntry{.neutral, 0xa7c2, 9},
749 EAWEntry{.neutral, 0xa7f5, 56},
750 EAWEntry{.neutral, 0xa830, 10},
751 EAWEntry{.neutral, 0xa840, 56},
752 EAWEntry{.neutral, 0xa880, 70},
753 EAWEntry{.neutral, 0xa8ce, 12},
754 EAWEntry{.neutral, 0xa8e0, 116},
755 EAWEntry{.neutral, 0xa95f, 1},
756 EAWEntry{.wide, 0xa960, 29},
757 EAWEntry{.neutral, 0xa980, 78},
758 EAWEntry{.neutral, 0xa9cf, 11},
759 EAWEntry{.neutral, 0xa9de, 33},
760 EAWEntry{.neutral, 0xaa00, 55},
761 EAWEntry{.neutral, 0xaa40, 14},
762 EAWEntry{.neutral, 0xaa50, 10},
763 EAWEntry{.neutral, 0xaa5c, 103},
764 EAWEntry{.neutral, 0xaadb, 28},
765 EAWEntry{.neutral, 0xab01, 6},
766 EAWEntry{.neutral, 0xab09, 6},
767 EAWEntry{.neutral, 0xab11, 6},
768 EAWEntry{.neutral, 0xab20, 7},
769 EAWEntry{.neutral, 0xab28, 7},
770 EAWEntry{.neutral, 0xab30, 60},
771 EAWEntry{.neutral, 0xab70, 126},
772 EAWEntry{.neutral, 0xabf0, 10},
773 EAWEntry{.wide, 0xac00, 11172},
774 EAWEntry{.neutral, 0xd7b0, 23},
775 EAWEntry{.neutral, 0xd7cb, 49},
776 EAWEntry{.neutral, 0xd800, 2048},
777 EAWEntry{.ambiguous, 0xe000, 6400},
778 EAWEntry{.wide, 0xf900, 512},
779 EAWEntry{.neutral, 0xfb00, 7},
780 EAWEntry{.neutral, 0xfb13, 5},
781 EAWEntry{.neutral, 0xfb1d, 26},
782 EAWEntry{.neutral, 0xfb38, 5},
783 EAWEntry{.neutral, 0xfb3e, 1},
784 EAWEntry{.neutral, 0xfb40, 2},
785 EAWEntry{.neutral, 0xfb43, 2},
786 EAWEntry{.neutral, 0xfb46, 124},
787 EAWEntry{.neutral, 0xfbd3, 365},
788 EAWEntry{.neutral, 0xfd50, 64},
789 EAWEntry{.neutral, 0xfd92, 54},
790 EAWEntry{.neutral, 0xfdf0, 14},
791 EAWEntry{.ambiguous, 0xfe00, 16},
792 EAWEntry{.wide, 0xfe10, 10},
793 EAWEntry{.neutral, 0xfe20, 16},
794 EAWEntry{.wide, 0xfe30, 35},
795 EAWEntry{.wide, 0xfe54, 19},
796 EAWEntry{.wide, 0xfe68, 4},
797 EAWEntry{.neutral, 0xfe70, 5},
798 EAWEntry{.neutral, 0xfe76, 135},
799 EAWEntry{.neutral, 0xfeff, 1},
800 EAWEntry{.full, 0xff01, 96},
801 EAWEntry{.half, 0xff61, 94},
802 EAWEntry{.half, 0xffc2, 6},
803 EAWEntry{.half, 0xffca, 6},
804 EAWEntry{.half, 0xffd2, 6},
805 EAWEntry{.half, 0xffda, 3},
806 EAWEntry{.full, 0xffe0, 7},
807 EAWEntry{.half, 0xffe8, 7},
808 EAWEntry{.neutral, 0xfff9, 4},
809 EAWEntry{.ambiguous, 0xfffd, 1},
810 EAWEntry{.neutral, 0x10000, 12},
811 EAWEntry{.neutral, 0x1000d, 26},
812 EAWEntry{.neutral, 0x10028, 19},
813 EAWEntry{.neutral, 0x1003c, 2},
814 EAWEntry{.neutral, 0x1003f, 15},
815 EAWEntry{.neutral, 0x10050, 14},
816 EAWEntry{.neutral, 0x10080, 123},
817 EAWEntry{.neutral, 0x10100, 3},
818 EAWEntry{.neutral, 0x10107, 45},
819 EAWEntry{.neutral, 0x10137, 88},
820 EAWEntry{.neutral, 0x10190, 13},
821 EAWEntry{.neutral, 0x101a0, 1},
822 EAWEntry{.neutral, 0x101d0, 46},
823 EAWEntry{.neutral, 0x10280, 29},
824 EAWEntry{.neutral, 0x102a0, 49},
825 EAWEntry{.neutral, 0x102e0, 28},
826 EAWEntry{.neutral, 0x10300, 36},
827 EAWEntry{.neutral, 0x1032d, 30},
828 EAWEntry{.neutral, 0x10350, 43},
829 EAWEntry{.neutral, 0x10380, 30},
830 EAWEntry{.neutral, 0x1039f, 37},
831 EAWEntry{.neutral, 0x103c8, 14},
832 EAWEntry{.neutral, 0x10400, 158},
833 EAWEntry{.neutral, 0x104a0, 10},
834 EAWEntry{.neutral, 0x104b0, 36},
835 EAWEntry{.neutral, 0x104d8, 36},
836 EAWEntry{.neutral, 0x10500, 40},
837 EAWEntry{.neutral, 0x10530, 52},
838 EAWEntry{.neutral, 0x1056f, 1},
839 EAWEntry{.neutral, 0x10600, 311},
840 EAWEntry{.neutral, 0x10740, 22},
841 EAWEntry{.neutral, 0x10760, 8},
842 EAWEntry{.neutral, 0x10800, 6},
843 EAWEntry{.neutral, 0x10808, 1},
844 EAWEntry{.neutral, 0x1080a, 44},
845 EAWEntry{.neutral, 0x10837, 2},
846 EAWEntry{.neutral, 0x1083c, 1},
847 EAWEntry{.neutral, 0x1083f, 23},
848 EAWEntry{.neutral, 0x10857, 72},
849 EAWEntry{.neutral, 0x108a7, 9},
850 EAWEntry{.neutral, 0x108e0, 19},
851 EAWEntry{.neutral, 0x108f4, 2},
852 EAWEntry{.neutral, 0x108fb, 33},
853 EAWEntry{.neutral, 0x1091f, 27},
854 EAWEntry{.neutral, 0x1093f, 1},
855 EAWEntry{.neutral, 0x10980, 56},
856 EAWEntry{.neutral, 0x109bc, 20},
857 EAWEntry{.neutral, 0x109d2, 50},
858 EAWEntry{.neutral, 0x10a05, 2},
859 EAWEntry{.neutral, 0x10a0c, 8},
860 EAWEntry{.neutral, 0x10a15, 3},
861 EAWEntry{.neutral, 0x10a19, 29},
862 EAWEntry{.neutral, 0x10a38, 3},
863 EAWEntry{.neutral, 0x10a3f, 10},
864 EAWEntry{.neutral, 0x10a50, 9},
865 EAWEntry{.neutral, 0x10a60, 64},
866 EAWEntry{.neutral, 0x10ac0, 39},
867 EAWEntry{.neutral, 0x10aeb, 12},
868 EAWEntry{.neutral, 0x10b00, 54},
869 EAWEntry{.neutral, 0x10b39, 29},
870 EAWEntry{.neutral, 0x10b58, 27},
871 EAWEntry{.neutral, 0x10b78, 26},
872 EAWEntry{.neutral, 0x10b99, 4},
873 EAWEntry{.neutral, 0x10ba9, 7},
874 EAWEntry{.neutral, 0x10c00, 73},
875 EAWEntry{.neutral, 0x10c80, 51},
876 EAWEntry{.neutral, 0x10cc0, 51},
877 EAWEntry{.neutral, 0x10cfa, 46},
878 EAWEntry{.neutral, 0x10d30, 10},
879 EAWEntry{.neutral, 0x10e60, 31},
880 EAWEntry{.neutral, 0x10e80, 42},
881 EAWEntry{.neutral, 0x10eab, 3},
882 EAWEntry{.neutral, 0x10eb0, 2},
883 EAWEntry{.neutral, 0x10f00, 40},
884 EAWEntry{.neutral, 0x10f30, 42},
885 EAWEntry{.neutral, 0x10fb0, 28},
886 EAWEntry{.neutral, 0x10fe0, 23},
887 EAWEntry{.neutral, 0x11000, 78},
888 EAWEntry{.neutral, 0x11052, 30},
889 EAWEntry{.neutral, 0x1107f, 67},
890 EAWEntry{.neutral, 0x110cd, 1},
891 EAWEntry{.neutral, 0x110d0, 25},
892 EAWEntry{.neutral, 0x110f0, 10},
893 EAWEntry{.neutral, 0x11100, 53},
894 EAWEntry{.neutral, 0x11136, 18},
895 EAWEntry{.neutral, 0x11150, 39},
896 EAWEntry{.neutral, 0x11180, 96},
897 EAWEntry{.neutral, 0x111e1, 20},
898 EAWEntry{.neutral, 0x11200, 18},
899 EAWEntry{.neutral, 0x11213, 44},
900 EAWEntry{.neutral, 0x11280, 7},
901 EAWEntry{.neutral, 0x11288, 1},
902 EAWEntry{.neutral, 0x1128a, 4},
903 EAWEntry{.neutral, 0x1128f, 15},
904 EAWEntry{.neutral, 0x1129f, 11},
905 EAWEntry{.neutral, 0x112b0, 59},
906 EAWEntry{.neutral, 0x112f0, 10},
907 EAWEntry{.neutral, 0x11300, 4},
908 EAWEntry{.neutral, 0x11305, 8},
909 EAWEntry{.neutral, 0x1130f, 2},
910 EAWEntry{.neutral, 0x11313, 22},
911 EAWEntry{.neutral, 0x1132a, 7},
912 EAWEntry{.neutral, 0x11332, 2},
913 EAWEntry{.neutral, 0x11335, 5},
914 EAWEntry{.neutral, 0x1133b, 10},
915 EAWEntry{.neutral, 0x11347, 2},
916 EAWEntry{.neutral, 0x1134b, 3},
917 EAWEntry{.neutral, 0x11350, 1},
918 EAWEntry{.neutral, 0x11357, 1},
919 EAWEntry{.neutral, 0x1135d, 7},
920 EAWEntry{.neutral, 0x11366, 7},
921 EAWEntry{.neutral, 0x11370, 5},
922 EAWEntry{.neutral, 0x11400, 92},
923 EAWEntry{.neutral, 0x1145d, 5},
924 EAWEntry{.neutral, 0x11480, 72},
925 EAWEntry{.neutral, 0x114d0, 10},
926 EAWEntry{.neutral, 0x11580, 54},
927 EAWEntry{.neutral, 0x115b8, 38},
928 EAWEntry{.neutral, 0x11600, 69},
929 EAWEntry{.neutral, 0x11650, 10},
930 EAWEntry{.neutral, 0x11660, 13},
931 EAWEntry{.neutral, 0x11680, 57},
932 EAWEntry{.neutral, 0x116c0, 10},
933 EAWEntry{.neutral, 0x11700, 27},
934 EAWEntry{.neutral, 0x1171d, 15},
935 EAWEntry{.neutral, 0x11730, 16},
936 EAWEntry{.neutral, 0x11800, 60},
937 EAWEntry{.neutral, 0x118a0, 83},
938 EAWEntry{.neutral, 0x118ff, 8},
939 EAWEntry{.neutral, 0x11909, 1},
940 EAWEntry{.neutral, 0x1190c, 8},
941 EAWEntry{.neutral, 0x11915, 2},
942 EAWEntry{.neutral, 0x11918, 30},
943 EAWEntry{.neutral, 0x11937, 2},
944 EAWEntry{.neutral, 0x1193b, 12},
945 EAWEntry{.neutral, 0x11950, 10},
946 EAWEntry{.neutral, 0x119a0, 8},
947 EAWEntry{.neutral, 0x119aa, 46},
948 EAWEntry{.neutral, 0x119da, 11},
949 EAWEntry{.neutral, 0x11a00, 72},
950 EAWEntry{.neutral, 0x11a50, 83},
951 EAWEntry{.neutral, 0x11ac0, 57},
952 EAWEntry{.neutral, 0x11c00, 9},
953 EAWEntry{.neutral, 0x11c0a, 45},
954 EAWEntry{.neutral, 0x11c38, 14},
955 EAWEntry{.neutral, 0x11c50, 29},
956 EAWEntry{.neutral, 0x11c70, 32},
957 EAWEntry{.neutral, 0x11c92, 22},
958 EAWEntry{.neutral, 0x11ca9, 14},
959 EAWEntry{.neutral, 0x11d00, 7},
960 EAWEntry{.neutral, 0x11d08, 2},
961 EAWEntry{.neutral, 0x11d0b, 44},
962 EAWEntry{.neutral, 0x11d3a, 1},
963 EAWEntry{.neutral, 0x11d3c, 2},
964 EAWEntry{.neutral, 0x11d3f, 9},
965 EAWEntry{.neutral, 0x11d50, 10},
966 EAWEntry{.neutral, 0x11d60, 6},
967 EAWEntry{.neutral, 0x11d67, 2},
968 EAWEntry{.neutral, 0x11d6a, 37},
969 EAWEntry{.neutral, 0x11d90, 2},
970 EAWEntry{.neutral, 0x11d93, 6},
971 EAWEntry{.neutral, 0x11da0, 10},
972 EAWEntry{.neutral, 0x11ee0, 25},
973 EAWEntry{.neutral, 0x11fb0, 1},
974 EAWEntry{.neutral, 0x11fc0, 50},
975 EAWEntry{.neutral, 0x11fff, 923},
976 EAWEntry{.neutral, 0x12400, 111},
977 EAWEntry{.neutral, 0x12470, 5},
978 EAWEntry{.neutral, 0x12480, 196},
979 EAWEntry{.neutral, 0x13000, 1071},
980 EAWEntry{.neutral, 0x13430, 9},
981 EAWEntry{.neutral, 0x14400, 583},
982 EAWEntry{.neutral, 0x16800, 569},
983 EAWEntry{.neutral, 0x16a40, 31},
984 EAWEntry{.neutral, 0x16a60, 10},
985 EAWEntry{.neutral, 0x16a6e, 2},
986 EAWEntry{.neutral, 0x16ad0, 30},
987 EAWEntry{.neutral, 0x16af0, 6},
988 EAWEntry{.neutral, 0x16b00, 70},
989 EAWEntry{.neutral, 0x16b50, 10},
990 EAWEntry{.neutral, 0x16b5b, 7},
991 EAWEntry{.neutral, 0x16b63, 21},
992 EAWEntry{.neutral, 0x16b7d, 19},
993 EAWEntry{.neutral, 0x16e40, 91},
994 EAWEntry{.neutral, 0x16f00, 75},
995 EAWEntry{.neutral, 0x16f4f, 57},
996 EAWEntry{.neutral, 0x16f8f, 17},
997 EAWEntry{.wide, 0x16fe0, 5},
998 EAWEntry{.wide, 0x16ff0, 2},
999 EAWEntry{.wide, 0x17000, 6136},
1000 EAWEntry{.wide, 0x18800, 1238},
1001 EAWEntry{.wide, 0x18d00, 9},
1002 EAWEntry{.wide, 0x1b000, 287},
1003 EAWEntry{.wide, 0x1b150, 3},
1004 EAWEntry{.wide, 0x1b164, 4},
1005 EAWEntry{.wide, 0x1b170, 396},
1006 EAWEntry{.neutral, 0x1bc00, 107},
1007 EAWEntry{.neutral, 0x1bc70, 13},
1008 EAWEntry{.neutral, 0x1bc80, 9},
1009 EAWEntry{.neutral, 0x1bc90, 10},
1010 EAWEntry{.neutral, 0x1bc9c, 8},
1011 EAWEntry{.neutral, 0x1d000, 246},
1012 EAWEntry{.neutral, 0x1d100, 39},
1013 EAWEntry{.neutral, 0x1d129, 192},
1014 EAWEntry{.neutral, 0x1d200, 70},
1015 EAWEntry{.neutral, 0x1d2e0, 20},
1016 EAWEntry{.neutral, 0x1d300, 87},
1017 EAWEntry{.neutral, 0x1d360, 25},
1018 EAWEntry{.neutral, 0x1d400, 85},
1019 EAWEntry{.neutral, 0x1d456, 71},
1020 EAWEntry{.neutral, 0x1d49e, 2},
1021 EAWEntry{.neutral, 0x1d4a2, 1},
1022 EAWEntry{.neutral, 0x1d4a5, 2},
1023 EAWEntry{.neutral, 0x1d4a9, 4},
1024 EAWEntry{.neutral, 0x1d4ae, 12},
1025 EAWEntry{.neutral, 0x1d4bb, 1},
1026 EAWEntry{.neutral, 0x1d4bd, 7},
1027 EAWEntry{.neutral, 0x1d4c5, 65},
1028 EAWEntry{.neutral, 0x1d507, 4},
1029 EAWEntry{.neutral, 0x1d50d, 8},
1030 EAWEntry{.neutral, 0x1d516, 7},
1031 EAWEntry{.neutral, 0x1d51e, 28},
1032 EAWEntry{.neutral, 0x1d53b, 4},
1033 EAWEntry{.neutral, 0x1d540, 5},
1034 EAWEntry{.neutral, 0x1d546, 1},
1035 EAWEntry{.neutral, 0x1d54a, 7},
1036 EAWEntry{.neutral, 0x1d552, 340},
1037 EAWEntry{.neutral, 0x1d6a8, 292},
1038 EAWEntry{.neutral, 0x1d7ce, 702},
1039 EAWEntry{.neutral, 0x1da9b, 5},
1040 EAWEntry{.neutral, 0x1daa1, 15},
1041 EAWEntry{.neutral, 0x1e000, 7},
1042 EAWEntry{.neutral, 0x1e008, 17},
1043 EAWEntry{.neutral, 0x1e01b, 7},
1044 EAWEntry{.neutral, 0x1e023, 2},
1045 EAWEntry{.neutral, 0x1e026, 5},
1046 EAWEntry{.neutral, 0x1e100, 45},
1047 EAWEntry{.neutral, 0x1e130, 14},
1048 EAWEntry{.neutral, 0x1e140, 10},
1049 EAWEntry{.neutral, 0x1e14e, 2},
1050 EAWEntry{.neutral, 0x1e2c0, 58},
1051 EAWEntry{.neutral, 0x1e2ff, 1},
1052 EAWEntry{.neutral, 0x1e800, 197},
1053 EAWEntry{.neutral, 0x1e8c7, 16},
1054 EAWEntry{.neutral, 0x1e900, 76},
1055 EAWEntry{.neutral, 0x1e950, 10},
1056 EAWEntry{.neutral, 0x1e95e, 2},
1057 EAWEntry{.neutral, 0x1ec71, 68},
1058 EAWEntry{.neutral, 0x1ed01, 61},
1059 EAWEntry{.neutral, 0x1ee00, 4},
1060 EAWEntry{.neutral, 0x1ee05, 27},
1061 EAWEntry{.neutral, 0x1ee21, 2},
1062 EAWEntry{.neutral, 0x1ee24, 1},
1063 EAWEntry{.neutral, 0x1ee27, 1},
1064 EAWEntry{.neutral, 0x1ee29, 10},
1065 EAWEntry{.neutral, 0x1ee34, 4},
1066 EAWEntry{.neutral, 0x1ee39, 1},
1067 EAWEntry{.neutral, 0x1ee3b, 1},
1068 EAWEntry{.neutral, 0x1ee42, 1},
1069 EAWEntry{.neutral, 0x1ee47, 1},
1070 EAWEntry{.neutral, 0x1ee49, 1},
1071 EAWEntry{.neutral, 0x1ee4b, 1},
1072 EAWEntry{.neutral, 0x1ee4d, 3},
1073 EAWEntry{.neutral, 0x1ee51, 2},
1074 EAWEntry{.neutral, 0x1ee54, 1},
1075 EAWEntry{.neutral, 0x1ee57, 1},
1076 EAWEntry{.neutral, 0x1ee59, 1},
1077 EAWEntry{.neutral, 0x1ee5b, 1},
1078 EAWEntry{.neutral, 0x1ee5d, 1},
1079 EAWEntry{.neutral, 0x1ee5f, 1},
1080 EAWEntry{.neutral, 0x1ee61, 2},
1081 EAWEntry{.neutral, 0x1ee64, 1},
1082 EAWEntry{.neutral, 0x1ee67, 4},
1083 EAWEntry{.neutral, 0x1ee6c, 7},
1084 EAWEntry{.neutral, 0x1ee74, 4},
1085 EAWEntry{.neutral, 0x1ee79, 4},
1086 EAWEntry{.neutral, 0x1ee7e, 1},
1087 EAWEntry{.neutral, 0x1ee80, 10},
1088 EAWEntry{.neutral, 0x1ee8b, 17},
1089 EAWEntry{.neutral, 0x1eea1, 3},
1090 EAWEntry{.neutral, 0x1eea5, 5},
1091 EAWEntry{.neutral, 0x1eeab, 17},
1092 EAWEntry{.neutral, 0x1eef0, 2},
1093 EAWEntry{.neutral, 0x1f000, 4},
1094 EAWEntry{.wide, 0x1f004, 1},
1095 EAWEntry{.neutral, 0x1f005, 39},
1096 EAWEntry{.neutral, 0x1f030, 100},
1097 EAWEntry{.neutral, 0x1f0a0, 15},
1098 EAWEntry{.neutral, 0x1f0b1, 15},
1099 EAWEntry{.neutral, 0x1f0c1, 14},
1100 EAWEntry{.wide, 0x1f0cf, 1},
1101 EAWEntry{.neutral, 0x1f0d1, 37},
1102 EAWEntry{.ambiguous, 0x1f100, 11},
1103 EAWEntry{.neutral, 0x1f10b, 5},
1104 EAWEntry{.ambiguous, 0x1f110, 30},
1105 EAWEntry{.neutral, 0x1f12e, 2},
1106 EAWEntry{.ambiguous, 0x1f130, 58},
1107 EAWEntry{.neutral, 0x1f16a, 6},
1108 EAWEntry{.ambiguous, 0x1f170, 30},
1109 EAWEntry{.wide, 0x1f18e, 1},
1110 EAWEntry{.ambiguous, 0x1f18f, 2},
1111 EAWEntry{.wide, 0x1f191, 10},
1112 EAWEntry{.ambiguous, 0x1f19b, 18},
1113 EAWEntry{.neutral, 0x1f1ad, 1},
1114 EAWEntry{.neutral, 0x1f1e6, 26},
1115 EAWEntry{.wide, 0x1f200, 3},
1116 EAWEntry{.wide, 0x1f210, 44},
1117 EAWEntry{.wide, 0x1f240, 9},
1118 EAWEntry{.wide, 0x1f250, 2},
1119 EAWEntry{.wide, 0x1f260, 6},
1120 EAWEntry{.wide, 0x1f300, 33},
1121 EAWEntry{.neutral, 0x1f321, 12},
1122 EAWEntry{.wide, 0x1f32d, 9},
1123 EAWEntry{.neutral, 0x1f336, 1},
1124 EAWEntry{.wide, 0x1f337, 70},
1125 EAWEntry{.neutral, 0x1f37d, 1},
1126 EAWEntry{.wide, 0x1f37e, 22},
1127 EAWEntry{.neutral, 0x1f394, 12},
1128 EAWEntry{.wide, 0x1f3a0, 43},
1129 EAWEntry{.neutral, 0x1f3cb, 4},
1130 EAWEntry{.wide, 0x1f3cf, 5},
1131 EAWEntry{.neutral, 0x1f3d4, 12},
1132 EAWEntry{.wide, 0x1f3e0, 17},
1133 EAWEntry{.neutral, 0x1f3f1, 3},
1134 EAWEntry{.wide, 0x1f3f4, 1},
1135 EAWEntry{.neutral, 0x1f3f5, 3},
1136 EAWEntry{.wide, 0x1f3f8, 71},
1137 EAWEntry{.neutral, 0x1f43f, 1},
1138 EAWEntry{.wide, 0x1f440, 1},
1139 EAWEntry{.neutral, 0x1f441, 1},
1140 EAWEntry{.wide, 0x1f442, 187},
1141 EAWEntry{.neutral, 0x1f4fd, 2},
1142 EAWEntry{.wide, 0x1f4ff, 63},
1143 EAWEntry{.neutral, 0x1f53e, 13},
1144 EAWEntry{.wide, 0x1f54b, 4},
1145 EAWEntry{.neutral, 0x1f54f, 1},
1146 EAWEntry{.wide, 0x1f550, 24},
1147 EAWEntry{.neutral, 0x1f568, 18},
1148 EAWEntry{.wide, 0x1f57a, 1},
1149 EAWEntry{.neutral, 0x1f57b, 26},
1150 EAWEntry{.wide, 0x1f595, 2},
1151 EAWEntry{.neutral, 0x1f597, 13},
1152 EAWEntry{.wide, 0x1f5a4, 1},
1153 EAWEntry{.neutral, 0x1f5a5, 86},
1154 EAWEntry{.wide, 0x1f5fb, 85},
1155 EAWEntry{.neutral, 0x1f650, 48},
1156 EAWEntry{.wide, 0x1f680, 70},
1157 EAWEntry{.neutral, 0x1f6c6, 6},
1158 EAWEntry{.wide, 0x1f6cc, 1},
1159 EAWEntry{.neutral, 0x1f6cd, 3},
1160 EAWEntry{.wide, 0x1f6d0, 3},
1161 EAWEntry{.neutral, 0x1f6d3, 2},
1162 EAWEntry{.wide, 0x1f6d5, 3},
1163 EAWEntry{.neutral, 0x1f6e0, 11},
1164 EAWEntry{.wide, 0x1f6eb, 2},
1165 EAWEntry{.neutral, 0x1f6f0, 4},
1166 EAWEntry{.wide, 0x1f6f4, 9},
1167 EAWEntry{.neutral, 0x1f700, 116},
1168 EAWEntry{.neutral, 0x1f780, 89},
1169 EAWEntry{.wide, 0x1f7e0, 12},
1170 EAWEntry{.neutral, 0x1f800, 12},
1171 EAWEntry{.neutral, 0x1f810, 56},
1172 EAWEntry{.neutral, 0x1f850, 10},
1173 EAWEntry{.neutral, 0x1f860, 40},
1174 EAWEntry{.neutral, 0x1f890, 30},
1175 EAWEntry{.neutral, 0x1f8b0, 2},
1176 EAWEntry{.neutral, 0x1f900, 12},
1177 EAWEntry{.wide, 0x1f90c, 47},
1178 EAWEntry{.neutral, 0x1f93b, 1},
1179 EAWEntry{.wide, 0x1f93c, 10},
1180 EAWEntry{.neutral, 0x1f946, 1},
1181 EAWEntry{.wide, 0x1f947, 50},
1182 EAWEntry{.wide, 0x1f97a, 82},
1183 EAWEntry{.wide, 0x1f9cd, 51},
1184 EAWEntry{.neutral, 0x1fa00, 84},
1185 EAWEntry{.neutral, 0x1fa60, 14},
1186 EAWEntry{.wide, 0x1fa70, 5},
1187 EAWEntry{.wide, 0x1fa78, 3},
1188 EAWEntry{.wide, 0x1fa80, 7},
1189 EAWEntry{.wide, 0x1fa90, 25},
1190 EAWEntry{.wide, 0x1fab0, 7},
1191 EAWEntry{.wide, 0x1fac0, 3},
1192 EAWEntry{.wide, 0x1fad0, 7},
1193 EAWEntry{.neutral, 0x1fb00, 147},
1194 EAWEntry{.neutral, 0x1fb94, 55},
1195 EAWEntry{.neutral, 0x1fbf0, 10},
1196 EAWEntry{.wide, 0x20000, 65534},
1197 EAWEntry{.wide, 0x30000, 65534},
1198 EAWEntry{.neutral, 0xe0001, 1},
1199 EAWEntry{.neutral, 0xe0020, 96},
1200 EAWEntry{.ambiguous, 0xe0100, 240},
1201 EAWEntry{.ambiguous, 0xf0000, 65534},
1202 EAWEntry{.ambiguous, 0x100000, 65534},
1203]
1204