blob: 8ac4f50397c4c177a38590c72dbc6babd82016d1 [file] [log] [blame]
Ken Wakasa07cab722010-04-20 01:24:57 +09001/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Ken Wakasaf1008c52012-07-31 17:56:40 +090017#include <cstdlib>
Ken Wakasaee05f3f2012-11-10 19:30:45 +090018#include <stdint.h>
Ken Wakasa07cab722010-04-20 01:24:57 +090019
Ken Wakasa77e8e812012-08-02 19:48:08 +090020#include "char_utils.h"
Ken Wakasab02ee3d2012-10-08 11:46:14 +090021#include "defines.h"
Ken Wakasa77e8e812012-08-02 19:48:08 +090022
Ken Wakasa07cab722010-04-20 01:24:57 +090023namespace latinime {
24
25struct LatinCapitalSmallPair {
26 unsigned short capital;
27 unsigned short small;
28};
29
30// Generated from http://unicode.org/Public/UNIDATA/UnicodeData.txt
31//
32// 1. Run the following code. Bascially taken from
33// Dictionary::toLowerCase(unsigned short c) in dictionary.cpp.
Ken Wakasa6d0c9542010-04-23 08:58:56 +090034// Then, get the list of chars where cc != ccc.
Ken Wakasa07cab722010-04-20 01:24:57 +090035//
36// unsigned short c, cc, ccc, ccc2;
37// for (c = 0; c < 0xFFFF ; c++) {
Ken Wakasab02ee3d2012-10-08 11:46:14 +090038// if (c < NELEMS(BASE_CHARS)) {
Ken Wakasa07cab722010-04-20 01:24:57 +090039// cc = BASE_CHARS[c];
40// } else {
41// cc = c;
42// }
43//
44// // tolower
45// int isBase = 0;
46// if (cc >='A' && cc <= 'Z') {
47// ccc = (cc | 0x20);
48// ccc2 = ccc;
49// isBase = 1;
50// } else if (cc > 0x7F) {
51// ccc = u_tolower(cc);
52// ccc2 = latin_tolower(cc);
53// } else {
54// ccc = cc;
55// ccc2 = ccc;
56// }
57// if (!isBase && cc != ccc) {
58// wprintf(L" 0x%04X => 0x%04X => 0x%04X %lc => %lc => %lc \n",
59// c, cc, ccc, c, cc, ccc);
60// //assert(ccc == ccc2);
61// }
62// }
63//
64// Initially, started with an empty latin_tolower() as below.
65//
66// unsigned short latin_tolower(unsigned short c) {
67// return c;
68// }
69//
70//
71// 2. Process the list obtained by 1 by the following perl script and apply
72// 'sort -u' as well. Get the SORTED_CHAR_MAP[].
73// Note that '$1' in the perl script is 'cc' in the above C code.
74//
75// while(<>) {
76// / 0x\w* => 0x(\w*) =/;
77// open(HDL, "grep -iw ^" . $1 . " UnicodeData.txt | ");
78// $line = <HDL>;
79// chomp $line;
80// @cols = split(/;/, $line);
81// print " { 0x$1, 0x$cols[13] }, // $cols[1]\n";
82// }
83//
84//
85// 3. Update the latin_tolower() function above with SORTED_CHAR_MAP. Enable
86// the assert(ccc == ccc2) above and confirm the function exits successfully.
87//
88static const struct LatinCapitalSmallPair SORTED_CHAR_MAP[] = {
89 { 0x00C4, 0x00E4 }, // LATIN CAPITAL LETTER A WITH DIAERESIS
90 { 0x00C5, 0x00E5 }, // LATIN CAPITAL LETTER A WITH RING ABOVE
91 { 0x00C6, 0x00E6 }, // LATIN CAPITAL LETTER AE
92 { 0x00D0, 0x00F0 }, // LATIN CAPITAL LETTER ETH
Tom Ouyangedd5b732012-09-25 17:04:35 -070093 { 0x00D1, 0x00F1 }, // LATIN CAPITAL LETTER N WITH TILDE
Ken Wakasa07cab722010-04-20 01:24:57 +090094 { 0x00D5, 0x00F5 }, // LATIN CAPITAL LETTER O WITH TILDE
95 { 0x00D6, 0x00F6 }, // LATIN CAPITAL LETTER O WITH DIAERESIS
96 { 0x00D8, 0x00F8 }, // LATIN CAPITAL LETTER O WITH STROKE
97 { 0x00DC, 0x00FC }, // LATIN CAPITAL LETTER U WITH DIAERESIS
98 { 0x00DE, 0x00FE }, // LATIN CAPITAL LETTER THORN
99 { 0x0110, 0x0111 }, // LATIN CAPITAL LETTER D WITH STROKE
100 { 0x0126, 0x0127 }, // LATIN CAPITAL LETTER H WITH STROKE
101 { 0x0141, 0x0142 }, // LATIN CAPITAL LETTER L WITH STROKE
102 { 0x014A, 0x014B }, // LATIN CAPITAL LETTER ENG
103 { 0x0152, 0x0153 }, // LATIN CAPITAL LIGATURE OE
104 { 0x0166, 0x0167 }, // LATIN CAPITAL LETTER T WITH STROKE
105 { 0x0181, 0x0253 }, // LATIN CAPITAL LETTER B WITH HOOK
106 { 0x0182, 0x0183 }, // LATIN CAPITAL LETTER B WITH TOPBAR
107 { 0x0184, 0x0185 }, // LATIN CAPITAL LETTER TONE SIX
108 { 0x0186, 0x0254 }, // LATIN CAPITAL LETTER OPEN O
109 { 0x0187, 0x0188 }, // LATIN CAPITAL LETTER C WITH HOOK
110 { 0x0189, 0x0256 }, // LATIN CAPITAL LETTER AFRICAN D
111 { 0x018A, 0x0257 }, // LATIN CAPITAL LETTER D WITH HOOK
112 { 0x018B, 0x018C }, // LATIN CAPITAL LETTER D WITH TOPBAR
113 { 0x018E, 0x01DD }, // LATIN CAPITAL LETTER REVERSED E
114 { 0x018F, 0x0259 }, // LATIN CAPITAL LETTER SCHWA
115 { 0x0190, 0x025B }, // LATIN CAPITAL LETTER OPEN E
116 { 0x0191, 0x0192 }, // LATIN CAPITAL LETTER F WITH HOOK
117 { 0x0193, 0x0260 }, // LATIN CAPITAL LETTER G WITH HOOK
118 { 0x0194, 0x0263 }, // LATIN CAPITAL LETTER GAMMA
119 { 0x0196, 0x0269 }, // LATIN CAPITAL LETTER IOTA
120 { 0x0197, 0x0268 }, // LATIN CAPITAL LETTER I WITH STROKE
121 { 0x0198, 0x0199 }, // LATIN CAPITAL LETTER K WITH HOOK
122 { 0x019C, 0x026F }, // LATIN CAPITAL LETTER TURNED M
123 { 0x019D, 0x0272 }, // LATIN CAPITAL LETTER N WITH LEFT HOOK
124 { 0x019F, 0x0275 }, // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
125 { 0x01A2, 0x01A3 }, // LATIN CAPITAL LETTER OI
126 { 0x01A4, 0x01A5 }, // LATIN CAPITAL LETTER P WITH HOOK
127 { 0x01A6, 0x0280 }, // LATIN LETTER YR
128 { 0x01A7, 0x01A8 }, // LATIN CAPITAL LETTER TONE TWO
129 { 0x01A9, 0x0283 }, // LATIN CAPITAL LETTER ESH
130 { 0x01AC, 0x01AD }, // LATIN CAPITAL LETTER T WITH HOOK
131 { 0x01AE, 0x0288 }, // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
132 { 0x01B1, 0x028A }, // LATIN CAPITAL LETTER UPSILON
133 { 0x01B2, 0x028B }, // LATIN CAPITAL LETTER V WITH HOOK
134 { 0x01B3, 0x01B4 }, // LATIN CAPITAL LETTER Y WITH HOOK
135 { 0x01B5, 0x01B6 }, // LATIN CAPITAL LETTER Z WITH STROKE
136 { 0x01B7, 0x0292 }, // LATIN CAPITAL LETTER EZH
137 { 0x01B8, 0x01B9 }, // LATIN CAPITAL LETTER EZH REVERSED
138 { 0x01BC, 0x01BD }, // LATIN CAPITAL LETTER TONE FIVE
139 { 0x01E4, 0x01E5 }, // LATIN CAPITAL LETTER G WITH STROKE
140 { 0x01EA, 0x01EB }, // LATIN CAPITAL LETTER O WITH OGONEK
141 { 0x01F6, 0x0195 }, // LATIN CAPITAL LETTER HWAIR
142 { 0x01F7, 0x01BF }, // LATIN CAPITAL LETTER WYNN
143 { 0x021C, 0x021D }, // LATIN CAPITAL LETTER YOGH
144 { 0x0220, 0x019E }, // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
145 { 0x0222, 0x0223 }, // LATIN CAPITAL LETTER OU
146 { 0x0224, 0x0225 }, // LATIN CAPITAL LETTER Z WITH HOOK
147 { 0x0226, 0x0227 }, // LATIN CAPITAL LETTER A WITH DOT ABOVE
148 { 0x022E, 0x022F }, // LATIN CAPITAL LETTER O WITH DOT ABOVE
149 { 0x023A, 0x2C65 }, // LATIN CAPITAL LETTER A WITH STROKE
150 { 0x023B, 0x023C }, // LATIN CAPITAL LETTER C WITH STROKE
151 { 0x023D, 0x019A }, // LATIN CAPITAL LETTER L WITH BAR
152 { 0x023E, 0x2C66 }, // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
153 { 0x0241, 0x0242 }, // LATIN CAPITAL LETTER GLOTTAL STOP
154 { 0x0243, 0x0180 }, // LATIN CAPITAL LETTER B WITH STROKE
155 { 0x0244, 0x0289 }, // LATIN CAPITAL LETTER U BAR
156 { 0x0245, 0x028C }, // LATIN CAPITAL LETTER TURNED V
157 { 0x0246, 0x0247 }, // LATIN CAPITAL LETTER E WITH STROKE
158 { 0x0248, 0x0249 }, // LATIN CAPITAL LETTER J WITH STROKE
159 { 0x024A, 0x024B }, // LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
160 { 0x024C, 0x024D }, // LATIN CAPITAL LETTER R WITH STROKE
161 { 0x024E, 0x024F }, // LATIN CAPITAL LETTER Y WITH STROKE
162 { 0x0370, 0x0371 }, // GREEK CAPITAL LETTER HETA
163 { 0x0372, 0x0373 }, // GREEK CAPITAL LETTER ARCHAIC SAMPI
164 { 0x0376, 0x0377 }, // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
165 { 0x0391, 0x03B1 }, // GREEK CAPITAL LETTER ALPHA
166 { 0x0392, 0x03B2 }, // GREEK CAPITAL LETTER BETA
167 { 0x0393, 0x03B3 }, // GREEK CAPITAL LETTER GAMMA
168 { 0x0394, 0x03B4 }, // GREEK CAPITAL LETTER DELTA
169 { 0x0395, 0x03B5 }, // GREEK CAPITAL LETTER EPSILON
170 { 0x0396, 0x03B6 }, // GREEK CAPITAL LETTER ZETA
171 { 0x0397, 0x03B7 }, // GREEK CAPITAL LETTER ETA
172 { 0x0398, 0x03B8 }, // GREEK CAPITAL LETTER THETA
173 { 0x0399, 0x03B9 }, // GREEK CAPITAL LETTER IOTA
174 { 0x039A, 0x03BA }, // GREEK CAPITAL LETTER KAPPA
175 { 0x039B, 0x03BB }, // GREEK CAPITAL LETTER LAMDA
176 { 0x039C, 0x03BC }, // GREEK CAPITAL LETTER MU
177 { 0x039D, 0x03BD }, // GREEK CAPITAL LETTER NU
178 { 0x039E, 0x03BE }, // GREEK CAPITAL LETTER XI
179 { 0x039F, 0x03BF }, // GREEK CAPITAL LETTER OMICRON
180 { 0x03A0, 0x03C0 }, // GREEK CAPITAL LETTER PI
181 { 0x03A1, 0x03C1 }, // GREEK CAPITAL LETTER RHO
182 { 0x03A3, 0x03C3 }, // GREEK CAPITAL LETTER SIGMA
183 { 0x03A4, 0x03C4 }, // GREEK CAPITAL LETTER TAU
184 { 0x03A5, 0x03C5 }, // GREEK CAPITAL LETTER UPSILON
185 { 0x03A6, 0x03C6 }, // GREEK CAPITAL LETTER PHI
186 { 0x03A7, 0x03C7 }, // GREEK CAPITAL LETTER CHI
187 { 0x03A8, 0x03C8 }, // GREEK CAPITAL LETTER PSI
188 { 0x03A9, 0x03C9 }, // GREEK CAPITAL LETTER OMEGA
189 { 0x03CF, 0x03D7 }, // GREEK CAPITAL KAI SYMBOL
190 { 0x03D8, 0x03D9 }, // GREEK LETTER ARCHAIC KOPPA
191 { 0x03DA, 0x03DB }, // GREEK LETTER STIGMA
192 { 0x03DC, 0x03DD }, // GREEK LETTER DIGAMMA
193 { 0x03DE, 0x03DF }, // GREEK LETTER KOPPA
194 { 0x03E0, 0x03E1 }, // GREEK LETTER SAMPI
195 { 0x03E2, 0x03E3 }, // COPTIC CAPITAL LETTER SHEI
196 { 0x03E4, 0x03E5 }, // COPTIC CAPITAL LETTER FEI
197 { 0x03E6, 0x03E7 }, // COPTIC CAPITAL LETTER KHEI
198 { 0x03E8, 0x03E9 }, // COPTIC CAPITAL LETTER HORI
199 { 0x03EA, 0x03EB }, // COPTIC CAPITAL LETTER GANGIA
200 { 0x03EC, 0x03ED }, // COPTIC CAPITAL LETTER SHIMA
201 { 0x03EE, 0x03EF }, // COPTIC CAPITAL LETTER DEI
202 { 0x03F7, 0x03F8 }, // GREEK CAPITAL LETTER SHO
203 { 0x03FA, 0x03FB }, // GREEK CAPITAL LETTER SAN
204 { 0x03FD, 0x037B }, // GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
205 { 0x03FE, 0x037C }, // GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
206 { 0x03FF, 0x037D }, // GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
207 { 0x0402, 0x0452 }, // CYRILLIC CAPITAL LETTER DJE
208 { 0x0404, 0x0454 }, // CYRILLIC CAPITAL LETTER UKRAINIAN IE
209 { 0x0405, 0x0455 }, // CYRILLIC CAPITAL LETTER DZE
210 { 0x0406, 0x0456 }, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
211 { 0x0408, 0x0458 }, // CYRILLIC CAPITAL LETTER JE
212 { 0x0409, 0x0459 }, // CYRILLIC CAPITAL LETTER LJE
213 { 0x040A, 0x045A }, // CYRILLIC CAPITAL LETTER NJE
214 { 0x040B, 0x045B }, // CYRILLIC CAPITAL LETTER TSHE
215 { 0x040F, 0x045F }, // CYRILLIC CAPITAL LETTER DZHE
216 { 0x0410, 0x0430 }, // CYRILLIC CAPITAL LETTER A
217 { 0x0411, 0x0431 }, // CYRILLIC CAPITAL LETTER BE
218 { 0x0412, 0x0432 }, // CYRILLIC CAPITAL LETTER VE
219 { 0x0413, 0x0433 }, // CYRILLIC CAPITAL LETTER GHE
220 { 0x0414, 0x0434 }, // CYRILLIC CAPITAL LETTER DE
221 { 0x0415, 0x0435 }, // CYRILLIC CAPITAL LETTER IE
222 { 0x0416, 0x0436 }, // CYRILLIC CAPITAL LETTER ZHE
223 { 0x0417, 0x0437 }, // CYRILLIC CAPITAL LETTER ZE
224 { 0x0418, 0x0438 }, // CYRILLIC CAPITAL LETTER I
Tom Ouyangedd5b732012-09-25 17:04:35 -0700225 { 0x0419, 0x0439 }, // CYRILLIC CAPITAL LETTER SHORT I
Ken Wakasa07cab722010-04-20 01:24:57 +0900226 { 0x041A, 0x043A }, // CYRILLIC CAPITAL LETTER KA
227 { 0x041B, 0x043B }, // CYRILLIC CAPITAL LETTER EL
228 { 0x041C, 0x043C }, // CYRILLIC CAPITAL LETTER EM
229 { 0x041D, 0x043D }, // CYRILLIC CAPITAL LETTER EN
230 { 0x041E, 0x043E }, // CYRILLIC CAPITAL LETTER O
231 { 0x041F, 0x043F }, // CYRILLIC CAPITAL LETTER PE
232 { 0x0420, 0x0440 }, // CYRILLIC CAPITAL LETTER ER
233 { 0x0421, 0x0441 }, // CYRILLIC CAPITAL LETTER ES
234 { 0x0422, 0x0442 }, // CYRILLIC CAPITAL LETTER TE
235 { 0x0423, 0x0443 }, // CYRILLIC CAPITAL LETTER U
236 { 0x0424, 0x0444 }, // CYRILLIC CAPITAL LETTER EF
237 { 0x0425, 0x0445 }, // CYRILLIC CAPITAL LETTER HA
238 { 0x0426, 0x0446 }, // CYRILLIC CAPITAL LETTER TSE
239 { 0x0427, 0x0447 }, // CYRILLIC CAPITAL LETTER CHE
240 { 0x0428, 0x0448 }, // CYRILLIC CAPITAL LETTER SHA
241 { 0x0429, 0x0449 }, // CYRILLIC CAPITAL LETTER SHCHA
242 { 0x042A, 0x044A }, // CYRILLIC CAPITAL LETTER HARD SIGN
243 { 0x042B, 0x044B }, // CYRILLIC CAPITAL LETTER YERU
244 { 0x042C, 0x044C }, // CYRILLIC CAPITAL LETTER SOFT SIGN
245 { 0x042D, 0x044D }, // CYRILLIC CAPITAL LETTER E
246 { 0x042E, 0x044E }, // CYRILLIC CAPITAL LETTER YU
247 { 0x042F, 0x044F }, // CYRILLIC CAPITAL LETTER YA
248 { 0x0460, 0x0461 }, // CYRILLIC CAPITAL LETTER OMEGA
249 { 0x0462, 0x0463 }, // CYRILLIC CAPITAL LETTER YAT
250 { 0x0464, 0x0465 }, // CYRILLIC CAPITAL LETTER IOTIFIED E
251 { 0x0466, 0x0467 }, // CYRILLIC CAPITAL LETTER LITTLE YUS
252 { 0x0468, 0x0469 }, // CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
253 { 0x046A, 0x046B }, // CYRILLIC CAPITAL LETTER BIG YUS
254 { 0x046C, 0x046D }, // CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
255 { 0x046E, 0x046F }, // CYRILLIC CAPITAL LETTER KSI
256 { 0x0470, 0x0471 }, // CYRILLIC CAPITAL LETTER PSI
257 { 0x0472, 0x0473 }, // CYRILLIC CAPITAL LETTER FITA
258 { 0x0474, 0x0475 }, // CYRILLIC CAPITAL LETTER IZHITSA
259 { 0x0478, 0x0479 }, // CYRILLIC CAPITAL LETTER UK
260 { 0x047A, 0x047B }, // CYRILLIC CAPITAL LETTER ROUND OMEGA
261 { 0x047C, 0x047D }, // CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
262 { 0x047E, 0x047F }, // CYRILLIC CAPITAL LETTER OT
263 { 0x0480, 0x0481 }, // CYRILLIC CAPITAL LETTER KOPPA
264 { 0x048A, 0x048B }, // CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
265 { 0x048C, 0x048D }, // CYRILLIC CAPITAL LETTER SEMISOFT SIGN
266 { 0x048E, 0x048F }, // CYRILLIC CAPITAL LETTER ER WITH TICK
267 { 0x0490, 0x0491 }, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN
268 { 0x0492, 0x0493 }, // CYRILLIC CAPITAL LETTER GHE WITH STROKE
269 { 0x0494, 0x0495 }, // CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
270 { 0x0496, 0x0497 }, // CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
271 { 0x0498, 0x0499 }, // CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
272 { 0x049A, 0x049B }, // CYRILLIC CAPITAL LETTER KA WITH DESCENDER
273 { 0x049C, 0x049D }, // CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
274 { 0x049E, 0x049F }, // CYRILLIC CAPITAL LETTER KA WITH STROKE
275 { 0x04A0, 0x04A1 }, // CYRILLIC CAPITAL LETTER BASHKIR KA
276 { 0x04A2, 0x04A3 }, // CYRILLIC CAPITAL LETTER EN WITH DESCENDER
277 { 0x04A4, 0x04A5 }, // CYRILLIC CAPITAL LIGATURE EN GHE
278 { 0x04A6, 0x04A7 }, // CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
279 { 0x04A8, 0x04A9 }, // CYRILLIC CAPITAL LETTER ABKHASIAN HA
280 { 0x04AA, 0x04AB }, // CYRILLIC CAPITAL LETTER ES WITH DESCENDER
281 { 0x04AC, 0x04AD }, // CYRILLIC CAPITAL LETTER TE WITH DESCENDER
282 { 0x04AE, 0x04AF }, // CYRILLIC CAPITAL LETTER STRAIGHT U
283 { 0x04B0, 0x04B1 }, // CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
284 { 0x04B2, 0x04B3 }, // CYRILLIC CAPITAL LETTER HA WITH DESCENDER
285 { 0x04B4, 0x04B5 }, // CYRILLIC CAPITAL LIGATURE TE TSE
286 { 0x04B6, 0x04B7 }, // CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
287 { 0x04B8, 0x04B9 }, // CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
288 { 0x04BA, 0x04BB }, // CYRILLIC CAPITAL LETTER SHHA
289 { 0x04BC, 0x04BD }, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE
290 { 0x04BE, 0x04BF }, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
291 { 0x04C0, 0x04CF }, // CYRILLIC LETTER PALOCHKA
292 { 0x04C3, 0x04C4 }, // CYRILLIC CAPITAL LETTER KA WITH HOOK
293 { 0x04C5, 0x04C6 }, // CYRILLIC CAPITAL LETTER EL WITH TAIL
294 { 0x04C7, 0x04C8 }, // CYRILLIC CAPITAL LETTER EN WITH HOOK
295 { 0x04C9, 0x04CA }, // CYRILLIC CAPITAL LETTER EN WITH TAIL
296 { 0x04CB, 0x04CC }, // CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
297 { 0x04CD, 0x04CE }, // CYRILLIC CAPITAL LETTER EM WITH TAIL
298 { 0x04D4, 0x04D5 }, // CYRILLIC CAPITAL LIGATURE A IE
299 { 0x04D8, 0x04D9 }, // CYRILLIC CAPITAL LETTER SCHWA
300 { 0x04E0, 0x04E1 }, // CYRILLIC CAPITAL LETTER ABKHASIAN DZE
301 { 0x04E8, 0x04E9 }, // CYRILLIC CAPITAL LETTER BARRED O
302 { 0x04F6, 0x04F7 }, // CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
303 { 0x04FA, 0x04FB }, // CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
304 { 0x04FC, 0x04FD }, // CYRILLIC CAPITAL LETTER HA WITH HOOK
305 { 0x04FE, 0x04FF }, // CYRILLIC CAPITAL LETTER HA WITH STROKE
306 { 0x0500, 0x0501 }, // CYRILLIC CAPITAL LETTER KOMI DE
307 { 0x0502, 0x0503 }, // CYRILLIC CAPITAL LETTER KOMI DJE
308 { 0x0504, 0x0505 }, // CYRILLIC CAPITAL LETTER KOMI ZJE
309 { 0x0506, 0x0507 }, // CYRILLIC CAPITAL LETTER KOMI DZJE
310 { 0x0508, 0x0509 }, // CYRILLIC CAPITAL LETTER KOMI LJE
311 { 0x050A, 0x050B }, // CYRILLIC CAPITAL LETTER KOMI NJE
312 { 0x050C, 0x050D }, // CYRILLIC CAPITAL LETTER KOMI SJE
313 { 0x050E, 0x050F }, // CYRILLIC CAPITAL LETTER KOMI TJE
314 { 0x0510, 0x0511 }, // CYRILLIC CAPITAL LETTER REVERSED ZE
315 { 0x0512, 0x0513 }, // CYRILLIC CAPITAL LETTER EL WITH HOOK
316 { 0x0514, 0x0515 }, // CYRILLIC CAPITAL LETTER LHA
317 { 0x0516, 0x0517 }, // CYRILLIC CAPITAL LETTER RHA
318 { 0x0518, 0x0519 }, // CYRILLIC CAPITAL LETTER YAE
319 { 0x051A, 0x051B }, // CYRILLIC CAPITAL LETTER QA
320 { 0x051C, 0x051D }, // CYRILLIC CAPITAL LETTER WE
321 { 0x051E, 0x051F }, // CYRILLIC CAPITAL LETTER ALEUT KA
322 { 0x0520, 0x0521 }, // CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
323 { 0x0522, 0x0523 }, // CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
324 { 0x0524, 0x0525 }, // CYRILLIC CAPITAL LETTER PE WITH DESCENDER
325 { 0x0531, 0x0561 }, // ARMENIAN CAPITAL LETTER AYB
326 { 0x0532, 0x0562 }, // ARMENIAN CAPITAL LETTER BEN
327 { 0x0533, 0x0563 }, // ARMENIAN CAPITAL LETTER GIM
328 { 0x0534, 0x0564 }, // ARMENIAN CAPITAL LETTER DA
329 { 0x0535, 0x0565 }, // ARMENIAN CAPITAL LETTER ECH
330 { 0x0536, 0x0566 }, // ARMENIAN CAPITAL LETTER ZA
331 { 0x0537, 0x0567 }, // ARMENIAN CAPITAL LETTER EH
332 { 0x0538, 0x0568 }, // ARMENIAN CAPITAL LETTER ET
333 { 0x0539, 0x0569 }, // ARMENIAN CAPITAL LETTER TO
334 { 0x053A, 0x056A }, // ARMENIAN CAPITAL LETTER ZHE
335 { 0x053B, 0x056B }, // ARMENIAN CAPITAL LETTER INI
336 { 0x053C, 0x056C }, // ARMENIAN CAPITAL LETTER LIWN
337 { 0x053D, 0x056D }, // ARMENIAN CAPITAL LETTER XEH
338 { 0x053E, 0x056E }, // ARMENIAN CAPITAL LETTER CA
339 { 0x053F, 0x056F }, // ARMENIAN CAPITAL LETTER KEN
340 { 0x0540, 0x0570 }, // ARMENIAN CAPITAL LETTER HO
341 { 0x0541, 0x0571 }, // ARMENIAN CAPITAL LETTER JA
342 { 0x0542, 0x0572 }, // ARMENIAN CAPITAL LETTER GHAD
343 { 0x0543, 0x0573 }, // ARMENIAN CAPITAL LETTER CHEH
344 { 0x0544, 0x0574 }, // ARMENIAN CAPITAL LETTER MEN
345 { 0x0545, 0x0575 }, // ARMENIAN CAPITAL LETTER YI
346 { 0x0546, 0x0576 }, // ARMENIAN CAPITAL LETTER NOW
347 { 0x0547, 0x0577 }, // ARMENIAN CAPITAL LETTER SHA
348 { 0x0548, 0x0578 }, // ARMENIAN CAPITAL LETTER VO
349 { 0x0549, 0x0579 }, // ARMENIAN CAPITAL LETTER CHA
350 { 0x054A, 0x057A }, // ARMENIAN CAPITAL LETTER PEH
351 { 0x054B, 0x057B }, // ARMENIAN CAPITAL LETTER JHEH
352 { 0x054C, 0x057C }, // ARMENIAN CAPITAL LETTER RA
353 { 0x054D, 0x057D }, // ARMENIAN CAPITAL LETTER SEH
354 { 0x054E, 0x057E }, // ARMENIAN CAPITAL LETTER VEW
355 { 0x054F, 0x057F }, // ARMENIAN CAPITAL LETTER TIWN
356 { 0x0550, 0x0580 }, // ARMENIAN CAPITAL LETTER REH
357 { 0x0551, 0x0581 }, // ARMENIAN CAPITAL LETTER CO
358 { 0x0552, 0x0582 }, // ARMENIAN CAPITAL LETTER YIWN
359 { 0x0553, 0x0583 }, // ARMENIAN CAPITAL LETTER PIWR
360 { 0x0554, 0x0584 }, // ARMENIAN CAPITAL LETTER KEH
361 { 0x0555, 0x0585 }, // ARMENIAN CAPITAL LETTER OH
362 { 0x0556, 0x0586 }, // ARMENIAN CAPITAL LETTER FEH
363 { 0x10A0, 0x2D00 }, // GEORGIAN CAPITAL LETTER AN
364 { 0x10A1, 0x2D01 }, // GEORGIAN CAPITAL LETTER BAN
365 { 0x10A2, 0x2D02 }, // GEORGIAN CAPITAL LETTER GAN
366 { 0x10A3, 0x2D03 }, // GEORGIAN CAPITAL LETTER DON
367 { 0x10A4, 0x2D04 }, // GEORGIAN CAPITAL LETTER EN
368 { 0x10A5, 0x2D05 }, // GEORGIAN CAPITAL LETTER VIN
369 { 0x10A6, 0x2D06 }, // GEORGIAN CAPITAL LETTER ZEN
370 { 0x10A7, 0x2D07 }, // GEORGIAN CAPITAL LETTER TAN
371 { 0x10A8, 0x2D08 }, // GEORGIAN CAPITAL LETTER IN
372 { 0x10A9, 0x2D09 }, // GEORGIAN CAPITAL LETTER KAN
373 { 0x10AA, 0x2D0A }, // GEORGIAN CAPITAL LETTER LAS
374 { 0x10AB, 0x2D0B }, // GEORGIAN CAPITAL LETTER MAN
375 { 0x10AC, 0x2D0C }, // GEORGIAN CAPITAL LETTER NAR
376 { 0x10AD, 0x2D0D }, // GEORGIAN CAPITAL LETTER ON
377 { 0x10AE, 0x2D0E }, // GEORGIAN CAPITAL LETTER PAR
378 { 0x10AF, 0x2D0F }, // GEORGIAN CAPITAL LETTER ZHAR
379 { 0x10B0, 0x2D10 }, // GEORGIAN CAPITAL LETTER RAE
380 { 0x10B1, 0x2D11 }, // GEORGIAN CAPITAL LETTER SAN
381 { 0x10B2, 0x2D12 }, // GEORGIAN CAPITAL LETTER TAR
382 { 0x10B3, 0x2D13 }, // GEORGIAN CAPITAL LETTER UN
383 { 0x10B4, 0x2D14 }, // GEORGIAN CAPITAL LETTER PHAR
384 { 0x10B5, 0x2D15 }, // GEORGIAN CAPITAL LETTER KHAR
385 { 0x10B6, 0x2D16 }, // GEORGIAN CAPITAL LETTER GHAN
386 { 0x10B7, 0x2D17 }, // GEORGIAN CAPITAL LETTER QAR
387 { 0x10B8, 0x2D18 }, // GEORGIAN CAPITAL LETTER SHIN
388 { 0x10B9, 0x2D19 }, // GEORGIAN CAPITAL LETTER CHIN
389 { 0x10BA, 0x2D1A }, // GEORGIAN CAPITAL LETTER CAN
390 { 0x10BB, 0x2D1B }, // GEORGIAN CAPITAL LETTER JIL
391 { 0x10BC, 0x2D1C }, // GEORGIAN CAPITAL LETTER CIL
392 { 0x10BD, 0x2D1D }, // GEORGIAN CAPITAL LETTER CHAR
393 { 0x10BE, 0x2D1E }, // GEORGIAN CAPITAL LETTER XAN
394 { 0x10BF, 0x2D1F }, // GEORGIAN CAPITAL LETTER JHAN
395 { 0x10C0, 0x2D20 }, // GEORGIAN CAPITAL LETTER HAE
396 { 0x10C1, 0x2D21 }, // GEORGIAN CAPITAL LETTER HE
397 { 0x10C2, 0x2D22 }, // GEORGIAN CAPITAL LETTER HIE
398 { 0x10C3, 0x2D23 }, // GEORGIAN CAPITAL LETTER WE
399 { 0x10C4, 0x2D24 }, // GEORGIAN CAPITAL LETTER HAR
400 { 0x10C5, 0x2D25 }, // GEORGIAN CAPITAL LETTER HOE
401 { 0x1E00, 0x1E01 }, // LATIN CAPITAL LETTER A WITH RING BELOW
402 { 0x1E02, 0x1E03 }, // LATIN CAPITAL LETTER B WITH DOT ABOVE
403 { 0x1E04, 0x1E05 }, // LATIN CAPITAL LETTER B WITH DOT BELOW
404 { 0x1E06, 0x1E07 }, // LATIN CAPITAL LETTER B WITH LINE BELOW
405 { 0x1E08, 0x1E09 }, // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
406 { 0x1E0A, 0x1E0B }, // LATIN CAPITAL LETTER D WITH DOT ABOVE
407 { 0x1E0C, 0x1E0D }, // LATIN CAPITAL LETTER D WITH DOT BELOW
408 { 0x1E0E, 0x1E0F }, // LATIN CAPITAL LETTER D WITH LINE BELOW
409 { 0x1E10, 0x1E11 }, // LATIN CAPITAL LETTER D WITH CEDILLA
410 { 0x1E12, 0x1E13 }, // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
411 { 0x1E14, 0x1E15 }, // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
412 { 0x1E16, 0x1E17 }, // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
413 { 0x1E18, 0x1E19 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
414 { 0x1E1A, 0x1E1B }, // LATIN CAPITAL LETTER E WITH TILDE BELOW
415 { 0x1E1C, 0x1E1D }, // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
416 { 0x1E1E, 0x1E1F }, // LATIN CAPITAL LETTER F WITH DOT ABOVE
417 { 0x1E20, 0x1E21 }, // LATIN CAPITAL LETTER G WITH MACRON
418 { 0x1E22, 0x1E23 }, // LATIN CAPITAL LETTER H WITH DOT ABOVE
419 { 0x1E24, 0x1E25 }, // LATIN CAPITAL LETTER H WITH DOT BELOW
420 { 0x1E26, 0x1E27 }, // LATIN CAPITAL LETTER H WITH DIAERESIS
421 { 0x1E28, 0x1E29 }, // LATIN CAPITAL LETTER H WITH CEDILLA
422 { 0x1E2A, 0x1E2B }, // LATIN CAPITAL LETTER H WITH BREVE BELOW
423 { 0x1E2C, 0x1E2D }, // LATIN CAPITAL LETTER I WITH TILDE BELOW
424 { 0x1E2E, 0x1E2F }, // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
425 { 0x1E30, 0x1E31 }, // LATIN CAPITAL LETTER K WITH ACUTE
426 { 0x1E32, 0x1E33 }, // LATIN CAPITAL LETTER K WITH DOT BELOW
427 { 0x1E34, 0x1E35 }, // LATIN CAPITAL LETTER K WITH LINE BELOW
428 { 0x1E36, 0x1E37 }, // LATIN CAPITAL LETTER L WITH DOT BELOW
429 { 0x1E38, 0x1E39 }, // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
430 { 0x1E3A, 0x1E3B }, // LATIN CAPITAL LETTER L WITH LINE BELOW
431 { 0x1E3C, 0x1E3D }, // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
432 { 0x1E3E, 0x1E3F }, // LATIN CAPITAL LETTER M WITH ACUTE
433 { 0x1E40, 0x1E41 }, // LATIN CAPITAL LETTER M WITH DOT ABOVE
434 { 0x1E42, 0x1E43 }, // LATIN CAPITAL LETTER M WITH DOT BELOW
435 { 0x1E44, 0x1E45 }, // LATIN CAPITAL LETTER N WITH DOT ABOVE
436 { 0x1E46, 0x1E47 }, // LATIN CAPITAL LETTER N WITH DOT BELOW
437 { 0x1E48, 0x1E49 }, // LATIN CAPITAL LETTER N WITH LINE BELOW
438 { 0x1E4A, 0x1E4B }, // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
439 { 0x1E4C, 0x1E4D }, // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
440 { 0x1E4E, 0x1E4F }, // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
441 { 0x1E50, 0x1E51 }, // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
442 { 0x1E52, 0x1E53 }, // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
443 { 0x1E54, 0x1E55 }, // LATIN CAPITAL LETTER P WITH ACUTE
444 { 0x1E56, 0x1E57 }, // LATIN CAPITAL LETTER P WITH DOT ABOVE
445 { 0x1E58, 0x1E59 }, // LATIN CAPITAL LETTER R WITH DOT ABOVE
446 { 0x1E5A, 0x1E5B }, // LATIN CAPITAL LETTER R WITH DOT BELOW
447 { 0x1E5C, 0x1E5D }, // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
448 { 0x1E5E, 0x1E5F }, // LATIN CAPITAL LETTER R WITH LINE BELOW
449 { 0x1E60, 0x1E61 }, // LATIN CAPITAL LETTER S WITH DOT ABOVE
450 { 0x1E62, 0x1E63 }, // LATIN CAPITAL LETTER S WITH DOT BELOW
451 { 0x1E64, 0x1E65 }, // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
452 { 0x1E66, 0x1E67 }, // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
453 { 0x1E68, 0x1E69 }, // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
454 { 0x1E6A, 0x1E6B }, // LATIN CAPITAL LETTER T WITH DOT ABOVE
455 { 0x1E6C, 0x1E6D }, // LATIN CAPITAL LETTER T WITH DOT BELOW
456 { 0x1E6E, 0x1E6F }, // LATIN CAPITAL LETTER T WITH LINE BELOW
457 { 0x1E70, 0x1E71 }, // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
458 { 0x1E72, 0x1E73 }, // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
459 { 0x1E74, 0x1E75 }, // LATIN CAPITAL LETTER U WITH TILDE BELOW
460 { 0x1E76, 0x1E77 }, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
461 { 0x1E78, 0x1E79 }, // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
462 { 0x1E7A, 0x1E7B }, // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
463 { 0x1E7C, 0x1E7D }, // LATIN CAPITAL LETTER V WITH TILDE
464 { 0x1E7E, 0x1E7F }, // LATIN CAPITAL LETTER V WITH DOT BELOW
465 { 0x1E80, 0x1E81 }, // LATIN CAPITAL LETTER W WITH GRAVE
466 { 0x1E82, 0x1E83 }, // LATIN CAPITAL LETTER W WITH ACUTE
467 { 0x1E84, 0x1E85 }, // LATIN CAPITAL LETTER W WITH DIAERESIS
468 { 0x1E86, 0x1E87 }, // LATIN CAPITAL LETTER W WITH DOT ABOVE
469 { 0x1E88, 0x1E89 }, // LATIN CAPITAL LETTER W WITH DOT BELOW
470 { 0x1E8A, 0x1E8B }, // LATIN CAPITAL LETTER X WITH DOT ABOVE
471 { 0x1E8C, 0x1E8D }, // LATIN CAPITAL LETTER X WITH DIAERESIS
472 { 0x1E8E, 0x1E8F }, // LATIN CAPITAL LETTER Y WITH DOT ABOVE
473 { 0x1E90, 0x1E91 }, // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
474 { 0x1E92, 0x1E93 }, // LATIN CAPITAL LETTER Z WITH DOT BELOW
475 { 0x1E94, 0x1E95 }, // LATIN CAPITAL LETTER Z WITH LINE BELOW
476 { 0x1E9E, 0x00DF }, // LATIN CAPITAL LETTER SHARP S
477 { 0x1EA0, 0x1EA1 }, // LATIN CAPITAL LETTER A WITH DOT BELOW
478 { 0x1EA2, 0x1EA3 }, // LATIN CAPITAL LETTER A WITH HOOK ABOVE
479 { 0x1EA4, 0x1EA5 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
480 { 0x1EA6, 0x1EA7 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
481 { 0x1EA8, 0x1EA9 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
482 { 0x1EAA, 0x1EAB }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
483 { 0x1EAC, 0x1EAD }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
484 { 0x1EAE, 0x1EAF }, // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
485 { 0x1EB0, 0x1EB1 }, // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
486 { 0x1EB2, 0x1EB3 }, // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
487 { 0x1EB4, 0x1EB5 }, // LATIN CAPITAL LETTER A WITH BREVE AND TILDE
488 { 0x1EB6, 0x1EB7 }, // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
489 { 0x1EB8, 0x1EB9 }, // LATIN CAPITAL LETTER E WITH DOT BELOW
490 { 0x1EBA, 0x1EBB }, // LATIN CAPITAL LETTER E WITH HOOK ABOVE
491 { 0x1EBC, 0x1EBD }, // LATIN CAPITAL LETTER E WITH TILDE
492 { 0x1EBE, 0x1EBF }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
493 { 0x1EC0, 0x1EC1 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
494 { 0x1EC2, 0x1EC3 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
495 { 0x1EC4, 0x1EC5 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
496 { 0x1EC6, 0x1EC7 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
497 { 0x1EC8, 0x1EC9 }, // LATIN CAPITAL LETTER I WITH HOOK ABOVE
498 { 0x1ECA, 0x1ECB }, // LATIN CAPITAL LETTER I WITH DOT BELOW
499 { 0x1ECC, 0x1ECD }, // LATIN CAPITAL LETTER O WITH DOT BELOW
500 { 0x1ECE, 0x1ECF }, // LATIN CAPITAL LETTER O WITH HOOK ABOVE
501 { 0x1ED0, 0x1ED1 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
502 { 0x1ED2, 0x1ED3 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
503 { 0x1ED4, 0x1ED5 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
504 { 0x1ED6, 0x1ED7 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
505 { 0x1ED8, 0x1ED9 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
506 { 0x1EDA, 0x1EDB }, // LATIN CAPITAL LETTER O WITH HORN AND ACUTE
507 { 0x1EDC, 0x1EDD }, // LATIN CAPITAL LETTER O WITH HORN AND GRAVE
508 { 0x1EDE, 0x1EDF }, // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
509 { 0x1EE0, 0x1EE1 }, // LATIN CAPITAL LETTER O WITH HORN AND TILDE
510 { 0x1EE2, 0x1EE3 }, // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
511 { 0x1EE4, 0x1EE5 }, // LATIN CAPITAL LETTER U WITH DOT BELOW
512 { 0x1EE6, 0x1EE7 }, // LATIN CAPITAL LETTER U WITH HOOK ABOVE
513 { 0x1EE8, 0x1EE9 }, // LATIN CAPITAL LETTER U WITH HORN AND ACUTE
514 { 0x1EEA, 0x1EEB }, // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
515 { 0x1EEC, 0x1EED }, // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
516 { 0x1EEE, 0x1EEF }, // LATIN CAPITAL LETTER U WITH HORN AND TILDE
517 { 0x1EF0, 0x1EF1 }, // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
518 { 0x1EF2, 0x1EF3 }, // LATIN CAPITAL LETTER Y WITH GRAVE
519 { 0x1EF4, 0x1EF5 }, // LATIN CAPITAL LETTER Y WITH DOT BELOW
520 { 0x1EF6, 0x1EF7 }, // LATIN CAPITAL LETTER Y WITH HOOK ABOVE
521 { 0x1EF8, 0x1EF9 }, // LATIN CAPITAL LETTER Y WITH TILDE
522 { 0x1EFA, 0x1EFB }, // LATIN CAPITAL LETTER MIDDLE-WELSH LL
523 { 0x1EFC, 0x1EFD }, // LATIN CAPITAL LETTER MIDDLE-WELSH V
524 { 0x1EFE, 0x1EFF }, // LATIN CAPITAL LETTER Y WITH LOOP
525 { 0x1F08, 0x1F00 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI
526 { 0x1F09, 0x1F01 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA
527 { 0x1F0A, 0x1F02 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
528 { 0x1F0B, 0x1F03 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
529 { 0x1F0C, 0x1F04 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
530 { 0x1F0D, 0x1F05 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
531 { 0x1F0E, 0x1F06 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
532 { 0x1F0F, 0x1F07 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
533 { 0x1F18, 0x1F10 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI
534 { 0x1F19, 0x1F11 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA
535 { 0x1F1A, 0x1F12 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
536 { 0x1F1B, 0x1F13 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
537 { 0x1F1C, 0x1F14 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
538 { 0x1F1D, 0x1F15 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
539 { 0x1F28, 0x1F20 }, // GREEK CAPITAL LETTER ETA WITH PSILI
540 { 0x1F29, 0x1F21 }, // GREEK CAPITAL LETTER ETA WITH DASIA
541 { 0x1F2A, 0x1F22 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
542 { 0x1F2B, 0x1F23 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
543 { 0x1F2C, 0x1F24 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
544 { 0x1F2D, 0x1F25 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
545 { 0x1F2E, 0x1F26 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
546 { 0x1F2F, 0x1F27 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
547 { 0x1F38, 0x1F30 }, // GREEK CAPITAL LETTER IOTA WITH PSILI
548 { 0x1F39, 0x1F31 }, // GREEK CAPITAL LETTER IOTA WITH DASIA
549 { 0x1F3A, 0x1F32 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
550 { 0x1F3B, 0x1F33 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
551 { 0x1F3C, 0x1F34 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
552 { 0x1F3D, 0x1F35 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
553 { 0x1F3E, 0x1F36 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
554 { 0x1F3F, 0x1F37 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
555 { 0x1F48, 0x1F40 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI
556 { 0x1F49, 0x1F41 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA
557 { 0x1F4A, 0x1F42 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
558 { 0x1F4B, 0x1F43 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
559 { 0x1F4C, 0x1F44 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
560 { 0x1F4D, 0x1F45 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
561 { 0x1F59, 0x1F51 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA
562 { 0x1F5B, 0x1F53 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
563 { 0x1F5D, 0x1F55 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
564 { 0x1F5F, 0x1F57 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
565 { 0x1F68, 0x1F60 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI
566 { 0x1F69, 0x1F61 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA
567 { 0x1F6A, 0x1F62 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
568 { 0x1F6B, 0x1F63 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
569 { 0x1F6C, 0x1F64 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
570 { 0x1F6D, 0x1F65 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
571 { 0x1F6E, 0x1F66 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
572 { 0x1F6F, 0x1F67 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
573 { 0x1F88, 0x1F80 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
574 { 0x1F89, 0x1F81 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
575 { 0x1F8A, 0x1F82 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
576 { 0x1F8B, 0x1F83 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
577 { 0x1F8C, 0x1F84 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
578 { 0x1F8D, 0x1F85 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
579 { 0x1F8E, 0x1F86 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
580 { 0x1F8F, 0x1F87 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
581 { 0x1F98, 0x1F90 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
582 { 0x1F99, 0x1F91 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
583 { 0x1F9A, 0x1F92 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
584 { 0x1F9B, 0x1F93 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
585 { 0x1F9C, 0x1F94 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
586 { 0x1F9D, 0x1F95 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
587 { 0x1F9E, 0x1F96 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
588 { 0x1F9F, 0x1F97 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
589 { 0x1FA8, 0x1FA0 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
590 { 0x1FA9, 0x1FA1 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
591 { 0x1FAA, 0x1FA2 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
592 { 0x1FAB, 0x1FA3 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
593 { 0x1FAC, 0x1FA4 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
594 { 0x1FAD, 0x1FA5 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
595 { 0x1FAE, 0x1FA6 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
596 { 0x1FAF, 0x1FA7 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
597 { 0x1FB8, 0x1FB0 }, // GREEK CAPITAL LETTER ALPHA WITH VRACHY
598 { 0x1FB9, 0x1FB1 }, // GREEK CAPITAL LETTER ALPHA WITH MACRON
599 { 0x1FBA, 0x1F70 }, // GREEK CAPITAL LETTER ALPHA WITH VARIA
600 { 0x1FBB, 0x1F71 }, // GREEK CAPITAL LETTER ALPHA WITH OXIA
601 { 0x1FBC, 0x1FB3 }, // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
602 { 0x1FC8, 0x1F72 }, // GREEK CAPITAL LETTER EPSILON WITH VARIA
603 { 0x1FC9, 0x1F73 }, // GREEK CAPITAL LETTER EPSILON WITH OXIA
604 { 0x1FCA, 0x1F74 }, // GREEK CAPITAL LETTER ETA WITH VARIA
605 { 0x1FCB, 0x1F75 }, // GREEK CAPITAL LETTER ETA WITH OXIA
606 { 0x1FCC, 0x1FC3 }, // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
607 { 0x1FD8, 0x1FD0 }, // GREEK CAPITAL LETTER IOTA WITH VRACHY
608 { 0x1FD9, 0x1FD1 }, // GREEK CAPITAL LETTER IOTA WITH MACRON
609 { 0x1FDA, 0x1F76 }, // GREEK CAPITAL LETTER IOTA WITH VARIA
610 { 0x1FDB, 0x1F77 }, // GREEK CAPITAL LETTER IOTA WITH OXIA
611 { 0x1FE8, 0x1FE0 }, // GREEK CAPITAL LETTER UPSILON WITH VRACHY
612 { 0x1FE9, 0x1FE1 }, // GREEK CAPITAL LETTER UPSILON WITH MACRON
613 { 0x1FEA, 0x1F7A }, // GREEK CAPITAL LETTER UPSILON WITH VARIA
614 { 0x1FEB, 0x1F7B }, // GREEK CAPITAL LETTER UPSILON WITH OXIA
615 { 0x1FEC, 0x1FE5 }, // GREEK CAPITAL LETTER RHO WITH DASIA
616 { 0x1FF8, 0x1F78 }, // GREEK CAPITAL LETTER OMICRON WITH VARIA
617 { 0x1FF9, 0x1F79 }, // GREEK CAPITAL LETTER OMICRON WITH OXIA
618 { 0x1FFA, 0x1F7C }, // GREEK CAPITAL LETTER OMEGA WITH VARIA
619 { 0x1FFB, 0x1F7D }, // GREEK CAPITAL LETTER OMEGA WITH OXIA
620 { 0x1FFC, 0x1FF3 }, // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
621 { 0x2126, 0x03C9 }, // OHM SIGN
622 { 0x212A, 0x006B }, // KELVIN SIGN
623 { 0x212B, 0x00E5 }, // ANGSTROM SIGN
624 { 0x2132, 0x214E }, // TURNED CAPITAL F
625 { 0x2160, 0x2170 }, // ROMAN NUMERAL ONE
626 { 0x2161, 0x2171 }, // ROMAN NUMERAL TWO
627 { 0x2162, 0x2172 }, // ROMAN NUMERAL THREE
628 { 0x2163, 0x2173 }, // ROMAN NUMERAL FOUR
629 { 0x2164, 0x2174 }, // ROMAN NUMERAL FIVE
630 { 0x2165, 0x2175 }, // ROMAN NUMERAL SIX
631 { 0x2166, 0x2176 }, // ROMAN NUMERAL SEVEN
632 { 0x2167, 0x2177 }, // ROMAN NUMERAL EIGHT
633 { 0x2168, 0x2178 }, // ROMAN NUMERAL NINE
634 { 0x2169, 0x2179 }, // ROMAN NUMERAL TEN
635 { 0x216A, 0x217A }, // ROMAN NUMERAL ELEVEN
636 { 0x216B, 0x217B }, // ROMAN NUMERAL TWELVE
637 { 0x216C, 0x217C }, // ROMAN NUMERAL FIFTY
638 { 0x216D, 0x217D }, // ROMAN NUMERAL ONE HUNDRED
639 { 0x216E, 0x217E }, // ROMAN NUMERAL FIVE HUNDRED
640 { 0x216F, 0x217F }, // ROMAN NUMERAL ONE THOUSAND
641 { 0x2183, 0x2184 }, // ROMAN NUMERAL REVERSED ONE HUNDRED
642 { 0x24B6, 0x24D0 }, // CIRCLED LATIN CAPITAL LETTER A
643 { 0x24B7, 0x24D1 }, // CIRCLED LATIN CAPITAL LETTER B
644 { 0x24B8, 0x24D2 }, // CIRCLED LATIN CAPITAL LETTER C
645 { 0x24B9, 0x24D3 }, // CIRCLED LATIN CAPITAL LETTER D
646 { 0x24BA, 0x24D4 }, // CIRCLED LATIN CAPITAL LETTER E
647 { 0x24BB, 0x24D5 }, // CIRCLED LATIN CAPITAL LETTER F
648 { 0x24BC, 0x24D6 }, // CIRCLED LATIN CAPITAL LETTER G
649 { 0x24BD, 0x24D7 }, // CIRCLED LATIN CAPITAL LETTER H
650 { 0x24BE, 0x24D8 }, // CIRCLED LATIN CAPITAL LETTER I
651 { 0x24BF, 0x24D9 }, // CIRCLED LATIN CAPITAL LETTER J
652 { 0x24C0, 0x24DA }, // CIRCLED LATIN CAPITAL LETTER K
653 { 0x24C1, 0x24DB }, // CIRCLED LATIN CAPITAL LETTER L
654 { 0x24C2, 0x24DC }, // CIRCLED LATIN CAPITAL LETTER M
655 { 0x24C3, 0x24DD }, // CIRCLED LATIN CAPITAL LETTER N
656 { 0x24C4, 0x24DE }, // CIRCLED LATIN CAPITAL LETTER O
657 { 0x24C5, 0x24DF }, // CIRCLED LATIN CAPITAL LETTER P
658 { 0x24C6, 0x24E0 }, // CIRCLED LATIN CAPITAL LETTER Q
659 { 0x24C7, 0x24E1 }, // CIRCLED LATIN CAPITAL LETTER R
660 { 0x24C8, 0x24E2 }, // CIRCLED LATIN CAPITAL LETTER S
661 { 0x24C9, 0x24E3 }, // CIRCLED LATIN CAPITAL LETTER T
662 { 0x24CA, 0x24E4 }, // CIRCLED LATIN CAPITAL LETTER U
663 { 0x24CB, 0x24E5 }, // CIRCLED LATIN CAPITAL LETTER V
664 { 0x24CC, 0x24E6 }, // CIRCLED LATIN CAPITAL LETTER W
665 { 0x24CD, 0x24E7 }, // CIRCLED LATIN CAPITAL LETTER X
666 { 0x24CE, 0x24E8 }, // CIRCLED LATIN CAPITAL LETTER Y
667 { 0x24CF, 0x24E9 }, // CIRCLED LATIN CAPITAL LETTER Z
668 { 0x2C00, 0x2C30 }, // GLAGOLITIC CAPITAL LETTER AZU
669 { 0x2C01, 0x2C31 }, // GLAGOLITIC CAPITAL LETTER BUKY
670 { 0x2C02, 0x2C32 }, // GLAGOLITIC CAPITAL LETTER VEDE
671 { 0x2C03, 0x2C33 }, // GLAGOLITIC CAPITAL LETTER GLAGOLI
672 { 0x2C04, 0x2C34 }, // GLAGOLITIC CAPITAL LETTER DOBRO
673 { 0x2C05, 0x2C35 }, // GLAGOLITIC CAPITAL LETTER YESTU
674 { 0x2C06, 0x2C36 }, // GLAGOLITIC CAPITAL LETTER ZHIVETE
675 { 0x2C07, 0x2C37 }, // GLAGOLITIC CAPITAL LETTER DZELO
676 { 0x2C08, 0x2C38 }, // GLAGOLITIC CAPITAL LETTER ZEMLJA
677 { 0x2C09, 0x2C39 }, // GLAGOLITIC CAPITAL LETTER IZHE
678 { 0x2C0A, 0x2C3A }, // GLAGOLITIC CAPITAL LETTER INITIAL IZHE
679 { 0x2C0B, 0x2C3B }, // GLAGOLITIC CAPITAL LETTER I
680 { 0x2C0C, 0x2C3C }, // GLAGOLITIC CAPITAL LETTER DJERVI
681 { 0x2C0D, 0x2C3D }, // GLAGOLITIC CAPITAL LETTER KAKO
682 { 0x2C0E, 0x2C3E }, // GLAGOLITIC CAPITAL LETTER LJUDIJE
683 { 0x2C0F, 0x2C3F }, // GLAGOLITIC CAPITAL LETTER MYSLITE
684 { 0x2C10, 0x2C40 }, // GLAGOLITIC CAPITAL LETTER NASHI
685 { 0x2C11, 0x2C41 }, // GLAGOLITIC CAPITAL LETTER ONU
686 { 0x2C12, 0x2C42 }, // GLAGOLITIC CAPITAL LETTER POKOJI
687 { 0x2C13, 0x2C43 }, // GLAGOLITIC CAPITAL LETTER RITSI
688 { 0x2C14, 0x2C44 }, // GLAGOLITIC CAPITAL LETTER SLOVO
689 { 0x2C15, 0x2C45 }, // GLAGOLITIC CAPITAL LETTER TVRIDO
690 { 0x2C16, 0x2C46 }, // GLAGOLITIC CAPITAL LETTER UKU
691 { 0x2C17, 0x2C47 }, // GLAGOLITIC CAPITAL LETTER FRITU
692 { 0x2C18, 0x2C48 }, // GLAGOLITIC CAPITAL LETTER HERU
693 { 0x2C19, 0x2C49 }, // GLAGOLITIC CAPITAL LETTER OTU
694 { 0x2C1A, 0x2C4A }, // GLAGOLITIC CAPITAL LETTER PE
695 { 0x2C1B, 0x2C4B }, // GLAGOLITIC CAPITAL LETTER SHTA
696 { 0x2C1C, 0x2C4C }, // GLAGOLITIC CAPITAL LETTER TSI
697 { 0x2C1D, 0x2C4D }, // GLAGOLITIC CAPITAL LETTER CHRIVI
698 { 0x2C1E, 0x2C4E }, // GLAGOLITIC CAPITAL LETTER SHA
699 { 0x2C1F, 0x2C4F }, // GLAGOLITIC CAPITAL LETTER YERU
700 { 0x2C20, 0x2C50 }, // GLAGOLITIC CAPITAL LETTER YERI
701 { 0x2C21, 0x2C51 }, // GLAGOLITIC CAPITAL LETTER YATI
702 { 0x2C22, 0x2C52 }, // GLAGOLITIC CAPITAL LETTER SPIDERY HA
703 { 0x2C23, 0x2C53 }, // GLAGOLITIC CAPITAL LETTER YU
704 { 0x2C24, 0x2C54 }, // GLAGOLITIC CAPITAL LETTER SMALL YUS
705 { 0x2C25, 0x2C55 }, // GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
706 { 0x2C26, 0x2C56 }, // GLAGOLITIC CAPITAL LETTER YO
707 { 0x2C27, 0x2C57 }, // GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
708 { 0x2C28, 0x2C58 }, // GLAGOLITIC CAPITAL LETTER BIG YUS
709 { 0x2C29, 0x2C59 }, // GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
710 { 0x2C2A, 0x2C5A }, // GLAGOLITIC CAPITAL LETTER FITA
711 { 0x2C2B, 0x2C5B }, // GLAGOLITIC CAPITAL LETTER IZHITSA
712 { 0x2C2C, 0x2C5C }, // GLAGOLITIC CAPITAL LETTER SHTAPIC
713 { 0x2C2D, 0x2C5D }, // GLAGOLITIC CAPITAL LETTER TROKUTASTI A
714 { 0x2C2E, 0x2C5E }, // GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
715 { 0x2C60, 0x2C61 }, // LATIN CAPITAL LETTER L WITH DOUBLE BAR
716 { 0x2C62, 0x026B }, // LATIN CAPITAL LETTER L WITH MIDDLE TILDE
717 { 0x2C63, 0x1D7D }, // LATIN CAPITAL LETTER P WITH STROKE
718 { 0x2C64, 0x027D }, // LATIN CAPITAL LETTER R WITH TAIL
719 { 0x2C67, 0x2C68 }, // LATIN CAPITAL LETTER H WITH DESCENDER
720 { 0x2C69, 0x2C6A }, // LATIN CAPITAL LETTER K WITH DESCENDER
721 { 0x2C6B, 0x2C6C }, // LATIN CAPITAL LETTER Z WITH DESCENDER
722 { 0x2C6D, 0x0251 }, // LATIN CAPITAL LETTER ALPHA
723 { 0x2C6E, 0x0271 }, // LATIN CAPITAL LETTER M WITH HOOK
724 { 0x2C6F, 0x0250 }, // LATIN CAPITAL LETTER TURNED A
725 { 0x2C70, 0x0252 }, // LATIN CAPITAL LETTER TURNED ALPHA
726 { 0x2C72, 0x2C73 }, // LATIN CAPITAL LETTER W WITH HOOK
727 { 0x2C75, 0x2C76 }, // LATIN CAPITAL LETTER HALF H
728 { 0x2C7E, 0x023F }, // LATIN CAPITAL LETTER S WITH SWASH TAIL
729 { 0x2C7F, 0x0240 }, // LATIN CAPITAL LETTER Z WITH SWASH TAIL
730 { 0x2C80, 0x2C81 }, // COPTIC CAPITAL LETTER ALFA
731 { 0x2C82, 0x2C83 }, // COPTIC CAPITAL LETTER VIDA
732 { 0x2C84, 0x2C85 }, // COPTIC CAPITAL LETTER GAMMA
733 { 0x2C86, 0x2C87 }, // COPTIC CAPITAL LETTER DALDA
734 { 0x2C88, 0x2C89 }, // COPTIC CAPITAL LETTER EIE
735 { 0x2C8A, 0x2C8B }, // COPTIC CAPITAL LETTER SOU
736 { 0x2C8C, 0x2C8D }, // COPTIC CAPITAL LETTER ZATA
737 { 0x2C8E, 0x2C8F }, // COPTIC CAPITAL LETTER HATE
738 { 0x2C90, 0x2C91 }, // COPTIC CAPITAL LETTER THETHE
739 { 0x2C92, 0x2C93 }, // COPTIC CAPITAL LETTER IAUDA
740 { 0x2C94, 0x2C95 }, // COPTIC CAPITAL LETTER KAPA
741 { 0x2C96, 0x2C97 }, // COPTIC CAPITAL LETTER LAULA
742 { 0x2C98, 0x2C99 }, // COPTIC CAPITAL LETTER MI
743 { 0x2C9A, 0x2C9B }, // COPTIC CAPITAL LETTER NI
744 { 0x2C9C, 0x2C9D }, // COPTIC CAPITAL LETTER KSI
745 { 0x2C9E, 0x2C9F }, // COPTIC CAPITAL LETTER O
746 { 0x2CA0, 0x2CA1 }, // COPTIC CAPITAL LETTER PI
747 { 0x2CA2, 0x2CA3 }, // COPTIC CAPITAL LETTER RO
748 { 0x2CA4, 0x2CA5 }, // COPTIC CAPITAL LETTER SIMA
749 { 0x2CA6, 0x2CA7 }, // COPTIC CAPITAL LETTER TAU
750 { 0x2CA8, 0x2CA9 }, // COPTIC CAPITAL LETTER UA
751 { 0x2CAA, 0x2CAB }, // COPTIC CAPITAL LETTER FI
752 { 0x2CAC, 0x2CAD }, // COPTIC CAPITAL LETTER KHI
753 { 0x2CAE, 0x2CAF }, // COPTIC CAPITAL LETTER PSI
754 { 0x2CB0, 0x2CB1 }, // COPTIC CAPITAL LETTER OOU
755 { 0x2CB2, 0x2CB3 }, // COPTIC CAPITAL LETTER DIALECT-P ALEF
756 { 0x2CB4, 0x2CB5 }, // COPTIC CAPITAL LETTER OLD COPTIC AIN
757 { 0x2CB6, 0x2CB7 }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
758 { 0x2CB8, 0x2CB9 }, // COPTIC CAPITAL LETTER DIALECT-P KAPA
759 { 0x2CBA, 0x2CBB }, // COPTIC CAPITAL LETTER DIALECT-P NI
760 { 0x2CBC, 0x2CBD }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
761 { 0x2CBE, 0x2CBF }, // COPTIC CAPITAL LETTER OLD COPTIC OOU
762 { 0x2CC0, 0x2CC1 }, // COPTIC CAPITAL LETTER SAMPI
763 { 0x2CC2, 0x2CC3 }, // COPTIC CAPITAL LETTER CROSSED SHEI
764 { 0x2CC4, 0x2CC5 }, // COPTIC CAPITAL LETTER OLD COPTIC SHEI
765 { 0x2CC6, 0x2CC7 }, // COPTIC CAPITAL LETTER OLD COPTIC ESH
766 { 0x2CC8, 0x2CC9 }, // COPTIC CAPITAL LETTER AKHMIMIC KHEI
767 { 0x2CCA, 0x2CCB }, // COPTIC CAPITAL LETTER DIALECT-P HORI
768 { 0x2CCC, 0x2CCD }, // COPTIC CAPITAL LETTER OLD COPTIC HORI
769 { 0x2CCE, 0x2CCF }, // COPTIC CAPITAL LETTER OLD COPTIC HA
770 { 0x2CD0, 0x2CD1 }, // COPTIC CAPITAL LETTER L-SHAPED HA
771 { 0x2CD2, 0x2CD3 }, // COPTIC CAPITAL LETTER OLD COPTIC HEI
772 { 0x2CD4, 0x2CD5 }, // COPTIC CAPITAL LETTER OLD COPTIC HAT
773 { 0x2CD6, 0x2CD7 }, // COPTIC CAPITAL LETTER OLD COPTIC GANGIA
774 { 0x2CD8, 0x2CD9 }, // COPTIC CAPITAL LETTER OLD COPTIC DJA
775 { 0x2CDA, 0x2CDB }, // COPTIC CAPITAL LETTER OLD COPTIC SHIMA
776 { 0x2CDC, 0x2CDD }, // COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
777 { 0x2CDE, 0x2CDF }, // COPTIC CAPITAL LETTER OLD NUBIAN NGI
778 { 0x2CE0, 0x2CE1 }, // COPTIC CAPITAL LETTER OLD NUBIAN NYI
779 { 0x2CE2, 0x2CE3 }, // COPTIC CAPITAL LETTER OLD NUBIAN WAU
780 { 0x2CEB, 0x2CEC }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
781 { 0x2CED, 0x2CEE }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
782 { 0xA640, 0xA641 }, // CYRILLIC CAPITAL LETTER ZEMLYA
783 { 0xA642, 0xA643 }, // CYRILLIC CAPITAL LETTER DZELO
784 { 0xA644, 0xA645 }, // CYRILLIC CAPITAL LETTER REVERSED DZE
785 { 0xA646, 0xA647 }, // CYRILLIC CAPITAL LETTER IOTA
786 { 0xA648, 0xA649 }, // CYRILLIC CAPITAL LETTER DJERV
787 { 0xA64A, 0xA64B }, // CYRILLIC CAPITAL LETTER MONOGRAPH UK
788 { 0xA64C, 0xA64D }, // CYRILLIC CAPITAL LETTER BROAD OMEGA
789 { 0xA64E, 0xA64F }, // CYRILLIC CAPITAL LETTER NEUTRAL YER
790 { 0xA650, 0xA651 }, // CYRILLIC CAPITAL LETTER YERU WITH BACK YER
791 { 0xA652, 0xA653 }, // CYRILLIC CAPITAL LETTER IOTIFIED YAT
792 { 0xA654, 0xA655 }, // CYRILLIC CAPITAL LETTER REVERSED YU
793 { 0xA656, 0xA657 }, // CYRILLIC CAPITAL LETTER IOTIFIED A
794 { 0xA658, 0xA659 }, // CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
795 { 0xA65A, 0xA65B }, // CYRILLIC CAPITAL LETTER BLENDED YUS
796 { 0xA65C, 0xA65D }, // CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
797 { 0xA65E, 0xA65F }, // CYRILLIC CAPITAL LETTER YN
798 { 0xA662, 0xA663 }, // CYRILLIC CAPITAL LETTER SOFT DE
799 { 0xA664, 0xA665 }, // CYRILLIC CAPITAL LETTER SOFT EL
800 { 0xA666, 0xA667 }, // CYRILLIC CAPITAL LETTER SOFT EM
801 { 0xA668, 0xA669 }, // CYRILLIC CAPITAL LETTER MONOCULAR O
802 { 0xA66A, 0xA66B }, // CYRILLIC CAPITAL LETTER BINOCULAR O
803 { 0xA66C, 0xA66D }, // CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
804 { 0xA680, 0xA681 }, // CYRILLIC CAPITAL LETTER DWE
805 { 0xA682, 0xA683 }, // CYRILLIC CAPITAL LETTER DZWE
806 { 0xA684, 0xA685 }, // CYRILLIC CAPITAL LETTER ZHWE
807 { 0xA686, 0xA687 }, // CYRILLIC CAPITAL LETTER CCHE
808 { 0xA688, 0xA689 }, // CYRILLIC CAPITAL LETTER DZZE
809 { 0xA68A, 0xA68B }, // CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
810 { 0xA68C, 0xA68D }, // CYRILLIC CAPITAL LETTER TWE
811 { 0xA68E, 0xA68F }, // CYRILLIC CAPITAL LETTER TSWE
812 { 0xA690, 0xA691 }, // CYRILLIC CAPITAL LETTER TSSE
813 { 0xA692, 0xA693 }, // CYRILLIC CAPITAL LETTER TCHE
814 { 0xA694, 0xA695 }, // CYRILLIC CAPITAL LETTER HWE
815 { 0xA696, 0xA697 }, // CYRILLIC CAPITAL LETTER SHWE
816 { 0xA722, 0xA723 }, // LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
817 { 0xA724, 0xA725 }, // LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
818 { 0xA726, 0xA727 }, // LATIN CAPITAL LETTER HENG
819 { 0xA728, 0xA729 }, // LATIN CAPITAL LETTER TZ
820 { 0xA72A, 0xA72B }, // LATIN CAPITAL LETTER TRESILLO
821 { 0xA72C, 0xA72D }, // LATIN CAPITAL LETTER CUATRILLO
822 { 0xA72E, 0xA72F }, // LATIN CAPITAL LETTER CUATRILLO WITH COMMA
823 { 0xA732, 0xA733 }, // LATIN CAPITAL LETTER AA
824 { 0xA734, 0xA735 }, // LATIN CAPITAL LETTER AO
825 { 0xA736, 0xA737 }, // LATIN CAPITAL LETTER AU
826 { 0xA738, 0xA739 }, // LATIN CAPITAL LETTER AV
827 { 0xA73A, 0xA73B }, // LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
828 { 0xA73C, 0xA73D }, // LATIN CAPITAL LETTER AY
829 { 0xA73E, 0xA73F }, // LATIN CAPITAL LETTER REVERSED C WITH DOT
830 { 0xA740, 0xA741 }, // LATIN CAPITAL LETTER K WITH STROKE
831 { 0xA742, 0xA743 }, // LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
832 { 0xA744, 0xA745 }, // LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
833 { 0xA746, 0xA747 }, // LATIN CAPITAL LETTER BROKEN L
834 { 0xA748, 0xA749 }, // LATIN CAPITAL LETTER L WITH HIGH STROKE
835 { 0xA74A, 0xA74B }, // LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
836 { 0xA74C, 0xA74D }, // LATIN CAPITAL LETTER O WITH LOOP
837 { 0xA74E, 0xA74F }, // LATIN CAPITAL LETTER OO
838 { 0xA750, 0xA751 }, // LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
839 { 0xA752, 0xA753 }, // LATIN CAPITAL LETTER P WITH FLOURISH
840 { 0xA754, 0xA755 }, // LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
841 { 0xA756, 0xA757 }, // LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
842 { 0xA758, 0xA759 }, // LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
843 { 0xA75A, 0xA75B }, // LATIN CAPITAL LETTER R ROTUNDA
844 { 0xA75C, 0xA75D }, // LATIN CAPITAL LETTER RUM ROTUNDA
845 { 0xA75E, 0xA75F }, // LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
846 { 0xA760, 0xA761 }, // LATIN CAPITAL LETTER VY
847 { 0xA762, 0xA763 }, // LATIN CAPITAL LETTER VISIGOTHIC Z
848 { 0xA764, 0xA765 }, // LATIN CAPITAL LETTER THORN WITH STROKE
849 { 0xA766, 0xA767 }, // LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
850 { 0xA768, 0xA769 }, // LATIN CAPITAL LETTER VEND
851 { 0xA76A, 0xA76B }, // LATIN CAPITAL LETTER ET
852 { 0xA76C, 0xA76D }, // LATIN CAPITAL LETTER IS
853 { 0xA76E, 0xA76F }, // LATIN CAPITAL LETTER CON
854 { 0xA779, 0xA77A }, // LATIN CAPITAL LETTER INSULAR D
855 { 0xA77B, 0xA77C }, // LATIN CAPITAL LETTER INSULAR F
856 { 0xA77D, 0x1D79 }, // LATIN CAPITAL LETTER INSULAR G
857 { 0xA77E, 0xA77F }, // LATIN CAPITAL LETTER TURNED INSULAR G
858 { 0xA780, 0xA781 }, // LATIN CAPITAL LETTER TURNED L
859 { 0xA782, 0xA783 }, // LATIN CAPITAL LETTER INSULAR R
860 { 0xA784, 0xA785 }, // LATIN CAPITAL LETTER INSULAR S
861 { 0xA786, 0xA787 }, // LATIN CAPITAL LETTER INSULAR T
862 { 0xA78B, 0xA78C }, // LATIN CAPITAL LETTER SALTILLO
863 { 0xFF21, 0xFF41 }, // FULLWIDTH LATIN CAPITAL LETTER A
864 { 0xFF22, 0xFF42 }, // FULLWIDTH LATIN CAPITAL LETTER B
865 { 0xFF23, 0xFF43 }, // FULLWIDTH LATIN CAPITAL LETTER C
866 { 0xFF24, 0xFF44 }, // FULLWIDTH LATIN CAPITAL LETTER D
867 { 0xFF25, 0xFF45 }, // FULLWIDTH LATIN CAPITAL LETTER E
868 { 0xFF26, 0xFF46 }, // FULLWIDTH LATIN CAPITAL LETTER F
869 { 0xFF27, 0xFF47 }, // FULLWIDTH LATIN CAPITAL LETTER G
870 { 0xFF28, 0xFF48 }, // FULLWIDTH LATIN CAPITAL LETTER H
871 { 0xFF29, 0xFF49 }, // FULLWIDTH LATIN CAPITAL LETTER I
872 { 0xFF2A, 0xFF4A }, // FULLWIDTH LATIN CAPITAL LETTER J
873 { 0xFF2B, 0xFF4B }, // FULLWIDTH LATIN CAPITAL LETTER K
874 { 0xFF2C, 0xFF4C }, // FULLWIDTH LATIN CAPITAL LETTER L
875 { 0xFF2D, 0xFF4D }, // FULLWIDTH LATIN CAPITAL LETTER M
876 { 0xFF2E, 0xFF4E }, // FULLWIDTH LATIN CAPITAL LETTER N
877 { 0xFF2F, 0xFF4F }, // FULLWIDTH LATIN CAPITAL LETTER O
878 { 0xFF30, 0xFF50 }, // FULLWIDTH LATIN CAPITAL LETTER P
879 { 0xFF31, 0xFF51 }, // FULLWIDTH LATIN CAPITAL LETTER Q
880 { 0xFF32, 0xFF52 }, // FULLWIDTH LATIN CAPITAL LETTER R
881 { 0xFF33, 0xFF53 }, // FULLWIDTH LATIN CAPITAL LETTER S
882 { 0xFF34, 0xFF54 }, // FULLWIDTH LATIN CAPITAL LETTER T
883 { 0xFF35, 0xFF55 }, // FULLWIDTH LATIN CAPITAL LETTER U
884 { 0xFF36, 0xFF56 }, // FULLWIDTH LATIN CAPITAL LETTER V
885 { 0xFF37, 0xFF57 }, // FULLWIDTH LATIN CAPITAL LETTER W
886 { 0xFF38, 0xFF58 }, // FULLWIDTH LATIN CAPITAL LETTER X
887 { 0xFF39, 0xFF59 }, // FULLWIDTH LATIN CAPITAL LETTER Y
888 { 0xFF3A, 0xFF5A } // FULLWIDTH LATIN CAPITAL LETTER Z
889};
890
Ken Wakasa6d0c9542010-04-23 08:58:56 +0900891static int compare_pair_capital(const void *a, const void *b) {
Ken Wakasa267030d2012-08-14 18:54:13 +0900892 return static_cast<int>(*static_cast<const unsigned short *>(a))
893 - static_cast<int>((static_cast<const struct LatinCapitalSmallPair *>(b))->capital);
Ken Wakasa6d0c9542010-04-23 08:58:56 +0900894}
Ken Wakasa07cab722010-04-20 01:24:57 +0900895
Ken Wakasade8a9a82012-08-17 13:06:28 +0900896unsigned short latin_tolower(const unsigned short c) {
Ken Wakasa6d0c9542010-04-23 08:58:56 +0900897 struct LatinCapitalSmallPair *p =
Ken Wakasa267030d2012-08-14 18:54:13 +0900898 static_cast<struct LatinCapitalSmallPair *>(bsearch(&c, SORTED_CHAR_MAP,
Ken Wakasab02ee3d2012-10-08 11:46:14 +0900899 NELEMS(SORTED_CHAR_MAP), sizeof(SORTED_CHAR_MAP[0]), compare_pair_capital));
Ken Wakasa6d0c9542010-04-23 08:58:56 +0900900 return p ? p->small : c;
Ken Wakasa07cab722010-04-20 01:24:57 +0900901}
Ken Wakasaee05f3f2012-11-10 19:30:45 +0900902
903/*
904 * Table mapping most combined Latin, Greek, and Cyrillic characters
905 * to their base characters. If c is in range, BASE_CHARS[c] == c
906 * if c is not a combined character, or the base character if it
907 * is combined.
908 *
909 * Generated with:
910 * cat UnicodeData.txt | perl -e 'while (<>) { @foo = split(/;/); $foo[5] =~ s/<.*> //; \
911 * $base[hex($foo[0])] = hex($foo[5]);} \
912 * for ($i = 0; $i < 0x500; $i += 8) { for ($j = $i; $j < $i + 8; $j++) { \
913 * printf("0x%04x, ", $base[$j] ? $base[$j] : $j)}; print "\n"; }'
914 */
915const uint16_t BASE_CHARS[BASE_CHARS_SIZE] = {
916 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
917 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
918 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
919 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
920 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
921 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
922 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
923 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
924 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
925 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
926 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
927 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
928 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
929 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
930 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
931 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
932 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
933 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
934 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
935 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
936 0x0020, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
937 0x0020, 0x00a9, 0x0061, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0020,
938 0x00b0, 0x00b1, 0x0032, 0x0033, 0x0020, 0x03bc, 0x00b6, 0x00b7,
939 0x0020, 0x0031, 0x006f, 0x00bb, 0x0031, 0x0031, 0x0033, 0x00bf,
940 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00c6, 0x0043,
941 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
942 0x00d0, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x00d7,
943 0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00de, 0x0073, // Manually changed d8 to 4f
944 // Manually changed df to 73
945 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x00e6, 0x0063,
946 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
947 0x00f0, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00f7,
948 0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x00fe, 0x0079, // Manually changed f8 to 6f
949 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
950 0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
951 0x0110, 0x0111, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
952 0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
953 0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0126, 0x0127,
954 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
955 0x0049, 0x0131, 0x0049, 0x0069, 0x004a, 0x006a, 0x004b, 0x006b,
956 0x0138, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c,
Ken Wakasae3fc8bc2012-11-14 20:07:16 +0900957 0x006c, 0x004c, 0x006c, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
Ken Wakasaee05f3f2012-11-10 19:30:45 +0900958 0x006e, 0x02bc, 0x014a, 0x014b, 0x004f, 0x006f, 0x004f, 0x006f,
959 0x004f, 0x006f, 0x0152, 0x0153, 0x0052, 0x0072, 0x0052, 0x0072,
960 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
961 0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0166, 0x0167,
962 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
963 0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
964 0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
965 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0185, 0x0186, 0x0187,
966 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, 0x018e, 0x018f,
967 0x0190, 0x0191, 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197,
968 0x0198, 0x0199, 0x019a, 0x019b, 0x019c, 0x019d, 0x019e, 0x019f,
969 0x004f, 0x006f, 0x01a2, 0x01a3, 0x01a4, 0x01a5, 0x01a6, 0x01a7,
970 0x01a8, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ad, 0x01ae, 0x0055,
971 0x0075, 0x01b1, 0x01b2, 0x01b3, 0x01b4, 0x01b5, 0x01b6, 0x01b7,
972 0x01b8, 0x01b9, 0x01ba, 0x01bb, 0x01bc, 0x01bd, 0x01be, 0x01bf,
973 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x0044, 0x0044, 0x0064, 0x004c,
974 0x004c, 0x006c, 0x004e, 0x004e, 0x006e, 0x0041, 0x0061, 0x0049,
975 0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x00dc, 0x00fc, 0x00dc,
976 0x00fc, 0x00dc, 0x00fc, 0x00dc, 0x00fc, 0x01dd, 0x00c4, 0x00e4,
977 0x0226, 0x0227, 0x00c6, 0x00e6, 0x01e4, 0x01e5, 0x0047, 0x0067,
978 0x004b, 0x006b, 0x004f, 0x006f, 0x01ea, 0x01eb, 0x01b7, 0x0292,
979 0x006a, 0x0044, 0x0044, 0x0064, 0x0047, 0x0067, 0x01f6, 0x01f7,
980 0x004e, 0x006e, 0x00c5, 0x00e5, 0x00c6, 0x00e6, 0x00d8, 0x00f8,
981 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
982 0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
983 0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
984 0x0053, 0x0073, 0x0054, 0x0074, 0x021c, 0x021d, 0x0048, 0x0068,
985 0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0041, 0x0061,
986 0x0045, 0x0065, 0x00d6, 0x00f6, 0x00d5, 0x00f5, 0x004f, 0x006f,
987 0x022e, 0x022f, 0x0059, 0x0079, 0x0234, 0x0235, 0x0236, 0x0237,
988 0x0238, 0x0239, 0x023a, 0x023b, 0x023c, 0x023d, 0x023e, 0x023f,
989 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247,
990 0x0248, 0x0249, 0x024a, 0x024b, 0x024c, 0x024d, 0x024e, 0x024f,
991 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257,
992 0x0258, 0x0259, 0x025a, 0x025b, 0x025c, 0x025d, 0x025e, 0x025f,
993 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267,
994 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x026f,
995 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
996 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f,
997 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287,
998 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x028f,
999 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297,
1000 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f,
1001 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7,
1002 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af,
1003 0x0068, 0x0266, 0x006a, 0x0072, 0x0279, 0x027b, 0x0281, 0x0077,
1004 0x0079, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf,
1005 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7,
1006 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf,
1007 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7,
1008 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x02de, 0x02df,
1009 0x0263, 0x006c, 0x0073, 0x0078, 0x0295, 0x02e5, 0x02e6, 0x02e7,
1010 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef,
1011 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7,
1012 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff,
1013 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307,
1014 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f,
1015 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
1016 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f,
1017 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327,
1018 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f,
1019 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337,
1020 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f,
1021 0x0300, 0x0301, 0x0342, 0x0313, 0x0308, 0x0345, 0x0346, 0x0347,
1022 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f,
1023 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357,
1024 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f,
1025 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
1026 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f,
1027 0x0370, 0x0371, 0x0372, 0x0373, 0x02b9, 0x0375, 0x0376, 0x0377,
1028 0x0378, 0x0379, 0x0020, 0x037b, 0x037c, 0x037d, 0x003b, 0x037f,
1029 0x0380, 0x0381, 0x0382, 0x0383, 0x0020, 0x00a8, 0x0391, 0x00b7,
1030 0x0395, 0x0397, 0x0399, 0x038b, 0x039f, 0x038d, 0x03a5, 0x03a9,
1031 0x03ca, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
1032 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
1033 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
1034 0x03a8, 0x03a9, 0x0399, 0x03a5, 0x03b1, 0x03b5, 0x03b7, 0x03b9,
1035 0x03cb, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
1036 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
1037 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
1038 0x03c8, 0x03c9, 0x03b9, 0x03c5, 0x03bf, 0x03c5, 0x03c9, 0x03cf,
1039 0x03b2, 0x03b8, 0x03a5, 0x03d2, 0x03d2, 0x03c6, 0x03c0, 0x03d7,
1040 0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df,
1041 0x03e0, 0x03e1, 0x03e2, 0x03e3, 0x03e4, 0x03e5, 0x03e6, 0x03e7,
1042 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, 0x03ed, 0x03ee, 0x03ef,
1043 0x03ba, 0x03c1, 0x03c2, 0x03f3, 0x0398, 0x03b5, 0x03f6, 0x03f7,
1044 0x03f8, 0x03a3, 0x03fa, 0x03fb, 0x03fc, 0x03fd, 0x03fe, 0x03ff,
1045 0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406,
1046 0x0408, 0x0409, 0x040a, 0x040b, 0x041a, 0x0418, 0x0423, 0x040f,
1047 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
Jean Chalard7c5b89a2012-11-14 17:08:39 +09001048 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
Ken Wakasaee05f3f2012-11-10 19:30:45 +09001049 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
1050 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
1051 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
Jean Chalard7c5b89a2012-11-14 17:08:39 +09001052 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
Ken Wakasaee05f3f2012-11-10 19:30:45 +09001053 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
1054 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
1055 0x0435, 0x0435, 0x0452, 0x0433, 0x0454, 0x0455, 0x0456, 0x0456,
1056 0x0458, 0x0459, 0x045a, 0x045b, 0x043a, 0x0438, 0x0443, 0x045f,
1057 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467,
1058 0x0468, 0x0469, 0x046a, 0x046b, 0x046c, 0x046d, 0x046e, 0x046f,
1059 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0474, 0x0475,
1060 0x0478, 0x0479, 0x047a, 0x047b, 0x047c, 0x047d, 0x047e, 0x047f,
1061 0x0480, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487,
1062 0x0488, 0x0489, 0x048a, 0x048b, 0x048c, 0x048d, 0x048e, 0x048f,
1063 0x0490, 0x0491, 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497,
1064 0x0498, 0x0499, 0x049a, 0x049b, 0x049c, 0x049d, 0x049e, 0x049f,
1065 0x04a0, 0x04a1, 0x04a2, 0x04a3, 0x04a4, 0x04a5, 0x04a6, 0x04a7,
1066 0x04a8, 0x04a9, 0x04aa, 0x04ab, 0x04ac, 0x04ad, 0x04ae, 0x04af,
1067 0x04b0, 0x04b1, 0x04b2, 0x04b3, 0x04b4, 0x04b5, 0x04b6, 0x04b7,
1068 0x04b8, 0x04b9, 0x04ba, 0x04bb, 0x04bc, 0x04bd, 0x04be, 0x04bf,
1069 0x04c0, 0x0416, 0x0436, 0x04c3, 0x04c4, 0x04c5, 0x04c6, 0x04c7,
1070 0x04c8, 0x04c9, 0x04ca, 0x04cb, 0x04cc, 0x04cd, 0x04ce, 0x04cf,
1071 0x0410, 0x0430, 0x0410, 0x0430, 0x04d4, 0x04d5, 0x0415, 0x0435,
1072 0x04d8, 0x04d9, 0x04d8, 0x04d9, 0x0416, 0x0436, 0x0417, 0x0437,
1073 0x04e0, 0x04e1, 0x0418, 0x0438, 0x0418, 0x0438, 0x041e, 0x043e,
1074 0x04e8, 0x04e9, 0x04e8, 0x04e9, 0x042d, 0x044d, 0x0423, 0x0443,
1075 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, 0x04f6, 0x04f7,
1076 0x042b, 0x044b, 0x04fa, 0x04fb, 0x04fc, 0x04fd, 0x04fe, 0x04ff,
1077};
Ken Wakasa07cab722010-04-20 01:24:57 +09001078} // namespace latinime