1 | // Generated by scripts/mapgen.py |
2 | // 2023-08-14 |
3 | |
4 | use super::fold::Fold; |
5 | |
6 | use core::char; |
7 | pub fn lookup(orig: char) -> Fold { |
8 | // The code below is is intended to reduce the binary size from that of a simple 1:1 lookup table. |
9 | // It exploits two facts: |
10 | // 1. Many of the mappings form ranges mapped to other ranges. |
11 | // To benefit from this, we match on ranges instead of single numbers. |
12 | // Alone, this decreases the binary size but results in performance regression over the simple 1:1 lookup. |
13 | // 2. Most of the mappings are from relatively small chars (0 - 0x2CFF). |
14 | // To benefit from this, we use a jump table based on the high byte for this range. |
15 | // This more than recovers the performance regression from exploting fact #1, at least in the tested benchmark. |
16 | let from = orig as u32; |
17 | if from <= 0x2CFF { |
18 | let from = from as u16; |
19 | let high_byte = (from >> 8) as u8; |
20 | let low_byte = (from & 0xff) as u8; |
21 | let single_char: u16 = match high_byte { |
22 | 0x00 => match low_byte { |
23 | x @ _ if 0x41 <= x && x <= 0x5a => from.wrapping_add(0x0020), |
24 | 0xb5 => 0x03bc, |
25 | x @ _ if 0xc0 <= x && x <= 0xd6 => from.wrapping_add(0x0020), |
26 | x @ _ if 0xd8 <= x && x <= 0xde => from.wrapping_add(0x0020), |
27 | 0xdf => return Fold::Two(' \u{0073}' , ' \u{0073}' ), |
28 | _ => from, |
29 | }, |
30 | 0x01 => match low_byte { |
31 | x @ _ if x <= 0x2e => from | 1, |
32 | 0x30 => return Fold::Two(' \u{0069}' , ' \u{0307}' ), |
33 | x @ _ if 0x32 <= x && x <= 0x36 => from | 1, |
34 | x @ _ if 0x39 <= x && x <= 0x47 => (from + 1) & !1, |
35 | 0x49 => return Fold::Two(' \u{02bc}' , ' \u{006e}' ), |
36 | x @ _ if 0x4a <= x && x <= 0x76 => from | 1, |
37 | 0x78 => 0x00ff, |
38 | x @ _ if 0x79 <= x && x <= 0x7d => (from + 1) & !1, |
39 | 0x7f => 0x0073, |
40 | 0x81 => 0x0253, |
41 | x @ _ if 0x82 <= x && x <= 0x84 => from | 1, |
42 | 0x86 => 0x0254, |
43 | 0x87 => 0x0188, |
44 | x @ _ if 0x89 <= x && x <= 0x8a => from.wrapping_add(0x00cd), |
45 | 0x8b => 0x018c, |
46 | 0x8e => 0x01dd, |
47 | 0x8f => 0x0259, |
48 | 0x90 => 0x025b, |
49 | 0x91 => 0x0192, |
50 | 0x93 => 0x0260, |
51 | 0x94 => 0x0263, |
52 | 0x96 => 0x0269, |
53 | 0x97 => 0x0268, |
54 | 0x98 => 0x0199, |
55 | 0x9c => 0x026f, |
56 | 0x9d => 0x0272, |
57 | 0x9f => 0x0275, |
58 | x @ _ if 0xa0 <= x && x <= 0xa4 => from | 1, |
59 | 0xa6 => 0x0280, |
60 | 0xa7 => 0x01a8, |
61 | 0xa9 => 0x0283, |
62 | 0xac => 0x01ad, |
63 | 0xae => 0x0288, |
64 | 0xaf => 0x01b0, |
65 | x @ _ if 0xb1 <= x && x <= 0xb2 => from.wrapping_add(0x00d9), |
66 | x @ _ if 0xb3 <= x && x <= 0xb5 => (from + 1) & !1, |
67 | 0xb7 => 0x0292, |
68 | 0xb8 => 0x01b9, |
69 | 0xbc => 0x01bd, |
70 | 0xc4 => 0x01c6, |
71 | 0xc5 => 0x01c6, |
72 | 0xc7 => 0x01c9, |
73 | 0xc8 => 0x01c9, |
74 | 0xca => 0x01cc, |
75 | x @ _ if 0xcb <= x && x <= 0xdb => (from + 1) & !1, |
76 | x @ _ if 0xde <= x && x <= 0xee => from | 1, |
77 | 0xf0 => return Fold::Two(' \u{006a}' , ' \u{030c}' ), |
78 | 0xf1 => 0x01f3, |
79 | x @ _ if 0xf2 <= x && x <= 0xf4 => from | 1, |
80 | 0xf6 => 0x0195, |
81 | 0xf7 => 0x01bf, |
82 | x @ _ if 0xf8 <= x => from | 1, |
83 | _ => from, |
84 | }, |
85 | 0x02 => match low_byte { |
86 | x @ _ if x <= 0x1e => from | 1, |
87 | 0x20 => 0x019e, |
88 | x @ _ if 0x22 <= x && x <= 0x32 => from | 1, |
89 | 0x3a => 0x2c65, |
90 | 0x3b => 0x023c, |
91 | 0x3d => 0x019a, |
92 | 0x3e => 0x2c66, |
93 | 0x41 => 0x0242, |
94 | 0x43 => 0x0180, |
95 | 0x44 => 0x0289, |
96 | 0x45 => 0x028c, |
97 | x @ _ if 0x46 <= x && x <= 0x4e => from | 1, |
98 | _ => from, |
99 | }, |
100 | 0x03 => match low_byte { |
101 | 0x45 => 0x03b9, |
102 | x @ _ if 0x70 <= x && x <= 0x72 => from | 1, |
103 | 0x76 => 0x0377, |
104 | 0x7f => 0x03f3, |
105 | 0x86 => 0x03ac, |
106 | x @ _ if 0x88 <= x && x <= 0x8a => from.wrapping_add(0x0025), |
107 | 0x8c => 0x03cc, |
108 | x @ _ if 0x8e <= x && x <= 0x8f => from.wrapping_add(0x003f), |
109 | 0x90 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0301}' ), |
110 | x @ _ if 0x91 <= x && x <= 0xa1 => from.wrapping_add(0x0020), |
111 | x @ _ if 0xa3 <= x && x <= 0xab => from.wrapping_add(0x0020), |
112 | 0xb0 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0301}' ), |
113 | 0xc2 => 0x03c3, |
114 | 0xcf => 0x03d7, |
115 | 0xd0 => 0x03b2, |
116 | 0xd1 => 0x03b8, |
117 | 0xd5 => 0x03c6, |
118 | 0xd6 => 0x03c0, |
119 | x @ _ if 0xd8 <= x && x <= 0xee => from | 1, |
120 | 0xf0 => 0x03ba, |
121 | 0xf1 => 0x03c1, |
122 | 0xf4 => 0x03b8, |
123 | 0xf5 => 0x03b5, |
124 | 0xf7 => 0x03f8, |
125 | 0xf9 => 0x03f2, |
126 | 0xfa => 0x03fb, |
127 | x @ _ if 0xfd <= x => from.wrapping_sub(0x0082), |
128 | _ => from, |
129 | }, |
130 | 0x04 => match low_byte { |
131 | x @ _ if x <= 0x0f => from.wrapping_add(0x0050), |
132 | x @ _ if 0x10 <= x && x <= 0x2f => from.wrapping_add(0x0020), |
133 | x @ _ if 0x60 <= x && x <= 0x80 => from | 1, |
134 | x @ _ if 0x8a <= x && x <= 0xbe => from | 1, |
135 | 0xc0 => 0x04cf, |
136 | x @ _ if 0xc1 <= x && x <= 0xcd => (from + 1) & !1, |
137 | x @ _ if 0xd0 <= x => from | 1, |
138 | _ => from, |
139 | }, |
140 | 0x05 => match low_byte { |
141 | x @ _ if x <= 0x2e => from | 1, |
142 | x @ _ if 0x31 <= x && x <= 0x56 => from.wrapping_add(0x0030), |
143 | 0x87 => return Fold::Two(' \u{0565}' , ' \u{0582}' ), |
144 | _ => from, |
145 | }, |
146 | 0x06 => from, |
147 | 0x07 => from, |
148 | 0x08 => from, |
149 | 0x09 => from, |
150 | 0x0a => from, |
151 | 0x0b => from, |
152 | 0x0c => from, |
153 | 0x0d => from, |
154 | 0x0e => from, |
155 | 0x0f => from, |
156 | 0x10 => match low_byte { |
157 | x @ _ if 0xa0 <= x && x <= 0xc5 => from.wrapping_add(0x1c60), |
158 | 0xc7 => 0x2d27, |
159 | 0xcd => 0x2d2d, |
160 | _ => from, |
161 | }, |
162 | 0x11 => from, |
163 | 0x12 => from, |
164 | 0x13 => match low_byte { |
165 | x @ _ if 0xf8 <= x && x <= 0xfd => from.wrapping_sub(0x0008), |
166 | _ => from, |
167 | }, |
168 | 0x14 => from, |
169 | 0x15 => from, |
170 | 0x16 => from, |
171 | 0x17 => from, |
172 | 0x18 => from, |
173 | 0x19 => from, |
174 | 0x1a => from, |
175 | 0x1b => from, |
176 | 0x1c => match low_byte { |
177 | 0x80 => 0x0432, |
178 | 0x81 => 0x0434, |
179 | 0x82 => 0x043e, |
180 | x @ _ if 0x83 <= x && x <= 0x84 => from.wrapping_sub(0x1842), |
181 | 0x85 => 0x0442, |
182 | 0x86 => 0x044a, |
183 | 0x87 => 0x0463, |
184 | 0x88 => 0xa64b, |
185 | x @ _ if 0x90 <= x && x <= 0xba => from.wrapping_sub(0x0bc0), |
186 | x @ _ if 0xbd <= x && x <= 0xbf => from.wrapping_sub(0x0bc0), |
187 | _ => from, |
188 | }, |
189 | 0x1d => from, |
190 | 0x1e => match low_byte { |
191 | x @ _ if x <= 0x94 => from | 1, |
192 | 0x96 => return Fold::Two(' \u{0068}' , ' \u{0331}' ), |
193 | 0x97 => return Fold::Two(' \u{0074}' , ' \u{0308}' ), |
194 | 0x98 => return Fold::Two(' \u{0077}' , ' \u{030a}' ), |
195 | 0x99 => return Fold::Two(' \u{0079}' , ' \u{030a}' ), |
196 | 0x9a => return Fold::Two(' \u{0061}' , ' \u{02be}' ), |
197 | 0x9b => 0x1e61, |
198 | 0x9e => return Fold::Two(' \u{0073}' , ' \u{0073}' ), |
199 | x @ _ if 0xa0 <= x && x <= 0xfe => from | 1, |
200 | _ => from, |
201 | }, |
202 | 0x1f => match low_byte { |
203 | x @ _ if 0x08 <= x && x <= 0x0f => from.wrapping_sub(0x0008), |
204 | x @ _ if 0x18 <= x && x <= 0x1d => from.wrapping_sub(0x0008), |
205 | x @ _ if 0x28 <= x && x <= 0x2f => from.wrapping_sub(0x0008), |
206 | x @ _ if 0x38 <= x && x <= 0x3f => from.wrapping_sub(0x0008), |
207 | x @ _ if 0x48 <= x && x <= 0x4d => from.wrapping_sub(0x0008), |
208 | 0x50 => return Fold::Two(' \u{03c5}' , ' \u{0313}' ), |
209 | 0x52 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0300}' ), |
210 | 0x54 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0301}' ), |
211 | 0x56 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0342}' ), |
212 | x @ _ if 0x59 <= x && x <= 0x5f => { |
213 | if (from & 1) == 1 { |
214 | from.wrapping_sub(0x0008) |
215 | } else { |
216 | from |
217 | } |
218 | } |
219 | x @ _ if 0x68 <= x && x <= 0x6f => from.wrapping_sub(0x0008), |
220 | 0x80 => return Fold::Two(' \u{1f00}' , ' \u{03b9}' ), |
221 | 0x81 => return Fold::Two(' \u{1f01}' , ' \u{03b9}' ), |
222 | 0x82 => return Fold::Two(' \u{1f02}' , ' \u{03b9}' ), |
223 | 0x83 => return Fold::Two(' \u{1f03}' , ' \u{03b9}' ), |
224 | 0x84 => return Fold::Two(' \u{1f04}' , ' \u{03b9}' ), |
225 | 0x85 => return Fold::Two(' \u{1f05}' , ' \u{03b9}' ), |
226 | 0x86 => return Fold::Two(' \u{1f06}' , ' \u{03b9}' ), |
227 | 0x87 => return Fold::Two(' \u{1f07}' , ' \u{03b9}' ), |
228 | 0x88 => return Fold::Two(' \u{1f00}' , ' \u{03b9}' ), |
229 | 0x89 => return Fold::Two(' \u{1f01}' , ' \u{03b9}' ), |
230 | 0x8a => return Fold::Two(' \u{1f02}' , ' \u{03b9}' ), |
231 | 0x8b => return Fold::Two(' \u{1f03}' , ' \u{03b9}' ), |
232 | 0x8c => return Fold::Two(' \u{1f04}' , ' \u{03b9}' ), |
233 | 0x8d => return Fold::Two(' \u{1f05}' , ' \u{03b9}' ), |
234 | 0x8e => return Fold::Two(' \u{1f06}' , ' \u{03b9}' ), |
235 | 0x8f => return Fold::Two(' \u{1f07}' , ' \u{03b9}' ), |
236 | 0x90 => return Fold::Two(' \u{1f20}' , ' \u{03b9}' ), |
237 | 0x91 => return Fold::Two(' \u{1f21}' , ' \u{03b9}' ), |
238 | 0x92 => return Fold::Two(' \u{1f22}' , ' \u{03b9}' ), |
239 | 0x93 => return Fold::Two(' \u{1f23}' , ' \u{03b9}' ), |
240 | 0x94 => return Fold::Two(' \u{1f24}' , ' \u{03b9}' ), |
241 | 0x95 => return Fold::Two(' \u{1f25}' , ' \u{03b9}' ), |
242 | 0x96 => return Fold::Two(' \u{1f26}' , ' \u{03b9}' ), |
243 | 0x97 => return Fold::Two(' \u{1f27}' , ' \u{03b9}' ), |
244 | 0x98 => return Fold::Two(' \u{1f20}' , ' \u{03b9}' ), |
245 | 0x99 => return Fold::Two(' \u{1f21}' , ' \u{03b9}' ), |
246 | 0x9a => return Fold::Two(' \u{1f22}' , ' \u{03b9}' ), |
247 | 0x9b => return Fold::Two(' \u{1f23}' , ' \u{03b9}' ), |
248 | 0x9c => return Fold::Two(' \u{1f24}' , ' \u{03b9}' ), |
249 | 0x9d => return Fold::Two(' \u{1f25}' , ' \u{03b9}' ), |
250 | 0x9e => return Fold::Two(' \u{1f26}' , ' \u{03b9}' ), |
251 | 0x9f => return Fold::Two(' \u{1f27}' , ' \u{03b9}' ), |
252 | 0xa0 => return Fold::Two(' \u{1f60}' , ' \u{03b9}' ), |
253 | 0xa1 => return Fold::Two(' \u{1f61}' , ' \u{03b9}' ), |
254 | 0xa2 => return Fold::Two(' \u{1f62}' , ' \u{03b9}' ), |
255 | 0xa3 => return Fold::Two(' \u{1f63}' , ' \u{03b9}' ), |
256 | 0xa4 => return Fold::Two(' \u{1f64}' , ' \u{03b9}' ), |
257 | 0xa5 => return Fold::Two(' \u{1f65}' , ' \u{03b9}' ), |
258 | 0xa6 => return Fold::Two(' \u{1f66}' , ' \u{03b9}' ), |
259 | 0xa7 => return Fold::Two(' \u{1f67}' , ' \u{03b9}' ), |
260 | 0xa8 => return Fold::Two(' \u{1f60}' , ' \u{03b9}' ), |
261 | 0xa9 => return Fold::Two(' \u{1f61}' , ' \u{03b9}' ), |
262 | 0xaa => return Fold::Two(' \u{1f62}' , ' \u{03b9}' ), |
263 | 0xab => return Fold::Two(' \u{1f63}' , ' \u{03b9}' ), |
264 | 0xac => return Fold::Two(' \u{1f64}' , ' \u{03b9}' ), |
265 | 0xad => return Fold::Two(' \u{1f65}' , ' \u{03b9}' ), |
266 | 0xae => return Fold::Two(' \u{1f66}' , ' \u{03b9}' ), |
267 | 0xaf => return Fold::Two(' \u{1f67}' , ' \u{03b9}' ), |
268 | 0xb2 => return Fold::Two(' \u{1f70}' , ' \u{03b9}' ), |
269 | 0xb3 => return Fold::Two(' \u{03b1}' , ' \u{03b9}' ), |
270 | 0xb4 => return Fold::Two(' \u{03ac}' , ' \u{03b9}' ), |
271 | 0xb6 => return Fold::Two(' \u{03b1}' , ' \u{0342}' ), |
272 | 0xb7 => return Fold::Three(' \u{03b1}' , ' \u{0342}' , ' \u{03b9}' ), |
273 | x @ _ if 0xb8 <= x && x <= 0xb9 => from.wrapping_sub(0x0008), |
274 | x @ _ if 0xba <= x && x <= 0xbb => from.wrapping_sub(0x004a), |
275 | 0xbc => return Fold::Two(' \u{03b1}' , ' \u{03b9}' ), |
276 | 0xbe => 0x03b9, |
277 | 0xc2 => return Fold::Two(' \u{1f74}' , ' \u{03b9}' ), |
278 | 0xc3 => return Fold::Two(' \u{03b7}' , ' \u{03b9}' ), |
279 | 0xc4 => return Fold::Two(' \u{03ae}' , ' \u{03b9}' ), |
280 | 0xc6 => return Fold::Two(' \u{03b7}' , ' \u{0342}' ), |
281 | 0xc7 => return Fold::Three(' \u{03b7}' , ' \u{0342}' , ' \u{03b9}' ), |
282 | x @ _ if 0xc8 <= x && x <= 0xcb => from.wrapping_sub(0x0056), |
283 | 0xcc => return Fold::Two(' \u{03b7}' , ' \u{03b9}' ), |
284 | 0xd2 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0300}' ), |
285 | 0xd3 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0301}' ), |
286 | 0xd6 => return Fold::Two(' \u{03b9}' , ' \u{0342}' ), |
287 | 0xd7 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0342}' ), |
288 | x @ _ if 0xd8 <= x && x <= 0xd9 => from.wrapping_sub(0x0008), |
289 | x @ _ if 0xda <= x && x <= 0xdb => from.wrapping_sub(0x0064), |
290 | 0xe2 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0300}' ), |
291 | 0xe3 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0301}' ), |
292 | 0xe4 => return Fold::Two(' \u{03c1}' , ' \u{0313}' ), |
293 | 0xe6 => return Fold::Two(' \u{03c5}' , ' \u{0342}' ), |
294 | 0xe7 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0342}' ), |
295 | x @ _ if 0xe8 <= x && x <= 0xe9 => from.wrapping_sub(0x0008), |
296 | x @ _ if 0xea <= x && x <= 0xeb => from.wrapping_sub(0x0070), |
297 | 0xec => 0x1fe5, |
298 | 0xf2 => return Fold::Two(' \u{1f7c}' , ' \u{03b9}' ), |
299 | 0xf3 => return Fold::Two(' \u{03c9}' , ' \u{03b9}' ), |
300 | 0xf4 => return Fold::Two(' \u{03ce}' , ' \u{03b9}' ), |
301 | 0xf6 => return Fold::Two(' \u{03c9}' , ' \u{0342}' ), |
302 | 0xf7 => return Fold::Three(' \u{03c9}' , ' \u{0342}' , ' \u{03b9}' ), |
303 | x @ _ if 0xf8 <= x && x <= 0xf9 => from.wrapping_sub(0x0080), |
304 | x @ _ if 0xfa <= x && x <= 0xfb => from.wrapping_sub(0x007e), |
305 | 0xfc => return Fold::Two(' \u{03c9}' , ' \u{03b9}' ), |
306 | _ => from, |
307 | }, |
308 | 0x20 => from, |
309 | 0x21 => match low_byte { |
310 | 0x26 => 0x03c9, |
311 | 0x2a => 0x006b, |
312 | 0x2b => 0x00e5, |
313 | 0x32 => 0x214e, |
314 | x @ _ if 0x60 <= x && x <= 0x6f => from.wrapping_add(0x0010), |
315 | 0x83 => 0x2184, |
316 | _ => from, |
317 | }, |
318 | 0x22 => from, |
319 | 0x23 => from, |
320 | 0x24 => match low_byte { |
321 | x @ _ if 0xb6 <= x && x <= 0xcf => from.wrapping_add(0x001a), |
322 | _ => from, |
323 | }, |
324 | 0x25 => from, |
325 | 0x26 => from, |
326 | 0x27 => from, |
327 | 0x28 => from, |
328 | 0x29 => from, |
329 | 0x2a => from, |
330 | 0x2b => from, |
331 | 0x2c => match low_byte { |
332 | x @ _ if x <= 0x2f => from.wrapping_add(0x0030), |
333 | 0x60 => 0x2c61, |
334 | 0x62 => 0x026b, |
335 | 0x63 => 0x1d7d, |
336 | 0x64 => 0x027d, |
337 | x @ _ if 0x67 <= x && x <= 0x6b => (from + 1) & !1, |
338 | 0x6d => 0x0251, |
339 | 0x6e => 0x0271, |
340 | 0x6f => 0x0250, |
341 | 0x70 => 0x0252, |
342 | 0x72 => 0x2c73, |
343 | 0x75 => 0x2c76, |
344 | x @ _ if 0x7e <= x && x <= 0x7f => from.wrapping_sub(0x2a3f), |
345 | x @ _ if 0x80 <= x && x <= 0xe2 => from | 1, |
346 | x @ _ if 0xeb <= x && x <= 0xed => (from + 1) & !1, |
347 | 0xf2 => 0x2cf3, |
348 | _ => from, |
349 | }, |
350 | _ => from, |
351 | }; |
352 | Fold::One(char::from_u32(single_char as u32).unwrap_or(orig)) |
353 | } else { |
354 | let single_char: u32 = match from { |
355 | x @ _ if 0xa640 <= x && x <= 0xa66c => from | 1, |
356 | x @ _ if 0xa680 <= x && x <= 0xa69a => from | 1, |
357 | x @ _ if 0xa722 <= x && x <= 0xa72e => from | 1, |
358 | x @ _ if 0xa732 <= x && x <= 0xa76e => from | 1, |
359 | x @ _ if 0xa779 <= x && x <= 0xa77b => (from + 1) & !1, |
360 | 0xa77d => 0x1d79, |
361 | x @ _ if 0xa77e <= x && x <= 0xa786 => from | 1, |
362 | 0xa78b => 0xa78c, |
363 | 0xa78d => 0x0265, |
364 | x @ _ if 0xa790 <= x && x <= 0xa792 => from | 1, |
365 | x @ _ if 0xa796 <= x && x <= 0xa7a8 => from | 1, |
366 | 0xa7aa => 0x0266, |
367 | 0xa7ab => 0x025c, |
368 | 0xa7ac => 0x0261, |
369 | 0xa7ad => 0x026c, |
370 | 0xa7ae => 0x026a, |
371 | 0xa7b0 => 0x029e, |
372 | 0xa7b1 => 0x0287, |
373 | 0xa7b2 => 0x029d, |
374 | 0xa7b3 => 0xab53, |
375 | x @ _ if 0xa7b4 <= x && x <= 0xa7c2 => from | 1, |
376 | 0xa7c4 => 0xa794, |
377 | 0xa7c5 => 0x0282, |
378 | 0xa7c6 => 0x1d8e, |
379 | x @ _ if 0xa7c7 <= x && x <= 0xa7c9 => (from + 1) & !1, |
380 | 0xa7d0 => 0xa7d1, |
381 | x @ _ if 0xa7d6 <= x && x <= 0xa7d8 => from | 1, |
382 | 0xa7f5 => 0xa7f6, |
383 | x @ _ if 0xab70 <= x && x <= 0xabbf => from.wrapping_sub(0x97d0), |
384 | 0xfb00 => return Fold::Two(' \u{0066}' , ' \u{0066}' ), |
385 | 0xfb01 => return Fold::Two(' \u{0066}' , ' \u{0069}' ), |
386 | 0xfb02 => return Fold::Two(' \u{0066}' , ' \u{006c}' ), |
387 | 0xfb03 => return Fold::Three(' \u{0066}' , ' \u{0066}' , ' \u{0069}' ), |
388 | 0xfb04 => return Fold::Three(' \u{0066}' , ' \u{0066}' , ' \u{006c}' ), |
389 | 0xfb05 => return Fold::Two(' \u{0073}' , ' \u{0074}' ), |
390 | 0xfb06 => return Fold::Two(' \u{0073}' , ' \u{0074}' ), |
391 | 0xfb13 => return Fold::Two(' \u{0574}' , ' \u{0576}' ), |
392 | 0xfb14 => return Fold::Two(' \u{0574}' , ' \u{0565}' ), |
393 | 0xfb15 => return Fold::Two(' \u{0574}' , ' \u{056b}' ), |
394 | 0xfb16 => return Fold::Two(' \u{057e}' , ' \u{0576}' ), |
395 | 0xfb17 => return Fold::Two(' \u{0574}' , ' \u{056d}' ), |
396 | x @ _ if 0xff21 <= x && x <= 0xff3a => from.wrapping_add(0x0020), |
397 | x @ _ if 0x10400 <= x && x <= 0x10427 => from.wrapping_add(0x0028), |
398 | x @ _ if 0x104b0 <= x && x <= 0x104d3 => from.wrapping_add(0x0028), |
399 | x @ _ if 0x10570 <= x && x <= 0x1057a => from.wrapping_add(0x0027), |
400 | x @ _ if 0x1057c <= x && x <= 0x1058a => from.wrapping_add(0x0027), |
401 | x @ _ if 0x1058c <= x && x <= 0x10592 => from.wrapping_add(0x0027), |
402 | x @ _ if 0x10594 <= x && x <= 0x10595 => from.wrapping_add(0x0027), |
403 | x @ _ if 0x10c80 <= x && x <= 0x10cb2 => from.wrapping_add(0x0040), |
404 | x @ _ if 0x118a0 <= x && x <= 0x118bf => from.wrapping_add(0x0020), |
405 | x @ _ if 0x16e40 <= x && x <= 0x16e5f => from.wrapping_add(0x0020), |
406 | x @ _ if 0x1e900 <= x && x <= 0x1e921 => from.wrapping_add(0x0022), |
407 | _ => from, |
408 | }; |
409 | Fold::One(char::from_u32(single_char).unwrap_or(orig)) |
410 | } |
411 | } |
412 | |
413 | #[test ] |
414 | fn lookup_consistency() { |
415 | fn lookup_naive(orig: char) -> Fold { |
416 | let single_char = match orig as u32 { |
417 | 0x0041 => 0x0061, |
418 | 0x0042 => 0x0062, |
419 | 0x0043 => 0x0063, |
420 | 0x0044 => 0x0064, |
421 | 0x0045 => 0x0065, |
422 | 0x0046 => 0x0066, |
423 | 0x0047 => 0x0067, |
424 | 0x0048 => 0x0068, |
425 | 0x0049 => 0x0069, |
426 | 0x004a => 0x006a, |
427 | 0x004b => 0x006b, |
428 | 0x004c => 0x006c, |
429 | 0x004d => 0x006d, |
430 | 0x004e => 0x006e, |
431 | 0x004f => 0x006f, |
432 | 0x0050 => 0x0070, |
433 | 0x0051 => 0x0071, |
434 | 0x0052 => 0x0072, |
435 | 0x0053 => 0x0073, |
436 | 0x0054 => 0x0074, |
437 | 0x0055 => 0x0075, |
438 | 0x0056 => 0x0076, |
439 | 0x0057 => 0x0077, |
440 | 0x0058 => 0x0078, |
441 | 0x0059 => 0x0079, |
442 | 0x005a => 0x007a, |
443 | 0x00b5 => 0x03bc, |
444 | 0x00c0 => 0x00e0, |
445 | 0x00c1 => 0x00e1, |
446 | 0x00c2 => 0x00e2, |
447 | 0x00c3 => 0x00e3, |
448 | 0x00c4 => 0x00e4, |
449 | 0x00c5 => 0x00e5, |
450 | 0x00c6 => 0x00e6, |
451 | 0x00c7 => 0x00e7, |
452 | 0x00c8 => 0x00e8, |
453 | 0x00c9 => 0x00e9, |
454 | 0x00ca => 0x00ea, |
455 | 0x00cb => 0x00eb, |
456 | 0x00cc => 0x00ec, |
457 | 0x00cd => 0x00ed, |
458 | 0x00ce => 0x00ee, |
459 | 0x00cf => 0x00ef, |
460 | 0x00d0 => 0x00f0, |
461 | 0x00d1 => 0x00f1, |
462 | 0x00d2 => 0x00f2, |
463 | 0x00d3 => 0x00f3, |
464 | 0x00d4 => 0x00f4, |
465 | 0x00d5 => 0x00f5, |
466 | 0x00d6 => 0x00f6, |
467 | 0x00d8 => 0x00f8, |
468 | 0x00d9 => 0x00f9, |
469 | 0x00da => 0x00fa, |
470 | 0x00db => 0x00fb, |
471 | 0x00dc => 0x00fc, |
472 | 0x00dd => 0x00fd, |
473 | 0x00de => 0x00fe, |
474 | 0x00df => return Fold::Two(' \u{0073}' , ' \u{0073}' ), |
475 | 0x0100 => 0x0101, |
476 | 0x0102 => 0x0103, |
477 | 0x0104 => 0x0105, |
478 | 0x0106 => 0x0107, |
479 | 0x0108 => 0x0109, |
480 | 0x010a => 0x010b, |
481 | 0x010c => 0x010d, |
482 | 0x010e => 0x010f, |
483 | 0x0110 => 0x0111, |
484 | 0x0112 => 0x0113, |
485 | 0x0114 => 0x0115, |
486 | 0x0116 => 0x0117, |
487 | 0x0118 => 0x0119, |
488 | 0x011a => 0x011b, |
489 | 0x011c => 0x011d, |
490 | 0x011e => 0x011f, |
491 | 0x0120 => 0x0121, |
492 | 0x0122 => 0x0123, |
493 | 0x0124 => 0x0125, |
494 | 0x0126 => 0x0127, |
495 | 0x0128 => 0x0129, |
496 | 0x012a => 0x012b, |
497 | 0x012c => 0x012d, |
498 | 0x012e => 0x012f, |
499 | 0x0130 => return Fold::Two(' \u{0069}' , ' \u{0307}' ), |
500 | 0x0132 => 0x0133, |
501 | 0x0134 => 0x0135, |
502 | 0x0136 => 0x0137, |
503 | 0x0139 => 0x013a, |
504 | 0x013b => 0x013c, |
505 | 0x013d => 0x013e, |
506 | 0x013f => 0x0140, |
507 | 0x0141 => 0x0142, |
508 | 0x0143 => 0x0144, |
509 | 0x0145 => 0x0146, |
510 | 0x0147 => 0x0148, |
511 | 0x0149 => return Fold::Two(' \u{02bc}' , ' \u{006e}' ), |
512 | 0x014a => 0x014b, |
513 | 0x014c => 0x014d, |
514 | 0x014e => 0x014f, |
515 | 0x0150 => 0x0151, |
516 | 0x0152 => 0x0153, |
517 | 0x0154 => 0x0155, |
518 | 0x0156 => 0x0157, |
519 | 0x0158 => 0x0159, |
520 | 0x015a => 0x015b, |
521 | 0x015c => 0x015d, |
522 | 0x015e => 0x015f, |
523 | 0x0160 => 0x0161, |
524 | 0x0162 => 0x0163, |
525 | 0x0164 => 0x0165, |
526 | 0x0166 => 0x0167, |
527 | 0x0168 => 0x0169, |
528 | 0x016a => 0x016b, |
529 | 0x016c => 0x016d, |
530 | 0x016e => 0x016f, |
531 | 0x0170 => 0x0171, |
532 | 0x0172 => 0x0173, |
533 | 0x0174 => 0x0175, |
534 | 0x0176 => 0x0177, |
535 | 0x0178 => 0x00ff, |
536 | 0x0179 => 0x017a, |
537 | 0x017b => 0x017c, |
538 | 0x017d => 0x017e, |
539 | 0x017f => 0x0073, |
540 | 0x0181 => 0x0253, |
541 | 0x0182 => 0x0183, |
542 | 0x0184 => 0x0185, |
543 | 0x0186 => 0x0254, |
544 | 0x0187 => 0x0188, |
545 | 0x0189 => 0x0256, |
546 | 0x018a => 0x0257, |
547 | 0x018b => 0x018c, |
548 | 0x018e => 0x01dd, |
549 | 0x018f => 0x0259, |
550 | 0x0190 => 0x025b, |
551 | 0x0191 => 0x0192, |
552 | 0x0193 => 0x0260, |
553 | 0x0194 => 0x0263, |
554 | 0x0196 => 0x0269, |
555 | 0x0197 => 0x0268, |
556 | 0x0198 => 0x0199, |
557 | 0x019c => 0x026f, |
558 | 0x019d => 0x0272, |
559 | 0x019f => 0x0275, |
560 | 0x01a0 => 0x01a1, |
561 | 0x01a2 => 0x01a3, |
562 | 0x01a4 => 0x01a5, |
563 | 0x01a6 => 0x0280, |
564 | 0x01a7 => 0x01a8, |
565 | 0x01a9 => 0x0283, |
566 | 0x01ac => 0x01ad, |
567 | 0x01ae => 0x0288, |
568 | 0x01af => 0x01b0, |
569 | 0x01b1 => 0x028a, |
570 | 0x01b2 => 0x028b, |
571 | 0x01b3 => 0x01b4, |
572 | 0x01b5 => 0x01b6, |
573 | 0x01b7 => 0x0292, |
574 | 0x01b8 => 0x01b9, |
575 | 0x01bc => 0x01bd, |
576 | 0x01c4 => 0x01c6, |
577 | 0x01c5 => 0x01c6, |
578 | 0x01c7 => 0x01c9, |
579 | 0x01c8 => 0x01c9, |
580 | 0x01ca => 0x01cc, |
581 | 0x01cb => 0x01cc, |
582 | 0x01cd => 0x01ce, |
583 | 0x01cf => 0x01d0, |
584 | 0x01d1 => 0x01d2, |
585 | 0x01d3 => 0x01d4, |
586 | 0x01d5 => 0x01d6, |
587 | 0x01d7 => 0x01d8, |
588 | 0x01d9 => 0x01da, |
589 | 0x01db => 0x01dc, |
590 | 0x01de => 0x01df, |
591 | 0x01e0 => 0x01e1, |
592 | 0x01e2 => 0x01e3, |
593 | 0x01e4 => 0x01e5, |
594 | 0x01e6 => 0x01e7, |
595 | 0x01e8 => 0x01e9, |
596 | 0x01ea => 0x01eb, |
597 | 0x01ec => 0x01ed, |
598 | 0x01ee => 0x01ef, |
599 | 0x01f0 => return Fold::Two(' \u{006a}' , ' \u{030c}' ), |
600 | 0x01f1 => 0x01f3, |
601 | 0x01f2 => 0x01f3, |
602 | 0x01f4 => 0x01f5, |
603 | 0x01f6 => 0x0195, |
604 | 0x01f7 => 0x01bf, |
605 | 0x01f8 => 0x01f9, |
606 | 0x01fa => 0x01fb, |
607 | 0x01fc => 0x01fd, |
608 | 0x01fe => 0x01ff, |
609 | 0x0200 => 0x0201, |
610 | 0x0202 => 0x0203, |
611 | 0x0204 => 0x0205, |
612 | 0x0206 => 0x0207, |
613 | 0x0208 => 0x0209, |
614 | 0x020a => 0x020b, |
615 | 0x020c => 0x020d, |
616 | 0x020e => 0x020f, |
617 | 0x0210 => 0x0211, |
618 | 0x0212 => 0x0213, |
619 | 0x0214 => 0x0215, |
620 | 0x0216 => 0x0217, |
621 | 0x0218 => 0x0219, |
622 | 0x021a => 0x021b, |
623 | 0x021c => 0x021d, |
624 | 0x021e => 0x021f, |
625 | 0x0220 => 0x019e, |
626 | 0x0222 => 0x0223, |
627 | 0x0224 => 0x0225, |
628 | 0x0226 => 0x0227, |
629 | 0x0228 => 0x0229, |
630 | 0x022a => 0x022b, |
631 | 0x022c => 0x022d, |
632 | 0x022e => 0x022f, |
633 | 0x0230 => 0x0231, |
634 | 0x0232 => 0x0233, |
635 | 0x023a => 0x2c65, |
636 | 0x023b => 0x023c, |
637 | 0x023d => 0x019a, |
638 | 0x023e => 0x2c66, |
639 | 0x0241 => 0x0242, |
640 | 0x0243 => 0x0180, |
641 | 0x0244 => 0x0289, |
642 | 0x0245 => 0x028c, |
643 | 0x0246 => 0x0247, |
644 | 0x0248 => 0x0249, |
645 | 0x024a => 0x024b, |
646 | 0x024c => 0x024d, |
647 | 0x024e => 0x024f, |
648 | 0x0345 => 0x03b9, |
649 | 0x0370 => 0x0371, |
650 | 0x0372 => 0x0373, |
651 | 0x0376 => 0x0377, |
652 | 0x037f => 0x03f3, |
653 | 0x0386 => 0x03ac, |
654 | 0x0388 => 0x03ad, |
655 | 0x0389 => 0x03ae, |
656 | 0x038a => 0x03af, |
657 | 0x038c => 0x03cc, |
658 | 0x038e => 0x03cd, |
659 | 0x038f => 0x03ce, |
660 | 0x0390 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0301}' ), |
661 | 0x0391 => 0x03b1, |
662 | 0x0392 => 0x03b2, |
663 | 0x0393 => 0x03b3, |
664 | 0x0394 => 0x03b4, |
665 | 0x0395 => 0x03b5, |
666 | 0x0396 => 0x03b6, |
667 | 0x0397 => 0x03b7, |
668 | 0x0398 => 0x03b8, |
669 | 0x0399 => 0x03b9, |
670 | 0x039a => 0x03ba, |
671 | 0x039b => 0x03bb, |
672 | 0x039c => 0x03bc, |
673 | 0x039d => 0x03bd, |
674 | 0x039e => 0x03be, |
675 | 0x039f => 0x03bf, |
676 | 0x03a0 => 0x03c0, |
677 | 0x03a1 => 0x03c1, |
678 | 0x03a3 => 0x03c3, |
679 | 0x03a4 => 0x03c4, |
680 | 0x03a5 => 0x03c5, |
681 | 0x03a6 => 0x03c6, |
682 | 0x03a7 => 0x03c7, |
683 | 0x03a8 => 0x03c8, |
684 | 0x03a9 => 0x03c9, |
685 | 0x03aa => 0x03ca, |
686 | 0x03ab => 0x03cb, |
687 | 0x03b0 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0301}' ), |
688 | 0x03c2 => 0x03c3, |
689 | 0x03cf => 0x03d7, |
690 | 0x03d0 => 0x03b2, |
691 | 0x03d1 => 0x03b8, |
692 | 0x03d5 => 0x03c6, |
693 | 0x03d6 => 0x03c0, |
694 | 0x03d8 => 0x03d9, |
695 | 0x03da => 0x03db, |
696 | 0x03dc => 0x03dd, |
697 | 0x03de => 0x03df, |
698 | 0x03e0 => 0x03e1, |
699 | 0x03e2 => 0x03e3, |
700 | 0x03e4 => 0x03e5, |
701 | 0x03e6 => 0x03e7, |
702 | 0x03e8 => 0x03e9, |
703 | 0x03ea => 0x03eb, |
704 | 0x03ec => 0x03ed, |
705 | 0x03ee => 0x03ef, |
706 | 0x03f0 => 0x03ba, |
707 | 0x03f1 => 0x03c1, |
708 | 0x03f4 => 0x03b8, |
709 | 0x03f5 => 0x03b5, |
710 | 0x03f7 => 0x03f8, |
711 | 0x03f9 => 0x03f2, |
712 | 0x03fa => 0x03fb, |
713 | 0x03fd => 0x037b, |
714 | 0x03fe => 0x037c, |
715 | 0x03ff => 0x037d, |
716 | 0x0400 => 0x0450, |
717 | 0x0401 => 0x0451, |
718 | 0x0402 => 0x0452, |
719 | 0x0403 => 0x0453, |
720 | 0x0404 => 0x0454, |
721 | 0x0405 => 0x0455, |
722 | 0x0406 => 0x0456, |
723 | 0x0407 => 0x0457, |
724 | 0x0408 => 0x0458, |
725 | 0x0409 => 0x0459, |
726 | 0x040a => 0x045a, |
727 | 0x040b => 0x045b, |
728 | 0x040c => 0x045c, |
729 | 0x040d => 0x045d, |
730 | 0x040e => 0x045e, |
731 | 0x040f => 0x045f, |
732 | 0x0410 => 0x0430, |
733 | 0x0411 => 0x0431, |
734 | 0x0412 => 0x0432, |
735 | 0x0413 => 0x0433, |
736 | 0x0414 => 0x0434, |
737 | 0x0415 => 0x0435, |
738 | 0x0416 => 0x0436, |
739 | 0x0417 => 0x0437, |
740 | 0x0418 => 0x0438, |
741 | 0x0419 => 0x0439, |
742 | 0x041a => 0x043a, |
743 | 0x041b => 0x043b, |
744 | 0x041c => 0x043c, |
745 | 0x041d => 0x043d, |
746 | 0x041e => 0x043e, |
747 | 0x041f => 0x043f, |
748 | 0x0420 => 0x0440, |
749 | 0x0421 => 0x0441, |
750 | 0x0422 => 0x0442, |
751 | 0x0423 => 0x0443, |
752 | 0x0424 => 0x0444, |
753 | 0x0425 => 0x0445, |
754 | 0x0426 => 0x0446, |
755 | 0x0427 => 0x0447, |
756 | 0x0428 => 0x0448, |
757 | 0x0429 => 0x0449, |
758 | 0x042a => 0x044a, |
759 | 0x042b => 0x044b, |
760 | 0x042c => 0x044c, |
761 | 0x042d => 0x044d, |
762 | 0x042e => 0x044e, |
763 | 0x042f => 0x044f, |
764 | 0x0460 => 0x0461, |
765 | 0x0462 => 0x0463, |
766 | 0x0464 => 0x0465, |
767 | 0x0466 => 0x0467, |
768 | 0x0468 => 0x0469, |
769 | 0x046a => 0x046b, |
770 | 0x046c => 0x046d, |
771 | 0x046e => 0x046f, |
772 | 0x0470 => 0x0471, |
773 | 0x0472 => 0x0473, |
774 | 0x0474 => 0x0475, |
775 | 0x0476 => 0x0477, |
776 | 0x0478 => 0x0479, |
777 | 0x047a => 0x047b, |
778 | 0x047c => 0x047d, |
779 | 0x047e => 0x047f, |
780 | 0x0480 => 0x0481, |
781 | 0x048a => 0x048b, |
782 | 0x048c => 0x048d, |
783 | 0x048e => 0x048f, |
784 | 0x0490 => 0x0491, |
785 | 0x0492 => 0x0493, |
786 | 0x0494 => 0x0495, |
787 | 0x0496 => 0x0497, |
788 | 0x0498 => 0x0499, |
789 | 0x049a => 0x049b, |
790 | 0x049c => 0x049d, |
791 | 0x049e => 0x049f, |
792 | 0x04a0 => 0x04a1, |
793 | 0x04a2 => 0x04a3, |
794 | 0x04a4 => 0x04a5, |
795 | 0x04a6 => 0x04a7, |
796 | 0x04a8 => 0x04a9, |
797 | 0x04aa => 0x04ab, |
798 | 0x04ac => 0x04ad, |
799 | 0x04ae => 0x04af, |
800 | 0x04b0 => 0x04b1, |
801 | 0x04b2 => 0x04b3, |
802 | 0x04b4 => 0x04b5, |
803 | 0x04b6 => 0x04b7, |
804 | 0x04b8 => 0x04b9, |
805 | 0x04ba => 0x04bb, |
806 | 0x04bc => 0x04bd, |
807 | 0x04be => 0x04bf, |
808 | 0x04c0 => 0x04cf, |
809 | 0x04c1 => 0x04c2, |
810 | 0x04c3 => 0x04c4, |
811 | 0x04c5 => 0x04c6, |
812 | 0x04c7 => 0x04c8, |
813 | 0x04c9 => 0x04ca, |
814 | 0x04cb => 0x04cc, |
815 | 0x04cd => 0x04ce, |
816 | 0x04d0 => 0x04d1, |
817 | 0x04d2 => 0x04d3, |
818 | 0x04d4 => 0x04d5, |
819 | 0x04d6 => 0x04d7, |
820 | 0x04d8 => 0x04d9, |
821 | 0x04da => 0x04db, |
822 | 0x04dc => 0x04dd, |
823 | 0x04de => 0x04df, |
824 | 0x04e0 => 0x04e1, |
825 | 0x04e2 => 0x04e3, |
826 | 0x04e4 => 0x04e5, |
827 | 0x04e6 => 0x04e7, |
828 | 0x04e8 => 0x04e9, |
829 | 0x04ea => 0x04eb, |
830 | 0x04ec => 0x04ed, |
831 | 0x04ee => 0x04ef, |
832 | 0x04f0 => 0x04f1, |
833 | 0x04f2 => 0x04f3, |
834 | 0x04f4 => 0x04f5, |
835 | 0x04f6 => 0x04f7, |
836 | 0x04f8 => 0x04f9, |
837 | 0x04fa => 0x04fb, |
838 | 0x04fc => 0x04fd, |
839 | 0x04fe => 0x04ff, |
840 | 0x0500 => 0x0501, |
841 | 0x0502 => 0x0503, |
842 | 0x0504 => 0x0505, |
843 | 0x0506 => 0x0507, |
844 | 0x0508 => 0x0509, |
845 | 0x050a => 0x050b, |
846 | 0x050c => 0x050d, |
847 | 0x050e => 0x050f, |
848 | 0x0510 => 0x0511, |
849 | 0x0512 => 0x0513, |
850 | 0x0514 => 0x0515, |
851 | 0x0516 => 0x0517, |
852 | 0x0518 => 0x0519, |
853 | 0x051a => 0x051b, |
854 | 0x051c => 0x051d, |
855 | 0x051e => 0x051f, |
856 | 0x0520 => 0x0521, |
857 | 0x0522 => 0x0523, |
858 | 0x0524 => 0x0525, |
859 | 0x0526 => 0x0527, |
860 | 0x0528 => 0x0529, |
861 | 0x052a => 0x052b, |
862 | 0x052c => 0x052d, |
863 | 0x052e => 0x052f, |
864 | 0x0531 => 0x0561, |
865 | 0x0532 => 0x0562, |
866 | 0x0533 => 0x0563, |
867 | 0x0534 => 0x0564, |
868 | 0x0535 => 0x0565, |
869 | 0x0536 => 0x0566, |
870 | 0x0537 => 0x0567, |
871 | 0x0538 => 0x0568, |
872 | 0x0539 => 0x0569, |
873 | 0x053a => 0x056a, |
874 | 0x053b => 0x056b, |
875 | 0x053c => 0x056c, |
876 | 0x053d => 0x056d, |
877 | 0x053e => 0x056e, |
878 | 0x053f => 0x056f, |
879 | 0x0540 => 0x0570, |
880 | 0x0541 => 0x0571, |
881 | 0x0542 => 0x0572, |
882 | 0x0543 => 0x0573, |
883 | 0x0544 => 0x0574, |
884 | 0x0545 => 0x0575, |
885 | 0x0546 => 0x0576, |
886 | 0x0547 => 0x0577, |
887 | 0x0548 => 0x0578, |
888 | 0x0549 => 0x0579, |
889 | 0x054a => 0x057a, |
890 | 0x054b => 0x057b, |
891 | 0x054c => 0x057c, |
892 | 0x054d => 0x057d, |
893 | 0x054e => 0x057e, |
894 | 0x054f => 0x057f, |
895 | 0x0550 => 0x0580, |
896 | 0x0551 => 0x0581, |
897 | 0x0552 => 0x0582, |
898 | 0x0553 => 0x0583, |
899 | 0x0554 => 0x0584, |
900 | 0x0555 => 0x0585, |
901 | 0x0556 => 0x0586, |
902 | 0x0587 => return Fold::Two(' \u{0565}' , ' \u{0582}' ), |
903 | 0x10a0 => 0x2d00, |
904 | 0x10a1 => 0x2d01, |
905 | 0x10a2 => 0x2d02, |
906 | 0x10a3 => 0x2d03, |
907 | 0x10a4 => 0x2d04, |
908 | 0x10a5 => 0x2d05, |
909 | 0x10a6 => 0x2d06, |
910 | 0x10a7 => 0x2d07, |
911 | 0x10a8 => 0x2d08, |
912 | 0x10a9 => 0x2d09, |
913 | 0x10aa => 0x2d0a, |
914 | 0x10ab => 0x2d0b, |
915 | 0x10ac => 0x2d0c, |
916 | 0x10ad => 0x2d0d, |
917 | 0x10ae => 0x2d0e, |
918 | 0x10af => 0x2d0f, |
919 | 0x10b0 => 0x2d10, |
920 | 0x10b1 => 0x2d11, |
921 | 0x10b2 => 0x2d12, |
922 | 0x10b3 => 0x2d13, |
923 | 0x10b4 => 0x2d14, |
924 | 0x10b5 => 0x2d15, |
925 | 0x10b6 => 0x2d16, |
926 | 0x10b7 => 0x2d17, |
927 | 0x10b8 => 0x2d18, |
928 | 0x10b9 => 0x2d19, |
929 | 0x10ba => 0x2d1a, |
930 | 0x10bb => 0x2d1b, |
931 | 0x10bc => 0x2d1c, |
932 | 0x10bd => 0x2d1d, |
933 | 0x10be => 0x2d1e, |
934 | 0x10bf => 0x2d1f, |
935 | 0x10c0 => 0x2d20, |
936 | 0x10c1 => 0x2d21, |
937 | 0x10c2 => 0x2d22, |
938 | 0x10c3 => 0x2d23, |
939 | 0x10c4 => 0x2d24, |
940 | 0x10c5 => 0x2d25, |
941 | 0x10c7 => 0x2d27, |
942 | 0x10cd => 0x2d2d, |
943 | 0x13f8 => 0x13f0, |
944 | 0x13f9 => 0x13f1, |
945 | 0x13fa => 0x13f2, |
946 | 0x13fb => 0x13f3, |
947 | 0x13fc => 0x13f4, |
948 | 0x13fd => 0x13f5, |
949 | 0x1c80 => 0x0432, |
950 | 0x1c81 => 0x0434, |
951 | 0x1c82 => 0x043e, |
952 | 0x1c83 => 0x0441, |
953 | 0x1c84 => 0x0442, |
954 | 0x1c85 => 0x0442, |
955 | 0x1c86 => 0x044a, |
956 | 0x1c87 => 0x0463, |
957 | 0x1c88 => 0xa64b, |
958 | 0x1c90 => 0x10d0, |
959 | 0x1c91 => 0x10d1, |
960 | 0x1c92 => 0x10d2, |
961 | 0x1c93 => 0x10d3, |
962 | 0x1c94 => 0x10d4, |
963 | 0x1c95 => 0x10d5, |
964 | 0x1c96 => 0x10d6, |
965 | 0x1c97 => 0x10d7, |
966 | 0x1c98 => 0x10d8, |
967 | 0x1c99 => 0x10d9, |
968 | 0x1c9a => 0x10da, |
969 | 0x1c9b => 0x10db, |
970 | 0x1c9c => 0x10dc, |
971 | 0x1c9d => 0x10dd, |
972 | 0x1c9e => 0x10de, |
973 | 0x1c9f => 0x10df, |
974 | 0x1ca0 => 0x10e0, |
975 | 0x1ca1 => 0x10e1, |
976 | 0x1ca2 => 0x10e2, |
977 | 0x1ca3 => 0x10e3, |
978 | 0x1ca4 => 0x10e4, |
979 | 0x1ca5 => 0x10e5, |
980 | 0x1ca6 => 0x10e6, |
981 | 0x1ca7 => 0x10e7, |
982 | 0x1ca8 => 0x10e8, |
983 | 0x1ca9 => 0x10e9, |
984 | 0x1caa => 0x10ea, |
985 | 0x1cab => 0x10eb, |
986 | 0x1cac => 0x10ec, |
987 | 0x1cad => 0x10ed, |
988 | 0x1cae => 0x10ee, |
989 | 0x1caf => 0x10ef, |
990 | 0x1cb0 => 0x10f0, |
991 | 0x1cb1 => 0x10f1, |
992 | 0x1cb2 => 0x10f2, |
993 | 0x1cb3 => 0x10f3, |
994 | 0x1cb4 => 0x10f4, |
995 | 0x1cb5 => 0x10f5, |
996 | 0x1cb6 => 0x10f6, |
997 | 0x1cb7 => 0x10f7, |
998 | 0x1cb8 => 0x10f8, |
999 | 0x1cb9 => 0x10f9, |
1000 | 0x1cba => 0x10fa, |
1001 | 0x1cbd => 0x10fd, |
1002 | 0x1cbe => 0x10fe, |
1003 | 0x1cbf => 0x10ff, |
1004 | 0x1e00 => 0x1e01, |
1005 | 0x1e02 => 0x1e03, |
1006 | 0x1e04 => 0x1e05, |
1007 | 0x1e06 => 0x1e07, |
1008 | 0x1e08 => 0x1e09, |
1009 | 0x1e0a => 0x1e0b, |
1010 | 0x1e0c => 0x1e0d, |
1011 | 0x1e0e => 0x1e0f, |
1012 | 0x1e10 => 0x1e11, |
1013 | 0x1e12 => 0x1e13, |
1014 | 0x1e14 => 0x1e15, |
1015 | 0x1e16 => 0x1e17, |
1016 | 0x1e18 => 0x1e19, |
1017 | 0x1e1a => 0x1e1b, |
1018 | 0x1e1c => 0x1e1d, |
1019 | 0x1e1e => 0x1e1f, |
1020 | 0x1e20 => 0x1e21, |
1021 | 0x1e22 => 0x1e23, |
1022 | 0x1e24 => 0x1e25, |
1023 | 0x1e26 => 0x1e27, |
1024 | 0x1e28 => 0x1e29, |
1025 | 0x1e2a => 0x1e2b, |
1026 | 0x1e2c => 0x1e2d, |
1027 | 0x1e2e => 0x1e2f, |
1028 | 0x1e30 => 0x1e31, |
1029 | 0x1e32 => 0x1e33, |
1030 | 0x1e34 => 0x1e35, |
1031 | 0x1e36 => 0x1e37, |
1032 | 0x1e38 => 0x1e39, |
1033 | 0x1e3a => 0x1e3b, |
1034 | 0x1e3c => 0x1e3d, |
1035 | 0x1e3e => 0x1e3f, |
1036 | 0x1e40 => 0x1e41, |
1037 | 0x1e42 => 0x1e43, |
1038 | 0x1e44 => 0x1e45, |
1039 | 0x1e46 => 0x1e47, |
1040 | 0x1e48 => 0x1e49, |
1041 | 0x1e4a => 0x1e4b, |
1042 | 0x1e4c => 0x1e4d, |
1043 | 0x1e4e => 0x1e4f, |
1044 | 0x1e50 => 0x1e51, |
1045 | 0x1e52 => 0x1e53, |
1046 | 0x1e54 => 0x1e55, |
1047 | 0x1e56 => 0x1e57, |
1048 | 0x1e58 => 0x1e59, |
1049 | 0x1e5a => 0x1e5b, |
1050 | 0x1e5c => 0x1e5d, |
1051 | 0x1e5e => 0x1e5f, |
1052 | 0x1e60 => 0x1e61, |
1053 | 0x1e62 => 0x1e63, |
1054 | 0x1e64 => 0x1e65, |
1055 | 0x1e66 => 0x1e67, |
1056 | 0x1e68 => 0x1e69, |
1057 | 0x1e6a => 0x1e6b, |
1058 | 0x1e6c => 0x1e6d, |
1059 | 0x1e6e => 0x1e6f, |
1060 | 0x1e70 => 0x1e71, |
1061 | 0x1e72 => 0x1e73, |
1062 | 0x1e74 => 0x1e75, |
1063 | 0x1e76 => 0x1e77, |
1064 | 0x1e78 => 0x1e79, |
1065 | 0x1e7a => 0x1e7b, |
1066 | 0x1e7c => 0x1e7d, |
1067 | 0x1e7e => 0x1e7f, |
1068 | 0x1e80 => 0x1e81, |
1069 | 0x1e82 => 0x1e83, |
1070 | 0x1e84 => 0x1e85, |
1071 | 0x1e86 => 0x1e87, |
1072 | 0x1e88 => 0x1e89, |
1073 | 0x1e8a => 0x1e8b, |
1074 | 0x1e8c => 0x1e8d, |
1075 | 0x1e8e => 0x1e8f, |
1076 | 0x1e90 => 0x1e91, |
1077 | 0x1e92 => 0x1e93, |
1078 | 0x1e94 => 0x1e95, |
1079 | 0x1e96 => return Fold::Two(' \u{0068}' , ' \u{0331}' ), |
1080 | 0x1e97 => return Fold::Two(' \u{0074}' , ' \u{0308}' ), |
1081 | 0x1e98 => return Fold::Two(' \u{0077}' , ' \u{030a}' ), |
1082 | 0x1e99 => return Fold::Two(' \u{0079}' , ' \u{030a}' ), |
1083 | 0x1e9a => return Fold::Two(' \u{0061}' , ' \u{02be}' ), |
1084 | 0x1e9b => 0x1e61, |
1085 | 0x1e9e => return Fold::Two(' \u{0073}' , ' \u{0073}' ), |
1086 | 0x1ea0 => 0x1ea1, |
1087 | 0x1ea2 => 0x1ea3, |
1088 | 0x1ea4 => 0x1ea5, |
1089 | 0x1ea6 => 0x1ea7, |
1090 | 0x1ea8 => 0x1ea9, |
1091 | 0x1eaa => 0x1eab, |
1092 | 0x1eac => 0x1ead, |
1093 | 0x1eae => 0x1eaf, |
1094 | 0x1eb0 => 0x1eb1, |
1095 | 0x1eb2 => 0x1eb3, |
1096 | 0x1eb4 => 0x1eb5, |
1097 | 0x1eb6 => 0x1eb7, |
1098 | 0x1eb8 => 0x1eb9, |
1099 | 0x1eba => 0x1ebb, |
1100 | 0x1ebc => 0x1ebd, |
1101 | 0x1ebe => 0x1ebf, |
1102 | 0x1ec0 => 0x1ec1, |
1103 | 0x1ec2 => 0x1ec3, |
1104 | 0x1ec4 => 0x1ec5, |
1105 | 0x1ec6 => 0x1ec7, |
1106 | 0x1ec8 => 0x1ec9, |
1107 | 0x1eca => 0x1ecb, |
1108 | 0x1ecc => 0x1ecd, |
1109 | 0x1ece => 0x1ecf, |
1110 | 0x1ed0 => 0x1ed1, |
1111 | 0x1ed2 => 0x1ed3, |
1112 | 0x1ed4 => 0x1ed5, |
1113 | 0x1ed6 => 0x1ed7, |
1114 | 0x1ed8 => 0x1ed9, |
1115 | 0x1eda => 0x1edb, |
1116 | 0x1edc => 0x1edd, |
1117 | 0x1ede => 0x1edf, |
1118 | 0x1ee0 => 0x1ee1, |
1119 | 0x1ee2 => 0x1ee3, |
1120 | 0x1ee4 => 0x1ee5, |
1121 | 0x1ee6 => 0x1ee7, |
1122 | 0x1ee8 => 0x1ee9, |
1123 | 0x1eea => 0x1eeb, |
1124 | 0x1eec => 0x1eed, |
1125 | 0x1eee => 0x1eef, |
1126 | 0x1ef0 => 0x1ef1, |
1127 | 0x1ef2 => 0x1ef3, |
1128 | 0x1ef4 => 0x1ef5, |
1129 | 0x1ef6 => 0x1ef7, |
1130 | 0x1ef8 => 0x1ef9, |
1131 | 0x1efa => 0x1efb, |
1132 | 0x1efc => 0x1efd, |
1133 | 0x1efe => 0x1eff, |
1134 | 0x1f08 => 0x1f00, |
1135 | 0x1f09 => 0x1f01, |
1136 | 0x1f0a => 0x1f02, |
1137 | 0x1f0b => 0x1f03, |
1138 | 0x1f0c => 0x1f04, |
1139 | 0x1f0d => 0x1f05, |
1140 | 0x1f0e => 0x1f06, |
1141 | 0x1f0f => 0x1f07, |
1142 | 0x1f18 => 0x1f10, |
1143 | 0x1f19 => 0x1f11, |
1144 | 0x1f1a => 0x1f12, |
1145 | 0x1f1b => 0x1f13, |
1146 | 0x1f1c => 0x1f14, |
1147 | 0x1f1d => 0x1f15, |
1148 | 0x1f28 => 0x1f20, |
1149 | 0x1f29 => 0x1f21, |
1150 | 0x1f2a => 0x1f22, |
1151 | 0x1f2b => 0x1f23, |
1152 | 0x1f2c => 0x1f24, |
1153 | 0x1f2d => 0x1f25, |
1154 | 0x1f2e => 0x1f26, |
1155 | 0x1f2f => 0x1f27, |
1156 | 0x1f38 => 0x1f30, |
1157 | 0x1f39 => 0x1f31, |
1158 | 0x1f3a => 0x1f32, |
1159 | 0x1f3b => 0x1f33, |
1160 | 0x1f3c => 0x1f34, |
1161 | 0x1f3d => 0x1f35, |
1162 | 0x1f3e => 0x1f36, |
1163 | 0x1f3f => 0x1f37, |
1164 | 0x1f48 => 0x1f40, |
1165 | 0x1f49 => 0x1f41, |
1166 | 0x1f4a => 0x1f42, |
1167 | 0x1f4b => 0x1f43, |
1168 | 0x1f4c => 0x1f44, |
1169 | 0x1f4d => 0x1f45, |
1170 | 0x1f50 => return Fold::Two(' \u{03c5}' , ' \u{0313}' ), |
1171 | 0x1f52 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0300}' ), |
1172 | 0x1f54 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0301}' ), |
1173 | 0x1f56 => return Fold::Three(' \u{03c5}' , ' \u{0313}' , ' \u{0342}' ), |
1174 | 0x1f59 => 0x1f51, |
1175 | 0x1f5b => 0x1f53, |
1176 | 0x1f5d => 0x1f55, |
1177 | 0x1f5f => 0x1f57, |
1178 | 0x1f68 => 0x1f60, |
1179 | 0x1f69 => 0x1f61, |
1180 | 0x1f6a => 0x1f62, |
1181 | 0x1f6b => 0x1f63, |
1182 | 0x1f6c => 0x1f64, |
1183 | 0x1f6d => 0x1f65, |
1184 | 0x1f6e => 0x1f66, |
1185 | 0x1f6f => 0x1f67, |
1186 | 0x1f80 => return Fold::Two(' \u{1f00}' , ' \u{03b9}' ), |
1187 | 0x1f81 => return Fold::Two(' \u{1f01}' , ' \u{03b9}' ), |
1188 | 0x1f82 => return Fold::Two(' \u{1f02}' , ' \u{03b9}' ), |
1189 | 0x1f83 => return Fold::Two(' \u{1f03}' , ' \u{03b9}' ), |
1190 | 0x1f84 => return Fold::Two(' \u{1f04}' , ' \u{03b9}' ), |
1191 | 0x1f85 => return Fold::Two(' \u{1f05}' , ' \u{03b9}' ), |
1192 | 0x1f86 => return Fold::Two(' \u{1f06}' , ' \u{03b9}' ), |
1193 | 0x1f87 => return Fold::Two(' \u{1f07}' , ' \u{03b9}' ), |
1194 | 0x1f88 => return Fold::Two(' \u{1f00}' , ' \u{03b9}' ), |
1195 | 0x1f89 => return Fold::Two(' \u{1f01}' , ' \u{03b9}' ), |
1196 | 0x1f8a => return Fold::Two(' \u{1f02}' , ' \u{03b9}' ), |
1197 | 0x1f8b => return Fold::Two(' \u{1f03}' , ' \u{03b9}' ), |
1198 | 0x1f8c => return Fold::Two(' \u{1f04}' , ' \u{03b9}' ), |
1199 | 0x1f8d => return Fold::Two(' \u{1f05}' , ' \u{03b9}' ), |
1200 | 0x1f8e => return Fold::Two(' \u{1f06}' , ' \u{03b9}' ), |
1201 | 0x1f8f => return Fold::Two(' \u{1f07}' , ' \u{03b9}' ), |
1202 | 0x1f90 => return Fold::Two(' \u{1f20}' , ' \u{03b9}' ), |
1203 | 0x1f91 => return Fold::Two(' \u{1f21}' , ' \u{03b9}' ), |
1204 | 0x1f92 => return Fold::Two(' \u{1f22}' , ' \u{03b9}' ), |
1205 | 0x1f93 => return Fold::Two(' \u{1f23}' , ' \u{03b9}' ), |
1206 | 0x1f94 => return Fold::Two(' \u{1f24}' , ' \u{03b9}' ), |
1207 | 0x1f95 => return Fold::Two(' \u{1f25}' , ' \u{03b9}' ), |
1208 | 0x1f96 => return Fold::Two(' \u{1f26}' , ' \u{03b9}' ), |
1209 | 0x1f97 => return Fold::Two(' \u{1f27}' , ' \u{03b9}' ), |
1210 | 0x1f98 => return Fold::Two(' \u{1f20}' , ' \u{03b9}' ), |
1211 | 0x1f99 => return Fold::Two(' \u{1f21}' , ' \u{03b9}' ), |
1212 | 0x1f9a => return Fold::Two(' \u{1f22}' , ' \u{03b9}' ), |
1213 | 0x1f9b => return Fold::Two(' \u{1f23}' , ' \u{03b9}' ), |
1214 | 0x1f9c => return Fold::Two(' \u{1f24}' , ' \u{03b9}' ), |
1215 | 0x1f9d => return Fold::Two(' \u{1f25}' , ' \u{03b9}' ), |
1216 | 0x1f9e => return Fold::Two(' \u{1f26}' , ' \u{03b9}' ), |
1217 | 0x1f9f => return Fold::Two(' \u{1f27}' , ' \u{03b9}' ), |
1218 | 0x1fa0 => return Fold::Two(' \u{1f60}' , ' \u{03b9}' ), |
1219 | 0x1fa1 => return Fold::Two(' \u{1f61}' , ' \u{03b9}' ), |
1220 | 0x1fa2 => return Fold::Two(' \u{1f62}' , ' \u{03b9}' ), |
1221 | 0x1fa3 => return Fold::Two(' \u{1f63}' , ' \u{03b9}' ), |
1222 | 0x1fa4 => return Fold::Two(' \u{1f64}' , ' \u{03b9}' ), |
1223 | 0x1fa5 => return Fold::Two(' \u{1f65}' , ' \u{03b9}' ), |
1224 | 0x1fa6 => return Fold::Two(' \u{1f66}' , ' \u{03b9}' ), |
1225 | 0x1fa7 => return Fold::Two(' \u{1f67}' , ' \u{03b9}' ), |
1226 | 0x1fa8 => return Fold::Two(' \u{1f60}' , ' \u{03b9}' ), |
1227 | 0x1fa9 => return Fold::Two(' \u{1f61}' , ' \u{03b9}' ), |
1228 | 0x1faa => return Fold::Two(' \u{1f62}' , ' \u{03b9}' ), |
1229 | 0x1fab => return Fold::Two(' \u{1f63}' , ' \u{03b9}' ), |
1230 | 0x1fac => return Fold::Two(' \u{1f64}' , ' \u{03b9}' ), |
1231 | 0x1fad => return Fold::Two(' \u{1f65}' , ' \u{03b9}' ), |
1232 | 0x1fae => return Fold::Two(' \u{1f66}' , ' \u{03b9}' ), |
1233 | 0x1faf => return Fold::Two(' \u{1f67}' , ' \u{03b9}' ), |
1234 | 0x1fb2 => return Fold::Two(' \u{1f70}' , ' \u{03b9}' ), |
1235 | 0x1fb3 => return Fold::Two(' \u{03b1}' , ' \u{03b9}' ), |
1236 | 0x1fb4 => return Fold::Two(' \u{03ac}' , ' \u{03b9}' ), |
1237 | 0x1fb6 => return Fold::Two(' \u{03b1}' , ' \u{0342}' ), |
1238 | 0x1fb7 => return Fold::Three(' \u{03b1}' , ' \u{0342}' , ' \u{03b9}' ), |
1239 | 0x1fb8 => 0x1fb0, |
1240 | 0x1fb9 => 0x1fb1, |
1241 | 0x1fba => 0x1f70, |
1242 | 0x1fbb => 0x1f71, |
1243 | 0x1fbc => return Fold::Two(' \u{03b1}' , ' \u{03b9}' ), |
1244 | 0x1fbe => 0x03b9, |
1245 | 0x1fc2 => return Fold::Two(' \u{1f74}' , ' \u{03b9}' ), |
1246 | 0x1fc3 => return Fold::Two(' \u{03b7}' , ' \u{03b9}' ), |
1247 | 0x1fc4 => return Fold::Two(' \u{03ae}' , ' \u{03b9}' ), |
1248 | 0x1fc6 => return Fold::Two(' \u{03b7}' , ' \u{0342}' ), |
1249 | 0x1fc7 => return Fold::Three(' \u{03b7}' , ' \u{0342}' , ' \u{03b9}' ), |
1250 | 0x1fc8 => 0x1f72, |
1251 | 0x1fc9 => 0x1f73, |
1252 | 0x1fca => 0x1f74, |
1253 | 0x1fcb => 0x1f75, |
1254 | 0x1fcc => return Fold::Two(' \u{03b7}' , ' \u{03b9}' ), |
1255 | 0x1fd2 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0300}' ), |
1256 | 0x1fd3 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0301}' ), |
1257 | 0x1fd6 => return Fold::Two(' \u{03b9}' , ' \u{0342}' ), |
1258 | 0x1fd7 => return Fold::Three(' \u{03b9}' , ' \u{0308}' , ' \u{0342}' ), |
1259 | 0x1fd8 => 0x1fd0, |
1260 | 0x1fd9 => 0x1fd1, |
1261 | 0x1fda => 0x1f76, |
1262 | 0x1fdb => 0x1f77, |
1263 | 0x1fe2 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0300}' ), |
1264 | 0x1fe3 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0301}' ), |
1265 | 0x1fe4 => return Fold::Two(' \u{03c1}' , ' \u{0313}' ), |
1266 | 0x1fe6 => return Fold::Two(' \u{03c5}' , ' \u{0342}' ), |
1267 | 0x1fe7 => return Fold::Three(' \u{03c5}' , ' \u{0308}' , ' \u{0342}' ), |
1268 | 0x1fe8 => 0x1fe0, |
1269 | 0x1fe9 => 0x1fe1, |
1270 | 0x1fea => 0x1f7a, |
1271 | 0x1feb => 0x1f7b, |
1272 | 0x1fec => 0x1fe5, |
1273 | 0x1ff2 => return Fold::Two(' \u{1f7c}' , ' \u{03b9}' ), |
1274 | 0x1ff3 => return Fold::Two(' \u{03c9}' , ' \u{03b9}' ), |
1275 | 0x1ff4 => return Fold::Two(' \u{03ce}' , ' \u{03b9}' ), |
1276 | 0x1ff6 => return Fold::Two(' \u{03c9}' , ' \u{0342}' ), |
1277 | 0x1ff7 => return Fold::Three(' \u{03c9}' , ' \u{0342}' , ' \u{03b9}' ), |
1278 | 0x1ff8 => 0x1f78, |
1279 | 0x1ff9 => 0x1f79, |
1280 | 0x1ffa => 0x1f7c, |
1281 | 0x1ffb => 0x1f7d, |
1282 | 0x1ffc => return Fold::Two(' \u{03c9}' , ' \u{03b9}' ), |
1283 | 0x2126 => 0x03c9, |
1284 | 0x212a => 0x006b, |
1285 | 0x212b => 0x00e5, |
1286 | 0x2132 => 0x214e, |
1287 | 0x2160 => 0x2170, |
1288 | 0x2161 => 0x2171, |
1289 | 0x2162 => 0x2172, |
1290 | 0x2163 => 0x2173, |
1291 | 0x2164 => 0x2174, |
1292 | 0x2165 => 0x2175, |
1293 | 0x2166 => 0x2176, |
1294 | 0x2167 => 0x2177, |
1295 | 0x2168 => 0x2178, |
1296 | 0x2169 => 0x2179, |
1297 | 0x216a => 0x217a, |
1298 | 0x216b => 0x217b, |
1299 | 0x216c => 0x217c, |
1300 | 0x216d => 0x217d, |
1301 | 0x216e => 0x217e, |
1302 | 0x216f => 0x217f, |
1303 | 0x2183 => 0x2184, |
1304 | 0x24b6 => 0x24d0, |
1305 | 0x24b7 => 0x24d1, |
1306 | 0x24b8 => 0x24d2, |
1307 | 0x24b9 => 0x24d3, |
1308 | 0x24ba => 0x24d4, |
1309 | 0x24bb => 0x24d5, |
1310 | 0x24bc => 0x24d6, |
1311 | 0x24bd => 0x24d7, |
1312 | 0x24be => 0x24d8, |
1313 | 0x24bf => 0x24d9, |
1314 | 0x24c0 => 0x24da, |
1315 | 0x24c1 => 0x24db, |
1316 | 0x24c2 => 0x24dc, |
1317 | 0x24c3 => 0x24dd, |
1318 | 0x24c4 => 0x24de, |
1319 | 0x24c5 => 0x24df, |
1320 | 0x24c6 => 0x24e0, |
1321 | 0x24c7 => 0x24e1, |
1322 | 0x24c8 => 0x24e2, |
1323 | 0x24c9 => 0x24e3, |
1324 | 0x24ca => 0x24e4, |
1325 | 0x24cb => 0x24e5, |
1326 | 0x24cc => 0x24e6, |
1327 | 0x24cd => 0x24e7, |
1328 | 0x24ce => 0x24e8, |
1329 | 0x24cf => 0x24e9, |
1330 | 0x2c00 => 0x2c30, |
1331 | 0x2c01 => 0x2c31, |
1332 | 0x2c02 => 0x2c32, |
1333 | 0x2c03 => 0x2c33, |
1334 | 0x2c04 => 0x2c34, |
1335 | 0x2c05 => 0x2c35, |
1336 | 0x2c06 => 0x2c36, |
1337 | 0x2c07 => 0x2c37, |
1338 | 0x2c08 => 0x2c38, |
1339 | 0x2c09 => 0x2c39, |
1340 | 0x2c0a => 0x2c3a, |
1341 | 0x2c0b => 0x2c3b, |
1342 | 0x2c0c => 0x2c3c, |
1343 | 0x2c0d => 0x2c3d, |
1344 | 0x2c0e => 0x2c3e, |
1345 | 0x2c0f => 0x2c3f, |
1346 | 0x2c10 => 0x2c40, |
1347 | 0x2c11 => 0x2c41, |
1348 | 0x2c12 => 0x2c42, |
1349 | 0x2c13 => 0x2c43, |
1350 | 0x2c14 => 0x2c44, |
1351 | 0x2c15 => 0x2c45, |
1352 | 0x2c16 => 0x2c46, |
1353 | 0x2c17 => 0x2c47, |
1354 | 0x2c18 => 0x2c48, |
1355 | 0x2c19 => 0x2c49, |
1356 | 0x2c1a => 0x2c4a, |
1357 | 0x2c1b => 0x2c4b, |
1358 | 0x2c1c => 0x2c4c, |
1359 | 0x2c1d => 0x2c4d, |
1360 | 0x2c1e => 0x2c4e, |
1361 | 0x2c1f => 0x2c4f, |
1362 | 0x2c20 => 0x2c50, |
1363 | 0x2c21 => 0x2c51, |
1364 | 0x2c22 => 0x2c52, |
1365 | 0x2c23 => 0x2c53, |
1366 | 0x2c24 => 0x2c54, |
1367 | 0x2c25 => 0x2c55, |
1368 | 0x2c26 => 0x2c56, |
1369 | 0x2c27 => 0x2c57, |
1370 | 0x2c28 => 0x2c58, |
1371 | 0x2c29 => 0x2c59, |
1372 | 0x2c2a => 0x2c5a, |
1373 | 0x2c2b => 0x2c5b, |
1374 | 0x2c2c => 0x2c5c, |
1375 | 0x2c2d => 0x2c5d, |
1376 | 0x2c2e => 0x2c5e, |
1377 | 0x2c2f => 0x2c5f, |
1378 | 0x2c60 => 0x2c61, |
1379 | 0x2c62 => 0x026b, |
1380 | 0x2c63 => 0x1d7d, |
1381 | 0x2c64 => 0x027d, |
1382 | 0x2c67 => 0x2c68, |
1383 | 0x2c69 => 0x2c6a, |
1384 | 0x2c6b => 0x2c6c, |
1385 | 0x2c6d => 0x0251, |
1386 | 0x2c6e => 0x0271, |
1387 | 0x2c6f => 0x0250, |
1388 | 0x2c70 => 0x0252, |
1389 | 0x2c72 => 0x2c73, |
1390 | 0x2c75 => 0x2c76, |
1391 | 0x2c7e => 0x023f, |
1392 | 0x2c7f => 0x0240, |
1393 | 0x2c80 => 0x2c81, |
1394 | 0x2c82 => 0x2c83, |
1395 | 0x2c84 => 0x2c85, |
1396 | 0x2c86 => 0x2c87, |
1397 | 0x2c88 => 0x2c89, |
1398 | 0x2c8a => 0x2c8b, |
1399 | 0x2c8c => 0x2c8d, |
1400 | 0x2c8e => 0x2c8f, |
1401 | 0x2c90 => 0x2c91, |
1402 | 0x2c92 => 0x2c93, |
1403 | 0x2c94 => 0x2c95, |
1404 | 0x2c96 => 0x2c97, |
1405 | 0x2c98 => 0x2c99, |
1406 | 0x2c9a => 0x2c9b, |
1407 | 0x2c9c => 0x2c9d, |
1408 | 0x2c9e => 0x2c9f, |
1409 | 0x2ca0 => 0x2ca1, |
1410 | 0x2ca2 => 0x2ca3, |
1411 | 0x2ca4 => 0x2ca5, |
1412 | 0x2ca6 => 0x2ca7, |
1413 | 0x2ca8 => 0x2ca9, |
1414 | 0x2caa => 0x2cab, |
1415 | 0x2cac => 0x2cad, |
1416 | 0x2cae => 0x2caf, |
1417 | 0x2cb0 => 0x2cb1, |
1418 | 0x2cb2 => 0x2cb3, |
1419 | 0x2cb4 => 0x2cb5, |
1420 | 0x2cb6 => 0x2cb7, |
1421 | 0x2cb8 => 0x2cb9, |
1422 | 0x2cba => 0x2cbb, |
1423 | 0x2cbc => 0x2cbd, |
1424 | 0x2cbe => 0x2cbf, |
1425 | 0x2cc0 => 0x2cc1, |
1426 | 0x2cc2 => 0x2cc3, |
1427 | 0x2cc4 => 0x2cc5, |
1428 | 0x2cc6 => 0x2cc7, |
1429 | 0x2cc8 => 0x2cc9, |
1430 | 0x2cca => 0x2ccb, |
1431 | 0x2ccc => 0x2ccd, |
1432 | 0x2cce => 0x2ccf, |
1433 | 0x2cd0 => 0x2cd1, |
1434 | 0x2cd2 => 0x2cd3, |
1435 | 0x2cd4 => 0x2cd5, |
1436 | 0x2cd6 => 0x2cd7, |
1437 | 0x2cd8 => 0x2cd9, |
1438 | 0x2cda => 0x2cdb, |
1439 | 0x2cdc => 0x2cdd, |
1440 | 0x2cde => 0x2cdf, |
1441 | 0x2ce0 => 0x2ce1, |
1442 | 0x2ce2 => 0x2ce3, |
1443 | 0x2ceb => 0x2cec, |
1444 | 0x2ced => 0x2cee, |
1445 | 0x2cf2 => 0x2cf3, |
1446 | 0xa640 => 0xa641, |
1447 | 0xa642 => 0xa643, |
1448 | 0xa644 => 0xa645, |
1449 | 0xa646 => 0xa647, |
1450 | 0xa648 => 0xa649, |
1451 | 0xa64a => 0xa64b, |
1452 | 0xa64c => 0xa64d, |
1453 | 0xa64e => 0xa64f, |
1454 | 0xa650 => 0xa651, |
1455 | 0xa652 => 0xa653, |
1456 | 0xa654 => 0xa655, |
1457 | 0xa656 => 0xa657, |
1458 | 0xa658 => 0xa659, |
1459 | 0xa65a => 0xa65b, |
1460 | 0xa65c => 0xa65d, |
1461 | 0xa65e => 0xa65f, |
1462 | 0xa660 => 0xa661, |
1463 | 0xa662 => 0xa663, |
1464 | 0xa664 => 0xa665, |
1465 | 0xa666 => 0xa667, |
1466 | 0xa668 => 0xa669, |
1467 | 0xa66a => 0xa66b, |
1468 | 0xa66c => 0xa66d, |
1469 | 0xa680 => 0xa681, |
1470 | 0xa682 => 0xa683, |
1471 | 0xa684 => 0xa685, |
1472 | 0xa686 => 0xa687, |
1473 | 0xa688 => 0xa689, |
1474 | 0xa68a => 0xa68b, |
1475 | 0xa68c => 0xa68d, |
1476 | 0xa68e => 0xa68f, |
1477 | 0xa690 => 0xa691, |
1478 | 0xa692 => 0xa693, |
1479 | 0xa694 => 0xa695, |
1480 | 0xa696 => 0xa697, |
1481 | 0xa698 => 0xa699, |
1482 | 0xa69a => 0xa69b, |
1483 | 0xa722 => 0xa723, |
1484 | 0xa724 => 0xa725, |
1485 | 0xa726 => 0xa727, |
1486 | 0xa728 => 0xa729, |
1487 | 0xa72a => 0xa72b, |
1488 | 0xa72c => 0xa72d, |
1489 | 0xa72e => 0xa72f, |
1490 | 0xa732 => 0xa733, |
1491 | 0xa734 => 0xa735, |
1492 | 0xa736 => 0xa737, |
1493 | 0xa738 => 0xa739, |
1494 | 0xa73a => 0xa73b, |
1495 | 0xa73c => 0xa73d, |
1496 | 0xa73e => 0xa73f, |
1497 | 0xa740 => 0xa741, |
1498 | 0xa742 => 0xa743, |
1499 | 0xa744 => 0xa745, |
1500 | 0xa746 => 0xa747, |
1501 | 0xa748 => 0xa749, |
1502 | 0xa74a => 0xa74b, |
1503 | 0xa74c => 0xa74d, |
1504 | 0xa74e => 0xa74f, |
1505 | 0xa750 => 0xa751, |
1506 | 0xa752 => 0xa753, |
1507 | 0xa754 => 0xa755, |
1508 | 0xa756 => 0xa757, |
1509 | 0xa758 => 0xa759, |
1510 | 0xa75a => 0xa75b, |
1511 | 0xa75c => 0xa75d, |
1512 | 0xa75e => 0xa75f, |
1513 | 0xa760 => 0xa761, |
1514 | 0xa762 => 0xa763, |
1515 | 0xa764 => 0xa765, |
1516 | 0xa766 => 0xa767, |
1517 | 0xa768 => 0xa769, |
1518 | 0xa76a => 0xa76b, |
1519 | 0xa76c => 0xa76d, |
1520 | 0xa76e => 0xa76f, |
1521 | 0xa779 => 0xa77a, |
1522 | 0xa77b => 0xa77c, |
1523 | 0xa77d => 0x1d79, |
1524 | 0xa77e => 0xa77f, |
1525 | 0xa780 => 0xa781, |
1526 | 0xa782 => 0xa783, |
1527 | 0xa784 => 0xa785, |
1528 | 0xa786 => 0xa787, |
1529 | 0xa78b => 0xa78c, |
1530 | 0xa78d => 0x0265, |
1531 | 0xa790 => 0xa791, |
1532 | 0xa792 => 0xa793, |
1533 | 0xa796 => 0xa797, |
1534 | 0xa798 => 0xa799, |
1535 | 0xa79a => 0xa79b, |
1536 | 0xa79c => 0xa79d, |
1537 | 0xa79e => 0xa79f, |
1538 | 0xa7a0 => 0xa7a1, |
1539 | 0xa7a2 => 0xa7a3, |
1540 | 0xa7a4 => 0xa7a5, |
1541 | 0xa7a6 => 0xa7a7, |
1542 | 0xa7a8 => 0xa7a9, |
1543 | 0xa7aa => 0x0266, |
1544 | 0xa7ab => 0x025c, |
1545 | 0xa7ac => 0x0261, |
1546 | 0xa7ad => 0x026c, |
1547 | 0xa7ae => 0x026a, |
1548 | 0xa7b0 => 0x029e, |
1549 | 0xa7b1 => 0x0287, |
1550 | 0xa7b2 => 0x029d, |
1551 | 0xa7b3 => 0xab53, |
1552 | 0xa7b4 => 0xa7b5, |
1553 | 0xa7b6 => 0xa7b7, |
1554 | 0xa7b8 => 0xa7b9, |
1555 | 0xa7ba => 0xa7bb, |
1556 | 0xa7bc => 0xa7bd, |
1557 | 0xa7be => 0xa7bf, |
1558 | 0xa7c0 => 0xa7c1, |
1559 | 0xa7c2 => 0xa7c3, |
1560 | 0xa7c4 => 0xa794, |
1561 | 0xa7c5 => 0x0282, |
1562 | 0xa7c6 => 0x1d8e, |
1563 | 0xa7c7 => 0xa7c8, |
1564 | 0xa7c9 => 0xa7ca, |
1565 | 0xa7d0 => 0xa7d1, |
1566 | 0xa7d6 => 0xa7d7, |
1567 | 0xa7d8 => 0xa7d9, |
1568 | 0xa7f5 => 0xa7f6, |
1569 | 0xab70 => 0x13a0, |
1570 | 0xab71 => 0x13a1, |
1571 | 0xab72 => 0x13a2, |
1572 | 0xab73 => 0x13a3, |
1573 | 0xab74 => 0x13a4, |
1574 | 0xab75 => 0x13a5, |
1575 | 0xab76 => 0x13a6, |
1576 | 0xab77 => 0x13a7, |
1577 | 0xab78 => 0x13a8, |
1578 | 0xab79 => 0x13a9, |
1579 | 0xab7a => 0x13aa, |
1580 | 0xab7b => 0x13ab, |
1581 | 0xab7c => 0x13ac, |
1582 | 0xab7d => 0x13ad, |
1583 | 0xab7e => 0x13ae, |
1584 | 0xab7f => 0x13af, |
1585 | 0xab80 => 0x13b0, |
1586 | 0xab81 => 0x13b1, |
1587 | 0xab82 => 0x13b2, |
1588 | 0xab83 => 0x13b3, |
1589 | 0xab84 => 0x13b4, |
1590 | 0xab85 => 0x13b5, |
1591 | 0xab86 => 0x13b6, |
1592 | 0xab87 => 0x13b7, |
1593 | 0xab88 => 0x13b8, |
1594 | 0xab89 => 0x13b9, |
1595 | 0xab8a => 0x13ba, |
1596 | 0xab8b => 0x13bb, |
1597 | 0xab8c => 0x13bc, |
1598 | 0xab8d => 0x13bd, |
1599 | 0xab8e => 0x13be, |
1600 | 0xab8f => 0x13bf, |
1601 | 0xab90 => 0x13c0, |
1602 | 0xab91 => 0x13c1, |
1603 | 0xab92 => 0x13c2, |
1604 | 0xab93 => 0x13c3, |
1605 | 0xab94 => 0x13c4, |
1606 | 0xab95 => 0x13c5, |
1607 | 0xab96 => 0x13c6, |
1608 | 0xab97 => 0x13c7, |
1609 | 0xab98 => 0x13c8, |
1610 | 0xab99 => 0x13c9, |
1611 | 0xab9a => 0x13ca, |
1612 | 0xab9b => 0x13cb, |
1613 | 0xab9c => 0x13cc, |
1614 | 0xab9d => 0x13cd, |
1615 | 0xab9e => 0x13ce, |
1616 | 0xab9f => 0x13cf, |
1617 | 0xaba0 => 0x13d0, |
1618 | 0xaba1 => 0x13d1, |
1619 | 0xaba2 => 0x13d2, |
1620 | 0xaba3 => 0x13d3, |
1621 | 0xaba4 => 0x13d4, |
1622 | 0xaba5 => 0x13d5, |
1623 | 0xaba6 => 0x13d6, |
1624 | 0xaba7 => 0x13d7, |
1625 | 0xaba8 => 0x13d8, |
1626 | 0xaba9 => 0x13d9, |
1627 | 0xabaa => 0x13da, |
1628 | 0xabab => 0x13db, |
1629 | 0xabac => 0x13dc, |
1630 | 0xabad => 0x13dd, |
1631 | 0xabae => 0x13de, |
1632 | 0xabaf => 0x13df, |
1633 | 0xabb0 => 0x13e0, |
1634 | 0xabb1 => 0x13e1, |
1635 | 0xabb2 => 0x13e2, |
1636 | 0xabb3 => 0x13e3, |
1637 | 0xabb4 => 0x13e4, |
1638 | 0xabb5 => 0x13e5, |
1639 | 0xabb6 => 0x13e6, |
1640 | 0xabb7 => 0x13e7, |
1641 | 0xabb8 => 0x13e8, |
1642 | 0xabb9 => 0x13e9, |
1643 | 0xabba => 0x13ea, |
1644 | 0xabbb => 0x13eb, |
1645 | 0xabbc => 0x13ec, |
1646 | 0xabbd => 0x13ed, |
1647 | 0xabbe => 0x13ee, |
1648 | 0xabbf => 0x13ef, |
1649 | 0xfb00 => return Fold::Two(' \u{0066}' , ' \u{0066}' ), |
1650 | 0xfb01 => return Fold::Two(' \u{0066}' , ' \u{0069}' ), |
1651 | 0xfb02 => return Fold::Two(' \u{0066}' , ' \u{006c}' ), |
1652 | 0xfb03 => return Fold::Three(' \u{0066}' , ' \u{0066}' , ' \u{0069}' ), |
1653 | 0xfb04 => return Fold::Three(' \u{0066}' , ' \u{0066}' , ' \u{006c}' ), |
1654 | 0xfb05 => return Fold::Two(' \u{0073}' , ' \u{0074}' ), |
1655 | 0xfb06 => return Fold::Two(' \u{0073}' , ' \u{0074}' ), |
1656 | 0xfb13 => return Fold::Two(' \u{0574}' , ' \u{0576}' ), |
1657 | 0xfb14 => return Fold::Two(' \u{0574}' , ' \u{0565}' ), |
1658 | 0xfb15 => return Fold::Two(' \u{0574}' , ' \u{056b}' ), |
1659 | 0xfb16 => return Fold::Two(' \u{057e}' , ' \u{0576}' ), |
1660 | 0xfb17 => return Fold::Two(' \u{0574}' , ' \u{056d}' ), |
1661 | 0xff21 => 0xff41, |
1662 | 0xff22 => 0xff42, |
1663 | 0xff23 => 0xff43, |
1664 | 0xff24 => 0xff44, |
1665 | 0xff25 => 0xff45, |
1666 | 0xff26 => 0xff46, |
1667 | 0xff27 => 0xff47, |
1668 | 0xff28 => 0xff48, |
1669 | 0xff29 => 0xff49, |
1670 | 0xff2a => 0xff4a, |
1671 | 0xff2b => 0xff4b, |
1672 | 0xff2c => 0xff4c, |
1673 | 0xff2d => 0xff4d, |
1674 | 0xff2e => 0xff4e, |
1675 | 0xff2f => 0xff4f, |
1676 | 0xff30 => 0xff50, |
1677 | 0xff31 => 0xff51, |
1678 | 0xff32 => 0xff52, |
1679 | 0xff33 => 0xff53, |
1680 | 0xff34 => 0xff54, |
1681 | 0xff35 => 0xff55, |
1682 | 0xff36 => 0xff56, |
1683 | 0xff37 => 0xff57, |
1684 | 0xff38 => 0xff58, |
1685 | 0xff39 => 0xff59, |
1686 | 0xff3a => 0xff5a, |
1687 | 0x10400 => 0x10428, |
1688 | 0x10401 => 0x10429, |
1689 | 0x10402 => 0x1042a, |
1690 | 0x10403 => 0x1042b, |
1691 | 0x10404 => 0x1042c, |
1692 | 0x10405 => 0x1042d, |
1693 | 0x10406 => 0x1042e, |
1694 | 0x10407 => 0x1042f, |
1695 | 0x10408 => 0x10430, |
1696 | 0x10409 => 0x10431, |
1697 | 0x1040a => 0x10432, |
1698 | 0x1040b => 0x10433, |
1699 | 0x1040c => 0x10434, |
1700 | 0x1040d => 0x10435, |
1701 | 0x1040e => 0x10436, |
1702 | 0x1040f => 0x10437, |
1703 | 0x10410 => 0x10438, |
1704 | 0x10411 => 0x10439, |
1705 | 0x10412 => 0x1043a, |
1706 | 0x10413 => 0x1043b, |
1707 | 0x10414 => 0x1043c, |
1708 | 0x10415 => 0x1043d, |
1709 | 0x10416 => 0x1043e, |
1710 | 0x10417 => 0x1043f, |
1711 | 0x10418 => 0x10440, |
1712 | 0x10419 => 0x10441, |
1713 | 0x1041a => 0x10442, |
1714 | 0x1041b => 0x10443, |
1715 | 0x1041c => 0x10444, |
1716 | 0x1041d => 0x10445, |
1717 | 0x1041e => 0x10446, |
1718 | 0x1041f => 0x10447, |
1719 | 0x10420 => 0x10448, |
1720 | 0x10421 => 0x10449, |
1721 | 0x10422 => 0x1044a, |
1722 | 0x10423 => 0x1044b, |
1723 | 0x10424 => 0x1044c, |
1724 | 0x10425 => 0x1044d, |
1725 | 0x10426 => 0x1044e, |
1726 | 0x10427 => 0x1044f, |
1727 | 0x104b0 => 0x104d8, |
1728 | 0x104b1 => 0x104d9, |
1729 | 0x104b2 => 0x104da, |
1730 | 0x104b3 => 0x104db, |
1731 | 0x104b4 => 0x104dc, |
1732 | 0x104b5 => 0x104dd, |
1733 | 0x104b6 => 0x104de, |
1734 | 0x104b7 => 0x104df, |
1735 | 0x104b8 => 0x104e0, |
1736 | 0x104b9 => 0x104e1, |
1737 | 0x104ba => 0x104e2, |
1738 | 0x104bb => 0x104e3, |
1739 | 0x104bc => 0x104e4, |
1740 | 0x104bd => 0x104e5, |
1741 | 0x104be => 0x104e6, |
1742 | 0x104bf => 0x104e7, |
1743 | 0x104c0 => 0x104e8, |
1744 | 0x104c1 => 0x104e9, |
1745 | 0x104c2 => 0x104ea, |
1746 | 0x104c3 => 0x104eb, |
1747 | 0x104c4 => 0x104ec, |
1748 | 0x104c5 => 0x104ed, |
1749 | 0x104c6 => 0x104ee, |
1750 | 0x104c7 => 0x104ef, |
1751 | 0x104c8 => 0x104f0, |
1752 | 0x104c9 => 0x104f1, |
1753 | 0x104ca => 0x104f2, |
1754 | 0x104cb => 0x104f3, |
1755 | 0x104cc => 0x104f4, |
1756 | 0x104cd => 0x104f5, |
1757 | 0x104ce => 0x104f6, |
1758 | 0x104cf => 0x104f7, |
1759 | 0x104d0 => 0x104f8, |
1760 | 0x104d1 => 0x104f9, |
1761 | 0x104d2 => 0x104fa, |
1762 | 0x104d3 => 0x104fb, |
1763 | 0x10570 => 0x10597, |
1764 | 0x10571 => 0x10598, |
1765 | 0x10572 => 0x10599, |
1766 | 0x10573 => 0x1059a, |
1767 | 0x10574 => 0x1059b, |
1768 | 0x10575 => 0x1059c, |
1769 | 0x10576 => 0x1059d, |
1770 | 0x10577 => 0x1059e, |
1771 | 0x10578 => 0x1059f, |
1772 | 0x10579 => 0x105a0, |
1773 | 0x1057a => 0x105a1, |
1774 | 0x1057c => 0x105a3, |
1775 | 0x1057d => 0x105a4, |
1776 | 0x1057e => 0x105a5, |
1777 | 0x1057f => 0x105a6, |
1778 | 0x10580 => 0x105a7, |
1779 | 0x10581 => 0x105a8, |
1780 | 0x10582 => 0x105a9, |
1781 | 0x10583 => 0x105aa, |
1782 | 0x10584 => 0x105ab, |
1783 | 0x10585 => 0x105ac, |
1784 | 0x10586 => 0x105ad, |
1785 | 0x10587 => 0x105ae, |
1786 | 0x10588 => 0x105af, |
1787 | 0x10589 => 0x105b0, |
1788 | 0x1058a => 0x105b1, |
1789 | 0x1058c => 0x105b3, |
1790 | 0x1058d => 0x105b4, |
1791 | 0x1058e => 0x105b5, |
1792 | 0x1058f => 0x105b6, |
1793 | 0x10590 => 0x105b7, |
1794 | 0x10591 => 0x105b8, |
1795 | 0x10592 => 0x105b9, |
1796 | 0x10594 => 0x105bb, |
1797 | 0x10595 => 0x105bc, |
1798 | 0x10c80 => 0x10cc0, |
1799 | 0x10c81 => 0x10cc1, |
1800 | 0x10c82 => 0x10cc2, |
1801 | 0x10c83 => 0x10cc3, |
1802 | 0x10c84 => 0x10cc4, |
1803 | 0x10c85 => 0x10cc5, |
1804 | 0x10c86 => 0x10cc6, |
1805 | 0x10c87 => 0x10cc7, |
1806 | 0x10c88 => 0x10cc8, |
1807 | 0x10c89 => 0x10cc9, |
1808 | 0x10c8a => 0x10cca, |
1809 | 0x10c8b => 0x10ccb, |
1810 | 0x10c8c => 0x10ccc, |
1811 | 0x10c8d => 0x10ccd, |
1812 | 0x10c8e => 0x10cce, |
1813 | 0x10c8f => 0x10ccf, |
1814 | 0x10c90 => 0x10cd0, |
1815 | 0x10c91 => 0x10cd1, |
1816 | 0x10c92 => 0x10cd2, |
1817 | 0x10c93 => 0x10cd3, |
1818 | 0x10c94 => 0x10cd4, |
1819 | 0x10c95 => 0x10cd5, |
1820 | 0x10c96 => 0x10cd6, |
1821 | 0x10c97 => 0x10cd7, |
1822 | 0x10c98 => 0x10cd8, |
1823 | 0x10c99 => 0x10cd9, |
1824 | 0x10c9a => 0x10cda, |
1825 | 0x10c9b => 0x10cdb, |
1826 | 0x10c9c => 0x10cdc, |
1827 | 0x10c9d => 0x10cdd, |
1828 | 0x10c9e => 0x10cde, |
1829 | 0x10c9f => 0x10cdf, |
1830 | 0x10ca0 => 0x10ce0, |
1831 | 0x10ca1 => 0x10ce1, |
1832 | 0x10ca2 => 0x10ce2, |
1833 | 0x10ca3 => 0x10ce3, |
1834 | 0x10ca4 => 0x10ce4, |
1835 | 0x10ca5 => 0x10ce5, |
1836 | 0x10ca6 => 0x10ce6, |
1837 | 0x10ca7 => 0x10ce7, |
1838 | 0x10ca8 => 0x10ce8, |
1839 | 0x10ca9 => 0x10ce9, |
1840 | 0x10caa => 0x10cea, |
1841 | 0x10cab => 0x10ceb, |
1842 | 0x10cac => 0x10cec, |
1843 | 0x10cad => 0x10ced, |
1844 | 0x10cae => 0x10cee, |
1845 | 0x10caf => 0x10cef, |
1846 | 0x10cb0 => 0x10cf0, |
1847 | 0x10cb1 => 0x10cf1, |
1848 | 0x10cb2 => 0x10cf2, |
1849 | 0x118a0 => 0x118c0, |
1850 | 0x118a1 => 0x118c1, |
1851 | 0x118a2 => 0x118c2, |
1852 | 0x118a3 => 0x118c3, |
1853 | 0x118a4 => 0x118c4, |
1854 | 0x118a5 => 0x118c5, |
1855 | 0x118a6 => 0x118c6, |
1856 | 0x118a7 => 0x118c7, |
1857 | 0x118a8 => 0x118c8, |
1858 | 0x118a9 => 0x118c9, |
1859 | 0x118aa => 0x118ca, |
1860 | 0x118ab => 0x118cb, |
1861 | 0x118ac => 0x118cc, |
1862 | 0x118ad => 0x118cd, |
1863 | 0x118ae => 0x118ce, |
1864 | 0x118af => 0x118cf, |
1865 | 0x118b0 => 0x118d0, |
1866 | 0x118b1 => 0x118d1, |
1867 | 0x118b2 => 0x118d2, |
1868 | 0x118b3 => 0x118d3, |
1869 | 0x118b4 => 0x118d4, |
1870 | 0x118b5 => 0x118d5, |
1871 | 0x118b6 => 0x118d6, |
1872 | 0x118b7 => 0x118d7, |
1873 | 0x118b8 => 0x118d8, |
1874 | 0x118b9 => 0x118d9, |
1875 | 0x118ba => 0x118da, |
1876 | 0x118bb => 0x118db, |
1877 | 0x118bc => 0x118dc, |
1878 | 0x118bd => 0x118dd, |
1879 | 0x118be => 0x118de, |
1880 | 0x118bf => 0x118df, |
1881 | 0x16e40 => 0x16e60, |
1882 | 0x16e41 => 0x16e61, |
1883 | 0x16e42 => 0x16e62, |
1884 | 0x16e43 => 0x16e63, |
1885 | 0x16e44 => 0x16e64, |
1886 | 0x16e45 => 0x16e65, |
1887 | 0x16e46 => 0x16e66, |
1888 | 0x16e47 => 0x16e67, |
1889 | 0x16e48 => 0x16e68, |
1890 | 0x16e49 => 0x16e69, |
1891 | 0x16e4a => 0x16e6a, |
1892 | 0x16e4b => 0x16e6b, |
1893 | 0x16e4c => 0x16e6c, |
1894 | 0x16e4d => 0x16e6d, |
1895 | 0x16e4e => 0x16e6e, |
1896 | 0x16e4f => 0x16e6f, |
1897 | 0x16e50 => 0x16e70, |
1898 | 0x16e51 => 0x16e71, |
1899 | 0x16e52 => 0x16e72, |
1900 | 0x16e53 => 0x16e73, |
1901 | 0x16e54 => 0x16e74, |
1902 | 0x16e55 => 0x16e75, |
1903 | 0x16e56 => 0x16e76, |
1904 | 0x16e57 => 0x16e77, |
1905 | 0x16e58 => 0x16e78, |
1906 | 0x16e59 => 0x16e79, |
1907 | 0x16e5a => 0x16e7a, |
1908 | 0x16e5b => 0x16e7b, |
1909 | 0x16e5c => 0x16e7c, |
1910 | 0x16e5d => 0x16e7d, |
1911 | 0x16e5e => 0x16e7e, |
1912 | 0x16e5f => 0x16e7f, |
1913 | 0x1e900 => 0x1e922, |
1914 | 0x1e901 => 0x1e923, |
1915 | 0x1e902 => 0x1e924, |
1916 | 0x1e903 => 0x1e925, |
1917 | 0x1e904 => 0x1e926, |
1918 | 0x1e905 => 0x1e927, |
1919 | 0x1e906 => 0x1e928, |
1920 | 0x1e907 => 0x1e929, |
1921 | 0x1e908 => 0x1e92a, |
1922 | 0x1e909 => 0x1e92b, |
1923 | 0x1e90a => 0x1e92c, |
1924 | 0x1e90b => 0x1e92d, |
1925 | 0x1e90c => 0x1e92e, |
1926 | 0x1e90d => 0x1e92f, |
1927 | 0x1e90e => 0x1e930, |
1928 | 0x1e90f => 0x1e931, |
1929 | 0x1e910 => 0x1e932, |
1930 | 0x1e911 => 0x1e933, |
1931 | 0x1e912 => 0x1e934, |
1932 | 0x1e913 => 0x1e935, |
1933 | 0x1e914 => 0x1e936, |
1934 | 0x1e915 => 0x1e937, |
1935 | 0x1e916 => 0x1e938, |
1936 | 0x1e917 => 0x1e939, |
1937 | 0x1e918 => 0x1e93a, |
1938 | 0x1e919 => 0x1e93b, |
1939 | 0x1e91a => 0x1e93c, |
1940 | 0x1e91b => 0x1e93d, |
1941 | 0x1e91c => 0x1e93e, |
1942 | 0x1e91d => 0x1e93f, |
1943 | 0x1e91e => 0x1e940, |
1944 | 0x1e91f => 0x1e941, |
1945 | 0x1e920 => 0x1e942, |
1946 | 0x1e921 => 0x1e943, |
1947 | _ => orig as u32, |
1948 | }; |
1949 | Fold::One(char::from_u32(single_char).unwrap()) |
1950 | } |
1951 | |
1952 | for c_index in 0..126217 { |
1953 | if let Some(c) = char::from_u32(c_index) { |
1954 | let reference: Vec<char> = lookup_naive(c).collect(); |
1955 | let actual: Vec<char> = lookup(c).collect(); |
1956 | if actual != reference { |
1957 | assert!( |
1958 | false, |
1959 | "case-folding {:?} (#0x {:04x}) failed: Expected {:?}, got {:?}" , |
1960 | c, c_index, reference, actual |
1961 | ); |
1962 | } |
1963 | } |
1964 | } |
1965 | } |
1966 | |