focaccia/folding/mapping/
lookup.rs

1// @generated
2//
3// This source is autogenerated. Do not modify it directly.
4// To make modifications to this code, see `scripts/gen_case_lookups.rb`.
5//
6// Last generated on 2024-12-30 06:21:50 UTC.
7//
8// Unicode version:
9// CaseFolding-16.0.0.txt
10// Date: 2024-04-30, 21:48:11 GMT
11// © 2024 Unicode®, Inc.
12
13use 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            // Turkic mapping in ASCII range
26            // 0049; T; 0131; # LATIN CAPITAL LETTER I
27            '\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}