Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Reorganize spellfix.c to make it easier to edit automatically (e.g. using a script). No changes to functionality. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
090a64faaac579c6ed1cddb02d14e708 |
User & Date: | dan 2018-01-24 18:28:39 |
Context
2018-01-24
| ||
20:42 | When unpacking a sorter record, do so from right to left instead of left to right, since by starting with the right-most column, the work done by OP_Column opcodes is reduced. check-in: 8055e4f4 user: drh tags: trunk | |
18:28 | Reorganize spellfix.c to make it easier to edit automatically (e.g. using a script). No changes to functionality. check-in: 090a64fa user: dan tags: trunk | |
16:04 | Rearrange fields of the BtCursor object so that it is smaller and requires less initialization, for a small performance improvement. check-in: 0ddf5292 user: drh tags: trunk | |
Changes
Changes to ext/misc/spellfix.c.
1196 1196 int sz; 1197 1197 utf8Read((const unsigned char *)&zIn[i], nIn-i, &sz); 1198 1198 i += sz; 1199 1199 } 1200 1200 return nChar; 1201 1201 } 1202 1202 1203 +typedef struct Transliteration Transliteration; 1204 +struct Transliteration { 1205 + unsigned short int cFrom; 1206 + unsigned char cTo0, cTo1, cTo2, cTo3; 1207 +}; 1208 + 1203 1209 /* 1204 1210 ** Table of translations from unicode characters into ASCII. 1205 1211 */ 1206 -static const struct { 1207 - unsigned short int cFrom; 1208 - unsigned char cTo0, cTo1; 1209 -} translit[] = { 1210 - { 0x00A0, 0x20, 0x00 }, /* to */ 1211 - { 0x00B5, 0x75, 0x00 }, /* µ to u */ 1212 - { 0x00C0, 0x41, 0x00 }, /* À to A */ 1213 - { 0x00C1, 0x41, 0x00 }, /* Á to A */ 1214 - { 0x00C2, 0x41, 0x00 }, /*  to A */ 1215 - { 0x00C3, 0x41, 0x00 }, /* à to A */ 1216 - { 0x00C4, 0x41, 0x65 }, /* Ä to Ae */ 1217 - { 0x00C5, 0x41, 0x61 }, /* Å to Aa */ 1218 - { 0x00C6, 0x41, 0x45 }, /* Æ to AE */ 1219 - { 0x00C7, 0x43, 0x00 }, /* Ç to C */ 1220 - { 0x00C8, 0x45, 0x00 }, /* È to E */ 1221 - { 0x00C9, 0x45, 0x00 }, /* É to E */ 1222 - { 0x00CA, 0x45, 0x00 }, /* Ê to E */ 1223 - { 0x00CB, 0x45, 0x00 }, /* Ë to E */ 1224 - { 0x00CC, 0x49, 0x00 }, /* Ì to I */ 1225 - { 0x00CD, 0x49, 0x00 }, /* Í to I */ 1226 - { 0x00CE, 0x49, 0x00 }, /* Î to I */ 1227 - { 0x00CF, 0x49, 0x00 }, /* Ï to I */ 1228 - { 0x00D0, 0x44, 0x00 }, /* Ð to D */ 1229 - { 0x00D1, 0x4E, 0x00 }, /* Ñ to N */ 1230 - { 0x00D2, 0x4F, 0x00 }, /* Ò to O */ 1231 - { 0x00D3, 0x4F, 0x00 }, /* Ó to O */ 1232 - { 0x00D4, 0x4F, 0x00 }, /* Ô to O */ 1233 - { 0x00D5, 0x4F, 0x00 }, /* Õ to O */ 1234 - { 0x00D6, 0x4F, 0x65 }, /* Ö to Oe */ 1235 - { 0x00D7, 0x78, 0x00 }, /* × to x */ 1236 - { 0x00D8, 0x4F, 0x00 }, /* Ø to O */ 1237 - { 0x00D9, 0x55, 0x00 }, /* Ù to U */ 1238 - { 0x00DA, 0x55, 0x00 }, /* Ú to U */ 1239 - { 0x00DB, 0x55, 0x00 }, /* Û to U */ 1240 - { 0x00DC, 0x55, 0x65 }, /* Ü to Ue */ 1241 - { 0x00DD, 0x59, 0x00 }, /* Ý to Y */ 1242 - { 0x00DE, 0x54, 0x68 }, /* Þ to Th */ 1243 - { 0x00DF, 0x73, 0x73 }, /* ß to ss */ 1244 - { 0x00E0, 0x61, 0x00 }, /* à to a */ 1245 - { 0x00E1, 0x61, 0x00 }, /* á to a */ 1246 - { 0x00E2, 0x61, 0x00 }, /* â to a */ 1247 - { 0x00E3, 0x61, 0x00 }, /* ã to a */ 1248 - { 0x00E4, 0x61, 0x65 }, /* ä to ae */ 1249 - { 0x00E5, 0x61, 0x61 }, /* å to aa */ 1250 - { 0x00E6, 0x61, 0x65 }, /* æ to ae */ 1251 - { 0x00E7, 0x63, 0x00 }, /* ç to c */ 1252 - { 0x00E8, 0x65, 0x00 }, /* è to e */ 1253 - { 0x00E9, 0x65, 0x00 }, /* é to e */ 1254 - { 0x00EA, 0x65, 0x00 }, /* ê to e */ 1255 - { 0x00EB, 0x65, 0x00 }, /* ë to e */ 1256 - { 0x00EC, 0x69, 0x00 }, /* ì to i */ 1257 - { 0x00ED, 0x69, 0x00 }, /* í to i */ 1258 - { 0x00EE, 0x69, 0x00 }, /* î to i */ 1259 - { 0x00EF, 0x69, 0x00 }, /* ï to i */ 1260 - { 0x00F0, 0x64, 0x00 }, /* ð to d */ 1261 - { 0x00F1, 0x6E, 0x00 }, /* ñ to n */ 1262 - { 0x00F2, 0x6F, 0x00 }, /* ò to o */ 1263 - { 0x00F3, 0x6F, 0x00 }, /* ó to o */ 1264 - { 0x00F4, 0x6F, 0x00 }, /* ô to o */ 1265 - { 0x00F5, 0x6F, 0x00 }, /* õ to o */ 1266 - { 0x00F6, 0x6F, 0x65 }, /* ö to oe */ 1267 - { 0x00F7, 0x3A, 0x00 }, /* ÷ to : */ 1268 - { 0x00F8, 0x6F, 0x00 }, /* ø to o */ 1269 - { 0x00F9, 0x75, 0x00 }, /* ù to u */ 1270 - { 0x00FA, 0x75, 0x00 }, /* ú to u */ 1271 - { 0x00FB, 0x75, 0x00 }, /* û to u */ 1272 - { 0x00FC, 0x75, 0x65 }, /* ü to ue */ 1273 - { 0x00FD, 0x79, 0x00 }, /* ý to y */ 1274 - { 0x00FE, 0x74, 0x68 }, /* þ to th */ 1275 - { 0x00FF, 0x79, 0x00 }, /* ÿ to y */ 1276 - { 0x0100, 0x41, 0x00 }, /* Ā to A */ 1277 - { 0x0101, 0x61, 0x00 }, /* ā to a */ 1278 - { 0x0102, 0x41, 0x00 }, /* Ă to A */ 1279 - { 0x0103, 0x61, 0x00 }, /* ă to a */ 1280 - { 0x0104, 0x41, 0x00 }, /* Ą to A */ 1281 - { 0x0105, 0x61, 0x00 }, /* ą to a */ 1282 - { 0x0106, 0x43, 0x00 }, /* Ć to C */ 1283 - { 0x0107, 0x63, 0x00 }, /* ć to c */ 1284 - { 0x0108, 0x43, 0x68 }, /* Ĉ to Ch */ 1285 - { 0x0109, 0x63, 0x68 }, /* ĉ to ch */ 1286 - { 0x010A, 0x43, 0x00 }, /* Ċ to C */ 1287 - { 0x010B, 0x63, 0x00 }, /* ċ to c */ 1288 - { 0x010C, 0x43, 0x00 }, /* Č to C */ 1289 - { 0x010D, 0x63, 0x00 }, /* č to c */ 1290 - { 0x010E, 0x44, 0x00 }, /* Ď to D */ 1291 - { 0x010F, 0x64, 0x00 }, /* ď to d */ 1292 - { 0x0110, 0x44, 0x00 }, /* Đ to D */ 1293 - { 0x0111, 0x64, 0x00 }, /* đ to d */ 1294 - { 0x0112, 0x45, 0x00 }, /* Ē to E */ 1295 - { 0x0113, 0x65, 0x00 }, /* ē to e */ 1296 - { 0x0114, 0x45, 0x00 }, /* Ĕ to E */ 1297 - { 0x0115, 0x65, 0x00 }, /* ĕ to e */ 1298 - { 0x0116, 0x45, 0x00 }, /* Ė to E */ 1299 - { 0x0117, 0x65, 0x00 }, /* ė to e */ 1300 - { 0x0118, 0x45, 0x00 }, /* Ę to E */ 1301 - { 0x0119, 0x65, 0x00 }, /* ę to e */ 1302 - { 0x011A, 0x45, 0x00 }, /* Ě to E */ 1303 - { 0x011B, 0x65, 0x00 }, /* ě to e */ 1304 - { 0x011C, 0x47, 0x68 }, /* Ĝ to Gh */ 1305 - { 0x011D, 0x67, 0x68 }, /* ĝ to gh */ 1306 - { 0x011E, 0x47, 0x00 }, /* Ğ to G */ 1307 - { 0x011F, 0x67, 0x00 }, /* ğ to g */ 1308 - { 0x0120, 0x47, 0x00 }, /* Ġ to G */ 1309 - { 0x0121, 0x67, 0x00 }, /* ġ to g */ 1310 - { 0x0122, 0x47, 0x00 }, /* Ģ to G */ 1311 - { 0x0123, 0x67, 0x00 }, /* ģ to g */ 1312 - { 0x0124, 0x48, 0x68 }, /* Ĥ to Hh */ 1313 - { 0x0125, 0x68, 0x68 }, /* ĥ to hh */ 1314 - { 0x0126, 0x48, 0x00 }, /* Ħ to H */ 1315 - { 0x0127, 0x68, 0x00 }, /* ħ to h */ 1316 - { 0x0128, 0x49, 0x00 }, /* Ĩ to I */ 1317 - { 0x0129, 0x69, 0x00 }, /* ĩ to i */ 1318 - { 0x012A, 0x49, 0x00 }, /* Ī to I */ 1319 - { 0x012B, 0x69, 0x00 }, /* ī to i */ 1320 - { 0x012C, 0x49, 0x00 }, /* Ĭ to I */ 1321 - { 0x012D, 0x69, 0x00 }, /* ĭ to i */ 1322 - { 0x012E, 0x49, 0x00 }, /* Į to I */ 1323 - { 0x012F, 0x69, 0x00 }, /* į to i */ 1324 - { 0x0130, 0x49, 0x00 }, /* İ to I */ 1325 - { 0x0131, 0x69, 0x00 }, /* ı to i */ 1326 - { 0x0132, 0x49, 0x4A }, /* IJ to IJ */ 1327 - { 0x0133, 0x69, 0x6A }, /* ij to ij */ 1328 - { 0x0134, 0x4A, 0x68 }, /* Ĵ to Jh */ 1329 - { 0x0135, 0x6A, 0x68 }, /* ĵ to jh */ 1330 - { 0x0136, 0x4B, 0x00 }, /* Ķ to K */ 1331 - { 0x0137, 0x6B, 0x00 }, /* ķ to k */ 1332 - { 0x0138, 0x6B, 0x00 }, /* ĸ to k */ 1333 - { 0x0139, 0x4C, 0x00 }, /* Ĺ to L */ 1334 - { 0x013A, 0x6C, 0x00 }, /* ĺ to l */ 1335 - { 0x013B, 0x4C, 0x00 }, /* Ļ to L */ 1336 - { 0x013C, 0x6C, 0x00 }, /* ļ to l */ 1337 - { 0x013D, 0x4C, 0x00 }, /* Ľ to L */ 1338 - { 0x013E, 0x6C, 0x00 }, /* ľ to l */ 1339 - { 0x013F, 0x4C, 0x2E }, /* Ŀ to L. */ 1340 - { 0x0140, 0x6C, 0x2E }, /* ŀ to l. */ 1341 - { 0x0141, 0x4C, 0x00 }, /* Ł to L */ 1342 - { 0x0142, 0x6C, 0x00 }, /* ł to l */ 1343 - { 0x0143, 0x4E, 0x00 }, /* Ń to N */ 1344 - { 0x0144, 0x6E, 0x00 }, /* ń to n */ 1345 - { 0x0145, 0x4E, 0x00 }, /* Ņ to N */ 1346 - { 0x0146, 0x6E, 0x00 }, /* ņ to n */ 1347 - { 0x0147, 0x4E, 0x00 }, /* Ň to N */ 1348 - { 0x0148, 0x6E, 0x00 }, /* ň to n */ 1349 - { 0x0149, 0x27, 0x6E }, /* ʼn to 'n */ 1350 - { 0x014A, 0x4E, 0x47 }, /* Ŋ to NG */ 1351 - { 0x014B, 0x6E, 0x67 }, /* ŋ to ng */ 1352 - { 0x014C, 0x4F, 0x00 }, /* Ō to O */ 1353 - { 0x014D, 0x6F, 0x00 }, /* ō to o */ 1354 - { 0x014E, 0x4F, 0x00 }, /* Ŏ to O */ 1355 - { 0x014F, 0x6F, 0x00 }, /* ŏ to o */ 1356 - { 0x0150, 0x4F, 0x00 }, /* Ő to O */ 1357 - { 0x0151, 0x6F, 0x00 }, /* ő to o */ 1358 - { 0x0152, 0x4F, 0x45 }, /* Œ to OE */ 1359 - { 0x0153, 0x6F, 0x65 }, /* œ to oe */ 1360 - { 0x0154, 0x52, 0x00 }, /* Ŕ to R */ 1361 - { 0x0155, 0x72, 0x00 }, /* ŕ to r */ 1362 - { 0x0156, 0x52, 0x00 }, /* Ŗ to R */ 1363 - { 0x0157, 0x72, 0x00 }, /* ŗ to r */ 1364 - { 0x0158, 0x52, 0x00 }, /* Ř to R */ 1365 - { 0x0159, 0x72, 0x00 }, /* ř to r */ 1366 - { 0x015A, 0x53, 0x00 }, /* Ś to S */ 1367 - { 0x015B, 0x73, 0x00 }, /* ś to s */ 1368 - { 0x015C, 0x53, 0x68 }, /* Ŝ to Sh */ 1369 - { 0x015D, 0x73, 0x68 }, /* ŝ to sh */ 1370 - { 0x015E, 0x53, 0x00 }, /* Ş to S */ 1371 - { 0x015F, 0x73, 0x00 }, /* ş to s */ 1372 - { 0x0160, 0x53, 0x00 }, /* Š to S */ 1373 - { 0x0161, 0x73, 0x00 }, /* š to s */ 1374 - { 0x0162, 0x54, 0x00 }, /* Ţ to T */ 1375 - { 0x0163, 0x74, 0x00 }, /* ţ to t */ 1376 - { 0x0164, 0x54, 0x00 }, /* Ť to T */ 1377 - { 0x0165, 0x74, 0x00 }, /* ť to t */ 1378 - { 0x0166, 0x54, 0x00 }, /* Ŧ to T */ 1379 - { 0x0167, 0x74, 0x00 }, /* ŧ to t */ 1380 - { 0x0168, 0x55, 0x00 }, /* Ũ to U */ 1381 - { 0x0169, 0x75, 0x00 }, /* ũ to u */ 1382 - { 0x016A, 0x55, 0x00 }, /* Ū to U */ 1383 - { 0x016B, 0x75, 0x00 }, /* ū to u */ 1384 - { 0x016C, 0x55, 0x00 }, /* Ŭ to U */ 1385 - { 0x016D, 0x75, 0x00 }, /* ŭ to u */ 1386 - { 0x016E, 0x55, 0x00 }, /* Ů to U */ 1387 - { 0x016F, 0x75, 0x00 }, /* ů to u */ 1388 - { 0x0170, 0x55, 0x00 }, /* Ű to U */ 1389 - { 0x0171, 0x75, 0x00 }, /* ű to u */ 1390 - { 0x0172, 0x55, 0x00 }, /* Ų to U */ 1391 - { 0x0173, 0x75, 0x00 }, /* ų to u */ 1392 - { 0x0174, 0x57, 0x00 }, /* Ŵ to W */ 1393 - { 0x0175, 0x77, 0x00 }, /* ŵ to w */ 1394 - { 0x0176, 0x59, 0x00 }, /* Ŷ to Y */ 1395 - { 0x0177, 0x79, 0x00 }, /* ŷ to y */ 1396 - { 0x0178, 0x59, 0x00 }, /* Ÿ to Y */ 1397 - { 0x0179, 0x5A, 0x00 }, /* Ź to Z */ 1398 - { 0x017A, 0x7A, 0x00 }, /* ź to z */ 1399 - { 0x017B, 0x5A, 0x00 }, /* Ż to Z */ 1400 - { 0x017C, 0x7A, 0x00 }, /* ż to z */ 1401 - { 0x017D, 0x5A, 0x00 }, /* Ž to Z */ 1402 - { 0x017E, 0x7A, 0x00 }, /* ž to z */ 1403 - { 0x017F, 0x73, 0x00 }, /* ſ to s */ 1404 - { 0x0192, 0x66, 0x00 }, /* ƒ to f */ 1405 - { 0x0218, 0x53, 0x00 }, /* Ș to S */ 1406 - { 0x0219, 0x73, 0x00 }, /* ș to s */ 1407 - { 0x021A, 0x54, 0x00 }, /* Ț to T */ 1408 - { 0x021B, 0x74, 0x00 }, /* ț to t */ 1409 - { 0x0386, 0x41, 0x00 }, /* Ά to A */ 1410 - { 0x0388, 0x45, 0x00 }, /* Έ to E */ 1411 - { 0x0389, 0x49, 0x00 }, /* Ή to I */ 1412 - { 0x038A, 0x49, 0x00 }, /* Ί to I */ 1413 - { 0x038C, 0x4f, 0x00 }, /* Ό to O */ 1414 - { 0x038E, 0x59, 0x00 }, /* Ύ to Y */ 1415 - { 0x038F, 0x4f, 0x00 }, /* Ώ to O */ 1416 - { 0x0390, 0x69, 0x00 }, /* ΐ to i */ 1417 - { 0x0391, 0x41, 0x00 }, /* Α to A */ 1418 - { 0x0392, 0x42, 0x00 }, /* Β to B */ 1419 - { 0x0393, 0x47, 0x00 }, /* Γ to G */ 1420 - { 0x0394, 0x44, 0x00 }, /* Δ to D */ 1421 - { 0x0395, 0x45, 0x00 }, /* Ε to E */ 1422 - { 0x0396, 0x5a, 0x00 }, /* Ζ to Z */ 1423 - { 0x0397, 0x49, 0x00 }, /* Η to I */ 1424 - { 0x0398, 0x54, 0x68 }, /* Θ to Th */ 1425 - { 0x0399, 0x49, 0x00 }, /* Ι to I */ 1426 - { 0x039A, 0x4b, 0x00 }, /* Κ to K */ 1427 - { 0x039B, 0x4c, 0x00 }, /* Λ to L */ 1428 - { 0x039C, 0x4d, 0x00 }, /* Μ to M */ 1429 - { 0x039D, 0x4e, 0x00 }, /* Ν to N */ 1430 - { 0x039E, 0x58, 0x00 }, /* Ξ to X */ 1431 - { 0x039F, 0x4f, 0x00 }, /* Ο to O */ 1432 - { 0x03A0, 0x50, 0x00 }, /* Π to P */ 1433 - { 0x03A1, 0x52, 0x00 }, /* Ρ to R */ 1434 - { 0x03A3, 0x53, 0x00 }, /* Σ to S */ 1435 - { 0x03A4, 0x54, 0x00 }, /* Τ to T */ 1436 - { 0x03A5, 0x59, 0x00 }, /* Υ to Y */ 1437 - { 0x03A6, 0x46, 0x00 }, /* Φ to F */ 1438 - { 0x03A7, 0x43, 0x68 }, /* Χ to Ch */ 1439 - { 0x03A8, 0x50, 0x73 }, /* Ψ to Ps */ 1440 - { 0x03A9, 0x4f, 0x00 }, /* Ω to O */ 1441 - { 0x03AA, 0x49, 0x00 }, /* Ϊ to I */ 1442 - { 0x03AB, 0x59, 0x00 }, /* Ϋ to Y */ 1443 - { 0x03AC, 0x61, 0x00 }, /* ά to a */ 1444 - { 0x03AD, 0x65, 0x00 }, /* έ to e */ 1445 - { 0x03AE, 0x69, 0x00 }, /* ή to i */ 1446 - { 0x03AF, 0x69, 0x00 }, /* ί to i */ 1447 - { 0x03B1, 0x61, 0x00 }, /* α to a */ 1448 - { 0x03B2, 0x62, 0x00 }, /* β to b */ 1449 - { 0x03B3, 0x67, 0x00 }, /* γ to g */ 1450 - { 0x03B4, 0x64, 0x00 }, /* δ to d */ 1451 - { 0x03B5, 0x65, 0x00 }, /* ε to e */ 1452 - { 0x03B6, 0x7a, 0x00 }, /* ζ to z */ 1453 - { 0x03B7, 0x69, 0x00 }, /* η to i */ 1454 - { 0x03B8, 0x74, 0x68 }, /* θ to th */ 1455 - { 0x03B9, 0x69, 0x00 }, /* ι to i */ 1456 - { 0x03BA, 0x6b, 0x00 }, /* κ to k */ 1457 - { 0x03BB, 0x6c, 0x00 }, /* λ to l */ 1458 - { 0x03BC, 0x6d, 0x00 }, /* μ to m */ 1459 - { 0x03BD, 0x6e, 0x00 }, /* ν to n */ 1460 - { 0x03BE, 0x78, 0x00 }, /* ξ to x */ 1461 - { 0x03BF, 0x6f, 0x00 }, /* ο to o */ 1462 - { 0x03C0, 0x70, 0x00 }, /* π to p */ 1463 - { 0x03C1, 0x72, 0x00 }, /* ρ to r */ 1464 - { 0x03C3, 0x73, 0x00 }, /* σ to s */ 1465 - { 0x03C4, 0x74, 0x00 }, /* τ to t */ 1466 - { 0x03C5, 0x79, 0x00 }, /* υ to y */ 1467 - { 0x03C6, 0x66, 0x00 }, /* φ to f */ 1468 - { 0x03C7, 0x63, 0x68 }, /* χ to ch */ 1469 - { 0x03C8, 0x70, 0x73 }, /* ψ to ps */ 1470 - { 0x03C9, 0x6f, 0x00 }, /* ω to o */ 1471 - { 0x03CA, 0x69, 0x00 }, /* ϊ to i */ 1472 - { 0x03CB, 0x79, 0x00 }, /* ϋ to y */ 1473 - { 0x03CC, 0x6f, 0x00 }, /* ό to o */ 1474 - { 0x03CD, 0x79, 0x00 }, /* ύ to y */ 1475 - { 0x03CE, 0x69, 0x00 }, /* ώ to i */ 1476 - { 0x0400, 0x45, 0x00 }, /* Ѐ to E */ 1477 - { 0x0401, 0x45, 0x00 }, /* Ё to E */ 1478 - { 0x0402, 0x44, 0x00 }, /* Ђ to D */ 1479 - { 0x0403, 0x47, 0x00 }, /* Ѓ to G */ 1480 - { 0x0404, 0x45, 0x00 }, /* Є to E */ 1481 - { 0x0405, 0x5a, 0x00 }, /* Ѕ to Z */ 1482 - { 0x0406, 0x49, 0x00 }, /* І to I */ 1483 - { 0x0407, 0x49, 0x00 }, /* Ї to I */ 1484 - { 0x0408, 0x4a, 0x00 }, /* Ј to J */ 1485 - { 0x0409, 0x49, 0x00 }, /* Љ to I */ 1486 - { 0x040A, 0x4e, 0x00 }, /* Њ to N */ 1487 - { 0x040B, 0x44, 0x00 }, /* Ћ to D */ 1488 - { 0x040C, 0x4b, 0x00 }, /* Ќ to K */ 1489 - { 0x040D, 0x49, 0x00 }, /* Ѝ to I */ 1490 - { 0x040E, 0x55, 0x00 }, /* Ў to U */ 1491 - { 0x040F, 0x44, 0x00 }, /* Џ to D */ 1492 - { 0x0410, 0x41, 0x00 }, /* А to A */ 1493 - { 0x0411, 0x42, 0x00 }, /* Б to B */ 1494 - { 0x0412, 0x56, 0x00 }, /* В to V */ 1495 - { 0x0413, 0x47, 0x00 }, /* Г to G */ 1496 - { 0x0414, 0x44, 0x00 }, /* Д to D */ 1497 - { 0x0415, 0x45, 0x00 }, /* Е to E */ 1498 - { 0x0416, 0x5a, 0x68 }, /* Ж to Zh */ 1499 - { 0x0417, 0x5a, 0x00 }, /* З to Z */ 1500 - { 0x0418, 0x49, 0x00 }, /* И to I */ 1501 - { 0x0419, 0x49, 0x00 }, /* Й to I */ 1502 - { 0x041A, 0x4b, 0x00 }, /* К to K */ 1503 - { 0x041B, 0x4c, 0x00 }, /* Л to L */ 1504 - { 0x041C, 0x4d, 0x00 }, /* М to M */ 1505 - { 0x041D, 0x4e, 0x00 }, /* Н to N */ 1506 - { 0x041E, 0x4f, 0x00 }, /* О to O */ 1507 - { 0x041F, 0x50, 0x00 }, /* П to P */ 1508 - { 0x0420, 0x52, 0x00 }, /* Р to R */ 1509 - { 0x0421, 0x53, 0x00 }, /* С to S */ 1510 - { 0x0422, 0x54, 0x00 }, /* Т to T */ 1511 - { 0x0423, 0x55, 0x00 }, /* У to U */ 1512 - { 0x0424, 0x46, 0x00 }, /* Ф to F */ 1513 - { 0x0425, 0x4b, 0x68 }, /* Х to Kh */ 1514 - { 0x0426, 0x54, 0x63 }, /* Ц to Tc */ 1515 - { 0x0427, 0x43, 0x68 }, /* Ч to Ch */ 1516 - { 0x0428, 0x53, 0x68 }, /* Ш to Sh */ 1517 - { 0x0429, 0x53, 0x68 }, /* Щ to Shch */ 1518 - { 0x042A, 0x61, 0x00 }, /* to A */ 1519 - { 0x042B, 0x59, 0x00 }, /* Ы to Y */ 1520 - { 0x042C, 0x59, 0x00 }, /* to Y */ 1521 - { 0x042D, 0x45, 0x00 }, /* Э to E */ 1522 - { 0x042E, 0x49, 0x75 }, /* Ю to Iu */ 1523 - { 0x042F, 0x49, 0x61 }, /* Я to Ia */ 1524 - { 0x0430, 0x61, 0x00 }, /* а to a */ 1525 - { 0x0431, 0x62, 0x00 }, /* б to b */ 1526 - { 0x0432, 0x76, 0x00 }, /* в to v */ 1527 - { 0x0433, 0x67, 0x00 }, /* г to g */ 1528 - { 0x0434, 0x64, 0x00 }, /* д to d */ 1529 - { 0x0435, 0x65, 0x00 }, /* е to e */ 1530 - { 0x0436, 0x7a, 0x68 }, /* ж to zh */ 1531 - { 0x0437, 0x7a, 0x00 }, /* з to z */ 1532 - { 0x0438, 0x69, 0x00 }, /* и to i */ 1533 - { 0x0439, 0x69, 0x00 }, /* й to i */ 1534 - { 0x043A, 0x6b, 0x00 }, /* к to k */ 1535 - { 0x043B, 0x6c, 0x00 }, /* л to l */ 1536 - { 0x043C, 0x6d, 0x00 }, /* м to m */ 1537 - { 0x043D, 0x6e, 0x00 }, /* н to n */ 1538 - { 0x043E, 0x6f, 0x00 }, /* о to o */ 1539 - { 0x043F, 0x70, 0x00 }, /* п to p */ 1540 - { 0x0440, 0x72, 0x00 }, /* р to r */ 1541 - { 0x0441, 0x73, 0x00 }, /* с to s */ 1542 - { 0x0442, 0x74, 0x00 }, /* т to t */ 1543 - { 0x0443, 0x75, 0x00 }, /* у to u */ 1544 - { 0x0444, 0x66, 0x00 }, /* ф to f */ 1545 - { 0x0445, 0x6b, 0x68 }, /* х to kh */ 1546 - { 0x0446, 0x74, 0x63 }, /* ц to tc */ 1547 - { 0x0447, 0x63, 0x68 }, /* ч to ch */ 1548 - { 0x0448, 0x73, 0x68 }, /* ш to sh */ 1549 - { 0x0449, 0x73, 0x68 }, /* щ to shch */ 1550 - { 0x044A, 0x61, 0x00 }, /* to a */ 1551 - { 0x044B, 0x79, 0x00 }, /* ы to y */ 1552 - { 0x044C, 0x79, 0x00 }, /* to y */ 1553 - { 0x044D, 0x65, 0x00 }, /* э to e */ 1554 - { 0x044E, 0x69, 0x75 }, /* ю to iu */ 1555 - { 0x044F, 0x69, 0x61 }, /* я to ia */ 1556 - { 0x0450, 0x65, 0x00 }, /* ѐ to e */ 1557 - { 0x0451, 0x65, 0x00 }, /* ё to e */ 1558 - { 0x0452, 0x64, 0x00 }, /* ђ to d */ 1559 - { 0x0453, 0x67, 0x00 }, /* ѓ to g */ 1560 - { 0x0454, 0x65, 0x00 }, /* є to e */ 1561 - { 0x0455, 0x7a, 0x00 }, /* ѕ to z */ 1562 - { 0x0456, 0x69, 0x00 }, /* і to i */ 1563 - { 0x0457, 0x69, 0x00 }, /* ї to i */ 1564 - { 0x0458, 0x6a, 0x00 }, /* ј to j */ 1565 - { 0x0459, 0x69, 0x00 }, /* љ to i */ 1566 - { 0x045A, 0x6e, 0x00 }, /* њ to n */ 1567 - { 0x045B, 0x64, 0x00 }, /* ћ to d */ 1568 - { 0x045C, 0x6b, 0x00 }, /* ќ to k */ 1569 - { 0x045D, 0x69, 0x00 }, /* ѝ to i */ 1570 - { 0x045E, 0x75, 0x00 }, /* ў to u */ 1571 - { 0x045F, 0x64, 0x00 }, /* џ to d */ 1572 - { 0x1E02, 0x42, 0x00 }, /* Ḃ to B */ 1573 - { 0x1E03, 0x62, 0x00 }, /* ḃ to b */ 1574 - { 0x1E0A, 0x44, 0x00 }, /* Ḋ to D */ 1575 - { 0x1E0B, 0x64, 0x00 }, /* ḋ to d */ 1576 - { 0x1E1E, 0x46, 0x00 }, /* Ḟ to F */ 1577 - { 0x1E1F, 0x66, 0x00 }, /* ḟ to f */ 1578 - { 0x1E40, 0x4D, 0x00 }, /* Ṁ to M */ 1579 - { 0x1E41, 0x6D, 0x00 }, /* ṁ to m */ 1580 - { 0x1E56, 0x50, 0x00 }, /* Ṗ to P */ 1581 - { 0x1E57, 0x70, 0x00 }, /* ṗ to p */ 1582 - { 0x1E60, 0x53, 0x00 }, /* Ṡ to S */ 1583 - { 0x1E61, 0x73, 0x00 }, /* ṡ to s */ 1584 - { 0x1E6A, 0x54, 0x00 }, /* Ṫ to T */ 1585 - { 0x1E6B, 0x74, 0x00 }, /* ṫ to t */ 1586 - { 0x1E80, 0x57, 0x00 }, /* Ẁ to W */ 1587 - { 0x1E81, 0x77, 0x00 }, /* ẁ to w */ 1588 - { 0x1E82, 0x57, 0x00 }, /* Ẃ to W */ 1589 - { 0x1E83, 0x77, 0x00 }, /* ẃ to w */ 1590 - { 0x1E84, 0x57, 0x00 }, /* Ẅ to W */ 1591 - { 0x1E85, 0x77, 0x00 }, /* ẅ to w */ 1592 - { 0x1EF2, 0x59, 0x00 }, /* Ỳ to Y */ 1593 - { 0x1EF3, 0x79, 0x00 }, /* ỳ to y */ 1594 - { 0xFB00, 0x66, 0x66 }, /* ff to ff */ 1595 - { 0xFB01, 0x66, 0x69 }, /* fi to fi */ 1596 - { 0xFB02, 0x66, 0x6C }, /* fl to fl */ 1597 - { 0xFB05, 0x73, 0x74 }, /* ſt to st */ 1598 - { 0xFB06, 0x73, 0x74 }, /* st to st */ 1212 +static const Transliteration translit[] = { 1213 + { 0x00A0, 0x20, 0x00, 0x00, 0x00 }, /* to */ 1214 + { 0x00B5, 0x75, 0x00, 0x00, 0x00 }, /* µ to u */ 1215 + { 0x00C0, 0x41, 0x00, 0x00, 0x00 }, /* À to A */ 1216 + { 0x00C1, 0x41, 0x00, 0x00, 0x00 }, /* Á to A */ 1217 + { 0x00C2, 0x41, 0x00, 0x00, 0x00 }, /*  to A */ 1218 + { 0x00C3, 0x41, 0x00, 0x00, 0x00 }, /* à to A */ 1219 + { 0x00C4, 0x41, 0x65, 0x00, 0x00 }, /* Ä to Ae */ 1220 + { 0x00C5, 0x41, 0x61, 0x00, 0x00 }, /* Å to Aa */ 1221 + { 0x00C6, 0x41, 0x45, 0x00, 0x00 }, /* Æ to AE */ 1222 + { 0x00C7, 0x43, 0x00, 0x00, 0x00 }, /* Ç to C */ 1223 + { 0x00C8, 0x45, 0x00, 0x00, 0x00 }, /* È to E */ 1224 + { 0x00C9, 0x45, 0x00, 0x00, 0x00 }, /* É to E */ 1225 + { 0x00CA, 0x45, 0x00, 0x00, 0x00 }, /* Ê to E */ 1226 + { 0x00CB, 0x45, 0x00, 0x00, 0x00 }, /* Ë to E */ 1227 + { 0x00CC, 0x49, 0x00, 0x00, 0x00 }, /* Ì to I */ 1228 + { 0x00CD, 0x49, 0x00, 0x00, 0x00 }, /* Í to I */ 1229 + { 0x00CE, 0x49, 0x00, 0x00, 0x00 }, /* Î to I */ 1230 + { 0x00CF, 0x49, 0x00, 0x00, 0x00 }, /* Ï to I */ 1231 + { 0x00D0, 0x44, 0x00, 0x00, 0x00 }, /* Ð to D */ 1232 + { 0x00D1, 0x4E, 0x00, 0x00, 0x00 }, /* Ñ to N */ 1233 + { 0x00D2, 0x4F, 0x00, 0x00, 0x00 }, /* Ò to O */ 1234 + { 0x00D3, 0x4F, 0x00, 0x00, 0x00 }, /* Ó to O */ 1235 + { 0x00D4, 0x4F, 0x00, 0x00, 0x00 }, /* Ô to O */ 1236 + { 0x00D5, 0x4F, 0x00, 0x00, 0x00 }, /* Õ to O */ 1237 + { 0x00D6, 0x4F, 0x65, 0x00, 0x00 }, /* Ö to Oe */ 1238 + { 0x00D7, 0x78, 0x00, 0x00, 0x00 }, /* × to x */ 1239 + { 0x00D8, 0x4F, 0x00, 0x00, 0x00 }, /* Ø to O */ 1240 + { 0x00D9, 0x55, 0x00, 0x00, 0x00 }, /* Ù to U */ 1241 + { 0x00DA, 0x55, 0x00, 0x00, 0x00 }, /* Ú to U */ 1242 + { 0x00DB, 0x55, 0x00, 0x00, 0x00 }, /* Û to U */ 1243 + { 0x00DC, 0x55, 0x65, 0x00, 0x00 }, /* Ü to Ue */ 1244 + { 0x00DD, 0x59, 0x00, 0x00, 0x00 }, /* Ý to Y */ 1245 + { 0x00DE, 0x54, 0x68, 0x00, 0x00 }, /* Þ to Th */ 1246 + { 0x00DF, 0x73, 0x73, 0x00, 0x00 }, /* ß to ss */ 1247 + { 0x00E0, 0x61, 0x00, 0x00, 0x00 }, /* à to a */ 1248 + { 0x00E1, 0x61, 0x00, 0x00, 0x00 }, /* á to a */ 1249 + { 0x00E2, 0x61, 0x00, 0x00, 0x00 }, /* â to a */ 1250 + { 0x00E3, 0x61, 0x00, 0x00, 0x00 }, /* ã to a */ 1251 + { 0x00E4, 0x61, 0x65, 0x00, 0x00 }, /* ä to ae */ 1252 + { 0x00E5, 0x61, 0x61, 0x00, 0x00 }, /* å to aa */ 1253 + { 0x00E6, 0x61, 0x65, 0x00, 0x00 }, /* æ to ae */ 1254 + { 0x00E7, 0x63, 0x00, 0x00, 0x00 }, /* ç to c */ 1255 + { 0x00E8, 0x65, 0x00, 0x00, 0x00 }, /* è to e */ 1256 + { 0x00E9, 0x65, 0x00, 0x00, 0x00 }, /* é to e */ 1257 + { 0x00EA, 0x65, 0x00, 0x00, 0x00 }, /* ê to e */ 1258 + { 0x00EB, 0x65, 0x00, 0x00, 0x00 }, /* ë to e */ 1259 + { 0x00EC, 0x69, 0x00, 0x00, 0x00 }, /* ì to i */ 1260 + { 0x00ED, 0x69, 0x00, 0x00, 0x00 }, /* í to i */ 1261 + { 0x00EE, 0x69, 0x00, 0x00, 0x00 }, /* î to i */ 1262 + { 0x00EF, 0x69, 0x00, 0x00, 0x00 }, /* ï to i */ 1263 + { 0x00F0, 0x64, 0x00, 0x00, 0x00 }, /* ð to d */ 1264 + { 0x00F1, 0x6E, 0x00, 0x00, 0x00 }, /* ñ to n */ 1265 + { 0x00F2, 0x6F, 0x00, 0x00, 0x00 }, /* ò to o */ 1266 + { 0x00F3, 0x6F, 0x00, 0x00, 0x00 }, /* ó to o */ 1267 + { 0x00F4, 0x6F, 0x00, 0x00, 0x00 }, /* ô to o */ 1268 + { 0x00F5, 0x6F, 0x00, 0x00, 0x00 }, /* õ to o */ 1269 + { 0x00F6, 0x6F, 0x65, 0x00, 0x00 }, /* ö to oe */ 1270 + { 0x00F7, 0x3A, 0x00, 0x00, 0x00 }, /* ÷ to : */ 1271 + { 0x00F8, 0x6F, 0x00, 0x00, 0x00 }, /* ø to o */ 1272 + { 0x00F9, 0x75, 0x00, 0x00, 0x00 }, /* ù to u */ 1273 + { 0x00FA, 0x75, 0x00, 0x00, 0x00 }, /* ú to u */ 1274 + { 0x00FB, 0x75, 0x00, 0x00, 0x00 }, /* û to u */ 1275 + { 0x00FC, 0x75, 0x65, 0x00, 0x00 }, /* ü to ue */ 1276 + { 0x00FD, 0x79, 0x00, 0x00, 0x00 }, /* ý to y */ 1277 + { 0x00FE, 0x74, 0x68, 0x00, 0x00 }, /* þ to th */ 1278 + { 0x00FF, 0x79, 0x00, 0x00, 0x00 }, /* ÿ to y */ 1279 + { 0x0100, 0x41, 0x00, 0x00, 0x00 }, /* Ā to A */ 1280 + { 0x0101, 0x61, 0x00, 0x00, 0x00 }, /* ā to a */ 1281 + { 0x0102, 0x41, 0x00, 0x00, 0x00 }, /* Ă to A */ 1282 + { 0x0103, 0x61, 0x00, 0x00, 0x00 }, /* ă to a */ 1283 + { 0x0104, 0x41, 0x00, 0x00, 0x00 }, /* Ą to A */ 1284 + { 0x0105, 0x61, 0x00, 0x00, 0x00 }, /* ą to a */ 1285 + { 0x0106, 0x43, 0x00, 0x00, 0x00 }, /* Ć to C */ 1286 + { 0x0107, 0x63, 0x00, 0x00, 0x00 }, /* ć to c */ 1287 + { 0x0108, 0x43, 0x68, 0x00, 0x00 }, /* Ĉ to Ch */ 1288 + { 0x0109, 0x63, 0x68, 0x00, 0x00 }, /* ĉ to ch */ 1289 + { 0x010A, 0x43, 0x00, 0x00, 0x00 }, /* Ċ to C */ 1290 + { 0x010B, 0x63, 0x00, 0x00, 0x00 }, /* ċ to c */ 1291 + { 0x010C, 0x43, 0x00, 0x00, 0x00 }, /* Č to C */ 1292 + { 0x010D, 0x63, 0x00, 0x00, 0x00 }, /* č to c */ 1293 + { 0x010E, 0x44, 0x00, 0x00, 0x00 }, /* Ď to D */ 1294 + { 0x010F, 0x64, 0x00, 0x00, 0x00 }, /* ď to d */ 1295 + { 0x0110, 0x44, 0x00, 0x00, 0x00 }, /* Đ to D */ 1296 + { 0x0111, 0x64, 0x00, 0x00, 0x00 }, /* đ to d */ 1297 + { 0x0112, 0x45, 0x00, 0x00, 0x00 }, /* Ē to E */ 1298 + { 0x0113, 0x65, 0x00, 0x00, 0x00 }, /* ē to e */ 1299 + { 0x0114, 0x45, 0x00, 0x00, 0x00 }, /* Ĕ to E */ 1300 + { 0x0115, 0x65, 0x00, 0x00, 0x00 }, /* ĕ to e */ 1301 + { 0x0116, 0x45, 0x00, 0x00, 0x00 }, /* Ė to E */ 1302 + { 0x0117, 0x65, 0x00, 0x00, 0x00 }, /* ė to e */ 1303 + { 0x0118, 0x45, 0x00, 0x00, 0x00 }, /* Ę to E */ 1304 + { 0x0119, 0x65, 0x00, 0x00, 0x00 }, /* ę to e */ 1305 + { 0x011A, 0x45, 0x00, 0x00, 0x00 }, /* Ě to E */ 1306 + { 0x011B, 0x65, 0x00, 0x00, 0x00 }, /* ě to e */ 1307 + { 0x011C, 0x47, 0x68, 0x00, 0x00 }, /* Ĝ to Gh */ 1308 + { 0x011D, 0x67, 0x68, 0x00, 0x00 }, /* ĝ to gh */ 1309 + { 0x011E, 0x47, 0x00, 0x00, 0x00 }, /* Ğ to G */ 1310 + { 0x011F, 0x67, 0x00, 0x00, 0x00 }, /* ğ to g */ 1311 + { 0x0120, 0x47, 0x00, 0x00, 0x00 }, /* Ġ to G */ 1312 + { 0x0121, 0x67, 0x00, 0x00, 0x00 }, /* ġ to g */ 1313 + { 0x0122, 0x47, 0x00, 0x00, 0x00 }, /* Ģ to G */ 1314 + { 0x0123, 0x67, 0x00, 0x00, 0x00 }, /* ģ to g */ 1315 + { 0x0124, 0x48, 0x68, 0x00, 0x00 }, /* Ĥ to Hh */ 1316 + { 0x0125, 0x68, 0x68, 0x00, 0x00 }, /* ĥ to hh */ 1317 + { 0x0126, 0x48, 0x00, 0x00, 0x00 }, /* Ħ to H */ 1318 + { 0x0127, 0x68, 0x00, 0x00, 0x00 }, /* ħ to h */ 1319 + { 0x0128, 0x49, 0x00, 0x00, 0x00 }, /* Ĩ to I */ 1320 + { 0x0129, 0x69, 0x00, 0x00, 0x00 }, /* ĩ to i */ 1321 + { 0x012A, 0x49, 0x00, 0x00, 0x00 }, /* Ī to I */ 1322 + { 0x012B, 0x69, 0x00, 0x00, 0x00 }, /* ī to i */ 1323 + { 0x012C, 0x49, 0x00, 0x00, 0x00 }, /* Ĭ to I */ 1324 + { 0x012D, 0x69, 0x00, 0x00, 0x00 }, /* ĭ to i */ 1325 + { 0x012E, 0x49, 0x00, 0x00, 0x00 }, /* Į to I */ 1326 + { 0x012F, 0x69, 0x00, 0x00, 0x00 }, /* į to i */ 1327 + { 0x0130, 0x49, 0x00, 0x00, 0x00 }, /* İ to I */ 1328 + { 0x0131, 0x69, 0x00, 0x00, 0x00 }, /* ı to i */ 1329 + { 0x0132, 0x49, 0x4A, 0x00, 0x00 }, /* IJ to IJ */ 1330 + { 0x0133, 0x69, 0x6A, 0x00, 0x00 }, /* ij to ij */ 1331 + { 0x0134, 0x4A, 0x68, 0x00, 0x00 }, /* Ĵ to Jh */ 1332 + { 0x0135, 0x6A, 0x68, 0x00, 0x00 }, /* ĵ to jh */ 1333 + { 0x0136, 0x4B, 0x00, 0x00, 0x00 }, /* Ķ to K */ 1334 + { 0x0137, 0x6B, 0x00, 0x00, 0x00 }, /* ķ to k */ 1335 + { 0x0138, 0x6B, 0x00, 0x00, 0x00 }, /* ĸ to k */ 1336 + { 0x0139, 0x4C, 0x00, 0x00, 0x00 }, /* Ĺ to L */ 1337 + { 0x013A, 0x6C, 0x00, 0x00, 0x00 }, /* ĺ to l */ 1338 + { 0x013B, 0x4C, 0x00, 0x00, 0x00 }, /* Ļ to L */ 1339 + { 0x013C, 0x6C, 0x00, 0x00, 0x00 }, /* ļ to l */ 1340 + { 0x013D, 0x4C, 0x00, 0x00, 0x00 }, /* Ľ to L */ 1341 + { 0x013E, 0x6C, 0x00, 0x00, 0x00 }, /* ľ to l */ 1342 + { 0x013F, 0x4C, 0x2E, 0x00, 0x00 }, /* Ŀ to L. */ 1343 + { 0x0140, 0x6C, 0x2E, 0x00, 0x00 }, /* ŀ to l. */ 1344 + { 0x0141, 0x4C, 0x00, 0x00, 0x00 }, /* Ł to L */ 1345 + { 0x0142, 0x6C, 0x00, 0x00, 0x00 }, /* ł to l */ 1346 + { 0x0143, 0x4E, 0x00, 0x00, 0x00 }, /* Ń to N */ 1347 + { 0x0144, 0x6E, 0x00, 0x00, 0x00 }, /* ń to n */ 1348 + { 0x0145, 0x4E, 0x00, 0x00, 0x00 }, /* Ņ to N */ 1349 + { 0x0146, 0x6E, 0x00, 0x00, 0x00 }, /* ņ to n */ 1350 + { 0x0147, 0x4E, 0x00, 0x00, 0x00 }, /* Ň to N */ 1351 + { 0x0148, 0x6E, 0x00, 0x00, 0x00 }, /* ň to n */ 1352 + { 0x0149, 0x27, 0x6E, 0x00, 0x00 }, /* ʼn to 'n */ 1353 + { 0x014A, 0x4E, 0x47, 0x00, 0x00 }, /* Ŋ to NG */ 1354 + { 0x014B, 0x6E, 0x67, 0x00, 0x00 }, /* ŋ to ng */ 1355 + { 0x014C, 0x4F, 0x00, 0x00, 0x00 }, /* Ō to O */ 1356 + { 0x014D, 0x6F, 0x00, 0x00, 0x00 }, /* ō to o */ 1357 + { 0x014E, 0x4F, 0x00, 0x00, 0x00 }, /* Ŏ to O */ 1358 + { 0x014F, 0x6F, 0x00, 0x00, 0x00 }, /* ŏ to o */ 1359 + { 0x0150, 0x4F, 0x00, 0x00, 0x00 }, /* Ő to O */ 1360 + { 0x0151, 0x6F, 0x00, 0x00, 0x00 }, /* ő to o */ 1361 + { 0x0152, 0x4F, 0x45, 0x00, 0x00 }, /* Œ to OE */ 1362 + { 0x0153, 0x6F, 0x65, 0x00, 0x00 }, /* œ to oe */ 1363 + { 0x0154, 0x52, 0x00, 0x00, 0x00 }, /* Ŕ to R */ 1364 + { 0x0155, 0x72, 0x00, 0x00, 0x00 }, /* ŕ to r */ 1365 + { 0x0156, 0x52, 0x00, 0x00, 0x00 }, /* Ŗ to R */ 1366 + { 0x0157, 0x72, 0x00, 0x00, 0x00 }, /* ŗ to r */ 1367 + { 0x0158, 0x52, 0x00, 0x00, 0x00 }, /* Ř to R */ 1368 + { 0x0159, 0x72, 0x00, 0x00, 0x00 }, /* ř to r */ 1369 + { 0x015A, 0x53, 0x00, 0x00, 0x00 }, /* Ś to S */ 1370 + { 0x015B, 0x73, 0x00, 0x00, 0x00 }, /* ś to s */ 1371 + { 0x015C, 0x53, 0x68, 0x00, 0x00 }, /* Ŝ to Sh */ 1372 + { 0x015D, 0x73, 0x68, 0x00, 0x00 }, /* ŝ to sh */ 1373 + { 0x015E, 0x53, 0x00, 0x00, 0x00 }, /* Ş to S */ 1374 + { 0x015F, 0x73, 0x00, 0x00, 0x00 }, /* ş to s */ 1375 + { 0x0160, 0x53, 0x00, 0x00, 0x00 }, /* Š to S */ 1376 + { 0x0161, 0x73, 0x00, 0x00, 0x00 }, /* š to s */ 1377 + { 0x0162, 0x54, 0x00, 0x00, 0x00 }, /* Ţ to T */ 1378 + { 0x0163, 0x74, 0x00, 0x00, 0x00 }, /* ţ to t */ 1379 + { 0x0164, 0x54, 0x00, 0x00, 0x00 }, /* Ť to T */ 1380 + { 0x0165, 0x74, 0x00, 0x00, 0x00 }, /* ť to t */ 1381 + { 0x0166, 0x54, 0x00, 0x00, 0x00 }, /* Ŧ to T */ 1382 + { 0x0167, 0x74, 0x00, 0x00, 0x00 }, /* ŧ to t */ 1383 + { 0x0168, 0x55, 0x00, 0x00, 0x00 }, /* Ũ to U */ 1384 + { 0x0169, 0x75, 0x00, 0x00, 0x00 }, /* ũ to u */ 1385 + { 0x016A, 0x55, 0x00, 0x00, 0x00 }, /* Ū to U */ 1386 + { 0x016B, 0x75, 0x00, 0x00, 0x00 }, /* ū to u */ 1387 + { 0x016C, 0x55, 0x00, 0x00, 0x00 }, /* Ŭ to U */ 1388 + { 0x016D, 0x75, 0x00, 0x00, 0x00 }, /* ŭ to u */ 1389 + { 0x016E, 0x55, 0x00, 0x00, 0x00 }, /* Ů to U */ 1390 + { 0x016F, 0x75, 0x00, 0x00, 0x00 }, /* ů to u */ 1391 + { 0x0170, 0x55, 0x00, 0x00, 0x00 }, /* Ű to U */ 1392 + { 0x0171, 0x75, 0x00, 0x00, 0x00 }, /* ű to u */ 1393 + { 0x0172, 0x55, 0x00, 0x00, 0x00 }, /* Ų to U */ 1394 + { 0x0173, 0x75, 0x00, 0x00, 0x00 }, /* ų to u */ 1395 + { 0x0174, 0x57, 0x00, 0x00, 0x00 }, /* Ŵ to W */ 1396 + { 0x0175, 0x77, 0x00, 0x00, 0x00 }, /* ŵ to w */ 1397 + { 0x0176, 0x59, 0x00, 0x00, 0x00 }, /* Ŷ to Y */ 1398 + { 0x0177, 0x79, 0x00, 0x00, 0x00 }, /* ŷ to y */ 1399 + { 0x0178, 0x59, 0x00, 0x00, 0x00 }, /* Ÿ to Y */ 1400 + { 0x0179, 0x5A, 0x00, 0x00, 0x00 }, /* Ź to Z */ 1401 + { 0x017A, 0x7A, 0x00, 0x00, 0x00 }, /* ź to z */ 1402 + { 0x017B, 0x5A, 0x00, 0x00, 0x00 }, /* Ż to Z */ 1403 + { 0x017C, 0x7A, 0x00, 0x00, 0x00 }, /* ż to z */ 1404 + { 0x017D, 0x5A, 0x00, 0x00, 0x00 }, /* Ž to Z */ 1405 + { 0x017E, 0x7A, 0x00, 0x00, 0x00 }, /* ž to z */ 1406 + { 0x017F, 0x73, 0x00, 0x00, 0x00 }, /* ſ to s */ 1407 + { 0x0192, 0x66, 0x00, 0x00, 0x00 }, /* ƒ to f */ 1408 + { 0x0218, 0x53, 0x00, 0x00, 0x00 }, /* Ș to S */ 1409 + { 0x0219, 0x73, 0x00, 0x00, 0x00 }, /* ș to s */ 1410 + { 0x021A, 0x54, 0x00, 0x00, 0x00 }, /* Ț to T */ 1411 + { 0x021B, 0x74, 0x00, 0x00, 0x00 }, /* ț to t */ 1412 + { 0x0386, 0x41, 0x00, 0x00, 0x00 }, /* Ά to A */ 1413 + { 0x0388, 0x45, 0x00, 0x00, 0x00 }, /* Έ to E */ 1414 + { 0x0389, 0x49, 0x00, 0x00, 0x00 }, /* Ή to I */ 1415 + { 0x038A, 0x49, 0x00, 0x00, 0x00 }, /* Ί to I */ 1416 + { 0x038C, 0x4f, 0x00, 0x00, 0x00 }, /* Ό to O */ 1417 + { 0x038E, 0x59, 0x00, 0x00, 0x00 }, /* Ύ to Y */ 1418 + { 0x038F, 0x4f, 0x00, 0x00, 0x00 }, /* Ώ to O */ 1419 + { 0x0390, 0x69, 0x00, 0x00, 0x00 }, /* ΐ to i */ 1420 + { 0x0391, 0x41, 0x00, 0x00, 0x00 }, /* Α to A */ 1421 + { 0x0392, 0x42, 0x00, 0x00, 0x00 }, /* Β to B */ 1422 + { 0x0393, 0x47, 0x00, 0x00, 0x00 }, /* Γ to G */ 1423 + { 0x0394, 0x44, 0x00, 0x00, 0x00 }, /* Δ to D */ 1424 + { 0x0395, 0x45, 0x00, 0x00, 0x00 }, /* Ε to E */ 1425 + { 0x0396, 0x5a, 0x00, 0x00, 0x00 }, /* Ζ to Z */ 1426 + { 0x0397, 0x49, 0x00, 0x00, 0x00 }, /* Η to I */ 1427 + { 0x0398, 0x54, 0x68, 0x00, 0x00 }, /* Θ to Th */ 1428 + { 0x0399, 0x49, 0x00, 0x00, 0x00 }, /* Ι to I */ 1429 + { 0x039A, 0x4b, 0x00, 0x00, 0x00 }, /* Κ to K */ 1430 + { 0x039B, 0x4c, 0x00, 0x00, 0x00 }, /* Λ to L */ 1431 + { 0x039C, 0x4d, 0x00, 0x00, 0x00 }, /* Μ to M */ 1432 + { 0x039D, 0x4e, 0x00, 0x00, 0x00 }, /* Ν to N */ 1433 + { 0x039E, 0x58, 0x00, 0x00, 0x00 }, /* Ξ to X */ 1434 + { 0x039F, 0x4f, 0x00, 0x00, 0x00 }, /* Ο to O */ 1435 + { 0x03A0, 0x50, 0x00, 0x00, 0x00 }, /* Π to P */ 1436 + { 0x03A1, 0x52, 0x00, 0x00, 0x00 }, /* Ρ to R */ 1437 + { 0x03A3, 0x53, 0x00, 0x00, 0x00 }, /* Σ to S */ 1438 + { 0x03A4, 0x54, 0x00, 0x00, 0x00 }, /* Τ to T */ 1439 + { 0x03A5, 0x59, 0x00, 0x00, 0x00 }, /* Υ to Y */ 1440 + { 0x03A6, 0x46, 0x00, 0x00, 0x00 }, /* Φ to F */ 1441 + { 0x03A7, 0x43, 0x68, 0x00, 0x00 }, /* Χ to Ch */ 1442 + { 0x03A8, 0x50, 0x73, 0x00, 0x00 }, /* Ψ to Ps */ 1443 + { 0x03A9, 0x4f, 0x00, 0x00, 0x00 }, /* Ω to O */ 1444 + { 0x03AA, 0x49, 0x00, 0x00, 0x00 }, /* Ϊ to I */ 1445 + { 0x03AB, 0x59, 0x00, 0x00, 0x00 }, /* Ϋ to Y */ 1446 + { 0x03AC, 0x61, 0x00, 0x00, 0x00 }, /* ά to a */ 1447 + { 0x03AD, 0x65, 0x00, 0x00, 0x00 }, /* έ to e */ 1448 + { 0x03AE, 0x69, 0x00, 0x00, 0x00 }, /* ή to i */ 1449 + { 0x03AF, 0x69, 0x00, 0x00, 0x00 }, /* ί to i */ 1450 + { 0x03B1, 0x61, 0x00, 0x00, 0x00 }, /* α to a */ 1451 + { 0x03B2, 0x62, 0x00, 0x00, 0x00 }, /* β to b */ 1452 + { 0x03B3, 0x67, 0x00, 0x00, 0x00 }, /* γ to g */ 1453 + { 0x03B4, 0x64, 0x00, 0x00, 0x00 }, /* δ to d */ 1454 + { 0x03B5, 0x65, 0x00, 0x00, 0x00 }, /* ε to e */ 1455 + { 0x03B6, 0x7a, 0x00, 0x00, 0x00 }, /* ζ to z */ 1456 + { 0x03B7, 0x69, 0x00, 0x00, 0x00 }, /* η to i */ 1457 + { 0x03B8, 0x74, 0x68, 0x00, 0x00 }, /* θ to th */ 1458 + { 0x03B9, 0x69, 0x00, 0x00, 0x00 }, /* ι to i */ 1459 + { 0x03BA, 0x6b, 0x00, 0x00, 0x00 }, /* κ to k */ 1460 + { 0x03BB, 0x6c, 0x00, 0x00, 0x00 }, /* λ to l */ 1461 + { 0x03BC, 0x6d, 0x00, 0x00, 0x00 }, /* μ to m */ 1462 + { 0x03BD, 0x6e, 0x00, 0x00, 0x00 }, /* ν to n */ 1463 + { 0x03BE, 0x78, 0x00, 0x00, 0x00 }, /* ξ to x */ 1464 + { 0x03BF, 0x6f, 0x00, 0x00, 0x00 }, /* ο to o */ 1465 + { 0x03C0, 0x70, 0x00, 0x00, 0x00 }, /* π to p */ 1466 + { 0x03C1, 0x72, 0x00, 0x00, 0x00 }, /* ρ to r */ 1467 + { 0x03C3, 0x73, 0x00, 0x00, 0x00 }, /* σ to s */ 1468 + { 0x03C4, 0x74, 0x00, 0x00, 0x00 }, /* τ to t */ 1469 + { 0x03C5, 0x79, 0x00, 0x00, 0x00 }, /* υ to y */ 1470 + { 0x03C6, 0x66, 0x00, 0x00, 0x00 }, /* φ to f */ 1471 + { 0x03C7, 0x63, 0x68, 0x00, 0x00 }, /* χ to ch */ 1472 + { 0x03C8, 0x70, 0x73, 0x00, 0x00 }, /* ψ to ps */ 1473 + { 0x03C9, 0x6f, 0x00, 0x00, 0x00 }, /* ω to o */ 1474 + { 0x03CA, 0x69, 0x00, 0x00, 0x00 }, /* ϊ to i */ 1475 + { 0x03CB, 0x79, 0x00, 0x00, 0x00 }, /* ϋ to y */ 1476 + { 0x03CC, 0x6f, 0x00, 0x00, 0x00 }, /* ό to o */ 1477 + { 0x03CD, 0x79, 0x00, 0x00, 0x00 }, /* ύ to y */ 1478 + { 0x03CE, 0x69, 0x00, 0x00, 0x00 }, /* ώ to i */ 1479 + { 0x0400, 0x45, 0x00, 0x00, 0x00 }, /* Ѐ to E */ 1480 + { 0x0401, 0x45, 0x00, 0x00, 0x00 }, /* Ё to E */ 1481 + { 0x0402, 0x44, 0x00, 0x00, 0x00 }, /* Ђ to D */ 1482 + { 0x0403, 0x47, 0x00, 0x00, 0x00 }, /* Ѓ to G */ 1483 + { 0x0404, 0x45, 0x00, 0x00, 0x00 }, /* Є to E */ 1484 + { 0x0405, 0x5a, 0x00, 0x00, 0x00 }, /* Ѕ to Z */ 1485 + { 0x0406, 0x49, 0x00, 0x00, 0x00 }, /* І to I */ 1486 + { 0x0407, 0x49, 0x00, 0x00, 0x00 }, /* Ї to I */ 1487 + { 0x0408, 0x4a, 0x00, 0x00, 0x00 }, /* Ј to J */ 1488 + { 0x0409, 0x49, 0x00, 0x00, 0x00 }, /* Љ to I */ 1489 + { 0x040A, 0x4e, 0x00, 0x00, 0x00 }, /* Њ to N */ 1490 + { 0x040B, 0x44, 0x00, 0x00, 0x00 }, /* Ћ to D */ 1491 + { 0x040C, 0x4b, 0x00, 0x00, 0x00 }, /* Ќ to K */ 1492 + { 0x040D, 0x49, 0x00, 0x00, 0x00 }, /* Ѝ to I */ 1493 + { 0x040E, 0x55, 0x00, 0x00, 0x00 }, /* Ў to U */ 1494 + { 0x040F, 0x44, 0x00, 0x00, 0x00 }, /* Џ to D */ 1495 + { 0x0410, 0x41, 0x00, 0x00, 0x00 }, /* А to A */ 1496 + { 0x0411, 0x42, 0x00, 0x00, 0x00 }, /* Б to B */ 1497 + { 0x0412, 0x56, 0x00, 0x00, 0x00 }, /* В to V */ 1498 + { 0x0413, 0x47, 0x00, 0x00, 0x00 }, /* Г to G */ 1499 + { 0x0414, 0x44, 0x00, 0x00, 0x00 }, /* Д to D */ 1500 + { 0x0415, 0x45, 0x00, 0x00, 0x00 }, /* Е to E */ 1501 + { 0x0416, 0x5a, 0x68, 0x00, 0x00 }, /* Ж to Zh */ 1502 + { 0x0417, 0x5a, 0x00, 0x00, 0x00 }, /* З to Z */ 1503 + { 0x0418, 0x49, 0x00, 0x00, 0x00 }, /* И to I */ 1504 + { 0x0419, 0x49, 0x00, 0x00, 0x00 }, /* Й to I */ 1505 + { 0x041A, 0x4b, 0x00, 0x00, 0x00 }, /* К to K */ 1506 + { 0x041B, 0x4c, 0x00, 0x00, 0x00 }, /* Л to L */ 1507 + { 0x041C, 0x4d, 0x00, 0x00, 0x00 }, /* М to M */ 1508 + { 0x041D, 0x4e, 0x00, 0x00, 0x00 }, /* Н to N */ 1509 + { 0x041E, 0x4f, 0x00, 0x00, 0x00 }, /* О to O */ 1510 + { 0x041F, 0x50, 0x00, 0x00, 0x00 }, /* П to P */ 1511 + { 0x0420, 0x52, 0x00, 0x00, 0x00 }, /* Р to R */ 1512 + { 0x0421, 0x53, 0x00, 0x00, 0x00 }, /* С to S */ 1513 + { 0x0422, 0x54, 0x00, 0x00, 0x00 }, /* Т to T */ 1514 + { 0x0423, 0x55, 0x00, 0x00, 0x00 }, /* У to U */ 1515 + { 0x0424, 0x46, 0x00, 0x00, 0x00 }, /* Ф to F */ 1516 + { 0x0425, 0x4b, 0x68, 0x00, 0x00 }, /* Х to Kh */ 1517 + { 0x0426, 0x54, 0x63, 0x00, 0x00 }, /* Ц to Tc */ 1518 + { 0x0427, 0x43, 0x68, 0x00, 0x00 }, /* Ч to Ch */ 1519 + { 0x0428, 0x53, 0x68, 0x00, 0x00 }, /* Ш to Sh */ 1520 + { 0x0429, 0x53, 0x68, 0x63, 0x68 }, /* Щ to Shch */ 1521 + { 0x042A, 0x61, 0x00, 0x00, 0x00 }, /* to A */ 1522 + { 0x042B, 0x59, 0x00, 0x00, 0x00 }, /* Ы to Y */ 1523 + { 0x042C, 0x59, 0x00, 0x00, 0x00 }, /* to Y */ 1524 + { 0x042D, 0x45, 0x00, 0x00, 0x00 }, /* Э to E */ 1525 + { 0x042E, 0x49, 0x75, 0x00, 0x00 }, /* Ю to Iu */ 1526 + { 0x042F, 0x49, 0x61, 0x00, 0x00 }, /* Я to Ia */ 1527 + { 0x0430, 0x61, 0x00, 0x00, 0x00 }, /* а to a */ 1528 + { 0x0431, 0x62, 0x00, 0x00, 0x00 }, /* б to b */ 1529 + { 0x0432, 0x76, 0x00, 0x00, 0x00 }, /* в to v */ 1530 + { 0x0433, 0x67, 0x00, 0x00, 0x00 }, /* г to g */ 1531 + { 0x0434, 0x64, 0x00, 0x00, 0x00 }, /* д to d */ 1532 + { 0x0435, 0x65, 0x00, 0x00, 0x00 }, /* е to e */ 1533 + { 0x0436, 0x7a, 0x68, 0x00, 0x00 }, /* ж to zh */ 1534 + { 0x0437, 0x7a, 0x00, 0x00, 0x00 }, /* з to z */ 1535 + { 0x0438, 0x69, 0x00, 0x00, 0x00 }, /* и to i */ 1536 + { 0x0439, 0x69, 0x00, 0x00, 0x00 }, /* й to i */ 1537 + { 0x043A, 0x6b, 0x00, 0x00, 0x00 }, /* к to k */ 1538 + { 0x043B, 0x6c, 0x00, 0x00, 0x00 }, /* л to l */ 1539 + { 0x043C, 0x6d, 0x00, 0x00, 0x00 }, /* м to m */ 1540 + { 0x043D, 0x6e, 0x00, 0x00, 0x00 }, /* н to n */ 1541 + { 0x043E, 0x6f, 0x00, 0x00, 0x00 }, /* о to o */ 1542 + { 0x043F, 0x70, 0x00, 0x00, 0x00 }, /* п to p */ 1543 + { 0x0440, 0x72, 0x00, 0x00, 0x00 }, /* р to r */ 1544 + { 0x0441, 0x73, 0x00, 0x00, 0x00 }, /* с to s */ 1545 + { 0x0442, 0x74, 0x00, 0x00, 0x00 }, /* т to t */ 1546 + { 0x0443, 0x75, 0x00, 0x00, 0x00 }, /* у to u */ 1547 + { 0x0444, 0x66, 0x00, 0x00, 0x00 }, /* ф to f */ 1548 + { 0x0445, 0x6b, 0x68, 0x00, 0x00 }, /* х to kh */ 1549 + { 0x0446, 0x74, 0x63, 0x00, 0x00 }, /* ц to tc */ 1550 + { 0x0447, 0x63, 0x68, 0x00, 0x00 }, /* ч to ch */ 1551 + { 0x0448, 0x73, 0x68, 0x00, 0x00 }, /* ш to sh */ 1552 + { 0x0449, 0x73, 0x68, 0x63, 0x68 }, /* щ to shch */ 1553 + { 0x044A, 0x61, 0x00, 0x00, 0x00 }, /* to a */ 1554 + { 0x044B, 0x79, 0x00, 0x00, 0x00 }, /* ы to y */ 1555 + { 0x044C, 0x79, 0x00, 0x00, 0x00 }, /* to y */ 1556 + { 0x044D, 0x65, 0x00, 0x00, 0x00 }, /* э to e */ 1557 + { 0x044E, 0x69, 0x75, 0x00, 0x00 }, /* ю to iu */ 1558 + { 0x044F, 0x69, 0x61, 0x00, 0x00 }, /* я to ia */ 1559 + { 0x0450, 0x65, 0x00, 0x00, 0x00 }, /* ѐ to e */ 1560 + { 0x0451, 0x65, 0x00, 0x00, 0x00 }, /* ё to e */ 1561 + { 0x0452, 0x64, 0x00, 0x00, 0x00 }, /* ђ to d */ 1562 + { 0x0453, 0x67, 0x00, 0x00, 0x00 }, /* ѓ to g */ 1563 + { 0x0454, 0x65, 0x00, 0x00, 0x00 }, /* є to e */ 1564 + { 0x0455, 0x7a, 0x00, 0x00, 0x00 }, /* ѕ to z */ 1565 + { 0x0456, 0x69, 0x00, 0x00, 0x00 }, /* і to i */ 1566 + { 0x0457, 0x69, 0x00, 0x00, 0x00 }, /* ї to i */ 1567 + { 0x0458, 0x6a, 0x00, 0x00, 0x00 }, /* ј to j */ 1568 + { 0x0459, 0x69, 0x00, 0x00, 0x00 }, /* љ to i */ 1569 + { 0x045A, 0x6e, 0x00, 0x00, 0x00 }, /* њ to n */ 1570 + { 0x045B, 0x64, 0x00, 0x00, 0x00 }, /* ћ to d */ 1571 + { 0x045C, 0x6b, 0x00, 0x00, 0x00 }, /* ќ to k */ 1572 + { 0x045D, 0x69, 0x00, 0x00, 0x00 }, /* ѝ to i */ 1573 + { 0x045E, 0x75, 0x00, 0x00, 0x00 }, /* ў to u */ 1574 + { 0x045F, 0x64, 0x00, 0x00, 0x00 }, /* џ to d */ 1575 + { 0x1E02, 0x42, 0x00, 0x00, 0x00 }, /* Ḃ to B */ 1576 + { 0x1E03, 0x62, 0x00, 0x00, 0x00 }, /* ḃ to b */ 1577 + { 0x1E0A, 0x44, 0x00, 0x00, 0x00 }, /* Ḋ to D */ 1578 + { 0x1E0B, 0x64, 0x00, 0x00, 0x00 }, /* ḋ to d */ 1579 + { 0x1E1E, 0x46, 0x00, 0x00, 0x00 }, /* Ḟ to F */ 1580 + { 0x1E1F, 0x66, 0x00, 0x00, 0x00 }, /* ḟ to f */ 1581 + { 0x1E40, 0x4D, 0x00, 0x00, 0x00 }, /* Ṁ to M */ 1582 + { 0x1E41, 0x6D, 0x00, 0x00, 0x00 }, /* ṁ to m */ 1583 + { 0x1E56, 0x50, 0x00, 0x00, 0x00 }, /* Ṗ to P */ 1584 + { 0x1E57, 0x70, 0x00, 0x00, 0x00 }, /* ṗ to p */ 1585 + { 0x1E60, 0x53, 0x00, 0x00, 0x00 }, /* Ṡ to S */ 1586 + { 0x1E61, 0x73, 0x00, 0x00, 0x00 }, /* ṡ to s */ 1587 + { 0x1E6A, 0x54, 0x00, 0x00, 0x00 }, /* Ṫ to T */ 1588 + { 0x1E6B, 0x74, 0x00, 0x00, 0x00 }, /* ṫ to t */ 1589 + { 0x1E80, 0x57, 0x00, 0x00, 0x00 }, /* Ẁ to W */ 1590 + { 0x1E81, 0x77, 0x00, 0x00, 0x00 }, /* ẁ to w */ 1591 + { 0x1E82, 0x57, 0x00, 0x00, 0x00 }, /* Ẃ to W */ 1592 + { 0x1E83, 0x77, 0x00, 0x00, 0x00 }, /* ẃ to w */ 1593 + { 0x1E84, 0x57, 0x00, 0x00, 0x00 }, /* Ẅ to W */ 1594 + { 0x1E85, 0x77, 0x00, 0x00, 0x00 }, /* ẅ to w */ 1595 + { 0x1EF2, 0x59, 0x00, 0x00, 0x00 }, /* Ỳ to Y */ 1596 + { 0x1EF3, 0x79, 0x00, 0x00, 0x00 }, /* ỳ to y */ 1597 + { 0xFB00, 0x66, 0x66, 0x00, 0x00 }, /* ff to ff */ 1598 + { 0xFB01, 0x66, 0x69, 0x00, 0x00 }, /* fi to fi */ 1599 + { 0xFB02, 0x66, 0x6C, 0x00, 0x00 }, /* fl to fl */ 1600 + { 0xFB05, 0x73, 0x74, 0x00, 0x00 }, /* ſt to st */ 1601 + { 0xFB06, 0x73, 0x74, 0x00, 0x00 }, /* st to st */ 1599 1602 }; 1603 + 1604 +static const Transliteration *spellfixFindTranslit(int c, int *pxTop){ 1605 + *pxTop = (sizeof(translit)/sizeof(translit[0])) - 1; 1606 + return translit; 1607 +} 1600 1608 1601 1609 /* 1602 1610 ** Convert the input string from UTF-8 into pure ASCII by converting 1603 1611 ** all non-ASCII characters to some combination of characters in the 1604 1612 ** ASCII subset. 1605 1613 ** 1606 1614 ** The returned string might contain more characters than the input. ................................................................................ 1617 1625 c = utf8Read(zIn, nIn, &sz); 1618 1626 zIn += sz; 1619 1627 nIn -= sz; 1620 1628 if( c<=127 ){ 1621 1629 zOut[nOut++] = (unsigned char)c; 1622 1630 }else{ 1623 1631 int xTop, xBtm, x; 1624 - xTop = sizeof(translit)/sizeof(translit[0]) - 1; 1632 + const Transliteration *tbl = spellfixFindTranslit(c, &xTop); 1625 1633 xBtm = 0; 1626 1634 while( xTop>=xBtm ){ 1627 1635 x = (xTop + xBtm)/2; 1628 - if( translit[x].cFrom==c ){ 1629 - zOut[nOut++] = translit[x].cTo0; 1630 - if( translit[x].cTo1 ){ 1631 - zOut[nOut++] = translit[x].cTo1; 1632 - /* Add an extra "ch" after the "sh" for Щ and щ */ 1633 - if( c==0x0429 || c== 0x0449 ){ 1634 - zOut[nOut++] = 'c'; 1635 - zOut[nOut++] = 'h'; 1636 + if( tbl[x].cFrom==c ){ 1637 + zOut[nOut++] = tbl[x].cTo0; 1638 + if( tbl[x].cTo1 ){ 1639 + zOut[nOut++] = tbl[x].cTo1; 1640 + if( tbl[x].cTo2 ){ 1641 + zOut[nOut++] = tbl[x].cTo2; 1642 + if( tbl[x].cTo3 ){ 1643 + zOut[nOut++] = tbl[x].cTo3; 1644 + } 1636 1645 } 1637 1646 } 1638 1647 c = 0; 1639 1648 break; 1640 - }else if( translit[x].cFrom>c ){ 1649 + }else if( tbl[x].cFrom>c ){ 1641 1650 xTop = x-1; 1642 1651 }else{ 1643 1652 xBtm = x+1; 1644 1653 } 1645 1654 } 1646 1655 if( c ) zOut[nOut++] = '?'; 1647 1656 } ................................................................................ 1664 1673 for(nChar=0; i<nIn && nOut<nTrans; nChar++){ 1665 1674 c = utf8Read((const unsigned char *)&zIn[i], nIn-i, &sz); 1666 1675 i += sz; 1667 1676 1668 1677 nOut++; 1669 1678 if( c>=128 ){ 1670 1679 int xTop, xBtm, x; 1671 - xTop = sizeof(translit)/sizeof(translit[0]) - 1; 1680 + const Transliteration *tbl = spellfixFindTranslit(c, &xTop); 1672 1681 xBtm = 0; 1673 1682 while( xTop>=xBtm ){ 1674 1683 x = (xTop + xBtm)/2; 1675 - if( translit[x].cFrom==c ){ 1676 - if( translit[x].cTo1 ) nOut++; 1677 - if( c==0x0429 || c== 0x0449 ) nOut += 2; 1684 + if( tbl[x].cFrom==c ){ 1685 + if( tbl[x].cTo1 ){ 1686 + nOut++; 1687 + if( tbl[x].cTo2 ){ 1688 + nOut++; 1689 + if( tbl[x].cTo3 ){ 1690 + nOut++; 1691 + } 1692 + } 1693 + } 1678 1694 break; 1679 - }else if( translit[x].cFrom>c ){ 1695 + }else if( tbl[x].cFrom>c ){ 1680 1696 xTop = x-1; 1681 1697 }else{ 1682 1698 xBtm = x+1; 1683 1699 } 1684 1700 } 1685 1701 } 1686 1702 }