1use super::{Mapping, Mode};
14
15#[must_use]
16#[allow(clippy::match_same_arms)]
17#[allow(clippy::too_many_lines)]
18pub const fn lookup(c: char, mode: Mode) -> Mapping {
19 let codepoint = c as u32;
20 let char_bytes = codepoint.to_be_bytes();
21 let mid_byte = char_bytes[2];
22 let high_bytes = u16::from_be_bytes([char_bytes[0], char_bytes[1]]);
23 match (high_bytes, mid_byte) {
24 (0x0000, 0x00) => match c {
25 '\u{0049}' if matches!(mode, Mode::Turkic) => Mapping::Single(0x0131),
28 c if c.is_ascii() => Mapping::Single(c.to_ascii_lowercase() as u32),
29 '\u{00B5}' => Mapping::Single(0x03BC),
30 '\u{00C0}'..='\u{00D6}' => Mapping::Single(codepoint + 0x0020),
31 '\u{00D8}'..='\u{00DE}' => Mapping::Single(codepoint + 0x0020),
32 '\u{00DF}' => Mapping::Double(0x0073, 0x0073),
33 _ => Mapping::Single(codepoint),
34 },
35 (0x0000, 0x01) => match c {
36 '\u{0100}' => Mapping::Single(0x0101),
37 '\u{0102}' => Mapping::Single(0x0103),
38 '\u{0104}' => Mapping::Single(0x0105),
39 '\u{0106}' => Mapping::Single(0x0107),
40 '\u{0108}' => Mapping::Single(0x0109),
41 '\u{010A}' => Mapping::Single(0x010B),
42 '\u{010C}' => Mapping::Single(0x010D),
43 '\u{010E}' => Mapping::Single(0x010F),
44 '\u{0110}' => Mapping::Single(0x0111),
45 '\u{0112}' => Mapping::Single(0x0113),
46 '\u{0114}' => Mapping::Single(0x0115),
47 '\u{0116}' => Mapping::Single(0x0117),
48 '\u{0118}' => Mapping::Single(0x0119),
49 '\u{011A}' => Mapping::Single(0x011B),
50 '\u{011C}' => Mapping::Single(0x011D),
51 '\u{011E}' => Mapping::Single(0x011F),
52 '\u{0120}' => Mapping::Single(0x0121),
53 '\u{0122}' => Mapping::Single(0x0123),
54 '\u{0124}' => Mapping::Single(0x0125),
55 '\u{0126}' => Mapping::Single(0x0127),
56 '\u{0128}' => Mapping::Single(0x0129),
57 '\u{012A}' => Mapping::Single(0x012B),
58 '\u{012C}' => Mapping::Single(0x012D),
59 '\u{012E}' => Mapping::Single(0x012F),
60 '\u{0130}' if matches!(mode, Mode::Full) => Mapping::Double(0x0069, 0x0307),
61 '\u{0130}' if matches!(mode, Mode::Turkic) => Mapping::Single(0x0069),
62 '\u{0132}' => Mapping::Single(0x0133),
63 '\u{0134}' => Mapping::Single(0x0135),
64 '\u{0136}' => Mapping::Single(0x0137),
65 '\u{0139}' => Mapping::Single(0x013A),
66 '\u{013B}' => Mapping::Single(0x013C),
67 '\u{013D}' => Mapping::Single(0x013E),
68 '\u{013F}' => Mapping::Single(0x0140),
69 '\u{0141}' => Mapping::Single(0x0142),
70 '\u{0143}' => Mapping::Single(0x0144),
71 '\u{0145}' => Mapping::Single(0x0146),
72 '\u{0147}' => Mapping::Single(0x0148),
73 '\u{0149}' => Mapping::Double(0x02BC, 0x006E),
74 '\u{014A}' => Mapping::Single(0x014B),
75 '\u{014C}' => Mapping::Single(0x014D),
76 '\u{014E}' => Mapping::Single(0x014F),
77 '\u{0150}' => Mapping::Single(0x0151),
78 '\u{0152}' => Mapping::Single(0x0153),
79 '\u{0154}' => Mapping::Single(0x0155),
80 '\u{0156}' => Mapping::Single(0x0157),
81 '\u{0158}' => Mapping::Single(0x0159),
82 '\u{015A}' => Mapping::Single(0x015B),
83 '\u{015C}' => Mapping::Single(0x015D),
84 '\u{015E}' => Mapping::Single(0x015F),
85 '\u{0160}' => Mapping::Single(0x0161),
86 '\u{0162}' => Mapping::Single(0x0163),
87 '\u{0164}' => Mapping::Single(0x0165),
88 '\u{0166}' => Mapping::Single(0x0167),
89 '\u{0168}' => Mapping::Single(0x0169),
90 '\u{016A}' => Mapping::Single(0x016B),
91 '\u{016C}' => Mapping::Single(0x016D),
92 '\u{016E}' => Mapping::Single(0x016F),
93 '\u{0170}' => Mapping::Single(0x0171),
94 '\u{0172}' => Mapping::Single(0x0173),
95 '\u{0174}' => Mapping::Single(0x0175),
96 '\u{0176}' => Mapping::Single(0x0177),
97 '\u{0178}' => Mapping::Single(0x00FF),
98 '\u{0179}' => Mapping::Single(0x017A),
99 '\u{017B}' => Mapping::Single(0x017C),
100 '\u{017D}' => Mapping::Single(0x017E),
101 '\u{017F}' => Mapping::Single(0x0073),
102 '\u{0181}' => Mapping::Single(0x0253),
103 '\u{0182}' => Mapping::Single(0x0183),
104 '\u{0184}' => Mapping::Single(0x0185),
105 '\u{0186}' => Mapping::Single(0x0254),
106 '\u{0187}' => Mapping::Single(0x0188),
107 '\u{0189}'..='\u{018A}' => Mapping::Single(codepoint + 0x00cd),
108 '\u{018B}' => Mapping::Single(0x018C),
109 '\u{018E}' => Mapping::Single(0x01DD),
110 '\u{018F}' => Mapping::Single(0x0259),
111 '\u{0190}' => Mapping::Single(0x025B),
112 '\u{0191}' => Mapping::Single(0x0192),
113 '\u{0193}' => Mapping::Single(0x0260),
114 '\u{0194}' => Mapping::Single(0x0263),
115 '\u{0196}' => Mapping::Single(0x0269),
116 '\u{0197}' => Mapping::Single(0x0268),
117 '\u{0198}' => Mapping::Single(0x0199),
118 '\u{019C}' => Mapping::Single(0x026F),
119 '\u{019D}' => Mapping::Single(0x0272),
120 '\u{019F}' => Mapping::Single(0x0275),
121 '\u{01A0}' => Mapping::Single(0x01A1),
122 '\u{01A2}' => Mapping::Single(0x01A3),
123 '\u{01A4}' => Mapping::Single(0x01A5),
124 '\u{01A6}' => Mapping::Single(0x0280),
125 '\u{01A7}' => Mapping::Single(0x01A8),
126 '\u{01A9}' => Mapping::Single(0x0283),
127 '\u{01AC}' => Mapping::Single(0x01AD),
128 '\u{01AE}' => Mapping::Single(0x0288),
129 '\u{01AF}' => Mapping::Single(0x01B0),
130 '\u{01B1}'..='\u{01B2}' => Mapping::Single(codepoint + 0x00d9),
131 '\u{01B3}' => Mapping::Single(0x01B4),
132 '\u{01B5}' => Mapping::Single(0x01B6),
133 '\u{01B7}' => Mapping::Single(0x0292),
134 '\u{01B8}' => Mapping::Single(0x01B9),
135 '\u{01BC}' => Mapping::Single(0x01BD),
136 '\u{01C4}' => Mapping::Single(0x01C6),
137 '\u{01C5}' => Mapping::Single(0x01C6),
138 '\u{01C7}' => Mapping::Single(0x01C9),
139 '\u{01C8}' => Mapping::Single(0x01C9),
140 '\u{01CA}' => Mapping::Single(0x01CC),
141 '\u{01CB}' => Mapping::Single(0x01CC),
142 '\u{01CD}' => Mapping::Single(0x01CE),
143 '\u{01CF}' => Mapping::Single(0x01D0),
144 '\u{01D1}' => Mapping::Single(0x01D2),
145 '\u{01D3}' => Mapping::Single(0x01D4),
146 '\u{01D5}' => Mapping::Single(0x01D6),
147 '\u{01D7}' => Mapping::Single(0x01D8),
148 '\u{01D9}' => Mapping::Single(0x01DA),
149 '\u{01DB}' => Mapping::Single(0x01DC),
150 '\u{01DE}' => Mapping::Single(0x01DF),
151 '\u{01E0}' => Mapping::Single(0x01E1),
152 '\u{01E2}' => Mapping::Single(0x01E3),
153 '\u{01E4}' => Mapping::Single(0x01E5),
154 '\u{01E6}' => Mapping::Single(0x01E7),
155 '\u{01E8}' => Mapping::Single(0x01E9),
156 '\u{01EA}' => Mapping::Single(0x01EB),
157 '\u{01EC}' => Mapping::Single(0x01ED),
158 '\u{01EE}' => Mapping::Single(0x01EF),
159 '\u{01F0}' => Mapping::Double(0x006A, 0x030C),
160 '\u{01F1}' => Mapping::Single(0x01F3),
161 '\u{01F2}' => Mapping::Single(0x01F3),
162 '\u{01F4}' => Mapping::Single(0x01F5),
163 '\u{01F6}' => Mapping::Single(0x0195),
164 '\u{01F7}' => Mapping::Single(0x01BF),
165 '\u{01F8}' => Mapping::Single(0x01F9),
166 '\u{01FA}' => Mapping::Single(0x01FB),
167 '\u{01FC}' => Mapping::Single(0x01FD),
168 '\u{01FE}' => Mapping::Single(0x01FF),
169 _ => Mapping::Single(codepoint),
170 },
171 (0x0000, 0x02) => match c {
172 '\u{0200}' => Mapping::Single(0x0201),
173 '\u{0202}' => Mapping::Single(0x0203),
174 '\u{0204}' => Mapping::Single(0x0205),
175 '\u{0206}' => Mapping::Single(0x0207),
176 '\u{0208}' => Mapping::Single(0x0209),
177 '\u{020A}' => Mapping::Single(0x020B),
178 '\u{020C}' => Mapping::Single(0x020D),
179 '\u{020E}' => Mapping::Single(0x020F),
180 '\u{0210}' => Mapping::Single(0x0211),
181 '\u{0212}' => Mapping::Single(0x0213),
182 '\u{0214}' => Mapping::Single(0x0215),
183 '\u{0216}' => Mapping::Single(0x0217),
184 '\u{0218}' => Mapping::Single(0x0219),
185 '\u{021A}' => Mapping::Single(0x021B),
186 '\u{021C}' => Mapping::Single(0x021D),
187 '\u{021E}' => Mapping::Single(0x021F),
188 '\u{0220}' => Mapping::Single(0x019E),
189 '\u{0222}' => Mapping::Single(0x0223),
190 '\u{0224}' => Mapping::Single(0x0225),
191 '\u{0226}' => Mapping::Single(0x0227),
192 '\u{0228}' => Mapping::Single(0x0229),
193 '\u{022A}' => Mapping::Single(0x022B),
194 '\u{022C}' => Mapping::Single(0x022D),
195 '\u{022E}' => Mapping::Single(0x022F),
196 '\u{0230}' => Mapping::Single(0x0231),
197 '\u{0232}' => Mapping::Single(0x0233),
198 '\u{023A}' => Mapping::Single(0x2C65),
199 '\u{023B}' => Mapping::Single(0x023C),
200 '\u{023D}' => Mapping::Single(0x019A),
201 '\u{023E}' => Mapping::Single(0x2C66),
202 '\u{0241}' => Mapping::Single(0x0242),
203 '\u{0243}' => Mapping::Single(0x0180),
204 '\u{0244}' => Mapping::Single(0x0289),
205 '\u{0245}' => Mapping::Single(0x028C),
206 '\u{0246}' => Mapping::Single(0x0247),
207 '\u{0248}' => Mapping::Single(0x0249),
208 '\u{024A}' => Mapping::Single(0x024B),
209 '\u{024C}' => Mapping::Single(0x024D),
210 '\u{024E}' => Mapping::Single(0x024F),
211 _ => Mapping::Single(codepoint),
212 },
213 (0x0000, 0x03) => match c {
214 '\u{0345}' => Mapping::Single(0x03B9),
215 '\u{0370}' => Mapping::Single(0x0371),
216 '\u{0372}' => Mapping::Single(0x0373),
217 '\u{0376}' => Mapping::Single(0x0377),
218 '\u{037F}' => Mapping::Single(0x03F3),
219 '\u{0386}' => Mapping::Single(0x03AC),
220 '\u{0388}'..='\u{038A}' => Mapping::Single(codepoint + 0x0025),
221 '\u{038C}' => Mapping::Single(0x03CC),
222 '\u{038E}'..='\u{038F}' => Mapping::Single(codepoint + 0x003f),
223 '\u{0390}' => Mapping::Triple(0x03B9, 0x0308, 0x0301),
224 '\u{0391}'..='\u{03A1}' => Mapping::Single(codepoint + 0x0020),
225 '\u{03A3}'..='\u{03AB}' => Mapping::Single(codepoint + 0x0020),
226 '\u{03B0}' => Mapping::Triple(0x03C5, 0x0308, 0x0301),
227 '\u{03C2}' => Mapping::Single(0x03C3),
228 '\u{03CF}' => Mapping::Single(0x03D7),
229 '\u{03D0}' => Mapping::Single(0x03B2),
230 '\u{03D1}' => Mapping::Single(0x03B8),
231 '\u{03D5}' => Mapping::Single(0x03C6),
232 '\u{03D6}' => Mapping::Single(0x03C0),
233 '\u{03D8}' => Mapping::Single(0x03D9),
234 '\u{03DA}' => Mapping::Single(0x03DB),
235 '\u{03DC}' => Mapping::Single(0x03DD),
236 '\u{03DE}' => Mapping::Single(0x03DF),
237 '\u{03E0}' => Mapping::Single(0x03E1),
238 '\u{03E2}' => Mapping::Single(0x03E3),
239 '\u{03E4}' => Mapping::Single(0x03E5),
240 '\u{03E6}' => Mapping::Single(0x03E7),
241 '\u{03E8}' => Mapping::Single(0x03E9),
242 '\u{03EA}' => Mapping::Single(0x03EB),
243 '\u{03EC}' => Mapping::Single(0x03ED),
244 '\u{03EE}' => Mapping::Single(0x03EF),
245 '\u{03F0}' => Mapping::Single(0x03BA),
246 '\u{03F1}' => Mapping::Single(0x03C1),
247 '\u{03F4}' => Mapping::Single(0x03B8),
248 '\u{03F5}' => Mapping::Single(0x03B5),
249 '\u{03F7}' => Mapping::Single(0x03F8),
250 '\u{03F9}' => Mapping::Single(0x03F2),
251 '\u{03FA}' => Mapping::Single(0x03FB),
252 '\u{03FD}'..='\u{03FF}' => Mapping::Single(codepoint - 0x0082),
253 _ => Mapping::Single(codepoint),
254 },
255 (0x0000, 0x04) => match c {
256 '\u{0400}'..='\u{040F}' => Mapping::Single(codepoint + 0x0050),
257 '\u{0410}'..='\u{042F}' => Mapping::Single(codepoint + 0x0020),
258 '\u{0460}' => Mapping::Single(0x0461),
259 '\u{0462}' => Mapping::Single(0x0463),
260 '\u{0464}' => Mapping::Single(0x0465),
261 '\u{0466}' => Mapping::Single(0x0467),
262 '\u{0468}' => Mapping::Single(0x0469),
263 '\u{046A}' => Mapping::Single(0x046B),
264 '\u{046C}' => Mapping::Single(0x046D),
265 '\u{046E}' => Mapping::Single(0x046F),
266 '\u{0470}' => Mapping::Single(0x0471),
267 '\u{0472}' => Mapping::Single(0x0473),
268 '\u{0474}' => Mapping::Single(0x0475),
269 '\u{0476}' => Mapping::Single(0x0477),
270 '\u{0478}' => Mapping::Single(0x0479),
271 '\u{047A}' => Mapping::Single(0x047B),
272 '\u{047C}' => Mapping::Single(0x047D),
273 '\u{047E}' => Mapping::Single(0x047F),
274 '\u{0480}' => Mapping::Single(0x0481),
275 '\u{048A}' => Mapping::Single(0x048B),
276 '\u{048C}' => Mapping::Single(0x048D),
277 '\u{048E}' => Mapping::Single(0x048F),
278 '\u{0490}' => Mapping::Single(0x0491),
279 '\u{0492}' => Mapping::Single(0x0493),
280 '\u{0494}' => Mapping::Single(0x0495),
281 '\u{0496}' => Mapping::Single(0x0497),
282 '\u{0498}' => Mapping::Single(0x0499),
283 '\u{049A}' => Mapping::Single(0x049B),
284 '\u{049C}' => Mapping::Single(0x049D),
285 '\u{049E}' => Mapping::Single(0x049F),
286 '\u{04A0}' => Mapping::Single(0x04A1),
287 '\u{04A2}' => Mapping::Single(0x04A3),
288 '\u{04A4}' => Mapping::Single(0x04A5),
289 '\u{04A6}' => Mapping::Single(0x04A7),
290 '\u{04A8}' => Mapping::Single(0x04A9),
291 '\u{04AA}' => Mapping::Single(0x04AB),
292 '\u{04AC}' => Mapping::Single(0x04AD),
293 '\u{04AE}' => Mapping::Single(0x04AF),
294 '\u{04B0}' => Mapping::Single(0x04B1),
295 '\u{04B2}' => Mapping::Single(0x04B3),
296 '\u{04B4}' => Mapping::Single(0x04B5),
297 '\u{04B6}' => Mapping::Single(0x04B7),
298 '\u{04B8}' => Mapping::Single(0x04B9),
299 '\u{04BA}' => Mapping::Single(0x04BB),
300 '\u{04BC}' => Mapping::Single(0x04BD),
301 '\u{04BE}' => Mapping::Single(0x04BF),
302 '\u{04C0}' => Mapping::Single(0x04CF),
303 '\u{04C1}' => Mapping::Single(0x04C2),
304 '\u{04C3}' => Mapping::Single(0x04C4),
305 '\u{04C5}' => Mapping::Single(0x04C6),
306 '\u{04C7}' => Mapping::Single(0x04C8),
307 '\u{04C9}' => Mapping::Single(0x04CA),
308 '\u{04CB}' => Mapping::Single(0x04CC),
309 '\u{04CD}' => Mapping::Single(0x04CE),
310 '\u{04D0}' => Mapping::Single(0x04D1),
311 '\u{04D2}' => Mapping::Single(0x04D3),
312 '\u{04D4}' => Mapping::Single(0x04D5),
313 '\u{04D6}' => Mapping::Single(0x04D7),
314 '\u{04D8}' => Mapping::Single(0x04D9),
315 '\u{04DA}' => Mapping::Single(0x04DB),
316 '\u{04DC}' => Mapping::Single(0x04DD),
317 '\u{04DE}' => Mapping::Single(0x04DF),
318 '\u{04E0}' => Mapping::Single(0x04E1),
319 '\u{04E2}' => Mapping::Single(0x04E3),
320 '\u{04E4}' => Mapping::Single(0x04E5),
321 '\u{04E6}' => Mapping::Single(0x04E7),
322 '\u{04E8}' => Mapping::Single(0x04E9),
323 '\u{04EA}' => Mapping::Single(0x04EB),
324 '\u{04EC}' => Mapping::Single(0x04ED),
325 '\u{04EE}' => Mapping::Single(0x04EF),
326 '\u{04F0}' => Mapping::Single(0x04F1),
327 '\u{04F2}' => Mapping::Single(0x04F3),
328 '\u{04F4}' => Mapping::Single(0x04F5),
329 '\u{04F6}' => Mapping::Single(0x04F7),
330 '\u{04F8}' => Mapping::Single(0x04F9),
331 '\u{04FA}' => Mapping::Single(0x04FB),
332 '\u{04FC}' => Mapping::Single(0x04FD),
333 '\u{04FE}' => Mapping::Single(0x04FF),
334 _ => Mapping::Single(codepoint),
335 },
336 (0x0000, 0x05) => match c {
337 '\u{0500}' => Mapping::Single(0x0501),
338 '\u{0502}' => Mapping::Single(0x0503),
339 '\u{0504}' => Mapping::Single(0x0505),
340 '\u{0506}' => Mapping::Single(0x0507),
341 '\u{0508}' => Mapping::Single(0x0509),
342 '\u{050A}' => Mapping::Single(0x050B),
343 '\u{050C}' => Mapping::Single(0x050D),
344 '\u{050E}' => Mapping::Single(0x050F),
345 '\u{0510}' => Mapping::Single(0x0511),
346 '\u{0512}' => Mapping::Single(0x0513),
347 '\u{0514}' => Mapping::Single(0x0515),
348 '\u{0516}' => Mapping::Single(0x0517),
349 '\u{0518}' => Mapping::Single(0x0519),
350 '\u{051A}' => Mapping::Single(0x051B),
351 '\u{051C}' => Mapping::Single(0x051D),
352 '\u{051E}' => Mapping::Single(0x051F),
353 '\u{0520}' => Mapping::Single(0x0521),
354 '\u{0522}' => Mapping::Single(0x0523),
355 '\u{0524}' => Mapping::Single(0x0525),
356 '\u{0526}' => Mapping::Single(0x0527),
357 '\u{0528}' => Mapping::Single(0x0529),
358 '\u{052A}' => Mapping::Single(0x052B),
359 '\u{052C}' => Mapping::Single(0x052D),
360 '\u{052E}' => Mapping::Single(0x052F),
361 '\u{0531}'..='\u{0556}' => Mapping::Single(codepoint + 0x0030),
362 '\u{0587}' => Mapping::Double(0x0565, 0x0582),
363 _ => Mapping::Single(codepoint),
364 },
365 (0x0000, 0x10) => match c {
366 '\u{10A0}'..='\u{10C5}' => Mapping::Single(codepoint + 0x1c60),
367 '\u{10C7}' => Mapping::Single(0x2D27),
368 '\u{10CD}' => Mapping::Single(0x2D2D),
369 _ => Mapping::Single(codepoint),
370 },
371 (0x0000, 0x13) => match c {
372 '\u{13F8}'..='\u{13FD}' => Mapping::Single(codepoint - 0x0008),
373 _ => Mapping::Single(codepoint),
374 },
375 (0x0000, 0x1C) => match c {
376 '\u{1C80}' => Mapping::Single(0x0432),
377 '\u{1C81}' => Mapping::Single(0x0434),
378 '\u{1C82}' => Mapping::Single(0x043E),
379 '\u{1C83}'..='\u{1C84}' => Mapping::Single(codepoint - 0x1842),
380 '\u{1C85}' => Mapping::Single(0x0442),
381 '\u{1C86}' => Mapping::Single(0x044A),
382 '\u{1C87}' => Mapping::Single(0x0463),
383 '\u{1C88}' => Mapping::Single(0xA64B),
384 '\u{1C89}' => Mapping::Single(0x1C8A),
385 '\u{1C90}'..='\u{1CBA}' => Mapping::Single(codepoint - 0x0bc0),
386 '\u{1CBD}'..='\u{1CBF}' => Mapping::Single(codepoint - 0x0bc0),
387 _ => Mapping::Single(codepoint),
388 },
389 (0x0000, 0x1E) => match c {
390 '\u{1E00}' => Mapping::Single(0x1E01),
391 '\u{1E02}' => Mapping::Single(0x1E03),
392 '\u{1E04}' => Mapping::Single(0x1E05),
393 '\u{1E06}' => Mapping::Single(0x1E07),
394 '\u{1E08}' => Mapping::Single(0x1E09),
395 '\u{1E0A}' => Mapping::Single(0x1E0B),
396 '\u{1E0C}' => Mapping::Single(0x1E0D),
397 '\u{1E0E}' => Mapping::Single(0x1E0F),
398 '\u{1E10}' => Mapping::Single(0x1E11),
399 '\u{1E12}' => Mapping::Single(0x1E13),
400 '\u{1E14}' => Mapping::Single(0x1E15),
401 '\u{1E16}' => Mapping::Single(0x1E17),
402 '\u{1E18}' => Mapping::Single(0x1E19),
403 '\u{1E1A}' => Mapping::Single(0x1E1B),
404 '\u{1E1C}' => Mapping::Single(0x1E1D),
405 '\u{1E1E}' => Mapping::Single(0x1E1F),
406 '\u{1E20}' => Mapping::Single(0x1E21),
407 '\u{1E22}' => Mapping::Single(0x1E23),
408 '\u{1E24}' => Mapping::Single(0x1E25),
409 '\u{1E26}' => Mapping::Single(0x1E27),
410 '\u{1E28}' => Mapping::Single(0x1E29),
411 '\u{1E2A}' => Mapping::Single(0x1E2B),
412 '\u{1E2C}' => Mapping::Single(0x1E2D),
413 '\u{1E2E}' => Mapping::Single(0x1E2F),
414 '\u{1E30}' => Mapping::Single(0x1E31),
415 '\u{1E32}' => Mapping::Single(0x1E33),
416 '\u{1E34}' => Mapping::Single(0x1E35),
417 '\u{1E36}' => Mapping::Single(0x1E37),
418 '\u{1E38}' => Mapping::Single(0x1E39),
419 '\u{1E3A}' => Mapping::Single(0x1E3B),
420 '\u{1E3C}' => Mapping::Single(0x1E3D),
421 '\u{1E3E}' => Mapping::Single(0x1E3F),
422 '\u{1E40}' => Mapping::Single(0x1E41),
423 '\u{1E42}' => Mapping::Single(0x1E43),
424 '\u{1E44}' => Mapping::Single(0x1E45),
425 '\u{1E46}' => Mapping::Single(0x1E47),
426 '\u{1E48}' => Mapping::Single(0x1E49),
427 '\u{1E4A}' => Mapping::Single(0x1E4B),
428 '\u{1E4C}' => Mapping::Single(0x1E4D),
429 '\u{1E4E}' => Mapping::Single(0x1E4F),
430 '\u{1E50}' => Mapping::Single(0x1E51),
431 '\u{1E52}' => Mapping::Single(0x1E53),
432 '\u{1E54}' => Mapping::Single(0x1E55),
433 '\u{1E56}' => Mapping::Single(0x1E57),
434 '\u{1E58}' => Mapping::Single(0x1E59),
435 '\u{1E5A}' => Mapping::Single(0x1E5B),
436 '\u{1E5C}' => Mapping::Single(0x1E5D),
437 '\u{1E5E}' => Mapping::Single(0x1E5F),
438 '\u{1E60}' => Mapping::Single(0x1E61),
439 '\u{1E62}' => Mapping::Single(0x1E63),
440 '\u{1E64}' => Mapping::Single(0x1E65),
441 '\u{1E66}' => Mapping::Single(0x1E67),
442 '\u{1E68}' => Mapping::Single(0x1E69),
443 '\u{1E6A}' => Mapping::Single(0x1E6B),
444 '\u{1E6C}' => Mapping::Single(0x1E6D),
445 '\u{1E6E}' => Mapping::Single(0x1E6F),
446 '\u{1E70}' => Mapping::Single(0x1E71),
447 '\u{1E72}' => Mapping::Single(0x1E73),
448 '\u{1E74}' => Mapping::Single(0x1E75),
449 '\u{1E76}' => Mapping::Single(0x1E77),
450 '\u{1E78}' => Mapping::Single(0x1E79),
451 '\u{1E7A}' => Mapping::Single(0x1E7B),
452 '\u{1E7C}' => Mapping::Single(0x1E7D),
453 '\u{1E7E}' => Mapping::Single(0x1E7F),
454 '\u{1E80}' => Mapping::Single(0x1E81),
455 '\u{1E82}' => Mapping::Single(0x1E83),
456 '\u{1E84}' => Mapping::Single(0x1E85),
457 '\u{1E86}' => Mapping::Single(0x1E87),
458 '\u{1E88}' => Mapping::Single(0x1E89),
459 '\u{1E8A}' => Mapping::Single(0x1E8B),
460 '\u{1E8C}' => Mapping::Single(0x1E8D),
461 '\u{1E8E}' => Mapping::Single(0x1E8F),
462 '\u{1E90}' => Mapping::Single(0x1E91),
463 '\u{1E92}' => Mapping::Single(0x1E93),
464 '\u{1E94}' => Mapping::Single(0x1E95),
465 '\u{1E96}' => Mapping::Double(0x0068, 0x0331),
466 '\u{1E97}' => Mapping::Double(0x0074, 0x0308),
467 '\u{1E98}' => Mapping::Double(0x0077, 0x030A),
468 '\u{1E99}' => Mapping::Double(0x0079, 0x030A),
469 '\u{1E9A}' => Mapping::Double(0x0061, 0x02BE),
470 '\u{1E9B}' => Mapping::Single(0x1E61),
471 '\u{1E9E}' => Mapping::Double(0x0073, 0x0073),
472 '\u{1EA0}' => Mapping::Single(0x1EA1),
473 '\u{1EA2}' => Mapping::Single(0x1EA3),
474 '\u{1EA4}' => Mapping::Single(0x1EA5),
475 '\u{1EA6}' => Mapping::Single(0x1EA7),
476 '\u{1EA8}' => Mapping::Single(0x1EA9),
477 '\u{1EAA}' => Mapping::Single(0x1EAB),
478 '\u{1EAC}' => Mapping::Single(0x1EAD),
479 '\u{1EAE}' => Mapping::Single(0x1EAF),
480 '\u{1EB0}' => Mapping::Single(0x1EB1),
481 '\u{1EB2}' => Mapping::Single(0x1EB3),
482 '\u{1EB4}' => Mapping::Single(0x1EB5),
483 '\u{1EB6}' => Mapping::Single(0x1EB7),
484 '\u{1EB8}' => Mapping::Single(0x1EB9),
485 '\u{1EBA}' => Mapping::Single(0x1EBB),
486 '\u{1EBC}' => Mapping::Single(0x1EBD),
487 '\u{1EBE}' => Mapping::Single(0x1EBF),
488 '\u{1EC0}' => Mapping::Single(0x1EC1),
489 '\u{1EC2}' => Mapping::Single(0x1EC3),
490 '\u{1EC4}' => Mapping::Single(0x1EC5),
491 '\u{1EC6}' => Mapping::Single(0x1EC7),
492 '\u{1EC8}' => Mapping::Single(0x1EC9),
493 '\u{1ECA}' => Mapping::Single(0x1ECB),
494 '\u{1ECC}' => Mapping::Single(0x1ECD),
495 '\u{1ECE}' => Mapping::Single(0x1ECF),
496 '\u{1ED0}' => Mapping::Single(0x1ED1),
497 '\u{1ED2}' => Mapping::Single(0x1ED3),
498 '\u{1ED4}' => Mapping::Single(0x1ED5),
499 '\u{1ED6}' => Mapping::Single(0x1ED7),
500 '\u{1ED8}' => Mapping::Single(0x1ED9),
501 '\u{1EDA}' => Mapping::Single(0x1EDB),
502 '\u{1EDC}' => Mapping::Single(0x1EDD),
503 '\u{1EDE}' => Mapping::Single(0x1EDF),
504 '\u{1EE0}' => Mapping::Single(0x1EE1),
505 '\u{1EE2}' => Mapping::Single(0x1EE3),
506 '\u{1EE4}' => Mapping::Single(0x1EE5),
507 '\u{1EE6}' => Mapping::Single(0x1EE7),
508 '\u{1EE8}' => Mapping::Single(0x1EE9),
509 '\u{1EEA}' => Mapping::Single(0x1EEB),
510 '\u{1EEC}' => Mapping::Single(0x1EED),
511 '\u{1EEE}' => Mapping::Single(0x1EEF),
512 '\u{1EF0}' => Mapping::Single(0x1EF1),
513 '\u{1EF2}' => Mapping::Single(0x1EF3),
514 '\u{1EF4}' => Mapping::Single(0x1EF5),
515 '\u{1EF6}' => Mapping::Single(0x1EF7),
516 '\u{1EF8}' => Mapping::Single(0x1EF9),
517 '\u{1EFA}' => Mapping::Single(0x1EFB),
518 '\u{1EFC}' => Mapping::Single(0x1EFD),
519 '\u{1EFE}' => Mapping::Single(0x1EFF),
520 _ => Mapping::Single(codepoint),
521 },
522 (0x0000, 0x1F) => match c {
523 '\u{1F08}'..='\u{1F0F}' => Mapping::Single(codepoint - 0x0008),
524 '\u{1F18}'..='\u{1F1D}' => Mapping::Single(codepoint - 0x0008),
525 '\u{1F28}'..='\u{1F2F}' => Mapping::Single(codepoint - 0x0008),
526 '\u{1F38}'..='\u{1F3F}' => Mapping::Single(codepoint - 0x0008),
527 '\u{1F48}'..='\u{1F4D}' => Mapping::Single(codepoint - 0x0008),
528 '\u{1F50}' => Mapping::Double(0x03C5, 0x0313),
529 '\u{1F52}' => Mapping::Triple(0x03C5, 0x0313, 0x0300),
530 '\u{1F54}' => Mapping::Triple(0x03C5, 0x0313, 0x0301),
531 '\u{1F56}' => Mapping::Triple(0x03C5, 0x0313, 0x0342),
532 '\u{1F59}' => Mapping::Single(0x1F51),
533 '\u{1F5B}' => Mapping::Single(0x1F53),
534 '\u{1F5D}' => Mapping::Single(0x1F55),
535 '\u{1F5F}' => Mapping::Single(0x1F57),
536 '\u{1F68}'..='\u{1F6F}' => Mapping::Single(codepoint - 0x0008),
537 '\u{1F80}'..='\u{1F87}' => Mapping::Double(codepoint - 0x0080, 0x03B9),
538 '\u{1F88}'..='\u{1F8F}' => Mapping::Double(codepoint - 0x0088, 0x03B9),
539 '\u{1F90}'..='\u{1F97}' => Mapping::Double(codepoint - 0x0070, 0x03B9),
540 '\u{1F98}'..='\u{1F9F}' => Mapping::Double(codepoint - 0x0078, 0x03B9),
541 '\u{1FA0}'..='\u{1FA7}' => Mapping::Double(codepoint - 0x0040, 0x03B9),
542 '\u{1FA8}'..='\u{1FAF}' => Mapping::Double(codepoint - 0x0048, 0x03B9),
543 '\u{1FB2}' => Mapping::Double(0x1F70, 0x03B9),
544 '\u{1FB3}' => Mapping::Double(0x03B1, 0x03B9),
545 '\u{1FB4}' => Mapping::Double(0x03AC, 0x03B9),
546 '\u{1FB6}' => Mapping::Double(0x03B1, 0x0342),
547 '\u{1FB7}' => Mapping::Triple(0x03B1, 0x0342, 0x03B9),
548 '\u{1FB8}'..='\u{1FB9}' => Mapping::Single(codepoint - 0x0008),
549 '\u{1FBA}'..='\u{1FBB}' => Mapping::Single(codepoint - 0x004a),
550 '\u{1FBC}' => Mapping::Double(0x03B1, 0x03B9),
551 '\u{1FBE}' => Mapping::Single(0x03B9),
552 '\u{1FC2}' => Mapping::Double(0x1F74, 0x03B9),
553 '\u{1FC3}' => Mapping::Double(0x03B7, 0x03B9),
554 '\u{1FC4}' => Mapping::Double(0x03AE, 0x03B9),
555 '\u{1FC6}' => Mapping::Double(0x03B7, 0x0342),
556 '\u{1FC7}' => Mapping::Triple(0x03B7, 0x0342, 0x03B9),
557 '\u{1FC8}'..='\u{1FCB}' => Mapping::Single(codepoint - 0x0056),
558 '\u{1FCC}' => Mapping::Double(0x03B7, 0x03B9),
559 '\u{1FD2}' => Mapping::Triple(0x03B9, 0x0308, 0x0300),
560 '\u{1FD3}' => Mapping::Triple(0x03B9, 0x0308, 0x0301),
561 '\u{1FD6}' => Mapping::Double(0x03B9, 0x0342),
562 '\u{1FD7}' => Mapping::Triple(0x03B9, 0x0308, 0x0342),
563 '\u{1FD8}'..='\u{1FD9}' => Mapping::Single(codepoint - 0x0008),
564 '\u{1FDA}'..='\u{1FDB}' => Mapping::Single(codepoint - 0x0064),
565 '\u{1FE2}' => Mapping::Triple(0x03C5, 0x0308, 0x0300),
566 '\u{1FE3}' => Mapping::Triple(0x03C5, 0x0308, 0x0301),
567 '\u{1FE4}' => Mapping::Double(0x03C1, 0x0313),
568 '\u{1FE6}' => Mapping::Double(0x03C5, 0x0342),
569 '\u{1FE7}' => Mapping::Triple(0x03C5, 0x0308, 0x0342),
570 '\u{1FE8}'..='\u{1FE9}' => Mapping::Single(codepoint - 0x0008),
571 '\u{1FEA}'..='\u{1FEB}' => Mapping::Single(codepoint - 0x0070),
572 '\u{1FEC}' => Mapping::Single(0x1FE5),
573 '\u{1FF2}' => Mapping::Double(0x1F7C, 0x03B9),
574 '\u{1FF3}' => Mapping::Double(0x03C9, 0x03B9),
575 '\u{1FF4}' => Mapping::Double(0x03CE, 0x03B9),
576 '\u{1FF6}' => Mapping::Double(0x03C9, 0x0342),
577 '\u{1FF7}' => Mapping::Triple(0x03C9, 0x0342, 0x03B9),
578 '\u{1FF8}'..='\u{1FF9}' => Mapping::Single(codepoint - 0x0080),
579 '\u{1FFA}'..='\u{1FFB}' => Mapping::Single(codepoint - 0x007e),
580 '\u{1FFC}' => Mapping::Double(0x03C9, 0x03B9),
581 _ => Mapping::Single(codepoint),
582 },
583 (0x0000, 0x21) => match c {
584 '\u{2126}' => Mapping::Single(0x03C9),
585 '\u{212A}' => Mapping::Single(0x006B),
586 '\u{212B}' => Mapping::Single(0x00E5),
587 '\u{2132}' => Mapping::Single(0x214E),
588 '\u{2160}'..='\u{216F}' => Mapping::Single(codepoint + 0x0010),
589 '\u{2183}' => Mapping::Single(0x2184),
590 _ => Mapping::Single(codepoint),
591 },
592 (0x0000, 0x24) => match c {
593 '\u{24B6}'..='\u{24CF}' => Mapping::Single(codepoint + 0x001a),
594 _ => Mapping::Single(codepoint),
595 },
596 (0x0000, 0x2C) => match c {
597 '\u{2C00}'..='\u{2C2F}' => Mapping::Single(codepoint + 0x0030),
598 '\u{2C60}' => Mapping::Single(0x2C61),
599 '\u{2C62}' => Mapping::Single(0x026B),
600 '\u{2C63}' => Mapping::Single(0x1D7D),
601 '\u{2C64}' => Mapping::Single(0x027D),
602 '\u{2C67}' => Mapping::Single(0x2C68),
603 '\u{2C69}' => Mapping::Single(0x2C6A),
604 '\u{2C6B}' => Mapping::Single(0x2C6C),
605 '\u{2C6D}' => Mapping::Single(0x0251),
606 '\u{2C6E}' => Mapping::Single(0x0271),
607 '\u{2C6F}' => Mapping::Single(0x0250),
608 '\u{2C70}' => Mapping::Single(0x0252),
609 '\u{2C72}' => Mapping::Single(0x2C73),
610 '\u{2C75}' => Mapping::Single(0x2C76),
611 '\u{2C7E}'..='\u{2C7F}' => Mapping::Single(codepoint - 0x2a3f),
612 '\u{2C80}' => Mapping::Single(0x2C81),
613 '\u{2C82}' => Mapping::Single(0x2C83),
614 '\u{2C84}' => Mapping::Single(0x2C85),
615 '\u{2C86}' => Mapping::Single(0x2C87),
616 '\u{2C88}' => Mapping::Single(0x2C89),
617 '\u{2C8A}' => Mapping::Single(0x2C8B),
618 '\u{2C8C}' => Mapping::Single(0x2C8D),
619 '\u{2C8E}' => Mapping::Single(0x2C8F),
620 '\u{2C90}' => Mapping::Single(0x2C91),
621 '\u{2C92}' => Mapping::Single(0x2C93),
622 '\u{2C94}' => Mapping::Single(0x2C95),
623 '\u{2C96}' => Mapping::Single(0x2C97),
624 '\u{2C98}' => Mapping::Single(0x2C99),
625 '\u{2C9A}' => Mapping::Single(0x2C9B),
626 '\u{2C9C}' => Mapping::Single(0x2C9D),
627 '\u{2C9E}' => Mapping::Single(0x2C9F),
628 '\u{2CA0}' => Mapping::Single(0x2CA1),
629 '\u{2CA2}' => Mapping::Single(0x2CA3),
630 '\u{2CA4}' => Mapping::Single(0x2CA5),
631 '\u{2CA6}' => Mapping::Single(0x2CA7),
632 '\u{2CA8}' => Mapping::Single(0x2CA9),
633 '\u{2CAA}' => Mapping::Single(0x2CAB),
634 '\u{2CAC}' => Mapping::Single(0x2CAD),
635 '\u{2CAE}' => Mapping::Single(0x2CAF),
636 '\u{2CB0}' => Mapping::Single(0x2CB1),
637 '\u{2CB2}' => Mapping::Single(0x2CB3),
638 '\u{2CB4}' => Mapping::Single(0x2CB5),
639 '\u{2CB6}' => Mapping::Single(0x2CB7),
640 '\u{2CB8}' => Mapping::Single(0x2CB9),
641 '\u{2CBA}' => Mapping::Single(0x2CBB),
642 '\u{2CBC}' => Mapping::Single(0x2CBD),
643 '\u{2CBE}' => Mapping::Single(0x2CBF),
644 '\u{2CC0}' => Mapping::Single(0x2CC1),
645 '\u{2CC2}' => Mapping::Single(0x2CC3),
646 '\u{2CC4}' => Mapping::Single(0x2CC5),
647 '\u{2CC6}' => Mapping::Single(0x2CC7),
648 '\u{2CC8}' => Mapping::Single(0x2CC9),
649 '\u{2CCA}' => Mapping::Single(0x2CCB),
650 '\u{2CCC}' => Mapping::Single(0x2CCD),
651 '\u{2CCE}' => Mapping::Single(0x2CCF),
652 '\u{2CD0}' => Mapping::Single(0x2CD1),
653 '\u{2CD2}' => Mapping::Single(0x2CD3),
654 '\u{2CD4}' => Mapping::Single(0x2CD5),
655 '\u{2CD6}' => Mapping::Single(0x2CD7),
656 '\u{2CD8}' => Mapping::Single(0x2CD9),
657 '\u{2CDA}' => Mapping::Single(0x2CDB),
658 '\u{2CDC}' => Mapping::Single(0x2CDD),
659 '\u{2CDE}' => Mapping::Single(0x2CDF),
660 '\u{2CE0}' => Mapping::Single(0x2CE1),
661 '\u{2CE2}' => Mapping::Single(0x2CE3),
662 '\u{2CEB}' => Mapping::Single(0x2CEC),
663 '\u{2CED}' => Mapping::Single(0x2CEE),
664 '\u{2CF2}' => Mapping::Single(0x2CF3),
665 _ => Mapping::Single(codepoint),
666 },
667 (0x0000, 0xA6) => match c {
668 '\u{A640}' => Mapping::Single(0xA641),
669 '\u{A642}' => Mapping::Single(0xA643),
670 '\u{A644}' => Mapping::Single(0xA645),
671 '\u{A646}' => Mapping::Single(0xA647),
672 '\u{A648}' => Mapping::Single(0xA649),
673 '\u{A64A}' => Mapping::Single(0xA64B),
674 '\u{A64C}' => Mapping::Single(0xA64D),
675 '\u{A64E}' => Mapping::Single(0xA64F),
676 '\u{A650}' => Mapping::Single(0xA651),
677 '\u{A652}' => Mapping::Single(0xA653),
678 '\u{A654}' => Mapping::Single(0xA655),
679 '\u{A656}' => Mapping::Single(0xA657),
680 '\u{A658}' => Mapping::Single(0xA659),
681 '\u{A65A}' => Mapping::Single(0xA65B),
682 '\u{A65C}' => Mapping::Single(0xA65D),
683 '\u{A65E}' => Mapping::Single(0xA65F),
684 '\u{A660}' => Mapping::Single(0xA661),
685 '\u{A662}' => Mapping::Single(0xA663),
686 '\u{A664}' => Mapping::Single(0xA665),
687 '\u{A666}' => Mapping::Single(0xA667),
688 '\u{A668}' => Mapping::Single(0xA669),
689 '\u{A66A}' => Mapping::Single(0xA66B),
690 '\u{A66C}' => Mapping::Single(0xA66D),
691 '\u{A680}' => Mapping::Single(0xA681),
692 '\u{A682}' => Mapping::Single(0xA683),
693 '\u{A684}' => Mapping::Single(0xA685),
694 '\u{A686}' => Mapping::Single(0xA687),
695 '\u{A688}' => Mapping::Single(0xA689),
696 '\u{A68A}' => Mapping::Single(0xA68B),
697 '\u{A68C}' => Mapping::Single(0xA68D),
698 '\u{A68E}' => Mapping::Single(0xA68F),
699 '\u{A690}' => Mapping::Single(0xA691),
700 '\u{A692}' => Mapping::Single(0xA693),
701 '\u{A694}' => Mapping::Single(0xA695),
702 '\u{A696}' => Mapping::Single(0xA697),
703 '\u{A698}' => Mapping::Single(0xA699),
704 '\u{A69A}' => Mapping::Single(0xA69B),
705 _ => Mapping::Single(codepoint),
706 },
707 (0x0000, 0xA7) => match c {
708 '\u{A722}' => Mapping::Single(0xA723),
709 '\u{A724}' => Mapping::Single(0xA725),
710 '\u{A726}' => Mapping::Single(0xA727),
711 '\u{A728}' => Mapping::Single(0xA729),
712 '\u{A72A}' => Mapping::Single(0xA72B),
713 '\u{A72C}' => Mapping::Single(0xA72D),
714 '\u{A72E}' => Mapping::Single(0xA72F),
715 '\u{A732}' => Mapping::Single(0xA733),
716 '\u{A734}' => Mapping::Single(0xA735),
717 '\u{A736}' => Mapping::Single(0xA737),
718 '\u{A738}' => Mapping::Single(0xA739),
719 '\u{A73A}' => Mapping::Single(0xA73B),
720 '\u{A73C}' => Mapping::Single(0xA73D),
721 '\u{A73E}' => Mapping::Single(0xA73F),
722 '\u{A740}' => Mapping::Single(0xA741),
723 '\u{A742}' => Mapping::Single(0xA743),
724 '\u{A744}' => Mapping::Single(0xA745),
725 '\u{A746}' => Mapping::Single(0xA747),
726 '\u{A748}' => Mapping::Single(0xA749),
727 '\u{A74A}' => Mapping::Single(0xA74B),
728 '\u{A74C}' => Mapping::Single(0xA74D),
729 '\u{A74E}' => Mapping::Single(0xA74F),
730 '\u{A750}' => Mapping::Single(0xA751),
731 '\u{A752}' => Mapping::Single(0xA753),
732 '\u{A754}' => Mapping::Single(0xA755),
733 '\u{A756}' => Mapping::Single(0xA757),
734 '\u{A758}' => Mapping::Single(0xA759),
735 '\u{A75A}' => Mapping::Single(0xA75B),
736 '\u{A75C}' => Mapping::Single(0xA75D),
737 '\u{A75E}' => Mapping::Single(0xA75F),
738 '\u{A760}' => Mapping::Single(0xA761),
739 '\u{A762}' => Mapping::Single(0xA763),
740 '\u{A764}' => Mapping::Single(0xA765),
741 '\u{A766}' => Mapping::Single(0xA767),
742 '\u{A768}' => Mapping::Single(0xA769),
743 '\u{A76A}' => Mapping::Single(0xA76B),
744 '\u{A76C}' => Mapping::Single(0xA76D),
745 '\u{A76E}' => Mapping::Single(0xA76F),
746 '\u{A779}' => Mapping::Single(0xA77A),
747 '\u{A77B}' => Mapping::Single(0xA77C),
748 '\u{A77D}' => Mapping::Single(0x1D79),
749 '\u{A77E}' => Mapping::Single(0xA77F),
750 '\u{A780}' => Mapping::Single(0xA781),
751 '\u{A782}' => Mapping::Single(0xA783),
752 '\u{A784}' => Mapping::Single(0xA785),
753 '\u{A786}' => Mapping::Single(0xA787),
754 '\u{A78B}' => Mapping::Single(0xA78C),
755 '\u{A78D}' => Mapping::Single(0x0265),
756 '\u{A790}' => Mapping::Single(0xA791),
757 '\u{A792}' => Mapping::Single(0xA793),
758 '\u{A796}' => Mapping::Single(0xA797),
759 '\u{A798}' => Mapping::Single(0xA799),
760 '\u{A79A}' => Mapping::Single(0xA79B),
761 '\u{A79C}' => Mapping::Single(0xA79D),
762 '\u{A79E}' => Mapping::Single(0xA79F),
763 '\u{A7A0}' => Mapping::Single(0xA7A1),
764 '\u{A7A2}' => Mapping::Single(0xA7A3),
765 '\u{A7A4}' => Mapping::Single(0xA7A5),
766 '\u{A7A6}' => Mapping::Single(0xA7A7),
767 '\u{A7A8}' => Mapping::Single(0xA7A9),
768 '\u{A7AA}' => Mapping::Single(0x0266),
769 '\u{A7AB}' => Mapping::Single(0x025C),
770 '\u{A7AC}' => Mapping::Single(0x0261),
771 '\u{A7AD}' => Mapping::Single(0x026C),
772 '\u{A7AE}' => Mapping::Single(0x026A),
773 '\u{A7B0}' => Mapping::Single(0x029E),
774 '\u{A7B1}' => Mapping::Single(0x0287),
775 '\u{A7B2}' => Mapping::Single(0x029D),
776 '\u{A7B3}' => Mapping::Single(0xAB53),
777 '\u{A7B4}' => Mapping::Single(0xA7B5),
778 '\u{A7B6}' => Mapping::Single(0xA7B7),
779 '\u{A7B8}' => Mapping::Single(0xA7B9),
780 '\u{A7BA}' => Mapping::Single(0xA7BB),
781 '\u{A7BC}' => Mapping::Single(0xA7BD),
782 '\u{A7BE}' => Mapping::Single(0xA7BF),
783 '\u{A7C0}' => Mapping::Single(0xA7C1),
784 '\u{A7C2}' => Mapping::Single(0xA7C3),
785 '\u{A7C4}' => Mapping::Single(0xA794),
786 '\u{A7C5}' => Mapping::Single(0x0282),
787 '\u{A7C6}' => Mapping::Single(0x1D8E),
788 '\u{A7C7}' => Mapping::Single(0xA7C8),
789 '\u{A7C9}' => Mapping::Single(0xA7CA),
790 '\u{A7CB}' => Mapping::Single(0x0264),
791 '\u{A7CC}' => Mapping::Single(0xA7CD),
792 '\u{A7D0}' => Mapping::Single(0xA7D1),
793 '\u{A7D6}' => Mapping::Single(0xA7D7),
794 '\u{A7D8}' => Mapping::Single(0xA7D9),
795 '\u{A7DA}' => Mapping::Single(0xA7DB),
796 '\u{A7DC}' => Mapping::Single(0x019B),
797 '\u{A7F5}' => Mapping::Single(0xA7F6),
798 _ => Mapping::Single(codepoint),
799 },
800 (0x0000, 0xAB) => match c {
801 '\u{AB70}'..='\u{ABBF}' => Mapping::Single(codepoint - 0x97d0),
802 _ => Mapping::Single(codepoint),
803 },
804 (0x0000, 0xFB) => match c {
805 '\u{FB00}' => Mapping::Double(0x0066, 0x0066),
806 '\u{FB01}' => Mapping::Double(0x0066, 0x0069),
807 '\u{FB02}' => Mapping::Double(0x0066, 0x006C),
808 '\u{FB03}' => Mapping::Triple(0x0066, 0x0066, 0x0069),
809 '\u{FB04}' => Mapping::Triple(0x0066, 0x0066, 0x006C),
810 '\u{FB05}' => Mapping::Double(0x0073, 0x0074),
811 '\u{FB06}' => Mapping::Double(0x0073, 0x0074),
812 '\u{FB13}' => Mapping::Double(0x0574, 0x0576),
813 '\u{FB14}' => Mapping::Double(0x0574, 0x0565),
814 '\u{FB15}' => Mapping::Double(0x0574, 0x056B),
815 '\u{FB16}' => Mapping::Double(0x057E, 0x0576),
816 '\u{FB17}' => Mapping::Double(0x0574, 0x056D),
817 _ => Mapping::Single(codepoint),
818 },
819 (0x0000, 0xFF) => match c {
820 '\u{FF21}'..='\u{FF3A}' => Mapping::Single(codepoint + 0x0020),
821 _ => Mapping::Single(codepoint),
822 },
823 (0x0001, 0x04) => match c {
824 '\u{10400}'..='\u{10427}' => Mapping::Single(codepoint + 0x0028),
825 '\u{104B0}'..='\u{104D3}' => Mapping::Single(codepoint + 0x0028),
826 _ => Mapping::Single(codepoint),
827 },
828 (0x0001, 0x05) => match c {
829 '\u{10570}'..='\u{1057A}' => Mapping::Single(codepoint + 0x0027),
830 '\u{1057C}'..='\u{1058A}' => Mapping::Single(codepoint + 0x0027),
831 '\u{1058C}'..='\u{10592}' => Mapping::Single(codepoint + 0x0027),
832 '\u{10594}'..='\u{10595}' => Mapping::Single(codepoint + 0x0027),
833 _ => Mapping::Single(codepoint),
834 },
835 (0x0001, 0x0C) => match c {
836 '\u{10C80}'..='\u{10CB2}' => Mapping::Single(codepoint + 0x0040),
837 _ => Mapping::Single(codepoint),
838 },
839 (0x0001, 0x0D) => match c {
840 '\u{10D50}'..='\u{10D65}' => Mapping::Single(codepoint + 0x0020),
841 _ => Mapping::Single(codepoint),
842 },
843 (0x0001, 0x18) => match c {
844 '\u{118A0}'..='\u{118BF}' => Mapping::Single(codepoint + 0x0020),
845 _ => Mapping::Single(codepoint),
846 },
847 (0x0001, 0x6E) => match c {
848 '\u{16E40}'..='\u{16E5F}' => Mapping::Single(codepoint + 0x0020),
849 _ => Mapping::Single(codepoint),
850 },
851 (0x0001, 0xE9) => match c {
852 '\u{1E900}'..='\u{1E921}' => Mapping::Single(codepoint + 0x0022),
853 _ => Mapping::Single(codepoint),
854 },
855 _ => Mapping::Single(codepoint),
856 }
857}