1 | #include "utf.h" |
2 | |
3 | #define bsearch jsU_bsearch |
4 | #define nelem(a) (int)(sizeof (a) / sizeof (a)[0]) |
5 | |
6 | /* |
7 | * alpha ranges - |
8 | * only covers ranges not in lower||upper |
9 | */ |
10 | static const Rune __alpha2[] = |
11 | { |
12 | 0x00d8, 0x00f6, /* Ø - ö */ |
13 | 0x00f8, 0x01f5, /* ø - ǵ */ |
14 | 0x0250, 0x02a8, /* ɐ - ʨ */ |
15 | 0x038e, 0x03a1, /* Ύ - Ρ */ |
16 | 0x03a3, 0x03ce, /* Σ - ώ */ |
17 | 0x03d0, 0x03d6, /* ϐ - ϖ */ |
18 | 0x03e2, 0x03f3, /* Ϣ - ϳ */ |
19 | 0x0490, 0x04c4, /* Ґ - ӄ */ |
20 | 0x0561, 0x0587, /* ա - և */ |
21 | 0x05d0, 0x05ea, /* א - ת */ |
22 | 0x05f0, 0x05f2, /* װ - ײ */ |
23 | 0x0621, 0x063a, /* ء - غ */ |
24 | 0x0640, 0x064a, /* ـ - ي */ |
25 | 0x0671, 0x06b7, /* ٱ - ڷ */ |
26 | 0x06ba, 0x06be, /* ں - ھ */ |
27 | 0x06c0, 0x06ce, /* ۀ - ێ */ |
28 | 0x06d0, 0x06d3, /* ې - ۓ */ |
29 | 0x0905, 0x0939, /* अ - ह */ |
30 | 0x0958, 0x0961, /* क़ - ॡ */ |
31 | 0x0985, 0x098c, /* অ - ঌ */ |
32 | 0x098f, 0x0990, /* এ - ঐ */ |
33 | 0x0993, 0x09a8, /* ও - ন */ |
34 | 0x09aa, 0x09b0, /* প - র */ |
35 | 0x09b6, 0x09b9, /* শ - হ */ |
36 | 0x09dc, 0x09dd, /* ড় - ঢ় */ |
37 | 0x09df, 0x09e1, /* য় - ৡ */ |
38 | 0x09f0, 0x09f1, /* ৰ - ৱ */ |
39 | 0x0a05, 0x0a0a, /* ਅ - ਊ */ |
40 | 0x0a0f, 0x0a10, /* ਏ - ਐ */ |
41 | 0x0a13, 0x0a28, /* ਓ - ਨ */ |
42 | 0x0a2a, 0x0a30, /* ਪ - ਰ */ |
43 | 0x0a32, 0x0a33, /* ਲ - ਲ਼ */ |
44 | 0x0a35, 0x0a36, /* ਵ - ਸ਼ */ |
45 | 0x0a38, 0x0a39, /* ਸ - ਹ */ |
46 | 0x0a59, 0x0a5c, /* ਖ਼ - ੜ */ |
47 | 0x0a85, 0x0a8b, /* અ - ઋ */ |
48 | 0x0a8f, 0x0a91, /* એ - ઑ */ |
49 | 0x0a93, 0x0aa8, /* ઓ - ન */ |
50 | 0x0aaa, 0x0ab0, /* પ - ર */ |
51 | 0x0ab2, 0x0ab3, /* લ - ળ */ |
52 | 0x0ab5, 0x0ab9, /* વ - હ */ |
53 | 0x0b05, 0x0b0c, /* ଅ - ଌ */ |
54 | 0x0b0f, 0x0b10, /* ଏ - ଐ */ |
55 | 0x0b13, 0x0b28, /* ଓ - ନ */ |
56 | 0x0b2a, 0x0b30, /* ପ - ର */ |
57 | 0x0b32, 0x0b33, /* ଲ - ଳ */ |
58 | 0x0b36, 0x0b39, /* ଶ - ହ */ |
59 | 0x0b5c, 0x0b5d, /* ଡ଼ - ଢ଼ */ |
60 | 0x0b5f, 0x0b61, /* ୟ - ୡ */ |
61 | 0x0b85, 0x0b8a, /* அ - ஊ */ |
62 | 0x0b8e, 0x0b90, /* எ - ஐ */ |
63 | 0x0b92, 0x0b95, /* ஒ - க */ |
64 | 0x0b99, 0x0b9a, /* ங - ச */ |
65 | 0x0b9e, 0x0b9f, /* ஞ - ட */ |
66 | 0x0ba3, 0x0ba4, /* ண - த */ |
67 | 0x0ba8, 0x0baa, /* ந - ப */ |
68 | 0x0bae, 0x0bb5, /* ம - வ */ |
69 | 0x0bb7, 0x0bb9, /* ஷ - ஹ */ |
70 | 0x0c05, 0x0c0c, /* అ - ఌ */ |
71 | 0x0c0e, 0x0c10, /* ఎ - ఐ */ |
72 | 0x0c12, 0x0c28, /* ఒ - న */ |
73 | 0x0c2a, 0x0c33, /* ప - ళ */ |
74 | 0x0c35, 0x0c39, /* వ - హ */ |
75 | 0x0c60, 0x0c61, /* ౠ - ౡ */ |
76 | 0x0c85, 0x0c8c, /* ಅ - ಌ */ |
77 | 0x0c8e, 0x0c90, /* ಎ - ಐ */ |
78 | 0x0c92, 0x0ca8, /* ಒ - ನ */ |
79 | 0x0caa, 0x0cb3, /* ಪ - ಳ */ |
80 | 0x0cb5, 0x0cb9, /* ವ - ಹ */ |
81 | 0x0ce0, 0x0ce1, /* ೠ - ೡ */ |
82 | 0x0d05, 0x0d0c, /* അ - ഌ */ |
83 | 0x0d0e, 0x0d10, /* എ - ഐ */ |
84 | 0x0d12, 0x0d28, /* ഒ - ന */ |
85 | 0x0d2a, 0x0d39, /* പ - ഹ */ |
86 | 0x0d60, 0x0d61, /* ൠ - ൡ */ |
87 | 0x0e01, 0x0e30, /* ก - ะ */ |
88 | 0x0e32, 0x0e33, /* า - ำ */ |
89 | 0x0e40, 0x0e46, /* เ - ๆ */ |
90 | 0x0e5a, 0x0e5b, /* ๚ - ๛ */ |
91 | 0x0e81, 0x0e82, /* ກ - ຂ */ |
92 | 0x0e87, 0x0e88, /* ງ - ຈ */ |
93 | 0x0e94, 0x0e97, /* ດ - ທ */ |
94 | 0x0e99, 0x0e9f, /* ນ - ຟ */ |
95 | 0x0ea1, 0x0ea3, /* ມ - ຣ */ |
96 | 0x0eaa, 0x0eab, /* ສ - ຫ */ |
97 | 0x0ead, 0x0eae, /* ອ - ຮ */ |
98 | 0x0eb2, 0x0eb3, /* າ - ຳ */ |
99 | 0x0ec0, 0x0ec4, /* ເ - ໄ */ |
100 | 0x0edc, 0x0edd, /* ໜ - ໝ */ |
101 | 0x0f18, 0x0f19, /* ༘ - ༙ */ |
102 | 0x0f40, 0x0f47, /* ཀ - ཇ */ |
103 | 0x0f49, 0x0f69, /* ཉ - ཀྵ */ |
104 | 0x10d0, 0x10f6, /* ა - ჶ */ |
105 | 0x1100, 0x1159, /* ᄀ - ᅙ */ |
106 | 0x115f, 0x11a2, /* ᅟ - ᆢ */ |
107 | 0x11a8, 0x11f9, /* ᆨ - ᇹ */ |
108 | 0x1e00, 0x1e9b, /* Ḁ - ẛ */ |
109 | 0x1f50, 0x1f57, /* ὐ - ὗ */ |
110 | 0x1f80, 0x1fb4, /* ᾀ - ᾴ */ |
111 | 0x1fb6, 0x1fbc, /* ᾶ - ᾼ */ |
112 | 0x1fc2, 0x1fc4, /* ῂ - ῄ */ |
113 | 0x1fc6, 0x1fcc, /* ῆ - ῌ */ |
114 | 0x1fd0, 0x1fd3, /* ῐ - ΐ */ |
115 | 0x1fd6, 0x1fdb, /* ῖ - Ί */ |
116 | 0x1fe0, 0x1fec, /* ῠ - Ῥ */ |
117 | 0x1ff2, 0x1ff4, /* ῲ - ῴ */ |
118 | 0x1ff6, 0x1ffc, /* ῶ - ῼ */ |
119 | 0x210a, 0x2113, /* ℊ - ℓ */ |
120 | 0x2115, 0x211d, /* ℕ - ℝ */ |
121 | 0x2120, 0x2122, /* ℠ - ™ */ |
122 | 0x212a, 0x2131, /* K - ℱ */ |
123 | 0x2133, 0x2138, /* ℳ - ℸ */ |
124 | 0x3041, 0x3094, /* ぁ - ゔ */ |
125 | 0x30a1, 0x30fa, /* ァ - ヺ */ |
126 | 0x3105, 0x312c, /* ㄅ - ㄬ */ |
127 | 0x3131, 0x318e, /* ㄱ - ㆎ */ |
128 | 0x3192, 0x319f, /* ㆒ - ㆟ */ |
129 | 0x3260, 0x327b, /* ㉠ - ㉻ */ |
130 | 0x328a, 0x32b0, /* ㊊ - ㊰ */ |
131 | 0x32d0, 0x32fe, /* ㋐ - ㋾ */ |
132 | 0x3300, 0x3357, /* ㌀ - ㍗ */ |
133 | 0x3371, 0x3376, /* ㍱ - ㍶ */ |
134 | 0x337b, 0x3394, /* ㍻ - ㎔ */ |
135 | 0x3399, 0x339e, /* ㎙ - ㎞ */ |
136 | 0x33a9, 0x33ad, /* ㎩ - ㎭ */ |
137 | 0x33b0, 0x33c1, /* ㎰ - ㏁ */ |
138 | 0x33c3, 0x33c5, /* ㏃ - ㏅ */ |
139 | 0x33c7, 0x33d7, /* ㏇ - ㏗ */ |
140 | 0x33d9, 0x33dd, /* ㏙ - ㏝ */ |
141 | 0x4e00, 0x9fff, /* 一 - 鿿 */ |
142 | 0xac00, 0xd7a3, /* 가 - 힣 */ |
143 | 0xf900, 0xfb06, /* 豈 - st */ |
144 | 0xfb13, 0xfb17, /* ﬓ - ﬗ */ |
145 | 0xfb1f, 0xfb28, /* ײַ - ﬨ */ |
146 | 0xfb2a, 0xfb36, /* שׁ - זּ */ |
147 | 0xfb38, 0xfb3c, /* טּ - לּ */ |
148 | 0xfb40, 0xfb41, /* נּ - סּ */ |
149 | 0xfb43, 0xfb44, /* ףּ - פּ */ |
150 | 0xfb46, 0xfbb1, /* צּ - ﮱ */ |
151 | 0xfbd3, 0xfd3d, /* ﯓ - ﴽ */ |
152 | 0xfd50, 0xfd8f, /* ﵐ - ﶏ */ |
153 | 0xfd92, 0xfdc7, /* ﶒ - ﷇ */ |
154 | 0xfdf0, 0xfdf9, /* ﷰ - ﷹ */ |
155 | 0xfe70, 0xfe72, /* ﹰ - ﹲ */ |
156 | 0xfe76, 0xfefc, /* ﹶ - ﻼ */ |
157 | 0xff66, 0xff6f, /* ヲ - ッ */ |
158 | 0xff71, 0xff9d, /* ア - ン */ |
159 | 0xffa0, 0xffbe, /* ᅠ - ᄒ */ |
160 | 0xffc2, 0xffc7, /* ᅡ - ᅦ */ |
161 | 0xffca, 0xffcf, /* ᅧ - ᅬ */ |
162 | 0xffd2, 0xffd7, /* ᅭ - ᅲ */ |
163 | 0xffda, 0xffdc, /* ᅳ - ᅵ */ |
164 | }; |
165 | |
166 | /* |
167 | * alpha singlets - |
168 | * only covers ranges not in lower||upper |
169 | */ |
170 | static const Rune __alpha1[] = |
171 | { |
172 | 0x00aa, /* ª */ |
173 | 0x00b5, /* µ */ |
174 | 0x00ba, /* º */ |
175 | 0x03da, /* Ϛ */ |
176 | 0x03dc, /* Ϝ */ |
177 | 0x03de, /* Ϟ */ |
178 | 0x03e0, /* Ϡ */ |
179 | 0x06d5, /* ە */ |
180 | 0x09b2, /* ল */ |
181 | 0x0a5e, /* ਫ਼ */ |
182 | 0x0a8d, /* ઍ */ |
183 | 0x0ae0, /* ૠ */ |
184 | 0x0b9c, /* ஜ */ |
185 | 0x0cde, /* ೞ */ |
186 | 0x0e4f, /* ๏ */ |
187 | 0x0e84, /* ຄ */ |
188 | 0x0e8a, /* ຊ */ |
189 | 0x0e8d, /* ຍ */ |
190 | 0x0ea5, /* ລ */ |
191 | 0x0ea7, /* ວ */ |
192 | 0x0eb0, /* ະ */ |
193 | 0x0ebd, /* ຽ */ |
194 | 0x1fbe, /* ι */ |
195 | 0x207f, /* ⁿ */ |
196 | 0x20a8, /* ₨ */ |
197 | 0x2102, /* ℂ */ |
198 | 0x2107, /* ℇ */ |
199 | 0x2124, /* ℤ */ |
200 | 0x2126, /* Ω */ |
201 | 0x2128, /* ℨ */ |
202 | 0xfb3e, /* מּ */ |
203 | 0xfe74, /* ﹴ */ |
204 | }; |
205 | |
206 | /* |
207 | * space ranges |
208 | */ |
209 | static const Rune __space2[] = |
210 | { |
211 | 0x0009, 0x000a, /* tab and newline */ |
212 | 0x0020, 0x0020, /* space */ |
213 | 0x00a0, 0x00a0, /* */ |
214 | 0x2000, 0x200b, /* - */ |
215 | 0x2028, 0x2029, /*
-
*/ |
216 | 0x3000, 0x3000, /* */ |
217 | 0xfeff, 0xfeff, /* */ |
218 | }; |
219 | |
220 | /* |
221 | * lower case ranges |
222 | * 3rd col is conversion excess 500 |
223 | */ |
224 | static const Rune __toupper2[] = |
225 | { |
226 | 0x0061, 0x007a, 468, /* a-z A-Z */ |
227 | 0x00e0, 0x00f6, 468, /* à-ö À-Ö */ |
228 | 0x00f8, 0x00fe, 468, /* ø-þ Ø-Þ */ |
229 | 0x0256, 0x0257, 295, /* ɖ-ɗ Ɖ-Ɗ */ |
230 | 0x0258, 0x0259, 298, /* ɘ-ə Ǝ-Ə */ |
231 | 0x028a, 0x028b, 283, /* ʊ-ʋ Ʊ-Ʋ */ |
232 | 0x03ad, 0x03af, 463, /* έ-ί Έ-Ί */ |
233 | 0x03b1, 0x03c1, 468, /* α-ρ Α-Ρ */ |
234 | 0x03c3, 0x03cb, 468, /* σ-ϋ Σ-Ϋ */ |
235 | 0x03cd, 0x03ce, 437, /* ύ-ώ Ύ-Ώ */ |
236 | 0x0430, 0x044f, 468, /* а-я А-Я */ |
237 | 0x0451, 0x045c, 420, /* ё-ќ Ё-Ќ */ |
238 | 0x045e, 0x045f, 420, /* ў-џ Ў-Џ */ |
239 | 0x0561, 0x0586, 452, /* ա-ֆ Ա-Ֆ */ |
240 | 0x1f00, 0x1f07, 508, /* ἀ-ἇ Ἀ-Ἇ */ |
241 | 0x1f10, 0x1f15, 508, /* ἐ-ἕ Ἐ-Ἕ */ |
242 | 0x1f20, 0x1f27, 508, /* ἠ-ἧ Ἠ-Ἧ */ |
243 | 0x1f30, 0x1f37, 508, /* ἰ-ἷ Ἰ-Ἷ */ |
244 | 0x1f40, 0x1f45, 508, /* ὀ-ὅ Ὀ-Ὅ */ |
245 | 0x1f60, 0x1f67, 508, /* ὠ-ὧ Ὠ-Ὧ */ |
246 | 0x1f70, 0x1f71, 574, /* ὰ-ά Ὰ-Ά */ |
247 | 0x1f72, 0x1f75, 586, /* ὲ-ή Ὲ-Ή */ |
248 | 0x1f76, 0x1f77, 600, /* ὶ-ί Ὶ-Ί */ |
249 | 0x1f78, 0x1f79, 628, /* ὸ-ό Ὸ-Ό */ |
250 | 0x1f7a, 0x1f7b, 612, /* ὺ-ύ Ὺ-Ύ */ |
251 | 0x1f7c, 0x1f7d, 626, /* ὼ-ώ Ὼ-Ώ */ |
252 | 0x1f80, 0x1f87, 508, /* ᾀ-ᾇ ᾈ-ᾏ */ |
253 | 0x1f90, 0x1f97, 508, /* ᾐ-ᾗ ᾘ-ᾟ */ |
254 | 0x1fa0, 0x1fa7, 508, /* ᾠ-ᾧ ᾨ-ᾯ */ |
255 | 0x1fb0, 0x1fb1, 508, /* ᾰ-ᾱ Ᾰ-Ᾱ */ |
256 | 0x1fd0, 0x1fd1, 508, /* ῐ-ῑ Ῐ-Ῑ */ |
257 | 0x1fe0, 0x1fe1, 508, /* ῠ-ῡ Ῠ-Ῡ */ |
258 | 0x2170, 0x217f, 484, /* ⅰ-ⅿ Ⅰ-Ⅿ */ |
259 | 0x24d0, 0x24e9, 474, /* ⓐ-ⓩ Ⓐ-Ⓩ */ |
260 | 0xff41, 0xff5a, 468, /* a-z A-Z */ |
261 | }; |
262 | |
263 | /* |
264 | * lower case singlets |
265 | * 2nd col is conversion excess 500 |
266 | */ |
267 | static const Rune __toupper1[] = |
268 | { |
269 | 0x00ff, 621, /* ÿ Ÿ */ |
270 | 0x0101, 499, /* ā Ā */ |
271 | 0x0103, 499, /* ă Ă */ |
272 | 0x0105, 499, /* ą Ą */ |
273 | 0x0107, 499, /* ć Ć */ |
274 | 0x0109, 499, /* ĉ Ĉ */ |
275 | 0x010b, 499, /* ċ Ċ */ |
276 | 0x010d, 499, /* č Č */ |
277 | 0x010f, 499, /* ď Ď */ |
278 | 0x0111, 499, /* đ Đ */ |
279 | 0x0113, 499, /* ē Ē */ |
280 | 0x0115, 499, /* ĕ Ĕ */ |
281 | 0x0117, 499, /* ė Ė */ |
282 | 0x0119, 499, /* ę Ę */ |
283 | 0x011b, 499, /* ě Ě */ |
284 | 0x011d, 499, /* ĝ Ĝ */ |
285 | 0x011f, 499, /* ğ Ğ */ |
286 | 0x0121, 499, /* ġ Ġ */ |
287 | 0x0123, 499, /* ģ Ģ */ |
288 | 0x0125, 499, /* ĥ Ĥ */ |
289 | 0x0127, 499, /* ħ Ħ */ |
290 | 0x0129, 499, /* ĩ Ĩ */ |
291 | 0x012b, 499, /* ī Ī */ |
292 | 0x012d, 499, /* ĭ Ĭ */ |
293 | 0x012f, 499, /* į Į */ |
294 | 0x0131, 268, /* ı I */ |
295 | 0x0133, 499, /* ij IJ */ |
296 | 0x0135, 499, /* ĵ Ĵ */ |
297 | 0x0137, 499, /* ķ Ķ */ |
298 | 0x013a, 499, /* ĺ Ĺ */ |
299 | 0x013c, 499, /* ļ Ļ */ |
300 | 0x013e, 499, /* ľ Ľ */ |
301 | 0x0140, 499, /* ŀ Ŀ */ |
302 | 0x0142, 499, /* ł Ł */ |
303 | 0x0144, 499, /* ń Ń */ |
304 | 0x0146, 499, /* ņ Ņ */ |
305 | 0x0148, 499, /* ň Ň */ |
306 | 0x014b, 499, /* ŋ Ŋ */ |
307 | 0x014d, 499, /* ō Ō */ |
308 | 0x014f, 499, /* ŏ Ŏ */ |
309 | 0x0151, 499, /* ő Ő */ |
310 | 0x0153, 499, /* œ Œ */ |
311 | 0x0155, 499, /* ŕ Ŕ */ |
312 | 0x0157, 499, /* ŗ Ŗ */ |
313 | 0x0159, 499, /* ř Ř */ |
314 | 0x015b, 499, /* ś Ś */ |
315 | 0x015d, 499, /* ŝ Ŝ */ |
316 | 0x015f, 499, /* ş Ş */ |
317 | 0x0161, 499, /* š Š */ |
318 | 0x0163, 499, /* ţ Ţ */ |
319 | 0x0165, 499, /* ť Ť */ |
320 | 0x0167, 499, /* ŧ Ŧ */ |
321 | 0x0169, 499, /* ũ Ũ */ |
322 | 0x016b, 499, /* ū Ū */ |
323 | 0x016d, 499, /* ŭ Ŭ */ |
324 | 0x016f, 499, /* ů Ů */ |
325 | 0x0171, 499, /* ű Ű */ |
326 | 0x0173, 499, /* ų Ų */ |
327 | 0x0175, 499, /* ŵ Ŵ */ |
328 | 0x0177, 499, /* ŷ Ŷ */ |
329 | 0x017a, 499, /* ź Ź */ |
330 | 0x017c, 499, /* ż Ż */ |
331 | 0x017e, 499, /* ž Ž */ |
332 | 0x017f, 200, /* ſ S */ |
333 | 0x0183, 499, /* ƃ Ƃ */ |
334 | 0x0185, 499, /* ƅ Ƅ */ |
335 | 0x0188, 499, /* ƈ Ƈ */ |
336 | 0x018c, 499, /* ƌ Ƌ */ |
337 | 0x0192, 499, /* ƒ Ƒ */ |
338 | 0x0199, 499, /* ƙ Ƙ */ |
339 | 0x01a1, 499, /* ơ Ơ */ |
340 | 0x01a3, 499, /* ƣ Ƣ */ |
341 | 0x01a5, 499, /* ƥ Ƥ */ |
342 | 0x01a8, 499, /* ƨ Ƨ */ |
343 | 0x01ad, 499, /* ƭ Ƭ */ |
344 | 0x01b0, 499, /* ư Ư */ |
345 | 0x01b4, 499, /* ƴ Ƴ */ |
346 | 0x01b6, 499, /* ƶ Ƶ */ |
347 | 0x01b9, 499, /* ƹ Ƹ */ |
348 | 0x01bd, 499, /* ƽ Ƽ */ |
349 | 0x01c5, 499, /* Dž DŽ */ |
350 | 0x01c6, 498, /* dž DŽ */ |
351 | 0x01c8, 499, /* Lj LJ */ |
352 | 0x01c9, 498, /* lj LJ */ |
353 | 0x01cb, 499, /* Nj NJ */ |
354 | 0x01cc, 498, /* nj NJ */ |
355 | 0x01ce, 499, /* ǎ Ǎ */ |
356 | 0x01d0, 499, /* ǐ Ǐ */ |
357 | 0x01d2, 499, /* ǒ Ǒ */ |
358 | 0x01d4, 499, /* ǔ Ǔ */ |
359 | 0x01d6, 499, /* ǖ Ǖ */ |
360 | 0x01d8, 499, /* ǘ Ǘ */ |
361 | 0x01da, 499, /* ǚ Ǚ */ |
362 | 0x01dc, 499, /* ǜ Ǜ */ |
363 | 0x01df, 499, /* ǟ Ǟ */ |
364 | 0x01e1, 499, /* ǡ Ǡ */ |
365 | 0x01e3, 499, /* ǣ Ǣ */ |
366 | 0x01e5, 499, /* ǥ Ǥ */ |
367 | 0x01e7, 499, /* ǧ Ǧ */ |
368 | 0x01e9, 499, /* ǩ Ǩ */ |
369 | 0x01eb, 499, /* ǫ Ǫ */ |
370 | 0x01ed, 499, /* ǭ Ǭ */ |
371 | 0x01ef, 499, /* ǯ Ǯ */ |
372 | 0x01f2, 499, /* Dz DZ */ |
373 | 0x01f3, 498, /* dz DZ */ |
374 | 0x01f5, 499, /* ǵ Ǵ */ |
375 | 0x01fb, 499, /* ǻ Ǻ */ |
376 | 0x01fd, 499, /* ǽ Ǽ */ |
377 | 0x01ff, 499, /* ǿ Ǿ */ |
378 | 0x0201, 499, /* ȁ Ȁ */ |
379 | 0x0203, 499, /* ȃ Ȃ */ |
380 | 0x0205, 499, /* ȅ Ȅ */ |
381 | 0x0207, 499, /* ȇ Ȇ */ |
382 | 0x0209, 499, /* ȉ Ȉ */ |
383 | 0x020b, 499, /* ȋ Ȋ */ |
384 | 0x020d, 499, /* ȍ Ȍ */ |
385 | 0x020f, 499, /* ȏ Ȏ */ |
386 | 0x0211, 499, /* ȑ Ȑ */ |
387 | 0x0213, 499, /* ȓ Ȓ */ |
388 | 0x0215, 499, /* ȕ Ȕ */ |
389 | 0x0217, 499, /* ȗ Ȗ */ |
390 | 0x0253, 290, /* ɓ Ɓ */ |
391 | 0x0254, 294, /* ɔ Ɔ */ |
392 | 0x025b, 297, /* ɛ Ɛ */ |
393 | 0x0260, 295, /* ɠ Ɠ */ |
394 | 0x0263, 293, /* ɣ Ɣ */ |
395 | 0x0268, 291, /* ɨ Ɨ */ |
396 | 0x0269, 289, /* ɩ Ɩ */ |
397 | 0x026f, 289, /* ɯ Ɯ */ |
398 | 0x0272, 287, /* ɲ Ɲ */ |
399 | 0x0283, 282, /* ʃ Ʃ */ |
400 | 0x0288, 282, /* ʈ Ʈ */ |
401 | 0x0292, 281, /* ʒ Ʒ */ |
402 | 0x03ac, 462, /* ά Ά */ |
403 | 0x03cc, 436, /* ό Ό */ |
404 | 0x03d0, 438, /* ϐ Β */ |
405 | 0x03d1, 443, /* ϑ Θ */ |
406 | 0x03d5, 453, /* ϕ Φ */ |
407 | 0x03d6, 446, /* ϖ Π */ |
408 | 0x03e3, 499, /* ϣ Ϣ */ |
409 | 0x03e5, 499, /* ϥ Ϥ */ |
410 | 0x03e7, 499, /* ϧ Ϧ */ |
411 | 0x03e9, 499, /* ϩ Ϩ */ |
412 | 0x03eb, 499, /* ϫ Ϫ */ |
413 | 0x03ed, 499, /* ϭ Ϭ */ |
414 | 0x03ef, 499, /* ϯ Ϯ */ |
415 | 0x03f0, 414, /* ϰ Κ */ |
416 | 0x03f1, 420, /* ϱ Ρ */ |
417 | 0x0461, 499, /* ѡ Ѡ */ |
418 | 0x0463, 499, /* ѣ Ѣ */ |
419 | 0x0465, 499, /* ѥ Ѥ */ |
420 | 0x0467, 499, /* ѧ Ѧ */ |
421 | 0x0469, 499, /* ѩ Ѩ */ |
422 | 0x046b, 499, /* ѫ Ѫ */ |
423 | 0x046d, 499, /* ѭ Ѭ */ |
424 | 0x046f, 499, /* ѯ Ѯ */ |
425 | 0x0471, 499, /* ѱ Ѱ */ |
426 | 0x0473, 499, /* ѳ Ѳ */ |
427 | 0x0475, 499, /* ѵ Ѵ */ |
428 | 0x0477, 499, /* ѷ Ѷ */ |
429 | 0x0479, 499, /* ѹ Ѹ */ |
430 | 0x047b, 499, /* ѻ Ѻ */ |
431 | 0x047d, 499, /* ѽ Ѽ */ |
432 | 0x047f, 499, /* ѿ Ѿ */ |
433 | 0x0481, 499, /* ҁ Ҁ */ |
434 | 0x0491, 499, /* ґ Ґ */ |
435 | 0x0493, 499, /* ғ Ғ */ |
436 | 0x0495, 499, /* ҕ Ҕ */ |
437 | 0x0497, 499, /* җ Җ */ |
438 | 0x0499, 499, /* ҙ Ҙ */ |
439 | 0x049b, 499, /* қ Қ */ |
440 | 0x049d, 499, /* ҝ Ҝ */ |
441 | 0x049f, 499, /* ҟ Ҟ */ |
442 | 0x04a1, 499, /* ҡ Ҡ */ |
443 | 0x04a3, 499, /* ң Ң */ |
444 | 0x04a5, 499, /* ҥ Ҥ */ |
445 | 0x04a7, 499, /* ҧ Ҧ */ |
446 | 0x04a9, 499, /* ҩ Ҩ */ |
447 | 0x04ab, 499, /* ҫ Ҫ */ |
448 | 0x04ad, 499, /* ҭ Ҭ */ |
449 | 0x04af, 499, /* ү Ү */ |
450 | 0x04b1, 499, /* ұ Ұ */ |
451 | 0x04b3, 499, /* ҳ Ҳ */ |
452 | 0x04b5, 499, /* ҵ Ҵ */ |
453 | 0x04b7, 499, /* ҷ Ҷ */ |
454 | 0x04b9, 499, /* ҹ Ҹ */ |
455 | 0x04bb, 499, /* һ Һ */ |
456 | 0x04bd, 499, /* ҽ Ҽ */ |
457 | 0x04bf, 499, /* ҿ Ҿ */ |
458 | 0x04c2, 499, /* ӂ Ӂ */ |
459 | 0x04c4, 499, /* ӄ Ӄ */ |
460 | 0x04c8, 499, /* ӈ Ӈ */ |
461 | 0x04cc, 499, /* ӌ Ӌ */ |
462 | 0x04d1, 499, /* ӑ Ӑ */ |
463 | 0x04d3, 499, /* ӓ Ӓ */ |
464 | 0x04d5, 499, /* ӕ Ӕ */ |
465 | 0x04d7, 499, /* ӗ Ӗ */ |
466 | 0x04d9, 499, /* ә Ә */ |
467 | 0x04db, 499, /* ӛ Ӛ */ |
468 | 0x04dd, 499, /* ӝ Ӝ */ |
469 | 0x04df, 499, /* ӟ Ӟ */ |
470 | 0x04e1, 499, /* ӡ Ӡ */ |
471 | 0x04e3, 499, /* ӣ Ӣ */ |
472 | 0x04e5, 499, /* ӥ Ӥ */ |
473 | 0x04e7, 499, /* ӧ Ӧ */ |
474 | 0x04e9, 499, /* ө Ө */ |
475 | 0x04eb, 499, /* ӫ Ӫ */ |
476 | 0x04ef, 499, /* ӯ Ӯ */ |
477 | 0x04f1, 499, /* ӱ Ӱ */ |
478 | 0x04f3, 499, /* ӳ Ӳ */ |
479 | 0x04f5, 499, /* ӵ Ӵ */ |
480 | 0x04f9, 499, /* ӹ Ӹ */ |
481 | 0x1e01, 499, /* ḁ Ḁ */ |
482 | 0x1e03, 499, /* ḃ Ḃ */ |
483 | 0x1e05, 499, /* ḅ Ḅ */ |
484 | 0x1e07, 499, /* ḇ Ḇ */ |
485 | 0x1e09, 499, /* ḉ Ḉ */ |
486 | 0x1e0b, 499, /* ḋ Ḋ */ |
487 | 0x1e0d, 499, /* ḍ Ḍ */ |
488 | 0x1e0f, 499, /* ḏ Ḏ */ |
489 | 0x1e11, 499, /* ḑ Ḑ */ |
490 | 0x1e13, 499, /* ḓ Ḓ */ |
491 | 0x1e15, 499, /* ḕ Ḕ */ |
492 | 0x1e17, 499, /* ḗ Ḗ */ |
493 | 0x1e19, 499, /* ḙ Ḙ */ |
494 | 0x1e1b, 499, /* ḛ Ḛ */ |
495 | 0x1e1d, 499, /* ḝ Ḝ */ |
496 | 0x1e1f, 499, /* ḟ Ḟ */ |
497 | 0x1e21, 499, /* ḡ Ḡ */ |
498 | 0x1e23, 499, /* ḣ Ḣ */ |
499 | 0x1e25, 499, /* ḥ Ḥ */ |
500 | 0x1e27, 499, /* ḧ Ḧ */ |
501 | 0x1e29, 499, /* ḩ Ḩ */ |
502 | 0x1e2b, 499, /* ḫ Ḫ */ |
503 | 0x1e2d, 499, /* ḭ Ḭ */ |
504 | 0x1e2f, 499, /* ḯ Ḯ */ |
505 | 0x1e31, 499, /* ḱ Ḱ */ |
506 | 0x1e33, 499, /* ḳ Ḳ */ |
507 | 0x1e35, 499, /* ḵ Ḵ */ |
508 | 0x1e37, 499, /* ḷ Ḷ */ |
509 | 0x1e39, 499, /* ḹ Ḹ */ |
510 | 0x1e3b, 499, /* ḻ Ḻ */ |
511 | 0x1e3d, 499, /* ḽ Ḽ */ |
512 | 0x1e3f, 499, /* ḿ Ḿ */ |
513 | 0x1e41, 499, /* ṁ Ṁ */ |
514 | 0x1e43, 499, /* ṃ Ṃ */ |
515 | 0x1e45, 499, /* ṅ Ṅ */ |
516 | 0x1e47, 499, /* ṇ Ṇ */ |
517 | 0x1e49, 499, /* ṉ Ṉ */ |
518 | 0x1e4b, 499, /* ṋ Ṋ */ |
519 | 0x1e4d, 499, /* ṍ Ṍ */ |
520 | 0x1e4f, 499, /* ṏ Ṏ */ |
521 | 0x1e51, 499, /* ṑ Ṑ */ |
522 | 0x1e53, 499, /* ṓ Ṓ */ |
523 | 0x1e55, 499, /* ṕ Ṕ */ |
524 | 0x1e57, 499, /* ṗ Ṗ */ |
525 | 0x1e59, 499, /* ṙ Ṙ */ |
526 | 0x1e5b, 499, /* ṛ Ṛ */ |
527 | 0x1e5d, 499, /* ṝ Ṝ */ |
528 | 0x1e5f, 499, /* ṟ Ṟ */ |
529 | 0x1e61, 499, /* ṡ Ṡ */ |
530 | 0x1e63, 499, /* ṣ Ṣ */ |
531 | 0x1e65, 499, /* ṥ Ṥ */ |
532 | 0x1e67, 499, /* ṧ Ṧ */ |
533 | 0x1e69, 499, /* ṩ Ṩ */ |
534 | 0x1e6b, 499, /* ṫ Ṫ */ |
535 | 0x1e6d, 499, /* ṭ Ṭ */ |
536 | 0x1e6f, 499, /* ṯ Ṯ */ |
537 | 0x1e71, 499, /* ṱ Ṱ */ |
538 | 0x1e73, 499, /* ṳ Ṳ */ |
539 | 0x1e75, 499, /* ṵ Ṵ */ |
540 | 0x1e77, 499, /* ṷ Ṷ */ |
541 | 0x1e79, 499, /* ṹ Ṹ */ |
542 | 0x1e7b, 499, /* ṻ Ṻ */ |
543 | 0x1e7d, 499, /* ṽ Ṽ */ |
544 | 0x1e7f, 499, /* ṿ Ṿ */ |
545 | 0x1e81, 499, /* ẁ Ẁ */ |
546 | 0x1e83, 499, /* ẃ Ẃ */ |
547 | 0x1e85, 499, /* ẅ Ẅ */ |
548 | 0x1e87, 499, /* ẇ Ẇ */ |
549 | 0x1e89, 499, /* ẉ Ẉ */ |
550 | 0x1e8b, 499, /* ẋ Ẋ */ |
551 | 0x1e8d, 499, /* ẍ Ẍ */ |
552 | 0x1e8f, 499, /* ẏ Ẏ */ |
553 | 0x1e91, 499, /* ẑ Ẑ */ |
554 | 0x1e93, 499, /* ẓ Ẓ */ |
555 | 0x1e95, 499, /* ẕ Ẕ */ |
556 | 0x1ea1, 499, /* ạ Ạ */ |
557 | 0x1ea3, 499, /* ả Ả */ |
558 | 0x1ea5, 499, /* ấ Ấ */ |
559 | 0x1ea7, 499, /* ầ Ầ */ |
560 | 0x1ea9, 499, /* ẩ Ẩ */ |
561 | 0x1eab, 499, /* ẫ Ẫ */ |
562 | 0x1ead, 499, /* ậ Ậ */ |
563 | 0x1eaf, 499, /* ắ Ắ */ |
564 | 0x1eb1, 499, /* ằ Ằ */ |
565 | 0x1eb3, 499, /* ẳ Ẳ */ |
566 | 0x1eb5, 499, /* ẵ Ẵ */ |
567 | 0x1eb7, 499, /* ặ Ặ */ |
568 | 0x1eb9, 499, /* ẹ Ẹ */ |
569 | 0x1ebb, 499, /* ẻ Ẻ */ |
570 | 0x1ebd, 499, /* ẽ Ẽ */ |
571 | 0x1ebf, 499, /* ế Ế */ |
572 | 0x1ec1, 499, /* ề Ề */ |
573 | 0x1ec3, 499, /* ể Ể */ |
574 | 0x1ec5, 499, /* ễ Ễ */ |
575 | 0x1ec7, 499, /* ệ Ệ */ |
576 | 0x1ec9, 499, /* ỉ Ỉ */ |
577 | 0x1ecb, 499, /* ị Ị */ |
578 | 0x1ecd, 499, /* ọ Ọ */ |
579 | 0x1ecf, 499, /* ỏ Ỏ */ |
580 | 0x1ed1, 499, /* ố Ố */ |
581 | 0x1ed3, 499, /* ồ Ồ */ |
582 | 0x1ed5, 499, /* ổ Ổ */ |
583 | 0x1ed7, 499, /* ỗ Ỗ */ |
584 | 0x1ed9, 499, /* ộ Ộ */ |
585 | 0x1edb, 499, /* ớ Ớ */ |
586 | 0x1edd, 499, /* ờ Ờ */ |
587 | 0x1edf, 499, /* ở Ở */ |
588 | 0x1ee1, 499, /* ỡ Ỡ */ |
589 | 0x1ee3, 499, /* ợ Ợ */ |
590 | 0x1ee5, 499, /* ụ Ụ */ |
591 | 0x1ee7, 499, /* ủ Ủ */ |
592 | 0x1ee9, 499, /* ứ Ứ */ |
593 | 0x1eeb, 499, /* ừ Ừ */ |
594 | 0x1eed, 499, /* ử Ử */ |
595 | 0x1eef, 499, /* ữ Ữ */ |
596 | 0x1ef1, 499, /* ự Ự */ |
597 | 0x1ef3, 499, /* ỳ Ỳ */ |
598 | 0x1ef5, 499, /* ỵ Ỵ */ |
599 | 0x1ef7, 499, /* ỷ Ỷ */ |
600 | 0x1ef9, 499, /* ỹ Ỹ */ |
601 | 0x1f51, 508, /* ὑ Ὑ */ |
602 | 0x1f53, 508, /* ὓ Ὓ */ |
603 | 0x1f55, 508, /* ὕ Ὕ */ |
604 | 0x1f57, 508, /* ὗ Ὗ */ |
605 | 0x1fb3, 509, /* ᾳ ᾼ */ |
606 | 0x1fc3, 509, /* ῃ ῌ */ |
607 | 0x1fe5, 507, /* ῥ Ῥ */ |
608 | 0x1ff3, 509, /* ῳ ῼ */ |
609 | }; |
610 | |
611 | /* |
612 | * upper case ranges |
613 | * 3rd col is conversion excess 500 |
614 | */ |
615 | static const Rune __tolower2[] = |
616 | { |
617 | 0x0041, 0x005a, 532, /* A-Z a-z */ |
618 | 0x00c0, 0x00d6, 532, /* À-Ö à-ö */ |
619 | 0x00d8, 0x00de, 532, /* Ø-Þ ø-þ */ |
620 | 0x0189, 0x018a, 705, /* Ɖ-Ɗ ɖ-ɗ */ |
621 | 0x018e, 0x018f, 702, /* Ǝ-Ə ɘ-ə */ |
622 | 0x01b1, 0x01b2, 717, /* Ʊ-Ʋ ʊ-ʋ */ |
623 | 0x0388, 0x038a, 537, /* Έ-Ί έ-ί */ |
624 | 0x038e, 0x038f, 563, /* Ύ-Ώ ύ-ώ */ |
625 | 0x0391, 0x03a1, 532, /* Α-Ρ α-ρ */ |
626 | 0x03a3, 0x03ab, 532, /* Σ-Ϋ σ-ϋ */ |
627 | 0x0401, 0x040c, 580, /* Ё-Ќ ё-ќ */ |
628 | 0x040e, 0x040f, 580, /* Ў-Џ ў-џ */ |
629 | 0x0410, 0x042f, 532, /* А-Я а-я */ |
630 | 0x0531, 0x0556, 548, /* Ա-Ֆ ա-ֆ */ |
631 | 0x10a0, 0x10c5, 548, /* Ⴀ-Ⴥ ა-ჵ */ |
632 | 0x1f08, 0x1f0f, 492, /* Ἀ-Ἇ ἀ-ἇ */ |
633 | 0x1f18, 0x1f1d, 492, /* Ἐ-Ἕ ἐ-ἕ */ |
634 | 0x1f28, 0x1f2f, 492, /* Ἠ-Ἧ ἠ-ἧ */ |
635 | 0x1f38, 0x1f3f, 492, /* Ἰ-Ἷ ἰ-ἷ */ |
636 | 0x1f48, 0x1f4d, 492, /* Ὀ-Ὅ ὀ-ὅ */ |
637 | 0x1f68, 0x1f6f, 492, /* Ὠ-Ὧ ὠ-ὧ */ |
638 | 0x1f88, 0x1f8f, 492, /* ᾈ-ᾏ ᾀ-ᾇ */ |
639 | 0x1f98, 0x1f9f, 492, /* ᾘ-ᾟ ᾐ-ᾗ */ |
640 | 0x1fa8, 0x1faf, 492, /* ᾨ-ᾯ ᾠ-ᾧ */ |
641 | 0x1fb8, 0x1fb9, 492, /* Ᾰ-Ᾱ ᾰ-ᾱ */ |
642 | 0x1fba, 0x1fbb, 426, /* Ὰ-Ά ὰ-ά */ |
643 | 0x1fc8, 0x1fcb, 414, /* Ὲ-Ή ὲ-ή */ |
644 | 0x1fd8, 0x1fd9, 492, /* Ῐ-Ῑ ῐ-ῑ */ |
645 | 0x1fda, 0x1fdb, 400, /* Ὶ-Ί ὶ-ί */ |
646 | 0x1fe8, 0x1fe9, 492, /* Ῠ-Ῡ ῠ-ῡ */ |
647 | 0x1fea, 0x1feb, 388, /* Ὺ-Ύ ὺ-ύ */ |
648 | 0x1ff8, 0x1ff9, 372, /* Ὸ-Ό ὸ-ό */ |
649 | 0x1ffa, 0x1ffb, 374, /* Ὼ-Ώ ὼ-ώ */ |
650 | 0x2160, 0x216f, 516, /* Ⅰ-Ⅿ ⅰ-ⅿ */ |
651 | 0x24b6, 0x24cf, 526, /* Ⓐ-Ⓩ ⓐ-ⓩ */ |
652 | 0xff21, 0xff3a, 532, /* A-Z a-z */ |
653 | }; |
654 | |
655 | /* |
656 | * upper case singlets |
657 | * 2nd col is conversion excess 500 |
658 | */ |
659 | static const Rune __tolower1[] = |
660 | { |
661 | 0x0100, 501, /* Ā ā */ |
662 | 0x0102, 501, /* Ă ă */ |
663 | 0x0104, 501, /* Ą ą */ |
664 | 0x0106, 501, /* Ć ć */ |
665 | 0x0108, 501, /* Ĉ ĉ */ |
666 | 0x010a, 501, /* Ċ ċ */ |
667 | 0x010c, 501, /* Č č */ |
668 | 0x010e, 501, /* Ď ď */ |
669 | 0x0110, 501, /* Đ đ */ |
670 | 0x0112, 501, /* Ē ē */ |
671 | 0x0114, 501, /* Ĕ ĕ */ |
672 | 0x0116, 501, /* Ė ė */ |
673 | 0x0118, 501, /* Ę ę */ |
674 | 0x011a, 501, /* Ě ě */ |
675 | 0x011c, 501, /* Ĝ ĝ */ |
676 | 0x011e, 501, /* Ğ ğ */ |
677 | 0x0120, 501, /* Ġ ġ */ |
678 | 0x0122, 501, /* Ģ ģ */ |
679 | 0x0124, 501, /* Ĥ ĥ */ |
680 | 0x0126, 501, /* Ħ ħ */ |
681 | 0x0128, 501, /* Ĩ ĩ */ |
682 | 0x012a, 501, /* Ī ī */ |
683 | 0x012c, 501, /* Ĭ ĭ */ |
684 | 0x012e, 501, /* Į į */ |
685 | 0x0130, 301, /* İ i */ |
686 | 0x0132, 501, /* IJ ij */ |
687 | 0x0134, 501, /* Ĵ ĵ */ |
688 | 0x0136, 501, /* Ķ ķ */ |
689 | 0x0139, 501, /* Ĺ ĺ */ |
690 | 0x013b, 501, /* Ļ ļ */ |
691 | 0x013d, 501, /* Ľ ľ */ |
692 | 0x013f, 501, /* Ŀ ŀ */ |
693 | 0x0141, 501, /* Ł ł */ |
694 | 0x0143, 501, /* Ń ń */ |
695 | 0x0145, 501, /* Ņ ņ */ |
696 | 0x0147, 501, /* Ň ň */ |
697 | 0x014a, 501, /* Ŋ ŋ */ |
698 | 0x014c, 501, /* Ō ō */ |
699 | 0x014e, 501, /* Ŏ ŏ */ |
700 | 0x0150, 501, /* Ő ő */ |
701 | 0x0152, 501, /* Œ œ */ |
702 | 0x0154, 501, /* Ŕ ŕ */ |
703 | 0x0156, 501, /* Ŗ ŗ */ |
704 | 0x0158, 501, /* Ř ř */ |
705 | 0x015a, 501, /* Ś ś */ |
706 | 0x015c, 501, /* Ŝ ŝ */ |
707 | 0x015e, 501, /* Ş ş */ |
708 | 0x0160, 501, /* Š š */ |
709 | 0x0162, 501, /* Ţ ţ */ |
710 | 0x0164, 501, /* Ť ť */ |
711 | 0x0166, 501, /* Ŧ ŧ */ |
712 | 0x0168, 501, /* Ũ ũ */ |
713 | 0x016a, 501, /* Ū ū */ |
714 | 0x016c, 501, /* Ŭ ŭ */ |
715 | 0x016e, 501, /* Ů ů */ |
716 | 0x0170, 501, /* Ű ű */ |
717 | 0x0172, 501, /* Ų ų */ |
718 | 0x0174, 501, /* Ŵ ŵ */ |
719 | 0x0176, 501, /* Ŷ ŷ */ |
720 | 0x0178, 379, /* Ÿ ÿ */ |
721 | 0x0179, 501, /* Ź ź */ |
722 | 0x017b, 501, /* Ż ż */ |
723 | 0x017d, 501, /* Ž ž */ |
724 | 0x0181, 710, /* Ɓ ɓ */ |
725 | 0x0182, 501, /* Ƃ ƃ */ |
726 | 0x0184, 501, /* Ƅ ƅ */ |
727 | 0x0186, 706, /* Ɔ ɔ */ |
728 | 0x0187, 501, /* Ƈ ƈ */ |
729 | 0x018b, 501, /* Ƌ ƌ */ |
730 | 0x0190, 703, /* Ɛ ɛ */ |
731 | 0x0191, 501, /* Ƒ ƒ */ |
732 | 0x0193, 705, /* Ɠ ɠ */ |
733 | 0x0194, 707, /* Ɣ ɣ */ |
734 | 0x0196, 711, /* Ɩ ɩ */ |
735 | 0x0197, 709, /* Ɨ ɨ */ |
736 | 0x0198, 501, /* Ƙ ƙ */ |
737 | 0x019c, 711, /* Ɯ ɯ */ |
738 | 0x019d, 713, /* Ɲ ɲ */ |
739 | 0x01a0, 501, /* Ơ ơ */ |
740 | 0x01a2, 501, /* Ƣ ƣ */ |
741 | 0x01a4, 501, /* Ƥ ƥ */ |
742 | 0x01a7, 501, /* Ƨ ƨ */ |
743 | 0x01a9, 718, /* Ʃ ʃ */ |
744 | 0x01ac, 501, /* Ƭ ƭ */ |
745 | 0x01ae, 718, /* Ʈ ʈ */ |
746 | 0x01af, 501, /* Ư ư */ |
747 | 0x01b3, 501, /* Ƴ ƴ */ |
748 | 0x01b5, 501, /* Ƶ ƶ */ |
749 | 0x01b7, 719, /* Ʒ ʒ */ |
750 | 0x01b8, 501, /* Ƹ ƹ */ |
751 | 0x01bc, 501, /* Ƽ ƽ */ |
752 | 0x01c4, 502, /* DŽ dž */ |
753 | 0x01c5, 501, /* Dž dž */ |
754 | 0x01c7, 502, /* LJ lj */ |
755 | 0x01c8, 501, /* Lj lj */ |
756 | 0x01ca, 502, /* NJ nj */ |
757 | 0x01cb, 501, /* Nj nj */ |
758 | 0x01cd, 501, /* Ǎ ǎ */ |
759 | 0x01cf, 501, /* Ǐ ǐ */ |
760 | 0x01d1, 501, /* Ǒ ǒ */ |
761 | 0x01d3, 501, /* Ǔ ǔ */ |
762 | 0x01d5, 501, /* Ǖ ǖ */ |
763 | 0x01d7, 501, /* Ǘ ǘ */ |
764 | 0x01d9, 501, /* Ǚ ǚ */ |
765 | 0x01db, 501, /* Ǜ ǜ */ |
766 | 0x01de, 501, /* Ǟ ǟ */ |
767 | 0x01e0, 501, /* Ǡ ǡ */ |
768 | 0x01e2, 501, /* Ǣ ǣ */ |
769 | 0x01e4, 501, /* Ǥ ǥ */ |
770 | 0x01e6, 501, /* Ǧ ǧ */ |
771 | 0x01e8, 501, /* Ǩ ǩ */ |
772 | 0x01ea, 501, /* Ǫ ǫ */ |
773 | 0x01ec, 501, /* Ǭ ǭ */ |
774 | 0x01ee, 501, /* Ǯ ǯ */ |
775 | 0x01f1, 502, /* DZ dz */ |
776 | 0x01f2, 501, /* Dz dz */ |
777 | 0x01f4, 501, /* Ǵ ǵ */ |
778 | 0x01fa, 501, /* Ǻ ǻ */ |
779 | 0x01fc, 501, /* Ǽ ǽ */ |
780 | 0x01fe, 501, /* Ǿ ǿ */ |
781 | 0x0200, 501, /* Ȁ ȁ */ |
782 | 0x0202, 501, /* Ȃ ȃ */ |
783 | 0x0204, 501, /* Ȅ ȅ */ |
784 | 0x0206, 501, /* Ȇ ȇ */ |
785 | 0x0208, 501, /* Ȉ ȉ */ |
786 | 0x020a, 501, /* Ȋ ȋ */ |
787 | 0x020c, 501, /* Ȍ ȍ */ |
788 | 0x020e, 501, /* Ȏ ȏ */ |
789 | 0x0210, 501, /* Ȑ ȑ */ |
790 | 0x0212, 501, /* Ȓ ȓ */ |
791 | 0x0214, 501, /* Ȕ ȕ */ |
792 | 0x0216, 501, /* Ȗ ȗ */ |
793 | 0x0386, 538, /* Ά ά */ |
794 | 0x038c, 564, /* Ό ό */ |
795 | 0x03e2, 501, /* Ϣ ϣ */ |
796 | 0x03e4, 501, /* Ϥ ϥ */ |
797 | 0x03e6, 501, /* Ϧ ϧ */ |
798 | 0x03e8, 501, /* Ϩ ϩ */ |
799 | 0x03ea, 501, /* Ϫ ϫ */ |
800 | 0x03ec, 501, /* Ϭ ϭ */ |
801 | 0x03ee, 501, /* Ϯ ϯ */ |
802 | 0x0460, 501, /* Ѡ ѡ */ |
803 | 0x0462, 501, /* Ѣ ѣ */ |
804 | 0x0464, 501, /* Ѥ ѥ */ |
805 | 0x0466, 501, /* Ѧ ѧ */ |
806 | 0x0468, 501, /* Ѩ ѩ */ |
807 | 0x046a, 501, /* Ѫ ѫ */ |
808 | 0x046c, 501, /* Ѭ ѭ */ |
809 | 0x046e, 501, /* Ѯ ѯ */ |
810 | 0x0470, 501, /* Ѱ ѱ */ |
811 | 0x0472, 501, /* Ѳ ѳ */ |
812 | 0x0474, 501, /* Ѵ ѵ */ |
813 | 0x0476, 501, /* Ѷ ѷ */ |
814 | 0x0478, 501, /* Ѹ ѹ */ |
815 | 0x047a, 501, /* Ѻ ѻ */ |
816 | 0x047c, 501, /* Ѽ ѽ */ |
817 | 0x047e, 501, /* Ѿ ѿ */ |
818 | 0x0480, 501, /* Ҁ ҁ */ |
819 | 0x0490, 501, /* Ґ ґ */ |
820 | 0x0492, 501, /* Ғ ғ */ |
821 | 0x0494, 501, /* Ҕ ҕ */ |
822 | 0x0496, 501, /* Җ җ */ |
823 | 0x0498, 501, /* Ҙ ҙ */ |
824 | 0x049a, 501, /* Қ қ */ |
825 | 0x049c, 501, /* Ҝ ҝ */ |
826 | 0x049e, 501, /* Ҟ ҟ */ |
827 | 0x04a0, 501, /* Ҡ ҡ */ |
828 | 0x04a2, 501, /* Ң ң */ |
829 | 0x04a4, 501, /* Ҥ ҥ */ |
830 | 0x04a6, 501, /* Ҧ ҧ */ |
831 | 0x04a8, 501, /* Ҩ ҩ */ |
832 | 0x04aa, 501, /* Ҫ ҫ */ |
833 | 0x04ac, 501, /* Ҭ ҭ */ |
834 | 0x04ae, 501, /* Ү ү */ |
835 | 0x04b0, 501, /* Ұ ұ */ |
836 | 0x04b2, 501, /* Ҳ ҳ */ |
837 | 0x04b4, 501, /* Ҵ ҵ */ |
838 | 0x04b6, 501, /* Ҷ ҷ */ |
839 | 0x04b8, 501, /* Ҹ ҹ */ |
840 | 0x04ba, 501, /* Һ һ */ |
841 | 0x04bc, 501, /* Ҽ ҽ */ |
842 | 0x04be, 501, /* Ҿ ҿ */ |
843 | 0x04c1, 501, /* Ӂ ӂ */ |
844 | 0x04c3, 501, /* Ӄ ӄ */ |
845 | 0x04c7, 501, /* Ӈ ӈ */ |
846 | 0x04cb, 501, /* Ӌ ӌ */ |
847 | 0x04d0, 501, /* Ӑ ӑ */ |
848 | 0x04d2, 501, /* Ӓ ӓ */ |
849 | 0x04d4, 501, /* Ӕ ӕ */ |
850 | 0x04d6, 501, /* Ӗ ӗ */ |
851 | 0x04d8, 501, /* Ә ә */ |
852 | 0x04da, 501, /* Ӛ ӛ */ |
853 | 0x04dc, 501, /* Ӝ ӝ */ |
854 | 0x04de, 501, /* Ӟ ӟ */ |
855 | 0x04e0, 501, /* Ӡ ӡ */ |
856 | 0x04e2, 501, /* Ӣ ӣ */ |
857 | 0x04e4, 501, /* Ӥ ӥ */ |
858 | 0x04e6, 501, /* Ӧ ӧ */ |
859 | 0x04e8, 501, /* Ө ө */ |
860 | 0x04ea, 501, /* Ӫ ӫ */ |
861 | 0x04ee, 501, /* Ӯ ӯ */ |
862 | 0x04f0, 501, /* Ӱ ӱ */ |
863 | 0x04f2, 501, /* Ӳ ӳ */ |
864 | 0x04f4, 501, /* Ӵ ӵ */ |
865 | 0x04f8, 501, /* Ӹ ӹ */ |
866 | 0x1e00, 501, /* Ḁ ḁ */ |
867 | 0x1e02, 501, /* Ḃ ḃ */ |
868 | 0x1e04, 501, /* Ḅ ḅ */ |
869 | 0x1e06, 501, /* Ḇ ḇ */ |
870 | 0x1e08, 501, /* Ḉ ḉ */ |
871 | 0x1e0a, 501, /* Ḋ ḋ */ |
872 | 0x1e0c, 501, /* Ḍ ḍ */ |
873 | 0x1e0e, 501, /* Ḏ ḏ */ |
874 | 0x1e10, 501, /* Ḑ ḑ */ |
875 | 0x1e12, 501, /* Ḓ ḓ */ |
876 | 0x1e14, 501, /* Ḕ ḕ */ |
877 | 0x1e16, 501, /* Ḗ ḗ */ |
878 | 0x1e18, 501, /* Ḙ ḙ */ |
879 | 0x1e1a, 501, /* Ḛ ḛ */ |
880 | 0x1e1c, 501, /* Ḝ ḝ */ |
881 | 0x1e1e, 501, /* Ḟ ḟ */ |
882 | 0x1e20, 501, /* Ḡ ḡ */ |
883 | 0x1e22, 501, /* Ḣ ḣ */ |
884 | 0x1e24, 501, /* Ḥ ḥ */ |
885 | 0x1e26, 501, /* Ḧ ḧ */ |
886 | 0x1e28, 501, /* Ḩ ḩ */ |
887 | 0x1e2a, 501, /* Ḫ ḫ */ |
888 | 0x1e2c, 501, /* Ḭ ḭ */ |
889 | 0x1e2e, 501, /* Ḯ ḯ */ |
890 | 0x1e30, 501, /* Ḱ ḱ */ |
891 | 0x1e32, 501, /* Ḳ ḳ */ |
892 | 0x1e34, 501, /* Ḵ ḵ */ |
893 | 0x1e36, 501, /* Ḷ ḷ */ |
894 | 0x1e38, 501, /* Ḹ ḹ */ |
895 | 0x1e3a, 501, /* Ḻ ḻ */ |
896 | 0x1e3c, 501, /* Ḽ ḽ */ |
897 | 0x1e3e, 501, /* Ḿ ḿ */ |
898 | 0x1e40, 501, /* Ṁ ṁ */ |
899 | 0x1e42, 501, /* Ṃ ṃ */ |
900 | 0x1e44, 501, /* Ṅ ṅ */ |
901 | 0x1e46, 501, /* Ṇ ṇ */ |
902 | 0x1e48, 501, /* Ṉ ṉ */ |
903 | 0x1e4a, 501, /* Ṋ ṋ */ |
904 | 0x1e4c, 501, /* Ṍ ṍ */ |
905 | 0x1e4e, 501, /* Ṏ ṏ */ |
906 | 0x1e50, 501, /* Ṑ ṑ */ |
907 | 0x1e52, 501, /* Ṓ ṓ */ |
908 | 0x1e54, 501, /* Ṕ ṕ */ |
909 | 0x1e56, 501, /* Ṗ ṗ */ |
910 | 0x1e58, 501, /* Ṙ ṙ */ |
911 | 0x1e5a, 501, /* Ṛ ṛ */ |
912 | 0x1e5c, 501, /* Ṝ ṝ */ |
913 | 0x1e5e, 501, /* Ṟ ṟ */ |
914 | 0x1e60, 501, /* Ṡ ṡ */ |
915 | 0x1e62, 501, /* Ṣ ṣ */ |
916 | 0x1e64, 501, /* Ṥ ṥ */ |
917 | 0x1e66, 501, /* Ṧ ṧ */ |
918 | 0x1e68, 501, /* Ṩ ṩ */ |
919 | 0x1e6a, 501, /* Ṫ ṫ */ |
920 | 0x1e6c, 501, /* Ṭ ṭ */ |
921 | 0x1e6e, 501, /* Ṯ ṯ */ |
922 | 0x1e70, 501, /* Ṱ ṱ */ |
923 | 0x1e72, 501, /* Ṳ ṳ */ |
924 | 0x1e74, 501, /* Ṵ ṵ */ |
925 | 0x1e76, 501, /* Ṷ ṷ */ |
926 | 0x1e78, 501, /* Ṹ ṹ */ |
927 | 0x1e7a, 501, /* Ṻ ṻ */ |
928 | 0x1e7c, 501, /* Ṽ ṽ */ |
929 | 0x1e7e, 501, /* Ṿ ṿ */ |
930 | 0x1e80, 501, /* Ẁ ẁ */ |
931 | 0x1e82, 501, /* Ẃ ẃ */ |
932 | 0x1e84, 501, /* Ẅ ẅ */ |
933 | 0x1e86, 501, /* Ẇ ẇ */ |
934 | 0x1e88, 501, /* Ẉ ẉ */ |
935 | 0x1e8a, 501, /* Ẋ ẋ */ |
936 | 0x1e8c, 501, /* Ẍ ẍ */ |
937 | 0x1e8e, 501, /* Ẏ ẏ */ |
938 | 0x1e90, 501, /* Ẑ ẑ */ |
939 | 0x1e92, 501, /* Ẓ ẓ */ |
940 | 0x1e94, 501, /* Ẕ ẕ */ |
941 | 0x1ea0, 501, /* Ạ ạ */ |
942 | 0x1ea2, 501, /* Ả ả */ |
943 | 0x1ea4, 501, /* Ấ ấ */ |
944 | 0x1ea6, 501, /* Ầ ầ */ |
945 | 0x1ea8, 501, /* Ẩ ẩ */ |
946 | 0x1eaa, 501, /* Ẫ ẫ */ |
947 | 0x1eac, 501, /* Ậ ậ */ |
948 | 0x1eae, 501, /* Ắ ắ */ |
949 | 0x1eb0, 501, /* Ằ ằ */ |
950 | 0x1eb2, 501, /* Ẳ ẳ */ |
951 | 0x1eb4, 501, /* Ẵ ẵ */ |
952 | 0x1eb6, 501, /* Ặ ặ */ |
953 | 0x1eb8, 501, /* Ẹ ẹ */ |
954 | 0x1eba, 501, /* Ẻ ẻ */ |
955 | 0x1ebc, 501, /* Ẽ ẽ */ |
956 | 0x1ebe, 501, /* Ế ế */ |
957 | 0x1ec0, 501, /* Ề ề */ |
958 | 0x1ec2, 501, /* Ể ể */ |
959 | 0x1ec4, 501, /* Ễ ễ */ |
960 | 0x1ec6, 501, /* Ệ ệ */ |
961 | 0x1ec8, 501, /* Ỉ ỉ */ |
962 | 0x1eca, 501, /* Ị ị */ |
963 | 0x1ecc, 501, /* Ọ ọ */ |
964 | 0x1ece, 501, /* Ỏ ỏ */ |
965 | 0x1ed0, 501, /* Ố ố */ |
966 | 0x1ed2, 501, /* Ồ ồ */ |
967 | 0x1ed4, 501, /* Ổ ổ */ |
968 | 0x1ed6, 501, /* Ỗ ỗ */ |
969 | 0x1ed8, 501, /* Ộ ộ */ |
970 | 0x1eda, 501, /* Ớ ớ */ |
971 | 0x1edc, 501, /* Ờ ờ */ |
972 | 0x1ede, 501, /* Ở ở */ |
973 | 0x1ee0, 501, /* Ỡ ỡ */ |
974 | 0x1ee2, 501, /* Ợ ợ */ |
975 | 0x1ee4, 501, /* Ụ ụ */ |
976 | 0x1ee6, 501, /* Ủ ủ */ |
977 | 0x1ee8, 501, /* Ứ ứ */ |
978 | 0x1eea, 501, /* Ừ ừ */ |
979 | 0x1eec, 501, /* Ử ử */ |
980 | 0x1eee, 501, /* Ữ ữ */ |
981 | 0x1ef0, 501, /* Ự ự */ |
982 | 0x1ef2, 501, /* Ỳ ỳ */ |
983 | 0x1ef4, 501, /* Ỵ ỵ */ |
984 | 0x1ef6, 501, /* Ỷ ỷ */ |
985 | 0x1ef8, 501, /* Ỹ ỹ */ |
986 | 0x1f59, 492, /* Ὑ ὑ */ |
987 | 0x1f5b, 492, /* Ὓ ὓ */ |
988 | 0x1f5d, 492, /* Ὕ ὕ */ |
989 | 0x1f5f, 492, /* Ὗ ὗ */ |
990 | 0x1fbc, 491, /* ᾼ ᾳ */ |
991 | 0x1fcc, 491, /* ῌ ῃ */ |
992 | 0x1fec, 493, /* Ῥ ῥ */ |
993 | 0x1ffc, 491, /* ῼ ῳ */ |
994 | }; |
995 | |
996 | /* |
997 | * title characters are those between |
998 | * upper and lower case. ie DZ Dz dz |
999 | */ |
1000 | static const Rune __totitle1[] = |
1001 | { |
1002 | 0x01c4, 501, /* DŽ Dž */ |
1003 | 0x01c6, 499, /* dž Dž */ |
1004 | 0x01c7, 501, /* LJ Lj */ |
1005 | 0x01c9, 499, /* lj Lj */ |
1006 | 0x01ca, 501, /* NJ Nj */ |
1007 | 0x01cc, 499, /* nj Nj */ |
1008 | 0x01f1, 501, /* DZ Dz */ |
1009 | 0x01f3, 499, /* dz Dz */ |
1010 | }; |
1011 | |
1012 | static const Rune * |
1013 | bsearch(Rune c, const Rune *t, int n, int ne) |
1014 | { |
1015 | const Rune *p; |
1016 | int m; |
1017 | |
1018 | while(n > 1) { |
1019 | m = n/2; |
1020 | p = t + m*ne; |
1021 | if(c >= p[0]) { |
1022 | t = p; |
1023 | n = n-m; |
1024 | } else |
1025 | n = m; |
1026 | } |
1027 | if(n && c >= t[0]) |
1028 | return t; |
1029 | return 0; |
1030 | } |
1031 | |
1032 | Rune |
1033 | tolowerrune(Rune c) |
1034 | { |
1035 | const Rune *p; |
1036 | |
1037 | p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3); |
1038 | if(p && c >= p[0] && c <= p[1]) |
1039 | return c + p[2] - 500; |
1040 | p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2); |
1041 | if(p && c == p[0]) |
1042 | return c + p[1] - 500; |
1043 | return c; |
1044 | } |
1045 | |
1046 | Rune |
1047 | toupperrune(Rune c) |
1048 | { |
1049 | const Rune *p; |
1050 | |
1051 | p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3); |
1052 | if(p && c >= p[0] && c <= p[1]) |
1053 | return c + p[2] - 500; |
1054 | p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2); |
1055 | if(p && c == p[0]) |
1056 | return c + p[1] - 500; |
1057 | return c; |
1058 | } |
1059 | |
1060 | Rune |
1061 | totitlerune(Rune c) |
1062 | { |
1063 | const Rune *p; |
1064 | |
1065 | p = bsearch(c, __totitle1, nelem(__totitle1)/2, 2); |
1066 | if(p && c == p[0]) |
1067 | return c + p[1] - 500; |
1068 | return c; |
1069 | } |
1070 | |
1071 | int |
1072 | islowerrune(Rune c) |
1073 | { |
1074 | const Rune *p; |
1075 | |
1076 | p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3); |
1077 | if(p && c >= p[0] && c <= p[1]) |
1078 | return 1; |
1079 | p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2); |
1080 | if(p && c == p[0]) |
1081 | return 1; |
1082 | return 0; |
1083 | } |
1084 | |
1085 | int |
1086 | isupperrune(Rune c) |
1087 | { |
1088 | const Rune *p; |
1089 | |
1090 | p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3); |
1091 | if(p && c >= p[0] && c <= p[1]) |
1092 | return 1; |
1093 | p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2); |
1094 | if(p && c == p[0]) |
1095 | return 1; |
1096 | return 0; |
1097 | } |
1098 | |
1099 | int |
1100 | isalpharune(Rune c) |
1101 | { |
1102 | const Rune *p; |
1103 | |
1104 | if(isupperrune(c) || islowerrune(c)) |
1105 | return 1; |
1106 | p = bsearch(c, __alpha2, nelem(__alpha2)/2, 2); |
1107 | if(p && c >= p[0] && c <= p[1]) |
1108 | return 1; |
1109 | p = bsearch(c, __alpha1, nelem(__alpha1), 1); |
1110 | if(p && c == p[0]) |
1111 | return 1; |
1112 | return 0; |
1113 | } |
1114 | |
1115 | int |
1116 | istitlerune(Rune c) |
1117 | { |
1118 | return isupperrune(c) && islowerrune(c); |
1119 | } |
1120 | |
1121 | int |
1122 | isspacerune(Rune c) |
1123 | { |
1124 | const Rune *p; |
1125 | |
1126 | p = bsearch(c, __space2, nelem(__space2)/2, 2); |
1127 | if(p && c >= p[0] && c <= p[1]) |
1128 | return 1; |
1129 | return 0; |
1130 | } |
1131 | |