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