sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit ce11e1f19554539441aaf3f8a035fc44acef7426
parent 113caaf67725d65dd2c57d379bf92ee44712e52f
Author: FRIGN <dev@frign.de>
Date:   Thu Feb 12 16:13:29 +0100

Add section for laces in lowerrune and upperrune and more ranges

This is a special third kind of structure found in Unicode, besides
singletons and ranges.
This dramatically reduces the number of explicit singletons in the
lookup tables.
Also, I changed the awk-script so that it can sort trivial
translations as well, breaking down the LOC even more.

The binary size of tr dropped from 67K to 51K.

Diffstat:
libutf/lowerrune.c | 1367+++++++------------------------------------------------------------------------
libutf/upperrune.c | 1056+++++++------------------------------------------------------------------------
2 files changed, 194 insertions(+), 2229 deletions(-)
diff --git a/libutf/lowerrune.c b/libutf/lowerrune.c @@ -4,13 +4,60 @@ #include "../utf.h" #include "runetype.h" +static Rune lower4[][2] = { + { 0x0101, 0x012F }, + { 0x0133, 0x0137 }, + { 0x013A, 0x0148 }, + { 0x014B, 0x0177 }, + { 0x017A, 0x017E }, + { 0x0183, 0x0185 }, + { 0x01A1, 0x01A5 }, + { 0x01B4, 0x01B6 }, + { 0x01CE, 0x01DC }, + { 0x01DF, 0x01EF }, + { 0x01F9, 0x021F }, + { 0x0223, 0x0233 }, + { 0x0247, 0x024F }, + { 0x0371, 0x0373 }, + { 0x03D9, 0x03EF }, + { 0x0461, 0x0481 }, + { 0x048B, 0x04BF }, + { 0x04C2, 0x04CE }, + { 0x04D1, 0x052F }, + { 0x1E01, 0x1E95 }, + { 0x1EA1, 0x1EFF }, + { 0x2C68, 0x2C6C }, + { 0x2C81, 0x2CE3 }, + { 0x2CEC, 0x2CEE }, + { 0xA641, 0xA66D }, + { 0xA681, 0xA69B }, + { 0xA723, 0xA72F }, + { 0xA733, 0xA76F }, + { 0xA77A, 0xA77C }, + { 0xA77F, 0xA787 }, + { 0xA791, 0xA793 }, + { 0xA797, 0xA7A9 }, +}; + static Rune lower2[][3] = { { 0x0061, 0x007A, 0x0041 }, { 0x00E0, 0x00F6, 0x00C0 }, { 0x00F8, 0x00FE, 0x00D8 }, + { 0x01AA, 0x01AB, 0x01AA }, + { 0x0234, 0x0239, 0x0234 }, { 0x023F, 0x0240, 0x2C7E }, { 0x0256, 0x0257, 0x0189 }, + { 0x025D, 0x025F, 0x025D }, + { 0x026D, 0x026E, 0x026D }, + { 0x0273, 0x0274, 0x0273 }, + { 0x0276, 0x027C, 0x0276 }, + { 0x027E, 0x027F, 0x027E }, + { 0x0281, 0x0282, 0x0281 }, + { 0x0284, 0x0286, 0x0284 }, { 0x028A, 0x028B, 0x01B1 }, + { 0x028D, 0x0291, 0x028D }, + { 0x0295, 0x029D, 0x0295 }, + { 0x029F, 0x02AF, 0x029F }, { 0x037B, 0x037D, 0x03FD }, { 0x03AD, 0x03AF, 0x0388 }, { 0x03B1, 0x03C1, 0x0391 }, @@ -19,6 +66,12 @@ static Rune lower2[][3] = { { 0x0430, 0x044F, 0x0410 }, { 0x0450, 0x045F, 0x0400 }, { 0x0561, 0x0586, 0x0531 }, + { 0x1D00, 0x1D2B, 0x1D00 }, + { 0x1D6B, 0x1D77, 0x1D6B }, + { 0x1D7A, 0x1D7C, 0x1D7A }, + { 0x1D7E, 0x1D9A, 0x1D7E }, + { 0x1E96, 0x1E9A, 0x1E96 }, + { 0x1E9C, 0x1E9D, 0x1E9C }, { 0x1F00, 0x1F07, 0x1F08 }, { 0x1F10, 0x1F15, 0x1F18 }, { 0x1F20, 0x1F27, 0x1F28 }, @@ -35,87 +88,68 @@ static Rune lower2[][3] = { { 0x1F90, 0x1F97, 0x1F98 }, { 0x1FA0, 0x1FA7, 0x1FA8 }, { 0x1FB0, 0x1FB1, 0x1FB8 }, + { 0x1FB6, 0x1FB7, 0x1FB6 }, + { 0x1FC6, 0x1FC7, 0x1FC6 }, { 0x1FD0, 0x1FD1, 0x1FD8 }, + { 0x1FD2, 0x1FD3, 0x1FD2 }, + { 0x1FD6, 0x1FD7, 0x1FD6 }, { 0x1FE0, 0x1FE1, 0x1FE8 }, + { 0x1FE2, 0x1FE4, 0x1FE2 }, + { 0x1FE6, 0x1FE7, 0x1FE6 }, + { 0x1FF6, 0x1FF7, 0x1FF6 }, + { 0x210E, 0x210F, 0x210E }, + { 0x213C, 0x213D, 0x213C }, + { 0x2146, 0x2149, 0x2146 }, { 0x2C30, 0x2C5E, 0x2C00 }, + { 0x2C77, 0x2C7B, 0x2C77 }, { 0x2D00, 0x2D25, 0x10A0 }, + { 0xA730, 0xA731, 0xA730 }, + { 0xA771, 0xA778, 0xA771 }, + { 0xA794, 0xA795, 0xA794 }, + { 0xAB30, 0xAB5A, 0xAB30 }, + { 0xAB64, 0xAB65, 0xAB64 }, + { 0xFB00, 0xFB06, 0xFB00 }, + { 0xFB13, 0xFB17, 0xFB13 }, { 0xFF41, 0xFF5A, 0xFF21 }, { 0x10428, 0x1044F, 0x10400 }, { 0x118C0, 0x118DF, 0x118A0 }, + { 0x1D41A, 0x1D433, 0x1D41A }, + { 0x1D44E, 0x1D454, 0x1D44E }, + { 0x1D456, 0x1D467, 0x1D456 }, + { 0x1D482, 0x1D49B, 0x1D482 }, + { 0x1D4B6, 0x1D4B9, 0x1D4B6 }, + { 0x1D4BD, 0x1D4C3, 0x1D4BD }, + { 0x1D4C5, 0x1D4CF, 0x1D4C5 }, + { 0x1D4EA, 0x1D503, 0x1D4EA }, + { 0x1D51E, 0x1D537, 0x1D51E }, + { 0x1D552, 0x1D56B, 0x1D552 }, + { 0x1D586, 0x1D59F, 0x1D586 }, + { 0x1D5BA, 0x1D5D3, 0x1D5BA }, + { 0x1D5EE, 0x1D607, 0x1D5EE }, + { 0x1D622, 0x1D63B, 0x1D622 }, + { 0x1D656, 0x1D66F, 0x1D656 }, + { 0x1D68A, 0x1D6A5, 0x1D68A }, + { 0x1D6C2, 0x1D6DA, 0x1D6C2 }, + { 0x1D6DC, 0x1D6E1, 0x1D6DC }, + { 0x1D6FC, 0x1D714, 0x1D6FC }, + { 0x1D716, 0x1D71B, 0x1D716 }, + { 0x1D736, 0x1D74E, 0x1D736 }, + { 0x1D750, 0x1D755, 0x1D750 }, + { 0x1D770, 0x1D788, 0x1D770 }, + { 0x1D78A, 0x1D78F, 0x1D78A }, + { 0x1D7AA, 0x1D7C2, 0x1D7AA }, + { 0x1D7C4, 0x1D7C9, 0x1D7C4 }, }; static Rune lower1[][2] = { { 0x00B5, 0x039C }, { 0x00DF, 0x00DF }, { 0x00FF, 0x0178 }, - { 0x0101, 0x0100 }, - { 0x0103, 0x0102 }, - { 0x0105, 0x0104 }, - { 0x0107, 0x0106 }, - { 0x0109, 0x0108 }, - { 0x010B, 0x010A }, - { 0x010D, 0x010C }, - { 0x010F, 0x010E }, - { 0x0111, 0x0110 }, - { 0x0113, 0x0112 }, - { 0x0115, 0x0114 }, - { 0x0117, 0x0116 }, - { 0x0119, 0x0118 }, - { 0x011B, 0x011A }, - { 0x011D, 0x011C }, - { 0x011F, 0x011E }, - { 0x0121, 0x0120 }, - { 0x0123, 0x0122 }, - { 0x0125, 0x0124 }, - { 0x0127, 0x0126 }, - { 0x0129, 0x0128 }, - { 0x012B, 0x012A }, - { 0x012D, 0x012C }, - { 0x012F, 0x012E }, { 0x0131, 0x0049 }, - { 0x0133, 0x0132 }, - { 0x0135, 0x0134 }, - { 0x0137, 0x0136 }, { 0x0138, 0x0138 }, - { 0x013A, 0x0139 }, - { 0x013C, 0x013B }, - { 0x013E, 0x013D }, - { 0x0140, 0x013F }, - { 0x0142, 0x0141 }, - { 0x0144, 0x0143 }, - { 0x0146, 0x0145 }, - { 0x0148, 0x0147 }, { 0x0149, 0x0149 }, - { 0x014B, 0x014A }, - { 0x014D, 0x014C }, - { 0x014F, 0x014E }, - { 0x0151, 0x0150 }, - { 0x0153, 0x0152 }, - { 0x0155, 0x0154 }, - { 0x0157, 0x0156 }, - { 0x0159, 0x0158 }, - { 0x015B, 0x015A }, - { 0x015D, 0x015C }, - { 0x015F, 0x015E }, - { 0x0161, 0x0160 }, - { 0x0163, 0x0162 }, - { 0x0165, 0x0164 }, - { 0x0167, 0x0166 }, - { 0x0169, 0x0168 }, - { 0x016B, 0x016A }, - { 0x016D, 0x016C }, - { 0x016F, 0x016E }, - { 0x0171, 0x0170 }, - { 0x0173, 0x0172 }, - { 0x0175, 0x0174 }, - { 0x0177, 0x0176 }, - { 0x017A, 0x0179 }, - { 0x017C, 0x017B }, - { 0x017E, 0x017D }, { 0x017F, 0x0053 }, { 0x0180, 0x0243 }, - { 0x0183, 0x0182 }, - { 0x0185, 0x0184 }, { 0x0188, 0x0187 }, { 0x018C, 0x018B }, { 0x018D, 0x018D }, @@ -125,16 +159,9 @@ static Rune lower1[][2] = { { 0x019A, 0x023D }, { 0x019B, 0x019B }, { 0x019E, 0x0220 }, - { 0x01A1, 0x01A0 }, - { 0x01A3, 0x01A2 }, - { 0x01A5, 0x01A4 }, { 0x01A8, 0x01A7 }, - { 0x01AA, 0x01AA }, - { 0x01AB, 0x01AB }, { 0x01AD, 0x01AC }, { 0x01B0, 0x01AF }, - { 0x01B4, 0x01B3 }, - { 0x01B6, 0x01B5 }, { 0x01B9, 0x01B8 }, { 0x01BA, 0x01BA }, { 0x01BD, 0x01BC }, @@ -143,70 +170,13 @@ static Rune lower1[][2] = { { 0x01C6, 0x01C4 }, { 0x01C9, 0x01C7 }, { 0x01CC, 0x01CA }, - { 0x01CE, 0x01CD }, - { 0x01D0, 0x01CF }, - { 0x01D2, 0x01D1 }, - { 0x01D4, 0x01D3 }, - { 0x01D6, 0x01D5 }, - { 0x01D8, 0x01D7 }, - { 0x01DA, 0x01D9 }, - { 0x01DC, 0x01DB }, { 0x01DD, 0x018E }, - { 0x01DF, 0x01DE }, - { 0x01E1, 0x01E0 }, - { 0x01E3, 0x01E2 }, - { 0x01E5, 0x01E4 }, - { 0x01E7, 0x01E6 }, - { 0x01E9, 0x01E8 }, - { 0x01EB, 0x01EA }, - { 0x01ED, 0x01EC }, - { 0x01EF, 0x01EE }, { 0x01F0, 0x01F0 }, { 0x01F3, 0x01F1 }, { 0x01F5, 0x01F4 }, - { 0x01F9, 0x01F8 }, - { 0x01FB, 0x01FA }, - { 0x01FD, 0x01FC }, - { 0x01FF, 0x01FE }, - { 0x0201, 0x0200 }, - { 0x0203, 0x0202 }, - { 0x0205, 0x0204 }, - { 0x0207, 0x0206 }, - { 0x0209, 0x0208 }, - { 0x020B, 0x020A }, - { 0x020D, 0x020C }, - { 0x020F, 0x020E }, - { 0x0211, 0x0210 }, - { 0x0213, 0x0212 }, - { 0x0215, 0x0214 }, - { 0x0217, 0x0216 }, - { 0x0219, 0x0218 }, - { 0x021B, 0x021A }, - { 0x021D, 0x021C }, - { 0x021F, 0x021E }, { 0x0221, 0x0221 }, - { 0x0223, 0x0222 }, - { 0x0225, 0x0224 }, - { 0x0227, 0x0226 }, - { 0x0229, 0x0228 }, - { 0x022B, 0x022A }, - { 0x022D, 0x022C }, - { 0x022F, 0x022E }, - { 0x0231, 0x0230 }, - { 0x0233, 0x0232 }, - { 0x0234, 0x0234 }, - { 0x0235, 0x0235 }, - { 0x0236, 0x0236 }, - { 0x0237, 0x0237 }, - { 0x0238, 0x0238 }, - { 0x0239, 0x0239 }, { 0x023C, 0x023B }, { 0x0242, 0x0241 }, - { 0x0247, 0x0246 }, - { 0x0249, 0x0248 }, - { 0x024B, 0x024A }, - { 0x024D, 0x024C }, - { 0x024F, 0x024E }, { 0x0250, 0x2C6F }, { 0x0251, 0x2C6D }, { 0x0252, 0x2C70 }, @@ -218,9 +188,6 @@ static Rune lower1[][2] = { { 0x025A, 0x025A }, { 0x025B, 0x0190 }, { 0x025C, 0xA7AB }, - { 0x025D, 0x025D }, - { 0x025E, 0x025E }, - { 0x025F, 0x025F }, { 0x0260, 0x0193 }, { 0x0261, 0xA7AC }, { 0x0262, 0x0262 }, @@ -234,72 +201,21 @@ static Rune lower1[][2] = { { 0x026A, 0x026A }, { 0x026B, 0x2C62 }, { 0x026C, 0xA7AD }, - { 0x026D, 0x026D }, - { 0x026E, 0x026E }, { 0x026F, 0x019C }, { 0x0270, 0x0270 }, { 0x0271, 0x2C6E }, { 0x0272, 0x019D }, - { 0x0273, 0x0273 }, - { 0x0274, 0x0274 }, { 0x0275, 0x019F }, - { 0x0276, 0x0276 }, - { 0x0277, 0x0277 }, - { 0x0278, 0x0278 }, - { 0x0279, 0x0279 }, - { 0x027A, 0x027A }, - { 0x027B, 0x027B }, - { 0x027C, 0x027C }, { 0x027D, 0x2C64 }, - { 0x027E, 0x027E }, - { 0x027F, 0x027F }, { 0x0280, 0x01A6 }, - { 0x0281, 0x0281 }, - { 0x0282, 0x0282 }, { 0x0283, 0x01A9 }, - { 0x0284, 0x0284 }, - { 0x0285, 0x0285 }, - { 0x0286, 0x0286 }, { 0x0287, 0xA7B1 }, { 0x0288, 0x01AE }, { 0x0289, 0x0244 }, { 0x028C, 0x0245 }, - { 0x028D, 0x028D }, - { 0x028E, 0x028E }, - { 0x028F, 0x028F }, - { 0x0290, 0x0290 }, - { 0x0291, 0x0291 }, { 0x0292, 0x01B7 }, { 0x0293, 0x0293 }, - { 0x0295, 0x0295 }, - { 0x0296, 0x0296 }, - { 0x0297, 0x0297 }, - { 0x0298, 0x0298 }, - { 0x0299, 0x0299 }, - { 0x029A, 0x029A }, - { 0x029B, 0x029B }, - { 0x029C, 0x029C }, - { 0x029D, 0x029D }, { 0x029E, 0xA7B0 }, - { 0x029F, 0x029F }, - { 0x02A0, 0x02A0 }, - { 0x02A1, 0x02A1 }, - { 0x02A2, 0x02A2 }, - { 0x02A3, 0x02A3 }, - { 0x02A4, 0x02A4 }, - { 0x02A5, 0x02A5 }, - { 0x02A6, 0x02A6 }, - { 0x02A7, 0x02A7 }, - { 0x02A8, 0x02A8 }, - { 0x02A9, 0x02A9 }, - { 0x02AA, 0x02AA }, - { 0x02AB, 0x02AB }, - { 0x02AC, 0x02AC }, - { 0x02AD, 0x02AD }, - { 0x02AE, 0x02AE }, - { 0x02AF, 0x02AF }, - { 0x0371, 0x0370 }, - { 0x0373, 0x0372 }, { 0x0377, 0x0376 }, { 0x0390, 0x0390 }, { 0x03AC, 0x0386 }, @@ -311,18 +227,6 @@ static Rune lower1[][2] = { { 0x03D5, 0x03A6 }, { 0x03D6, 0x03A0 }, { 0x03D7, 0x03CF }, - { 0x03D9, 0x03D8 }, - { 0x03DB, 0x03DA }, - { 0x03DD, 0x03DC }, - { 0x03DF, 0x03DE }, - { 0x03E1, 0x03E0 }, - { 0x03E3, 0x03E2 }, - { 0x03E5, 0x03E4 }, - { 0x03E7, 0x03E6 }, - { 0x03E9, 0x03E8 }, - { 0x03EB, 0x03EA }, - { 0x03ED, 0x03EC }, - { 0x03EF, 0x03EE }, { 0x03F0, 0x039A }, { 0x03F1, 0x03A1 }, { 0x03F2, 0x03F9 }, @@ -331,330 +235,12 @@ static Rune lower1[][2] = { { 0x03F8, 0x03F7 }, { 0x03FB, 0x03FA }, { 0x03FC, 0x03FC }, - { 0x0461, 0x0460 }, - { 0x0463, 0x0462 }, - { 0x0465, 0x0464 }, - { 0x0467, 0x0466 }, - { 0x0469, 0x0468 }, - { 0x046B, 0x046A }, - { 0x046D, 0x046C }, - { 0x046F, 0x046E }, - { 0x0471, 0x0470 }, - { 0x0473, 0x0472 }, - { 0x0475, 0x0474 }, - { 0x0477, 0x0476 }, - { 0x0479, 0x0478 }, - { 0x047B, 0x047A }, - { 0x047D, 0x047C }, - { 0x047F, 0x047E }, - { 0x0481, 0x0480 }, - { 0x048B, 0x048A }, - { 0x048D, 0x048C }, - { 0x048F, 0x048E }, - { 0x0491, 0x0490 }, - { 0x0493, 0x0492 }, - { 0x0495, 0x0494 }, - { 0x0497, 0x0496 }, - { 0x0499, 0x0498 }, - { 0x049B, 0x049A }, - { 0x049D, 0x049C }, - { 0x049F, 0x049E }, - { 0x04A1, 0x04A0 }, - { 0x04A3, 0x04A2 }, - { 0x04A5, 0x04A4 }, - { 0x04A7, 0x04A6 }, - { 0x04A9, 0x04A8 }, - { 0x04AB, 0x04AA }, - { 0x04AD, 0x04AC }, - { 0x04AF, 0x04AE }, - { 0x04B1, 0x04B0 }, - { 0x04B3, 0x04B2 }, - { 0x04B5, 0x04B4 }, - { 0x04B7, 0x04B6 }, - { 0x04B9, 0x04B8 }, - { 0x04BB, 0x04BA }, - { 0x04BD, 0x04BC }, - { 0x04BF, 0x04BE }, - { 0x04C2, 0x04C1 }, - { 0x04C4, 0x04C3 }, - { 0x04C6, 0x04C5 }, - { 0x04C8, 0x04C7 }, - { 0x04CA, 0x04C9 }, - { 0x04CC, 0x04CB }, - { 0x04CE, 0x04CD }, { 0x04CF, 0x04C0 }, - { 0x04D1, 0x04D0 }, - { 0x04D3, 0x04D2 }, - { 0x04D5, 0x04D4 }, - { 0x04D7, 0x04D6 }, - { 0x04D9, 0x04D8 }, - { 0x04DB, 0x04DA }, - { 0x04DD, 0x04DC }, - { 0x04DF, 0x04DE }, - { 0x04E1, 0x04E0 }, - { 0x04E3, 0x04E2 }, - { 0x04E5, 0x04E4 }, - { 0x04E7, 0x04E6 }, - { 0x04E9, 0x04E8 }, - { 0x04EB, 0x04EA }, - { 0x04ED, 0x04EC }, - { 0x04EF, 0x04EE }, - { 0x04F1, 0x04F0 }, - { 0x04F3, 0x04F2 }, - { 0x04F5, 0x04F4 }, - { 0x04F7, 0x04F6 }, - { 0x04F9, 0x04F8 }, - { 0x04FB, 0x04FA }, - { 0x04FD, 0x04FC }, - { 0x04FF, 0x04FE }, - { 0x0501, 0x0500 }, - { 0x0503, 0x0502 }, - { 0x0505, 0x0504 }, - { 0x0507, 0x0506 }, - { 0x0509, 0x0508 }, - { 0x050B, 0x050A }, - { 0x050D, 0x050C }, - { 0x050F, 0x050E }, - { 0x0511, 0x0510 }, - { 0x0513, 0x0512 }, - { 0x0515, 0x0514 }, - { 0x0517, 0x0516 }, - { 0x0519, 0x0518 }, - { 0x051B, 0x051A }, - { 0x051D, 0x051C }, - { 0x051F, 0x051E }, - { 0x0521, 0x0520 }, - { 0x0523, 0x0522 }, - { 0x0525, 0x0524 }, - { 0x0527, 0x0526 }, - { 0x0529, 0x0528 }, - { 0x052B, 0x052A }, - { 0x052D, 0x052C }, - { 0x052F, 0x052E }, { 0x0587, 0x0587 }, - { 0x1D00, 0x1D00 }, - { 0x1D01, 0x1D01 }, - { 0x1D02, 0x1D02 }, - { 0x1D03, 0x1D03 }, - { 0x1D04, 0x1D04 }, - { 0x1D05, 0x1D05 }, - { 0x1D06, 0x1D06 }, - { 0x1D07, 0x1D07 }, - { 0x1D08, 0x1D08 }, - { 0x1D09, 0x1D09 }, - { 0x1D0A, 0x1D0A }, - { 0x1D0B, 0x1D0B }, - { 0x1D0C, 0x1D0C }, - { 0x1D0D, 0x1D0D }, - { 0x1D0E, 0x1D0E }, - { 0x1D0F, 0x1D0F }, - { 0x1D10, 0x1D10 }, - { 0x1D11, 0x1D11 }, - { 0x1D12, 0x1D12 }, - { 0x1D13, 0x1D13 }, - { 0x1D14, 0x1D14 }, - { 0x1D15, 0x1D15 }, - { 0x1D16, 0x1D16 }, - { 0x1D17, 0x1D17 }, - { 0x1D18, 0x1D18 }, - { 0x1D19, 0x1D19 }, - { 0x1D1A, 0x1D1A }, - { 0x1D1B, 0x1D1B }, - { 0x1D1C, 0x1D1C }, - { 0x1D1D, 0x1D1D }, - { 0x1D1E, 0x1D1E }, - { 0x1D1F, 0x1D1F }, - { 0x1D20, 0x1D20 }, - { 0x1D21, 0x1D21 }, - { 0x1D22, 0x1D22 }, - { 0x1D23, 0x1D23 }, - { 0x1D24, 0x1D24 }, - { 0x1D25, 0x1D25 }, - { 0x1D26, 0x1D26 }, - { 0x1D27, 0x1D27 }, - { 0x1D28, 0x1D28 }, - { 0x1D29, 0x1D29 }, - { 0x1D2A, 0x1D2A }, - { 0x1D2B, 0x1D2B }, - { 0x1D6B, 0x1D6B }, - { 0x1D6C, 0x1D6C }, - { 0x1D6D, 0x1D6D }, - { 0x1D6E, 0x1D6E }, - { 0x1D6F, 0x1D6F }, - { 0x1D70, 0x1D70 }, - { 0x1D71, 0x1D71 }, - { 0x1D72, 0x1D72 }, - { 0x1D73, 0x1D73 }, - { 0x1D74, 0x1D74 }, - { 0x1D75, 0x1D75 }, - { 0x1D76, 0x1D76 }, - { 0x1D77, 0x1D77 }, { 0x1D79, 0xA77D }, - { 0x1D7A, 0x1D7A }, - { 0x1D7B, 0x1D7B }, - { 0x1D7C, 0x1D7C }, { 0x1D7D, 0x2C63 }, - { 0x1D7E, 0x1D7E }, - { 0x1D7F, 0x1D7F }, - { 0x1D80, 0x1D80 }, - { 0x1D81, 0x1D81 }, - { 0x1D82, 0x1D82 }, - { 0x1D83, 0x1D83 }, - { 0x1D84, 0x1D84 }, - { 0x1D85, 0x1D85 }, - { 0x1D86, 0x1D86 }, - { 0x1D87, 0x1D87 }, - { 0x1D88, 0x1D88 }, - { 0x1D89, 0x1D89 }, - { 0x1D8A, 0x1D8A }, - { 0x1D8B, 0x1D8B }, - { 0x1D8C, 0x1D8C }, - { 0x1D8D, 0x1D8D }, - { 0x1D8E, 0x1D8E }, - { 0x1D8F, 0x1D8F }, - { 0x1D90, 0x1D90 }, - { 0x1D91, 0x1D91 }, - { 0x1D92, 0x1D92 }, - { 0x1D93, 0x1D93 }, - { 0x1D94, 0x1D94 }, - { 0x1D95, 0x1D95 }, - { 0x1D96, 0x1D96 }, - { 0x1D97, 0x1D97 }, - { 0x1D98, 0x1D98 }, - { 0x1D99, 0x1D99 }, - { 0x1D9A, 0x1D9A }, - { 0x1E01, 0x1E00 }, - { 0x1E03, 0x1E02 }, - { 0x1E05, 0x1E04 }, - { 0x1E07, 0x1E06 }, - { 0x1E09, 0x1E08 }, - { 0x1E0B, 0x1E0A }, - { 0x1E0D, 0x1E0C }, - { 0x1E0F, 0x1E0E }, - { 0x1E11, 0x1E10 }, - { 0x1E13, 0x1E12 }, - { 0x1E15, 0x1E14 }, - { 0x1E17, 0x1E16 }, - { 0x1E19, 0x1E18 }, - { 0x1E1B, 0x1E1A }, - { 0x1E1D, 0x1E1C }, - { 0x1E1F, 0x1E1E }, - { 0x1E21, 0x1E20 }, - { 0x1E23, 0x1E22 }, - { 0x1E25, 0x1E24 }, - { 0x1E27, 0x1E26 }, - { 0x1E29, 0x1E28 }, - { 0x1E2B, 0x1E2A }, - { 0x1E2D, 0x1E2C }, - { 0x1E2F, 0x1E2E }, - { 0x1E31, 0x1E30 }, - { 0x1E33, 0x1E32 }, - { 0x1E35, 0x1E34 }, - { 0x1E37, 0x1E36 }, - { 0x1E39, 0x1E38 }, - { 0x1E3B, 0x1E3A }, - { 0x1E3D, 0x1E3C }, - { 0x1E3F, 0x1E3E }, - { 0x1E41, 0x1E40 }, - { 0x1E43, 0x1E42 }, - { 0x1E45, 0x1E44 }, - { 0x1E47, 0x1E46 }, - { 0x1E49, 0x1E48 }, - { 0x1E4B, 0x1E4A }, - { 0x1E4D, 0x1E4C }, - { 0x1E4F, 0x1E4E }, - { 0x1E51, 0x1E50 }, - { 0x1E53, 0x1E52 }, - { 0x1E55, 0x1E54 }, - { 0x1E57, 0x1E56 }, - { 0x1E59, 0x1E58 }, - { 0x1E5B, 0x1E5A }, - { 0x1E5D, 0x1E5C }, - { 0x1E5F, 0x1E5E }, - { 0x1E61, 0x1E60 }, - { 0x1E63, 0x1E62 }, - { 0x1E65, 0x1E64 }, - { 0x1E67, 0x1E66 }, - { 0x1E69, 0x1E68 }, - { 0x1E6B, 0x1E6A }, - { 0x1E6D, 0x1E6C }, - { 0x1E6F, 0x1E6E }, - { 0x1E71, 0x1E70 }, - { 0x1E73, 0x1E72 }, - { 0x1E75, 0x1E74 }, - { 0x1E77, 0x1E76 }, - { 0x1E79, 0x1E78 }, - { 0x1E7B, 0x1E7A }, - { 0x1E7D, 0x1E7C }, - { 0x1E7F, 0x1E7E }, - { 0x1E81, 0x1E80 }, - { 0x1E83, 0x1E82 }, - { 0x1E85, 0x1E84 }, - { 0x1E87, 0x1E86 }, - { 0x1E89, 0x1E88 }, - { 0x1E8B, 0x1E8A }, - { 0x1E8D, 0x1E8C }, - { 0x1E8F, 0x1E8E }, - { 0x1E91, 0x1E90 }, - { 0x1E93, 0x1E92 }, - { 0x1E95, 0x1E94 }, - { 0x1E96, 0x1E96 }, - { 0x1E97, 0x1E97 }, - { 0x1E98, 0x1E98 }, - { 0x1E99, 0x1E99 }, - { 0x1E9A, 0x1E9A }, { 0x1E9B, 0x1E60 }, - { 0x1E9C, 0x1E9C }, - { 0x1E9D, 0x1E9D }, { 0x1E9F, 0x1E9F }, - { 0x1EA1, 0x1EA0 }, - { 0x1EA3, 0x1EA2 }, - { 0x1EA5, 0x1EA4 }, - { 0x1EA7, 0x1EA6 }, - { 0x1EA9, 0x1EA8 }, - { 0x1EAB, 0x1EAA }, - { 0x1EAD, 0x1EAC }, - { 0x1EAF, 0x1EAE }, - { 0x1EB1, 0x1EB0 }, - { 0x1EB3, 0x1EB2 }, - { 0x1EB5, 0x1EB4 }, - { 0x1EB7, 0x1EB6 }, - { 0x1EB9, 0x1EB8 }, - { 0x1EBB, 0x1EBA }, - { 0x1EBD, 0x1EBC }, - { 0x1EBF, 0x1EBE }, - { 0x1EC1, 0x1EC0 }, - { 0x1EC3, 0x1EC2 }, - { 0x1EC5, 0x1EC4 }, - { 0x1EC7, 0x1EC6 }, - { 0x1EC9, 0x1EC8 }, - { 0x1ECB, 0x1ECA }, - { 0x1ECD, 0x1ECC }, - { 0x1ECF, 0x1ECE }, - { 0x1ED1, 0x1ED0 }, - { 0x1ED3, 0x1ED2 }, - { 0x1ED5, 0x1ED4 }, - { 0x1ED7, 0x1ED6 }, - { 0x1ED9, 0x1ED8 }, - { 0x1EDB, 0x1EDA }, - { 0x1EDD, 0x1EDC }, - { 0x1EDF, 0x1EDE }, - { 0x1EE1, 0x1EE0 }, - { 0x1EE3, 0x1EE2 }, - { 0x1EE5, 0x1EE4 }, - { 0x1EE7, 0x1EE6 }, - { 0x1EE9, 0x1EE8 }, - { 0x1EEB, 0x1EEA }, - { 0x1EED, 0x1EEC }, - { 0x1EEF, 0x1EEE }, - { 0x1EF1, 0x1EF0 }, - { 0x1EF3, 0x1EF2 }, - { 0x1EF5, 0x1EF4 }, - { 0x1EF7, 0x1EF6 }, - { 0x1EF9, 0x1EF8 }, - { 0x1EFB, 0x1EFA }, - { 0x1EFD, 0x1EFC }, - { 0x1EFF, 0x1EFE }, { 0x1F50, 0x1F50 }, { 0x1F51, 0x1F59 }, { 0x1F52, 0x1F52 }, @@ -666,778 +252,46 @@ static Rune lower1[][2] = { { 0x1FB2, 0x1FB2 }, { 0x1FB3, 0x1FBC }, { 0x1FB4, 0x1FB4 }, - { 0x1FB6, 0x1FB6 }, - { 0x1FB7, 0x1FB7 }, { 0x1FBE, 0x0399 }, { 0x1FC2, 0x1FC2 }, { 0x1FC3, 0x1FCC }, { 0x1FC4, 0x1FC4 }, - { 0x1FC6, 0x1FC6 }, - { 0x1FC7, 0x1FC7 }, - { 0x1FD2, 0x1FD2 }, - { 0x1FD3, 0x1FD3 }, - { 0x1FD6, 0x1FD6 }, - { 0x1FD7, 0x1FD7 }, - { 0x1FE2, 0x1FE2 }, - { 0x1FE3, 0x1FE3 }, - { 0x1FE4, 0x1FE4 }, { 0x1FE5, 0x1FEC }, - { 0x1FE6, 0x1FE6 }, - { 0x1FE7, 0x1FE7 }, { 0x1FF2, 0x1FF2 }, { 0x1FF3, 0x1FFC }, { 0x1FF4, 0x1FF4 }, - { 0x1FF6, 0x1FF6 }, - { 0x1FF7, 0x1FF7 }, { 0x210A, 0x210A }, - { 0x210E, 0x210E }, - { 0x210F, 0x210F }, { 0x2113, 0x2113 }, { 0x212F, 0x212F }, { 0x2134, 0x2134 }, { 0x2139, 0x2139 }, - { 0x213C, 0x213C }, - { 0x213D, 0x213D }, - { 0x2146, 0x2146 }, - { 0x2147, 0x2147 }, - { 0x2148, 0x2148 }, - { 0x2149, 0x2149 }, { 0x214E, 0x2132 }, { 0x2184, 0x2183 }, { 0x2C61, 0x2C60 }, { 0x2C65, 0x023A }, { 0x2C66, 0x023E }, - { 0x2C68, 0x2C67 }, - { 0x2C6A, 0x2C69 }, - { 0x2C6C, 0x2C6B }, { 0x2C71, 0x2C71 }, { 0x2C73, 0x2C72 }, { 0x2C74, 0x2C74 }, { 0x2C76, 0x2C75 }, - { 0x2C77, 0x2C77 }, - { 0x2C78, 0x2C78 }, - { 0x2C79, 0x2C79 }, - { 0x2C7A, 0x2C7A }, - { 0x2C7B, 0x2C7B }, - { 0x2C81, 0x2C80 }, - { 0x2C83, 0x2C82 }, - { 0x2C85, 0x2C84 }, - { 0x2C87, 0x2C86 }, - { 0x2C89, 0x2C88 }, - { 0x2C8B, 0x2C8A }, - { 0x2C8D, 0x2C8C }, - { 0x2C8F, 0x2C8E }, - { 0x2C91, 0x2C90 }, - { 0x2C93, 0x2C92 }, - { 0x2C95, 0x2C94 }, - { 0x2C97, 0x2C96 }, - { 0x2C99, 0x2C98 }, - { 0x2C9B, 0x2C9A }, - { 0x2C9D, 0x2C9C }, - { 0x2C9F, 0x2C9E }, - { 0x2CA1, 0x2CA0 }, - { 0x2CA3, 0x2CA2 }, - { 0x2CA5, 0x2CA4 }, - { 0x2CA7, 0x2CA6 }, - { 0x2CA9, 0x2CA8 }, - { 0x2CAB, 0x2CAA }, - { 0x2CAD, 0x2CAC }, - { 0x2CAF, 0x2CAE }, - { 0x2CB1, 0x2CB0 }, - { 0x2CB3, 0x2CB2 }, - { 0x2CB5, 0x2CB4 }, - { 0x2CB7, 0x2CB6 }, - { 0x2CB9, 0x2CB8 }, - { 0x2CBB, 0x2CBA }, - { 0x2CBD, 0x2CBC }, - { 0x2CBF, 0x2CBE }, - { 0x2CC1, 0x2CC0 }, - { 0x2CC3, 0x2CC2 }, - { 0x2CC5, 0x2CC4 }, - { 0x2CC7, 0x2CC6 }, - { 0x2CC9, 0x2CC8 }, - { 0x2CCB, 0x2CCA }, - { 0x2CCD, 0x2CCC }, - { 0x2CCF, 0x2CCE }, - { 0x2CD1, 0x2CD0 }, - { 0x2CD3, 0x2CD2 }, - { 0x2CD5, 0x2CD4 }, - { 0x2CD7, 0x2CD6 }, - { 0x2CD9, 0x2CD8 }, - { 0x2CDB, 0x2CDA }, - { 0x2CDD, 0x2CDC }, - { 0x2CDF, 0x2CDE }, - { 0x2CE1, 0x2CE0 }, - { 0x2CE3, 0x2CE2 }, { 0x2CE4, 0x2CE4 }, - { 0x2CEC, 0x2CEB }, - { 0x2CEE, 0x2CED }, { 0x2CF3, 0x2CF2 }, { 0x2D27, 0x10C7 }, { 0x2D2D, 0x10CD }, - { 0xA641, 0xA640 }, - { 0xA643, 0xA642 }, - { 0xA645, 0xA644 }, - { 0xA647, 0xA646 }, - { 0xA649, 0xA648 }, - { 0xA64B, 0xA64A }, - { 0xA64D, 0xA64C }, - { 0xA64F, 0xA64E }, - { 0xA651, 0xA650 }, - { 0xA653, 0xA652 }, - { 0xA655, 0xA654 }, - { 0xA657, 0xA656 }, - { 0xA659, 0xA658 }, - { 0xA65B, 0xA65A }, - { 0xA65D, 0xA65C }, - { 0xA65F, 0xA65E }, - { 0xA661, 0xA660 }, - { 0xA663, 0xA662 }, - { 0xA665, 0xA664 }, - { 0xA667, 0xA666 }, - { 0xA669, 0xA668 }, - { 0xA66B, 0xA66A }, - { 0xA66D, 0xA66C }, - { 0xA681, 0xA680 }, - { 0xA683, 0xA682 }, - { 0xA685, 0xA684 }, - { 0xA687, 0xA686 }, - { 0xA689, 0xA688 }, - { 0xA68B, 0xA68A }, - { 0xA68D, 0xA68C }, - { 0xA68F, 0xA68E }, - { 0xA691, 0xA690 }, - { 0xA693, 0xA692 }, - { 0xA695, 0xA694 }, - { 0xA697, 0xA696 }, - { 0xA699, 0xA698 }, - { 0xA69B, 0xA69A }, - { 0xA723, 0xA722 }, - { 0xA725, 0xA724 }, - { 0xA727, 0xA726 }, - { 0xA729, 0xA728 }, - { 0xA72B, 0xA72A }, - { 0xA72D, 0xA72C }, - { 0xA72F, 0xA72E }, - { 0xA730, 0xA730 }, - { 0xA731, 0xA731 }, - { 0xA733, 0xA732 }, - { 0xA735, 0xA734 }, - { 0xA737, 0xA736 }, - { 0xA739, 0xA738 }, - { 0xA73B, 0xA73A }, - { 0xA73D, 0xA73C }, - { 0xA73F, 0xA73E }, - { 0xA741, 0xA740 }, - { 0xA743, 0xA742 }, - { 0xA745, 0xA744 }, - { 0xA747, 0xA746 }, - { 0xA749, 0xA748 }, - { 0xA74B, 0xA74A }, - { 0xA74D, 0xA74C }, - { 0xA74F, 0xA74E }, - { 0xA751, 0xA750 }, - { 0xA753, 0xA752 }, - { 0xA755, 0xA754 }, - { 0xA757, 0xA756 }, - { 0xA759, 0xA758 }, - { 0xA75B, 0xA75A }, - { 0xA75D, 0xA75C }, - { 0xA75F, 0xA75E }, - { 0xA761, 0xA760 }, - { 0xA763, 0xA762 }, - { 0xA765, 0xA764 }, - { 0xA767, 0xA766 }, - { 0xA769, 0xA768 }, - { 0xA76B, 0xA76A }, - { 0xA76D, 0xA76C }, - { 0xA76F, 0xA76E }, - { 0xA771, 0xA771 }, - { 0xA772, 0xA772 }, - { 0xA773, 0xA773 }, - { 0xA774, 0xA774 }, - { 0xA775, 0xA775 }, - { 0xA776, 0xA776 }, - { 0xA777, 0xA777 }, - { 0xA778, 0xA778 }, - { 0xA77A, 0xA779 }, - { 0xA77C, 0xA77B }, - { 0xA77F, 0xA77E }, - { 0xA781, 0xA780 }, - { 0xA783, 0xA782 }, - { 0xA785, 0xA784 }, - { 0xA787, 0xA786 }, { 0xA78C, 0xA78B }, { 0xA78E, 0xA78E }, - { 0xA791, 0xA790 }, - { 0xA793, 0xA792 }, - { 0xA794, 0xA794 }, - { 0xA795, 0xA795 }, - { 0xA797, 0xA796 }, - { 0xA799, 0xA798 }, - { 0xA79B, 0xA79A }, - { 0xA79D, 0xA79C }, - { 0xA79F, 0xA79E }, - { 0xA7A1, 0xA7A0 }, - { 0xA7A3, 0xA7A2 }, - { 0xA7A5, 0xA7A4 }, - { 0xA7A7, 0xA7A6 }, - { 0xA7A9, 0xA7A8 }, { 0xA7FA, 0xA7FA }, - { 0xAB30, 0xAB30 }, - { 0xAB31, 0xAB31 }, - { 0xAB32, 0xAB32 }, - { 0xAB33, 0xAB33 }, - { 0xAB34, 0xAB34 }, - { 0xAB35, 0xAB35 }, - { 0xAB36, 0xAB36 }, - { 0xAB37, 0xAB37 }, - { 0xAB38, 0xAB38 }, - { 0xAB39, 0xAB39 }, - { 0xAB3A, 0xAB3A }, - { 0xAB3B, 0xAB3B }, - { 0xAB3C, 0xAB3C }, - { 0xAB3D, 0xAB3D }, - { 0xAB3E, 0xAB3E }, - { 0xAB3F, 0xAB3F }, - { 0xAB40, 0xAB40 }, - { 0xAB41, 0xAB41 }, - { 0xAB42, 0xAB42 }, - { 0xAB43, 0xAB43 }, - { 0xAB44, 0xAB44 }, - { 0xAB45, 0xAB45 }, - { 0xAB46, 0xAB46 }, - { 0xAB47, 0xAB47 }, - { 0xAB48, 0xAB48 }, - { 0xAB49, 0xAB49 }, - { 0xAB4A, 0xAB4A }, - { 0xAB4B, 0xAB4B }, - { 0xAB4C, 0xAB4C }, - { 0xAB4D, 0xAB4D }, - { 0xAB4E, 0xAB4E }, - { 0xAB4F, 0xAB4F }, - { 0xAB50, 0xAB50 }, - { 0xAB51, 0xAB51 }, - { 0xAB52, 0xAB52 }, - { 0xAB53, 0xAB53 }, - { 0xAB54, 0xAB54 }, - { 0xAB55, 0xAB55 }, - { 0xAB56, 0xAB56 }, - { 0xAB57, 0xAB57 }, - { 0xAB58, 0xAB58 }, - { 0xAB59, 0xAB59 }, - { 0xAB5A, 0xAB5A }, - { 0xAB64, 0xAB64 }, - { 0xAB65, 0xAB65 }, - { 0xFB00, 0xFB00 }, - { 0xFB01, 0xFB01 }, - { 0xFB02, 0xFB02 }, - { 0xFB03, 0xFB03 }, - { 0xFB04, 0xFB04 }, - { 0xFB05, 0xFB05 }, - { 0xFB06, 0xFB06 }, - { 0xFB13, 0xFB13 }, - { 0xFB14, 0xFB14 }, - { 0xFB15, 0xFB15 }, - { 0xFB16, 0xFB16 }, - { 0xFB17, 0xFB17 }, - { 0x1D41A, 0x1D41A }, - { 0x1D41B, 0x1D41B }, - { 0x1D41C, 0x1D41C }, - { 0x1D41D, 0x1D41D }, - { 0x1D41E, 0x1D41E }, - { 0x1D41F, 0x1D41F }, - { 0x1D420, 0x1D420 }, - { 0x1D421, 0x1D421 }, - { 0x1D422, 0x1D422 }, - { 0x1D423, 0x1D423 }, - { 0x1D424, 0x1D424 }, - { 0x1D425, 0x1D425 }, - { 0x1D426, 0x1D426 }, - { 0x1D427, 0x1D427 }, - { 0x1D428, 0x1D428 }, - { 0x1D429, 0x1D429 }, - { 0x1D42A, 0x1D42A }, - { 0x1D42B, 0x1D42B }, - { 0x1D42C, 0x1D42C }, - { 0x1D42D, 0x1D42D }, - { 0x1D42E, 0x1D42E }, - { 0x1D42F, 0x1D42F }, - { 0x1D430, 0x1D430 }, - { 0x1D431, 0x1D431 }, - { 0x1D432, 0x1D432 }, - { 0x1D433, 0x1D433 }, - { 0x1D44E, 0x1D44E }, - { 0x1D44F, 0x1D44F }, - { 0x1D450, 0x1D450 }, - { 0x1D451, 0x1D451 }, - { 0x1D452, 0x1D452 }, - { 0x1D453, 0x1D453 }, - { 0x1D454, 0x1D454 }, - { 0x1D456, 0x1D456 }, - { 0x1D457, 0x1D457 }, - { 0x1D458, 0x1D458 }, - { 0x1D459, 0x1D459 }, - { 0x1D45A, 0x1D45A }, - { 0x1D45B, 0x1D45B }, - { 0x1D45C, 0x1D45C }, - { 0x1D45D, 0x1D45D }, - { 0x1D45E, 0x1D45E }, - { 0x1D45F, 0x1D45F }, - { 0x1D460, 0x1D460 }, - { 0x1D461, 0x1D461 }, - { 0x1D462, 0x1D462 }, - { 0x1D463, 0x1D463 }, - { 0x1D464, 0x1D464 }, - { 0x1D465, 0x1D465 }, - { 0x1D466, 0x1D466 }, - { 0x1D467, 0x1D467 }, - { 0x1D482, 0x1D482 }, - { 0x1D483, 0x1D483 }, - { 0x1D484, 0x1D484 }, - { 0x1D485, 0x1D485 }, - { 0x1D486, 0x1D486 }, - { 0x1D487, 0x1D487 }, - { 0x1D488, 0x1D488 }, - { 0x1D489, 0x1D489 }, - { 0x1D48A, 0x1D48A }, - { 0x1D48B, 0x1D48B }, - { 0x1D48C, 0x1D48C }, - { 0x1D48D, 0x1D48D }, - { 0x1D48E, 0x1D48E }, - { 0x1D48F, 0x1D48F }, - { 0x1D490, 0x1D490 }, - { 0x1D491, 0x1D491 }, - { 0x1D492, 0x1D492 }, - { 0x1D493, 0x1D493 }, - { 0x1D494, 0x1D494 }, - { 0x1D495, 0x1D495 }, - { 0x1D496, 0x1D496 }, - { 0x1D497, 0x1D497 }, - { 0x1D498, 0x1D498 }, - { 0x1D499, 0x1D499 }, - { 0x1D49A, 0x1D49A }, - { 0x1D49B, 0x1D49B }, - { 0x1D4B6, 0x1D4B6 }, - { 0x1D4B7, 0x1D4B7 }, - { 0x1D4B8, 0x1D4B8 }, - { 0x1D4B9, 0x1D4B9 }, { 0x1D4BB, 0x1D4BB }, - { 0x1D4BD, 0x1D4BD }, - { 0x1D4BE, 0x1D4BE }, - { 0x1D4BF, 0x1D4BF }, - { 0x1D4C0, 0x1D4C0 }, - { 0x1D4C1, 0x1D4C1 }, - { 0x1D4C2, 0x1D4C2 }, - { 0x1D4C3, 0x1D4C3 }, - { 0x1D4C5, 0x1D4C5 }, - { 0x1D4C6, 0x1D4C6 }, - { 0x1D4C7, 0x1D4C7 }, - { 0x1D4C8, 0x1D4C8 }, - { 0x1D4C9, 0x1D4C9 }, - { 0x1D4CA, 0x1D4CA }, - { 0x1D4CB, 0x1D4CB }, - { 0x1D4CC, 0x1D4CC }, - { 0x1D4CD, 0x1D4CD }, - { 0x1D4CE, 0x1D4CE }, - { 0x1D4CF, 0x1D4CF }, - { 0x1D4EA, 0x1D4EA }, - { 0x1D4EB, 0x1D4EB }, - { 0x1D4EC, 0x1D4EC }, - { 0x1D4ED, 0x1D4ED }, - { 0x1D4EE, 0x1D4EE }, - { 0x1D4EF, 0x1D4EF }, - { 0x1D4F0, 0x1D4F0 }, - { 0x1D4F1, 0x1D4F1 }, - { 0x1D4F2, 0x1D4F2 }, - { 0x1D4F3, 0x1D4F3 }, - { 0x1D4F4, 0x1D4F4 }, - { 0x1D4F5, 0x1D4F5 }, - { 0x1D4F6, 0x1D4F6 }, - { 0x1D4F7, 0x1D4F7 }, - { 0x1D4F8, 0x1D4F8 }, - { 0x1D4F9, 0x1D4F9 }, - { 0x1D4FA, 0x1D4FA }, - { 0x1D4FB, 0x1D4FB }, - { 0x1D4FC, 0x1D4FC }, - { 0x1D4FD, 0x1D4FD }, - { 0x1D4FE, 0x1D4FE }, - { 0x1D4FF, 0x1D4FF }, - { 0x1D500, 0x1D500 }, - { 0x1D501, 0x1D501 }, - { 0x1D502, 0x1D502 }, - { 0x1D503, 0x1D503 }, - { 0x1D51E, 0x1D51E }, - { 0x1D51F, 0x1D51F }, - { 0x1D520, 0x1D520 }, - { 0x1D521, 0x1D521 }, - { 0x1D522, 0x1D522 }, - { 0x1D523, 0x1D523 }, - { 0x1D524, 0x1D524 }, - { 0x1D525, 0x1D525 }, - { 0x1D526, 0x1D526 }, - { 0x1D527, 0x1D527 }, - { 0x1D528, 0x1D528 }, - { 0x1D529, 0x1D529 }, - { 0x1D52A, 0x1D52A }, - { 0x1D52B, 0x1D52B }, - { 0x1D52C, 0x1D52C }, - { 0x1D52D, 0x1D52D }, - { 0x1D52E, 0x1D52E }, - { 0x1D52F, 0x1D52F }, - { 0x1D530, 0x1D530 }, - { 0x1D531, 0x1D531 }, - { 0x1D532, 0x1D532 }, - { 0x1D533, 0x1D533 }, - { 0x1D534, 0x1D534 }, - { 0x1D535, 0x1D535 }, - { 0x1D536, 0x1D536 }, - { 0x1D537, 0x1D537 }, - { 0x1D552, 0x1D552 }, - { 0x1D553, 0x1D553 }, - { 0x1D554, 0x1D554 }, - { 0x1D555, 0x1D555 }, - { 0x1D556, 0x1D556 }, - { 0x1D557, 0x1D557 }, - { 0x1D558, 0x1D558 }, - { 0x1D559, 0x1D559 }, - { 0x1D55A, 0x1D55A }, - { 0x1D55B, 0x1D55B }, - { 0x1D55C, 0x1D55C }, - { 0x1D55D, 0x1D55D }, - { 0x1D55E, 0x1D55E }, - { 0x1D55F, 0x1D55F }, - { 0x1D560, 0x1D560 }, - { 0x1D561, 0x1D561 }, - { 0x1D562, 0x1D562 }, - { 0x1D563, 0x1D563 }, - { 0x1D564, 0x1D564 }, - { 0x1D565, 0x1D565 }, - { 0x1D566, 0x1D566 }, - { 0x1D567, 0x1D567 }, - { 0x1D568, 0x1D568 }, - { 0x1D569, 0x1D569 }, - { 0x1D56A, 0x1D56A }, - { 0x1D56B, 0x1D56B }, - { 0x1D586, 0x1D586 }, - { 0x1D587, 0x1D587 }, - { 0x1D588, 0x1D588 }, - { 0x1D589, 0x1D589 }, - { 0x1D58A, 0x1D58A }, - { 0x1D58B, 0x1D58B }, - { 0x1D58C, 0x1D58C }, - { 0x1D58D, 0x1D58D }, - { 0x1D58E, 0x1D58E }, - { 0x1D58F, 0x1D58F }, - { 0x1D590, 0x1D590 }, - { 0x1D591, 0x1D591 }, - { 0x1D592, 0x1D592 }, - { 0x1D593, 0x1D593 }, - { 0x1D594, 0x1D594 }, - { 0x1D595, 0x1D595 }, - { 0x1D596, 0x1D596 }, - { 0x1D597, 0x1D597 }, - { 0x1D598, 0x1D598 }, - { 0x1D599, 0x1D599 }, - { 0x1D59A, 0x1D59A }, - { 0x1D59B, 0x1D59B }, - { 0x1D59C, 0x1D59C }, - { 0x1D59D, 0x1D59D }, - { 0x1D59E, 0x1D59E }, - { 0x1D59F, 0x1D59F }, - { 0x1D5BA, 0x1D5BA }, - { 0x1D5BB, 0x1D5BB }, - { 0x1D5BC, 0x1D5BC }, - { 0x1D5BD, 0x1D5BD }, - { 0x1D5BE, 0x1D5BE }, - { 0x1D5BF, 0x1D5BF }, - { 0x1D5C0, 0x1D5C0 }, - { 0x1D5C1, 0x1D5C1 }, - { 0x1D5C2, 0x1D5C2 }, - { 0x1D5C3, 0x1D5C3 }, - { 0x1D5C4, 0x1D5C4 }, - { 0x1D5C5, 0x1D5C5 }, - { 0x1D5C6, 0x1D5C6 }, - { 0x1D5C7, 0x1D5C7 }, - { 0x1D5C8, 0x1D5C8 }, - { 0x1D5C9, 0x1D5C9 }, - { 0x1D5CA, 0x1D5CA }, - { 0x1D5CB, 0x1D5CB }, - { 0x1D5CC, 0x1D5CC }, - { 0x1D5CD, 0x1D5CD }, - { 0x1D5CE, 0x1D5CE }, - { 0x1D5CF, 0x1D5CF }, - { 0x1D5D0, 0x1D5D0 }, - { 0x1D5D1, 0x1D5D1 }, - { 0x1D5D2, 0x1D5D2 }, - { 0x1D5D3, 0x1D5D3 }, - { 0x1D5EE, 0x1D5EE }, - { 0x1D5EF, 0x1D5EF }, - { 0x1D5F0, 0x1D5F0 }, - { 0x1D5F1, 0x1D5F1 }, - { 0x1D5F2, 0x1D5F2 }, - { 0x1D5F3, 0x1D5F3 }, - { 0x1D5F4, 0x1D5F4 }, - { 0x1D5F5, 0x1D5F5 }, - { 0x1D5F6, 0x1D5F6 }, - { 0x1D5F7, 0x1D5F7 }, - { 0x1D5F8, 0x1D5F8 }, - { 0x1D5F9, 0x1D5F9 }, - { 0x1D5FA, 0x1D5FA }, - { 0x1D5FB, 0x1D5FB }, - { 0x1D5FC, 0x1D5FC }, - { 0x1D5FD, 0x1D5FD }, - { 0x1D5FE, 0x1D5FE }, - { 0x1D5FF, 0x1D5FF }, - { 0x1D600, 0x1D600 }, - { 0x1D601, 0x1D601 }, - { 0x1D602, 0x1D602 }, - { 0x1D603, 0x1D603 }, - { 0x1D604, 0x1D604 }, - { 0x1D605, 0x1D605 }, - { 0x1D606, 0x1D606 }, - { 0x1D607, 0x1D607 }, - { 0x1D622, 0x1D622 }, - { 0x1D623, 0x1D623 }, - { 0x1D624, 0x1D624 }, - { 0x1D625, 0x1D625 }, - { 0x1D626, 0x1D626 }, - { 0x1D627, 0x1D627 }, - { 0x1D628, 0x1D628 }, - { 0x1D629, 0x1D629 }, - { 0x1D62A, 0x1D62A }, - { 0x1D62B, 0x1D62B }, - { 0x1D62C, 0x1D62C }, - { 0x1D62D, 0x1D62D }, - { 0x1D62E, 0x1D62E }, - { 0x1D62F, 0x1D62F }, - { 0x1D630, 0x1D630 }, - { 0x1D631, 0x1D631 }, - { 0x1D632, 0x1D632 }, - { 0x1D633, 0x1D633 }, - { 0x1D634, 0x1D634 }, - { 0x1D635, 0x1D635 }, - { 0x1D636, 0x1D636 }, - { 0x1D637, 0x1D637 }, - { 0x1D638, 0x1D638 }, - { 0x1D639, 0x1D639 }, - { 0x1D63A, 0x1D63A }, - { 0x1D63B, 0x1D63B }, - { 0x1D656, 0x1D656 }, - { 0x1D657, 0x1D657 }, - { 0x1D658, 0x1D658 }, - { 0x1D659, 0x1D659 }, - { 0x1D65A, 0x1D65A }, - { 0x1D65B, 0x1D65B }, - { 0x1D65C, 0x1D65C }, - { 0x1D65D, 0x1D65D }, - { 0x1D65E, 0x1D65E }, - { 0x1D65F, 0x1D65F }, - { 0x1D660, 0x1D660 }, - { 0x1D661, 0x1D661 }, - { 0x1D662, 0x1D662 }, - { 0x1D663, 0x1D663 }, - { 0x1D664, 0x1D664 }, - { 0x1D665, 0x1D665 }, - { 0x1D666, 0x1D666 }, - { 0x1D667, 0x1D667 }, - { 0x1D668, 0x1D668 }, - { 0x1D669, 0x1D669 }, - { 0x1D66A, 0x1D66A }, - { 0x1D66B, 0x1D66B }, - { 0x1D66C, 0x1D66C }, - { 0x1D66D, 0x1D66D }, - { 0x1D66E, 0x1D66E }, - { 0x1D66F, 0x1D66F }, - { 0x1D68A, 0x1D68A }, - { 0x1D68B, 0x1D68B }, - { 0x1D68C, 0x1D68C }, - { 0x1D68D, 0x1D68D }, - { 0x1D68E, 0x1D68E }, - { 0x1D68F, 0x1D68F }, - { 0x1D690, 0x1D690 }, - { 0x1D691, 0x1D691 }, - { 0x1D692, 0x1D692 }, - { 0x1D693, 0x1D693 }, - { 0x1D694, 0x1D694 }, - { 0x1D695, 0x1D695 }, - { 0x1D696, 0x1D696 }, - { 0x1D697, 0x1D697 }, - { 0x1D698, 0x1D698 }, - { 0x1D699, 0x1D699 }, - { 0x1D69A, 0x1D69A }, - { 0x1D69B, 0x1D69B }, - { 0x1D69C, 0x1D69C }, - { 0x1D69D, 0x1D69D }, - { 0x1D69E, 0x1D69E }, - { 0x1D69F, 0x1D69F }, - { 0x1D6A0, 0x1D6A0 }, - { 0x1D6A1, 0x1D6A1 }, - { 0x1D6A2, 0x1D6A2 }, - { 0x1D6A3, 0x1D6A3 }, - { 0x1D6A4, 0x1D6A4 }, - { 0x1D6A5, 0x1D6A5 }, - { 0x1D6C2, 0x1D6C2 }, - { 0x1D6C3, 0x1D6C3 }, - { 0x1D6C4, 0x1D6C4 }, - { 0x1D6C5, 0x1D6C5 }, - { 0x1D6C6, 0x1D6C6 }, - { 0x1D6C7, 0x1D6C7 }, - { 0x1D6C8, 0x1D6C8 }, - { 0x1D6C9, 0x1D6C9 }, - { 0x1D6CA, 0x1D6CA }, - { 0x1D6CB, 0x1D6CB }, - { 0x1D6CC, 0x1D6CC }, - { 0x1D6CD, 0x1D6CD }, - { 0x1D6CE, 0x1D6CE }, - { 0x1D6CF, 0x1D6CF }, - { 0x1D6D0, 0x1D6D0 }, - { 0x1D6D1, 0x1D6D1 }, - { 0x1D6D2, 0x1D6D2 }, - { 0x1D6D3, 0x1D6D3 }, - { 0x1D6D4, 0x1D6D4 }, - { 0x1D6D5, 0x1D6D5 }, - { 0x1D6D6, 0x1D6D6 }, - { 0x1D6D7, 0x1D6D7 }, - { 0x1D6D8, 0x1D6D8 }, - { 0x1D6D9, 0x1D6D9 }, - { 0x1D6DA, 0x1D6DA }, - { 0x1D6DC, 0x1D6DC }, - { 0x1D6DD, 0x1D6DD }, - { 0x1D6DE, 0x1D6DE }, - { 0x1D6DF, 0x1D6DF }, - { 0x1D6E0, 0x1D6E0 }, - { 0x1D6E1, 0x1D6E1 }, - { 0x1D6FC, 0x1D6FC }, - { 0x1D6FD, 0x1D6FD }, - { 0x1D6FE, 0x1D6FE }, - { 0x1D6FF, 0x1D6FF }, - { 0x1D700, 0x1D700 }, - { 0x1D701, 0x1D701 }, - { 0x1D702, 0x1D702 }, - { 0x1D703, 0x1D703 }, - { 0x1D704, 0x1D704 }, - { 0x1D705, 0x1D705 }, - { 0x1D706, 0x1D706 }, - { 0x1D707, 0x1D707 }, - { 0x1D708, 0x1D708 }, - { 0x1D709, 0x1D709 }, - { 0x1D70A, 0x1D70A }, - { 0x1D70B, 0x1D70B }, - { 0x1D70C, 0x1D70C }, - { 0x1D70D, 0x1D70D }, - { 0x1D70E, 0x1D70E }, - { 0x1D70F, 0x1D70F }, - { 0x1D710, 0x1D710 }, - { 0x1D711, 0x1D711 }, - { 0x1D712, 0x1D712 }, - { 0x1D713, 0x1D713 }, - { 0x1D714, 0x1D714 }, - { 0x1D716, 0x1D716 }, - { 0x1D717, 0x1D717 }, - { 0x1D718, 0x1D718 }, - { 0x1D719, 0x1D719 }, - { 0x1D71A, 0x1D71A }, - { 0x1D71B, 0x1D71B }, - { 0x1D736, 0x1D736 }, - { 0x1D737, 0x1D737 }, - { 0x1D738, 0x1D738 }, - { 0x1D739, 0x1D739 }, - { 0x1D73A, 0x1D73A }, - { 0x1D73B, 0x1D73B }, - { 0x1D73C, 0x1D73C }, - { 0x1D73D, 0x1D73D }, - { 0x1D73E, 0x1D73E }, - { 0x1D73F, 0x1D73F }, - { 0x1D740, 0x1D740 }, - { 0x1D741, 0x1D741 }, - { 0x1D742, 0x1D742 }, - { 0x1D743, 0x1D743 }, - { 0x1D744, 0x1D744 }, - { 0x1D745, 0x1D745 }, - { 0x1D746, 0x1D746 }, - { 0x1D747, 0x1D747 }, - { 0x1D748, 0x1D748 }, - { 0x1D749, 0x1D749 }, - { 0x1D74A, 0x1D74A }, - { 0x1D74B, 0x1D74B }, - { 0x1D74C, 0x1D74C }, - { 0x1D74D, 0x1D74D }, - { 0x1D74E, 0x1D74E }, - { 0x1D750, 0x1D750 }, - { 0x1D751, 0x1D751 }, - { 0x1D752, 0x1D752 }, - { 0x1D753, 0x1D753 }, - { 0x1D754, 0x1D754 }, - { 0x1D755, 0x1D755 }, - { 0x1D770, 0x1D770 }, - { 0x1D771, 0x1D771 }, - { 0x1D772, 0x1D772 }, - { 0x1D773, 0x1D773 }, - { 0x1D774, 0x1D774 }, - { 0x1D775, 0x1D775 }, - { 0x1D776, 0x1D776 }, - { 0x1D777, 0x1D777 }, - { 0x1D778, 0x1D778 }, - { 0x1D779, 0x1D779 }, - { 0x1D77A, 0x1D77A }, - { 0x1D77B, 0x1D77B }, - { 0x1D77C, 0x1D77C }, - { 0x1D77D, 0x1D77D }, - { 0x1D77E, 0x1D77E }, - { 0x1D77F, 0x1D77F }, - { 0x1D780, 0x1D780 }, - { 0x1D781, 0x1D781 }, - { 0x1D782, 0x1D782 }, - { 0x1D783, 0x1D783 }, - { 0x1D784, 0x1D784 }, - { 0x1D785, 0x1D785 }, - { 0x1D786, 0x1D786 }, - { 0x1D787, 0x1D787 }, - { 0x1D788, 0x1D788 }, - { 0x1D78A, 0x1D78A }, - { 0x1D78B, 0x1D78B }, - { 0x1D78C, 0x1D78C }, - { 0x1D78D, 0x1D78D }, - { 0x1D78E, 0x1D78E }, - { 0x1D78F, 0x1D78F }, - { 0x1D7AA, 0x1D7AA }, - { 0x1D7AB, 0x1D7AB }, - { 0x1D7AC, 0x1D7AC }, - { 0x1D7AD, 0x1D7AD }, - { 0x1D7AE, 0x1D7AE }, - { 0x1D7AF, 0x1D7AF }, - { 0x1D7B0, 0x1D7B0 }, - { 0x1D7B1, 0x1D7B1 }, - { 0x1D7B2, 0x1D7B2 }, - { 0x1D7B3, 0x1D7B3 }, - { 0x1D7B4, 0x1D7B4 }, - { 0x1D7B5, 0x1D7B5 }, - { 0x1D7B6, 0x1D7B6 }, - { 0x1D7B7, 0x1D7B7 }, - { 0x1D7B8, 0x1D7B8 }, - { 0x1D7B9, 0x1D7B9 }, - { 0x1D7BA, 0x1D7BA }, - { 0x1D7BB, 0x1D7BB }, - { 0x1D7BC, 0x1D7BC }, - { 0x1D7BD, 0x1D7BD }, - { 0x1D7BE, 0x1D7BE }, - { 0x1D7BF, 0x1D7BF }, - { 0x1D7C0, 0x1D7C0 }, - { 0x1D7C1, 0x1D7C1 }, - { 0x1D7C2, 0x1D7C2 }, - { 0x1D7C4, 0x1D7C4 }, - { 0x1D7C5, 0x1D7C5 }, - { 0x1D7C6, 0x1D7C6 }, - { 0x1D7C7, 0x1D7C7 }, - { 0x1D7C8, 0x1D7C8 }, - { 0x1D7C9, 0x1D7C9 }, { 0x1D7CB, 0x1D7CB }, }; int islowerrune(Rune r) { + Rune *match; + + if(match = bsearch(&r, lower4, nelem(lower4), sizeof *lower4, &rune2cmp)) + return !((r - match[0]) % 2); if(bsearch(&r, lower2, nelem(lower2), sizeof *lower2, &rune2cmp)) return 1; if(bsearch(&r, lower1, nelem(lower1), sizeof *lower1, &rune1cmp)) @@ -1448,15 +302,16 @@ islowerrune(Rune r) int toupperrune(Rune r) { - Rune *match1, *match2; - - match1 = bsearch(&r, lower1, nelem(lower1), sizeof *lower1, &rune1cmp); - if (match1) - r = match1[1]; - - match2 = bsearch(&r, lower2, nelem(lower2), sizeof *lower2, &rune2cmp); - if (match2) - r = match2[2] + (r - match2[0]); + Rune *match; + match = bsearch(&r, lower4, nelem(lower4), sizeof *lower4, &rune2cmp); + if (match) + return ((r - match[0]) % 2) ? r : r - 1; + match = bsearch(&r, lower2, nelem(lower2), sizeof *lower2, &rune2cmp); + if (match) + return match[2] + (r - match[0]); + match = bsearch(&r, lower1, nelem(lower1), sizeof *lower1, &rune1cmp); + if (match) + return match[1]; return r; } diff --git a/libutf/upperrune.c b/libutf/upperrune.c @@ -4,6 +4,41 @@ #include "../utf.h" #include "runetype.h" +static Rune upper3[][2] = { + { 0x0100, 0x012E }, + { 0x0132, 0x0136 }, + { 0x0139, 0x0147 }, + { 0x014A, 0x0176 }, + { 0x0179, 0x017D }, + { 0x0182, 0x0184 }, + { 0x01A0, 0x01A4 }, + { 0x01B3, 0x01B5 }, + { 0x01CD, 0x01DB }, + { 0x01DE, 0x01EE }, + { 0x01F8, 0x021E }, + { 0x0222, 0x0232 }, + { 0x0246, 0x024E }, + { 0x0370, 0x0372 }, + { 0x03D8, 0x03EE }, + { 0x0460, 0x0480 }, + { 0x048A, 0x04BE }, + { 0x04C1, 0x04CD }, + { 0x04D0, 0x052E }, + { 0x1E00, 0x1E94 }, + { 0x1EA0, 0x1EFE }, + { 0x2C67, 0x2C6B }, + { 0x2C80, 0x2CE2 }, + { 0x2CEB, 0x2CED }, + { 0xA640, 0xA66C }, + { 0xA680, 0xA69A }, + { 0xA722, 0xA72E }, + { 0xA732, 0xA76E }, + { 0xA779, 0xA77B }, + { 0xA77E, 0xA786 }, + { 0xA790, 0xA792 }, + { 0xA796, 0xA7A8 }, +}; + static Rune upper2[][3] = { { 0x0041, 0x005A, 0x0061 }, { 0x00C0, 0x00D6, 0x00E0 }, @@ -14,6 +49,7 @@ static Rune upper2[][3] = { { 0x038E, 0x038F, 0x03CD }, { 0x0391, 0x03A1, 0x03B1 }, { 0x03A3, 0x03AB, 0x03C3 }, + { 0x03D2, 0x03D4, 0x03D2 }, { 0x03FD, 0x03FF, 0x037B }, { 0x0400, 0x040F, 0x0450 }, { 0x0410, 0x042F, 0x0430 }, @@ -34,80 +70,50 @@ static Rune upper2[][3] = { { 0x1FEA, 0x1FEB, 0x1F7A }, { 0x1FF8, 0x1FF9, 0x1F78 }, { 0x1FFA, 0x1FFB, 0x1F7C }, + { 0x210B, 0x210D, 0x210B }, + { 0x2110, 0x2112, 0x2110 }, + { 0x2119, 0x211D, 0x2119 }, + { 0x212C, 0x212D, 0x212C }, + { 0x2130, 0x2131, 0x2130 }, + { 0x213E, 0x213F, 0x213E }, { 0x2C00, 0x2C2E, 0x2C30 }, { 0x2C7E, 0x2C7F, 0x023F }, { 0xFF21, 0xFF3A, 0xFF41 }, { 0x10400, 0x10427, 0x10428 }, { 0x118A0, 0x118BF, 0x118C0 }, + { 0x1D400, 0x1D419, 0x1D400 }, + { 0x1D434, 0x1D44D, 0x1D434 }, + { 0x1D468, 0x1D481, 0x1D468 }, + { 0x1D49E, 0x1D49F, 0x1D49E }, + { 0x1D4A5, 0x1D4A6, 0x1D4A5 }, + { 0x1D4A9, 0x1D4AC, 0x1D4A9 }, + { 0x1D4AE, 0x1D4B5, 0x1D4AE }, + { 0x1D4D0, 0x1D4E9, 0x1D4D0 }, + { 0x1D504, 0x1D505, 0x1D504 }, + { 0x1D507, 0x1D50A, 0x1D507 }, + { 0x1D50D, 0x1D514, 0x1D50D }, + { 0x1D516, 0x1D51C, 0x1D516 }, + { 0x1D538, 0x1D539, 0x1D538 }, + { 0x1D53B, 0x1D53E, 0x1D53B }, + { 0x1D540, 0x1D544, 0x1D540 }, + { 0x1D54A, 0x1D550, 0x1D54A }, + { 0x1D56C, 0x1D585, 0x1D56C }, + { 0x1D5A0, 0x1D5B9, 0x1D5A0 }, + { 0x1D5D4, 0x1D5ED, 0x1D5D4 }, + { 0x1D608, 0x1D621, 0x1D608 }, + { 0x1D63C, 0x1D655, 0x1D63C }, + { 0x1D670, 0x1D689, 0x1D670 }, + { 0x1D6A8, 0x1D6C0, 0x1D6A8 }, + { 0x1D6E2, 0x1D6FA, 0x1D6E2 }, + { 0x1D71C, 0x1D734, 0x1D71C }, + { 0x1D756, 0x1D76E, 0x1D756 }, + { 0x1D790, 0x1D7A8, 0x1D790 }, }; static Rune upper1[][2] = { - { 0x0100, 0x0101 }, - { 0x0102, 0x0103 }, - { 0x0104, 0x0105 }, - { 0x0106, 0x0107 }, - { 0x0108, 0x0109 }, - { 0x010A, 0x010B }, - { 0x010C, 0x010D }, - { 0x010E, 0x010F }, - { 0x0110, 0x0111 }, - { 0x0112, 0x0113 }, - { 0x0114, 0x0115 }, - { 0x0116, 0x0117 }, - { 0x0118, 0x0119 }, - { 0x011A, 0x011B }, - { 0x011C, 0x011D }, - { 0x011E, 0x011F }, - { 0x0120, 0x0121 }, - { 0x0122, 0x0123 }, - { 0x0124, 0x0125 }, - { 0x0126, 0x0127 }, - { 0x0128, 0x0129 }, - { 0x012A, 0x012B }, - { 0x012C, 0x012D }, - { 0x012E, 0x012F }, { 0x0130, 0x0069 }, - { 0x0132, 0x0133 }, - { 0x0134, 0x0135 }, - { 0x0136, 0x0137 }, - { 0x0139, 0x013A }, - { 0x013B, 0x013C }, - { 0x013D, 0x013E }, - { 0x013F, 0x0140 }, - { 0x0141, 0x0142 }, - { 0x0143, 0x0144 }, - { 0x0145, 0x0146 }, - { 0x0147, 0x0148 }, - { 0x014A, 0x014B }, - { 0x014C, 0x014D }, - { 0x014E, 0x014F }, - { 0x0150, 0x0151 }, - { 0x0152, 0x0153 }, - { 0x0154, 0x0155 }, - { 0x0156, 0x0157 }, - { 0x0158, 0x0159 }, - { 0x015A, 0x015B }, - { 0x015C, 0x015D }, - { 0x015E, 0x015F }, - { 0x0160, 0x0161 }, - { 0x0162, 0x0163 }, - { 0x0164, 0x0165 }, - { 0x0166, 0x0167 }, - { 0x0168, 0x0169 }, - { 0x016A, 0x016B }, - { 0x016C, 0x016D }, - { 0x016E, 0x016F }, - { 0x0170, 0x0171 }, - { 0x0172, 0x0173 }, - { 0x0174, 0x0175 }, - { 0x0176, 0x0177 }, { 0x0178, 0x00FF }, - { 0x0179, 0x017A }, - { 0x017B, 0x017C }, - { 0x017D, 0x017E }, { 0x0181, 0x0253 }, - { 0x0182, 0x0183 }, - { 0x0184, 0x0185 }, { 0x0186, 0x0254 }, { 0x0187, 0x0188 }, { 0x018B, 0x018C }, @@ -123,74 +129,23 @@ static Rune upper1[][2] = { { 0x019C, 0x026F }, { 0x019D, 0x0272 }, { 0x019F, 0x0275 }, - { 0x01A0, 0x01A1 }, - { 0x01A2, 0x01A3 }, - { 0x01A4, 0x01A5 }, { 0x01A6, 0x0280 }, { 0x01A7, 0x01A8 }, { 0x01A9, 0x0283 }, { 0x01AC, 0x01AD }, { 0x01AE, 0x0288 }, { 0x01AF, 0x01B0 }, - { 0x01B3, 0x01B4 }, - { 0x01B5, 0x01B6 }, { 0x01B7, 0x0292 }, { 0x01B8, 0x01B9 }, { 0x01BC, 0x01BD }, { 0x01C4, 0x01C6 }, { 0x01C7, 0x01C9 }, { 0x01CA, 0x01CC }, - { 0x01CD, 0x01CE }, - { 0x01CF, 0x01D0 }, - { 0x01D1, 0x01D2 }, - { 0x01D3, 0x01D4 }, - { 0x01D5, 0x01D6 }, - { 0x01D7, 0x01D8 }, - { 0x01D9, 0x01DA }, - { 0x01DB, 0x01DC }, - { 0x01DE, 0x01DF }, - { 0x01E0, 0x01E1 }, - { 0x01E2, 0x01E3 }, - { 0x01E4, 0x01E5 }, - { 0x01E6, 0x01E7 }, - { 0x01E8, 0x01E9 }, - { 0x01EA, 0x01EB }, - { 0x01EC, 0x01ED }, - { 0x01EE, 0x01EF }, { 0x01F1, 0x01F3 }, { 0x01F4, 0x01F5 }, { 0x01F6, 0x0195 }, { 0x01F7, 0x01BF }, - { 0x01F8, 0x01F9 }, - { 0x01FA, 0x01FB }, - { 0x01FC, 0x01FD }, - { 0x01FE, 0x01FF }, - { 0x0200, 0x0201 }, - { 0x0202, 0x0203 }, - { 0x0204, 0x0205 }, - { 0x0206, 0x0207 }, - { 0x0208, 0x0209 }, - { 0x020A, 0x020B }, - { 0x020C, 0x020D }, - { 0x020E, 0x020F }, - { 0x0210, 0x0211 }, - { 0x0212, 0x0213 }, - { 0x0214, 0x0215 }, - { 0x0216, 0x0217 }, - { 0x0218, 0x0219 }, - { 0x021A, 0x021B }, - { 0x021C, 0x021D }, - { 0x021E, 0x021F }, { 0x0220, 0x019E }, - { 0x0222, 0x0223 }, - { 0x0224, 0x0225 }, - { 0x0226, 0x0227 }, - { 0x0228, 0x0229 }, - { 0x022A, 0x022B }, - { 0x022C, 0x022D }, - { 0x022E, 0x022F }, - { 0x0230, 0x0231 }, - { 0x0232, 0x0233 }, { 0x023A, 0x2C65 }, { 0x023B, 0x023C }, { 0x023D, 0x019A }, @@ -199,263 +154,19 @@ static Rune upper1[][2] = { { 0x0243, 0x0180 }, { 0x0244, 0x0289 }, { 0x0245, 0x028C }, - { 0x0246, 0x0247 }, - { 0x0248, 0x0249 }, - { 0x024A, 0x024B }, - { 0x024C, 0x024D }, - { 0x024E, 0x024F }, - { 0x0370, 0x0371 }, - { 0x0372, 0x0373 }, { 0x0376, 0x0377 }, { 0x037F, 0x03F3 }, { 0x0386, 0x03AC }, { 0x038C, 0x03CC }, { 0x03CF, 0x03D7 }, - { 0x03D2, 0x03D2 }, - { 0x03D3, 0x03D3 }, - { 0x03D4, 0x03D4 }, - { 0x03D8, 0x03D9 }, - { 0x03DA, 0x03DB }, - { 0x03DC, 0x03DD }, - { 0x03DE, 0x03DF }, - { 0x03E0, 0x03E1 }, - { 0x03E2, 0x03E3 }, - { 0x03E4, 0x03E5 }, - { 0x03E6, 0x03E7 }, - { 0x03E8, 0x03E9 }, - { 0x03EA, 0x03EB }, - { 0x03EC, 0x03ED }, - { 0x03EE, 0x03EF }, { 0x03F4, 0x03B8 }, { 0x03F7, 0x03F8 }, { 0x03F9, 0x03F2 }, { 0x03FA, 0x03FB }, - { 0x0460, 0x0461 }, - { 0x0462, 0x0463 }, - { 0x0464, 0x0465 }, - { 0x0466, 0x0467 }, - { 0x0468, 0x0469 }, - { 0x046A, 0x046B }, - { 0x046C, 0x046D }, - { 0x046E, 0x046F }, - { 0x0470, 0x0471 }, - { 0x0472, 0x0473 }, - { 0x0474, 0x0475 }, - { 0x0476, 0x0477 }, - { 0x0478, 0x0479 }, - { 0x047A, 0x047B }, - { 0x047C, 0x047D }, - { 0x047E, 0x047F }, - { 0x0480, 0x0481 }, - { 0x048A, 0x048B }, - { 0x048C, 0x048D }, - { 0x048E, 0x048F }, - { 0x0490, 0x0491 }, - { 0x0492, 0x0493 }, - { 0x0494, 0x0495 }, - { 0x0496, 0x0497 }, - { 0x0498, 0x0499 }, - { 0x049A, 0x049B }, - { 0x049C, 0x049D }, - { 0x049E, 0x049F }, - { 0x04A0, 0x04A1 }, - { 0x04A2, 0x04A3 }, - { 0x04A4, 0x04A5 }, - { 0x04A6, 0x04A7 }, - { 0x04A8, 0x04A9 }, - { 0x04AA, 0x04AB }, - { 0x04AC, 0x04AD }, - { 0x04AE, 0x04AF }, - { 0x04B0, 0x04B1 }, - { 0x04B2, 0x04B3 }, - { 0x04B4, 0x04B5 }, - { 0x04B6, 0x04B7 }, - { 0x04B8, 0x04B9 }, - { 0x04BA, 0x04BB }, - { 0x04BC, 0x04BD }, - { 0x04BE, 0x04BF }, { 0x04C0, 0x04CF }, - { 0x04C1, 0x04C2 }, - { 0x04C3, 0x04C4 }, - { 0x04C5, 0x04C6 }, - { 0x04C7, 0x04C8 }, - { 0x04C9, 0x04CA }, - { 0x04CB, 0x04CC }, - { 0x04CD, 0x04CE }, - { 0x04D0, 0x04D1 }, - { 0x04D2, 0x04D3 }, - { 0x04D4, 0x04D5 }, - { 0x04D6, 0x04D7 }, - { 0x04D8, 0x04D9 }, - { 0x04DA, 0x04DB }, - { 0x04DC, 0x04DD }, - { 0x04DE, 0x04DF }, - { 0x04E0, 0x04E1 }, - { 0x04E2, 0x04E3 }, - { 0x04E4, 0x04E5 }, - { 0x04E6, 0x04E7 }, - { 0x04E8, 0x04E9 }, - { 0x04EA, 0x04EB }, - { 0x04EC, 0x04ED }, - { 0x04EE, 0x04EF }, - { 0x04F0, 0x04F1 }, - { 0x04F2, 0x04F3 }, - { 0x04F4, 0x04F5 }, - { 0x04F6, 0x04F7 }, - { 0x04F8, 0x04F9 }, - { 0x04FA, 0x04FB }, - { 0x04FC, 0x04FD }, - { 0x04FE, 0x04FF }, - { 0x0500, 0x0501 }, - { 0x0502, 0x0503 }, - { 0x0504, 0x0505 }, - { 0x0506, 0x0507 }, - { 0x0508, 0x0509 }, - { 0x050A, 0x050B }, - { 0x050C, 0x050D }, - { 0x050E, 0x050F }, - { 0x0510, 0x0511 }, - { 0x0512, 0x0513 }, - { 0x0514, 0x0515 }, - { 0x0516, 0x0517 }, - { 0x0518, 0x0519 }, - { 0x051A, 0x051B }, - { 0x051C, 0x051D }, - { 0x051E, 0x051F }, - { 0x0520, 0x0521 }, - { 0x0522, 0x0523 }, - { 0x0524, 0x0525 }, - { 0x0526, 0x0527 }, - { 0x0528, 0x0529 }, - { 0x052A, 0x052B }, - { 0x052C, 0x052D }, - { 0x052E, 0x052F }, { 0x10C7, 0x2D27 }, { 0x10CD, 0x2D2D }, - { 0x1E00, 0x1E01 }, - { 0x1E02, 0x1E03 }, - { 0x1E04, 0x1E05 }, - { 0x1E06, 0x1E07 }, - { 0x1E08, 0x1E09 }, - { 0x1E0A, 0x1E0B }, - { 0x1E0C, 0x1E0D }, - { 0x1E0E, 0x1E0F }, - { 0x1E10, 0x1E11 }, - { 0x1E12, 0x1E13 }, - { 0x1E14, 0x1E15 }, - { 0x1E16, 0x1E17 }, - { 0x1E18, 0x1E19 }, - { 0x1E1A, 0x1E1B }, - { 0x1E1C, 0x1E1D }, - { 0x1E1E, 0x1E1F }, - { 0x1E20, 0x1E21 }, - { 0x1E22, 0x1E23 }, - { 0x1E24, 0x1E25 }, - { 0x1E26, 0x1E27 }, - { 0x1E28, 0x1E29 }, - { 0x1E2A, 0x1E2B }, - { 0x1E2C, 0x1E2D }, - { 0x1E2E, 0x1E2F }, - { 0x1E30, 0x1E31 }, - { 0x1E32, 0x1E33 }, - { 0x1E34, 0x1E35 }, - { 0x1E36, 0x1E37 }, - { 0x1E38, 0x1E39 }, - { 0x1E3A, 0x1E3B }, - { 0x1E3C, 0x1E3D }, - { 0x1E3E, 0x1E3F }, - { 0x1E40, 0x1E41 }, - { 0x1E42, 0x1E43 }, - { 0x1E44, 0x1E45 }, - { 0x1E46, 0x1E47 }, - { 0x1E48, 0x1E49 }, - { 0x1E4A, 0x1E4B }, - { 0x1E4C, 0x1E4D }, - { 0x1E4E, 0x1E4F }, - { 0x1E50, 0x1E51 }, - { 0x1E52, 0x1E53 }, - { 0x1E54, 0x1E55 }, - { 0x1E56, 0x1E57 }, - { 0x1E58, 0x1E59 }, - { 0x1E5A, 0x1E5B }, - { 0x1E5C, 0x1E5D }, - { 0x1E5E, 0x1E5F }, - { 0x1E60, 0x1E61 }, - { 0x1E62, 0x1E63 }, - { 0x1E64, 0x1E65 }, - { 0x1E66, 0x1E67 }, - { 0x1E68, 0x1E69 }, - { 0x1E6A, 0x1E6B }, - { 0x1E6C, 0x1E6D }, - { 0x1E6E, 0x1E6F }, - { 0x1E70, 0x1E71 }, - { 0x1E72, 0x1E73 }, - { 0x1E74, 0x1E75 }, - { 0x1E76, 0x1E77 }, - { 0x1E78, 0x1E79 }, - { 0x1E7A, 0x1E7B }, - { 0x1E7C, 0x1E7D }, - { 0x1E7E, 0x1E7F }, - { 0x1E80, 0x1E81 }, - { 0x1E82, 0x1E83 }, - { 0x1E84, 0x1E85 }, - { 0x1E86, 0x1E87 }, - { 0x1E88, 0x1E89 }, - { 0x1E8A, 0x1E8B }, - { 0x1E8C, 0x1E8D }, - { 0x1E8E, 0x1E8F }, - { 0x1E90, 0x1E91 }, - { 0x1E92, 0x1E93 }, - { 0x1E94, 0x1E95 }, { 0x1E9E, 0x00DF }, - { 0x1EA0, 0x1EA1 }, - { 0x1EA2, 0x1EA3 }, - { 0x1EA4, 0x1EA5 }, - { 0x1EA6, 0x1EA7 }, - { 0x1EA8, 0x1EA9 }, - { 0x1EAA, 0x1EAB }, - { 0x1EAC, 0x1EAD }, - { 0x1EAE, 0x1EAF }, - { 0x1EB0, 0x1EB1 }, - { 0x1EB2, 0x1EB3 }, - { 0x1EB4, 0x1EB5 }, - { 0x1EB6, 0x1EB7 }, - { 0x1EB8, 0x1EB9 }, - { 0x1EBA, 0x1EBB }, - { 0x1EBC, 0x1EBD }, - { 0x1EBE, 0x1EBF }, - { 0x1EC0, 0x1EC1 }, - { 0x1EC2, 0x1EC3 }, - { 0x1EC4, 0x1EC5 }, - { 0x1EC6, 0x1EC7 }, - { 0x1EC8, 0x1EC9 }, - { 0x1ECA, 0x1ECB }, - { 0x1ECC, 0x1ECD }, - { 0x1ECE, 0x1ECF }, - { 0x1ED0, 0x1ED1 }, - { 0x1ED2, 0x1ED3 }, - { 0x1ED4, 0x1ED5 }, - { 0x1ED6, 0x1ED7 }, - { 0x1ED8, 0x1ED9 }, - { 0x1EDA, 0x1EDB }, - { 0x1EDC, 0x1EDD }, - { 0x1EDE, 0x1EDF }, - { 0x1EE0, 0x1EE1 }, - { 0x1EE2, 0x1EE3 }, - { 0x1EE4, 0x1EE5 }, - { 0x1EE6, 0x1EE7 }, - { 0x1EE8, 0x1EE9 }, - { 0x1EEA, 0x1EEB }, - { 0x1EEC, 0x1EED }, - { 0x1EEE, 0x1EEF }, - { 0x1EF0, 0x1EF1 }, - { 0x1EF2, 0x1EF3 }, - { 0x1EF4, 0x1EF5 }, - { 0x1EF6, 0x1EF7 }, - { 0x1EF8, 0x1EF9 }, - { 0x1EFA, 0x1EFB }, - { 0x1EFC, 0x1EFD }, - { 0x1EFE, 0x1EFF }, { 0x1F59, 0x1F51 }, { 0x1F5B, 0x1F53 }, { 0x1F5D, 0x1F55 }, @@ -463,651 +174,49 @@ static Rune upper1[][2] = { { 0x1FEC, 0x1FE5 }, { 0x2102, 0x2102 }, { 0x2107, 0x2107 }, - { 0x210B, 0x210B }, - { 0x210C, 0x210C }, - { 0x210D, 0x210D }, - { 0x2110, 0x2110 }, - { 0x2111, 0x2111 }, - { 0x2112, 0x2112 }, { 0x2115, 0x2115 }, - { 0x2119, 0x2119 }, - { 0x211A, 0x211A }, - { 0x211B, 0x211B }, - { 0x211C, 0x211C }, - { 0x211D, 0x211D }, { 0x2124, 0x2124 }, { 0x2126, 0x03C9 }, { 0x2128, 0x2128 }, { 0x212A, 0x006B }, { 0x212B, 0x00E5 }, - { 0x212C, 0x212C }, - { 0x212D, 0x212D }, - { 0x2130, 0x2130 }, - { 0x2131, 0x2131 }, { 0x2132, 0x214E }, { 0x2133, 0x2133 }, - { 0x213E, 0x213E }, - { 0x213F, 0x213F }, { 0x2145, 0x2145 }, { 0x2183, 0x2184 }, { 0x2C60, 0x2C61 }, { 0x2C62, 0x026B }, { 0x2C63, 0x1D7D }, { 0x2C64, 0x027D }, - { 0x2C67, 0x2C68 }, - { 0x2C69, 0x2C6A }, - { 0x2C6B, 0x2C6C }, { 0x2C6D, 0x0251 }, { 0x2C6E, 0x0271 }, { 0x2C6F, 0x0250 }, { 0x2C70, 0x0252 }, { 0x2C72, 0x2C73 }, { 0x2C75, 0x2C76 }, - { 0x2C80, 0x2C81 }, - { 0x2C82, 0x2C83 }, - { 0x2C84, 0x2C85 }, - { 0x2C86, 0x2C87 }, - { 0x2C88, 0x2C89 }, - { 0x2C8A, 0x2C8B }, - { 0x2C8C, 0x2C8D }, - { 0x2C8E, 0x2C8F }, - { 0x2C90, 0x2C91 }, - { 0x2C92, 0x2C93 }, - { 0x2C94, 0x2C95 }, - { 0x2C96, 0x2C97 }, - { 0x2C98, 0x2C99 }, - { 0x2C9A, 0x2C9B }, - { 0x2C9C, 0x2C9D }, - { 0x2C9E, 0x2C9F }, - { 0x2CA0, 0x2CA1 }, - { 0x2CA2, 0x2CA3 }, - { 0x2CA4, 0x2CA5 }, - { 0x2CA6, 0x2CA7 }, - { 0x2CA8, 0x2CA9 }, - { 0x2CAA, 0x2CAB }, - { 0x2CAC, 0x2CAD }, - { 0x2CAE, 0x2CAF }, - { 0x2CB0, 0x2CB1 }, - { 0x2CB2, 0x2CB3 }, - { 0x2CB4, 0x2CB5 }, - { 0x2CB6, 0x2CB7 }, - { 0x2CB8, 0x2CB9 }, - { 0x2CBA, 0x2CBB }, - { 0x2CBC, 0x2CBD }, - { 0x2CBE, 0x2CBF }, - { 0x2CC0, 0x2CC1 }, - { 0x2CC2, 0x2CC3 }, - { 0x2CC4, 0x2CC5 }, - { 0x2CC6, 0x2CC7 }, - { 0x2CC8, 0x2CC9 }, - { 0x2CCA, 0x2CCB }, - { 0x2CCC, 0x2CCD }, - { 0x2CCE, 0x2CCF }, - { 0x2CD0, 0x2CD1 }, - { 0x2CD2, 0x2CD3 }, - { 0x2CD4, 0x2CD5 }, - { 0x2CD6, 0x2CD7 }, - { 0x2CD8, 0x2CD9 }, - { 0x2CDA, 0x2CDB }, - { 0x2CDC, 0x2CDD }, - { 0x2CDE, 0x2CDF }, - { 0x2CE0, 0x2CE1 }, - { 0x2CE2, 0x2CE3 }, - { 0x2CEB, 0x2CEC }, - { 0x2CED, 0x2CEE }, { 0x2CF2, 0x2CF3 }, - { 0xA640, 0xA641 }, - { 0xA642, 0xA643 }, - { 0xA644, 0xA645 }, - { 0xA646, 0xA647 }, - { 0xA648, 0xA649 }, - { 0xA64A, 0xA64B }, - { 0xA64C, 0xA64D }, - { 0xA64E, 0xA64F }, - { 0xA650, 0xA651 }, - { 0xA652, 0xA653 }, - { 0xA654, 0xA655 }, - { 0xA656, 0xA657 }, - { 0xA658, 0xA659 }, - { 0xA65A, 0xA65B }, - { 0xA65C, 0xA65D }, - { 0xA65E, 0xA65F }, - { 0xA660, 0xA661 }, - { 0xA662, 0xA663 }, - { 0xA664, 0xA665 }, - { 0xA666, 0xA667 }, - { 0xA668, 0xA669 }, - { 0xA66A, 0xA66B }, - { 0xA66C, 0xA66D }, - { 0xA680, 0xA681 }, - { 0xA682, 0xA683 }, - { 0xA684, 0xA685 }, - { 0xA686, 0xA687 }, - { 0xA688, 0xA689 }, - { 0xA68A, 0xA68B }, - { 0xA68C, 0xA68D }, - { 0xA68E, 0xA68F }, - { 0xA690, 0xA691 }, - { 0xA692, 0xA693 }, - { 0xA694, 0xA695 }, - { 0xA696, 0xA697 }, - { 0xA698, 0xA699 }, - { 0xA69A, 0xA69B }, - { 0xA722, 0xA723 }, - { 0xA724, 0xA725 }, - { 0xA726, 0xA727 }, - { 0xA728, 0xA729 }, - { 0xA72A, 0xA72B }, - { 0xA72C, 0xA72D }, - { 0xA72E, 0xA72F }, - { 0xA732, 0xA733 }, - { 0xA734, 0xA735 }, - { 0xA736, 0xA737 }, - { 0xA738, 0xA739 }, - { 0xA73A, 0xA73B }, - { 0xA73C, 0xA73D }, - { 0xA73E, 0xA73F }, - { 0xA740, 0xA741 }, - { 0xA742, 0xA743 }, - { 0xA744, 0xA745 }, - { 0xA746, 0xA747 }, - { 0xA748, 0xA749 }, - { 0xA74A, 0xA74B }, - { 0xA74C, 0xA74D }, - { 0xA74E, 0xA74F }, - { 0xA750, 0xA751 }, - { 0xA752, 0xA753 }, - { 0xA754, 0xA755 }, - { 0xA756, 0xA757 }, - { 0xA758, 0xA759 }, - { 0xA75A, 0xA75B }, - { 0xA75C, 0xA75D }, - { 0xA75E, 0xA75F }, - { 0xA760, 0xA761 }, - { 0xA762, 0xA763 }, - { 0xA764, 0xA765 }, - { 0xA766, 0xA767 }, - { 0xA768, 0xA769 }, - { 0xA76A, 0xA76B }, - { 0xA76C, 0xA76D }, - { 0xA76E, 0xA76F }, - { 0xA779, 0xA77A }, - { 0xA77B, 0xA77C }, { 0xA77D, 0x1D79 }, - { 0xA77E, 0xA77F }, - { 0xA780, 0xA781 }, - { 0xA782, 0xA783 }, - { 0xA784, 0xA785 }, - { 0xA786, 0xA787 }, { 0xA78B, 0xA78C }, { 0xA78D, 0x0265 }, - { 0xA790, 0xA791 }, - { 0xA792, 0xA793 }, - { 0xA796, 0xA797 }, - { 0xA798, 0xA799 }, - { 0xA79A, 0xA79B }, - { 0xA79C, 0xA79D }, - { 0xA79E, 0xA79F }, - { 0xA7A0, 0xA7A1 }, - { 0xA7A2, 0xA7A3 }, - { 0xA7A4, 0xA7A5 }, - { 0xA7A6, 0xA7A7 }, - { 0xA7A8, 0xA7A9 }, { 0xA7AA, 0x0266 }, { 0xA7AB, 0x025C }, { 0xA7AC, 0x0261 }, { 0xA7AD, 0x026C }, { 0xA7B0, 0x029E }, { 0xA7B1, 0x0287 }, - { 0x1D400, 0x1D400 }, - { 0x1D401, 0x1D401 }, - { 0x1D402, 0x1D402 }, - { 0x1D403, 0x1D403 }, - { 0x1D404, 0x1D404 }, - { 0x1D405, 0x1D405 }, - { 0x1D406, 0x1D406 }, - { 0x1D407, 0x1D407 }, - { 0x1D408, 0x1D408 }, - { 0x1D409, 0x1D409 }, - { 0x1D40A, 0x1D40A }, - { 0x1D40B, 0x1D40B }, - { 0x1D40C, 0x1D40C }, - { 0x1D40D, 0x1D40D }, - { 0x1D40E, 0x1D40E }, - { 0x1D40F, 0x1D40F }, - { 0x1D410, 0x1D410 }, - { 0x1D411, 0x1D411 }, - { 0x1D412, 0x1D412 }, - { 0x1D413, 0x1D413 }, - { 0x1D414, 0x1D414 }, - { 0x1D415, 0x1D415 }, - { 0x1D416, 0x1D416 }, - { 0x1D417, 0x1D417 }, - { 0x1D418, 0x1D418 }, - { 0x1D419, 0x1D419 }, - { 0x1D434, 0x1D434 }, - { 0x1D435, 0x1D435 }, - { 0x1D436, 0x1D436 }, - { 0x1D437, 0x1D437 }, - { 0x1D438, 0x1D438 }, - { 0x1D439, 0x1D439 }, - { 0x1D43A, 0x1D43A }, - { 0x1D43B, 0x1D43B }, - { 0x1D43C, 0x1D43C }, - { 0x1D43D, 0x1D43D }, - { 0x1D43E, 0x1D43E }, - { 0x1D43F, 0x1D43F }, - { 0x1D440, 0x1D440 }, - { 0x1D441, 0x1D441 }, - { 0x1D442, 0x1D442 }, - { 0x1D443, 0x1D443 }, - { 0x1D444, 0x1D444 }, - { 0x1D445, 0x1D445 }, - { 0x1D446, 0x1D446 }, - { 0x1D447, 0x1D447 }, - { 0x1D448, 0x1D448 }, - { 0x1D449, 0x1D449 }, - { 0x1D44A, 0x1D44A }, - { 0x1D44B, 0x1D44B }, - { 0x1D44C, 0x1D44C }, - { 0x1D44D, 0x1D44D }, - { 0x1D468, 0x1D468 }, - { 0x1D469, 0x1D469 }, - { 0x1D46A, 0x1D46A }, - { 0x1D46B, 0x1D46B }, - { 0x1D46C, 0x1D46C }, - { 0x1D46D, 0x1D46D }, - { 0x1D46E, 0x1D46E }, - { 0x1D46F, 0x1D46F }, - { 0x1D470, 0x1D470 }, - { 0x1D471, 0x1D471 }, - { 0x1D472, 0x1D472 }, - { 0x1D473, 0x1D473 }, - { 0x1D474, 0x1D474 }, - { 0x1D475, 0x1D475 }, - { 0x1D476, 0x1D476 }, - { 0x1D477, 0x1D477 }, - { 0x1D478, 0x1D478 }, - { 0x1D479, 0x1D479 }, - { 0x1D47A, 0x1D47A }, - { 0x1D47B, 0x1D47B }, - { 0x1D47C, 0x1D47C }, - { 0x1D47D, 0x1D47D }, - { 0x1D47E, 0x1D47E }, - { 0x1D47F, 0x1D47F }, - { 0x1D480, 0x1D480 }, - { 0x1D481, 0x1D481 }, { 0x1D49C, 0x1D49C }, - { 0x1D49E, 0x1D49E }, - { 0x1D49F, 0x1D49F }, { 0x1D4A2, 0x1D4A2 }, - { 0x1D4A5, 0x1D4A5 }, - { 0x1D4A6, 0x1D4A6 }, - { 0x1D4A9, 0x1D4A9 }, - { 0x1D4AA, 0x1D4AA }, - { 0x1D4AB, 0x1D4AB }, - { 0x1D4AC, 0x1D4AC }, - { 0x1D4AE, 0x1D4AE }, - { 0x1D4AF, 0x1D4AF }, - { 0x1D4B0, 0x1D4B0 }, - { 0x1D4B1, 0x1D4B1 }, - { 0x1D4B2, 0x1D4B2 }, - { 0x1D4B3, 0x1D4B3 }, - { 0x1D4B4, 0x1D4B4 }, - { 0x1D4B5, 0x1D4B5 }, - { 0x1D4D0, 0x1D4D0 }, - { 0x1D4D1, 0x1D4D1 }, - { 0x1D4D2, 0x1D4D2 }, - { 0x1D4D3, 0x1D4D3 }, - { 0x1D4D4, 0x1D4D4 }, - { 0x1D4D5, 0x1D4D5 }, - { 0x1D4D6, 0x1D4D6 }, - { 0x1D4D7, 0x1D4D7 }, - { 0x1D4D8, 0x1D4D8 }, - { 0x1D4D9, 0x1D4D9 }, - { 0x1D4DA, 0x1D4DA }, - { 0x1D4DB, 0x1D4DB }, - { 0x1D4DC, 0x1D4DC }, - { 0x1D4DD, 0x1D4DD }, - { 0x1D4DE, 0x1D4DE }, - { 0x1D4DF, 0x1D4DF }, - { 0x1D4E0, 0x1D4E0 }, - { 0x1D4E1, 0x1D4E1 }, - { 0x1D4E2, 0x1D4E2 }, - { 0x1D4E3, 0x1D4E3 }, - { 0x1D4E4, 0x1D4E4 }, - { 0x1D4E5, 0x1D4E5 }, - { 0x1D4E6, 0x1D4E6 }, - { 0x1D4E7, 0x1D4E7 }, - { 0x1D4E8, 0x1D4E8 }, - { 0x1D4E9, 0x1D4E9 }, - { 0x1D504, 0x1D504 }, - { 0x1D505, 0x1D505 }, - { 0x1D507, 0x1D507 }, - { 0x1D508, 0x1D508 }, - { 0x1D509, 0x1D509 }, - { 0x1D50A, 0x1D50A }, - { 0x1D50D, 0x1D50D }, - { 0x1D50E, 0x1D50E }, - { 0x1D50F, 0x1D50F }, - { 0x1D510, 0x1D510 }, - { 0x1D511, 0x1D511 }, - { 0x1D512, 0x1D512 }, - { 0x1D513, 0x1D513 }, - { 0x1D514, 0x1D514 }, - { 0x1D516, 0x1D516 }, - { 0x1D517, 0x1D517 }, - { 0x1D518, 0x1D518 }, - { 0x1D519, 0x1D519 }, - { 0x1D51A, 0x1D51A }, - { 0x1D51B, 0x1D51B }, - { 0x1D51C, 0x1D51C }, - { 0x1D538, 0x1D538 }, - { 0x1D539, 0x1D539 }, - { 0x1D53B, 0x1D53B }, - { 0x1D53C, 0x1D53C }, - { 0x1D53D, 0x1D53D }, - { 0x1D53E, 0x1D53E }, - { 0x1D540, 0x1D540 }, - { 0x1D541, 0x1D541 }, - { 0x1D542, 0x1D542 }, - { 0x1D543, 0x1D543 }, - { 0x1D544, 0x1D544 }, { 0x1D546, 0x1D546 }, - { 0x1D54A, 0x1D54A }, - { 0x1D54B, 0x1D54B }, - { 0x1D54C, 0x1D54C }, - { 0x1D54D, 0x1D54D }, - { 0x1D54E, 0x1D54E }, - { 0x1D54F, 0x1D54F }, - { 0x1D550, 0x1D550 }, - { 0x1D56C, 0x1D56C }, - { 0x1D56D, 0x1D56D }, - { 0x1D56E, 0x1D56E }, - { 0x1D56F, 0x1D56F }, - { 0x1D570, 0x1D570 }, - { 0x1D571, 0x1D571 }, - { 0x1D572, 0x1D572 }, - { 0x1D573, 0x1D573 }, - { 0x1D574, 0x1D574 }, - { 0x1D575, 0x1D575 }, - { 0x1D576, 0x1D576 }, - { 0x1D577, 0x1D577 }, - { 0x1D578, 0x1D578 }, - { 0x1D579, 0x1D579 }, - { 0x1D57A, 0x1D57A }, - { 0x1D57B, 0x1D57B }, - { 0x1D57C, 0x1D57C }, - { 0x1D57D, 0x1D57D }, - { 0x1D57E, 0x1D57E }, - { 0x1D57F, 0x1D57F }, - { 0x1D580, 0x1D580 }, - { 0x1D581, 0x1D581 }, - { 0x1D582, 0x1D582 }, - { 0x1D583, 0x1D583 }, - { 0x1D584, 0x1D584 }, - { 0x1D585, 0x1D585 }, - { 0x1D5A0, 0x1D5A0 }, - { 0x1D5A1, 0x1D5A1 }, - { 0x1D5A2, 0x1D5A2 }, - { 0x1D5A3, 0x1D5A3 }, - { 0x1D5A4, 0x1D5A4 }, - { 0x1D5A5, 0x1D5A5 }, - { 0x1D5A6, 0x1D5A6 }, - { 0x1D5A7, 0x1D5A7 }, - { 0x1D5A8, 0x1D5A8 }, - { 0x1D5A9, 0x1D5A9 }, - { 0x1D5AA, 0x1D5AA }, - { 0x1D5AB, 0x1D5AB }, - { 0x1D5AC, 0x1D5AC }, - { 0x1D5AD, 0x1D5AD }, - { 0x1D5AE, 0x1D5AE }, - { 0x1D5AF, 0x1D5AF }, - { 0x1D5B0, 0x1D5B0 }, - { 0x1D5B1, 0x1D5B1 }, - { 0x1D5B2, 0x1D5B2 }, - { 0x1D5B3, 0x1D5B3 }, - { 0x1D5B4, 0x1D5B4 }, - { 0x1D5B5, 0x1D5B5 }, - { 0x1D5B6, 0x1D5B6 }, - { 0x1D5B7, 0x1D5B7 }, - { 0x1D5B8, 0x1D5B8 }, - { 0x1D5B9, 0x1D5B9 }, - { 0x1D5D4, 0x1D5D4 }, - { 0x1D5D5, 0x1D5D5 }, - { 0x1D5D6, 0x1D5D6 }, - { 0x1D5D7, 0x1D5D7 }, - { 0x1D5D8, 0x1D5D8 }, - { 0x1D5D9, 0x1D5D9 }, - { 0x1D5DA, 0x1D5DA }, - { 0x1D5DB, 0x1D5DB }, - { 0x1D5DC, 0x1D5DC }, - { 0x1D5DD, 0x1D5DD }, - { 0x1D5DE, 0x1D5DE }, - { 0x1D5DF, 0x1D5DF }, - { 0x1D5E0, 0x1D5E0 }, - { 0x1D5E1, 0x1D5E1 }, - { 0x1D5E2, 0x1D5E2 }, - { 0x1D5E3, 0x1D5E3 }, - { 0x1D5E4, 0x1D5E4 }, - { 0x1D5E5, 0x1D5E5 }, - { 0x1D5E6, 0x1D5E6 }, - { 0x1D5E7, 0x1D5E7 }, - { 0x1D5E8, 0x1D5E8 }, - { 0x1D5E9, 0x1D5E9 }, - { 0x1D5EA, 0x1D5EA }, - { 0x1D5EB, 0x1D5EB }, - { 0x1D5EC, 0x1D5EC }, - { 0x1D5ED, 0x1D5ED }, - { 0x1D608, 0x1D608 }, - { 0x1D609, 0x1D609 }, - { 0x1D60A, 0x1D60A }, - { 0x1D60B, 0x1D60B }, - { 0x1D60C, 0x1D60C }, - { 0x1D60D, 0x1D60D }, - { 0x1D60E, 0x1D60E }, - { 0x1D60F, 0x1D60F }, - { 0x1D610, 0x1D610 }, - { 0x1D611, 0x1D611 }, - { 0x1D612, 0x1D612 }, - { 0x1D613, 0x1D613 }, - { 0x1D614, 0x1D614 }, - { 0x1D615, 0x1D615 }, - { 0x1D616, 0x1D616 }, - { 0x1D617, 0x1D617 }, - { 0x1D618, 0x1D618 }, - { 0x1D619, 0x1D619 }, - { 0x1D61A, 0x1D61A }, - { 0x1D61B, 0x1D61B }, - { 0x1D61C, 0x1D61C }, - { 0x1D61D, 0x1D61D }, - { 0x1D61E, 0x1D61E }, - { 0x1D61F, 0x1D61F }, - { 0x1D620, 0x1D620 }, - { 0x1D621, 0x1D621 }, - { 0x1D63C, 0x1D63C }, - { 0x1D63D, 0x1D63D }, - { 0x1D63E, 0x1D63E }, - { 0x1D63F, 0x1D63F }, - { 0x1D640, 0x1D640 }, - { 0x1D641, 0x1D641 }, - { 0x1D642, 0x1D642 }, - { 0x1D643, 0x1D643 }, - { 0x1D644, 0x1D644 }, - { 0x1D645, 0x1D645 }, - { 0x1D646, 0x1D646 }, - { 0x1D647, 0x1D647 }, - { 0x1D648, 0x1D648 }, - { 0x1D649, 0x1D649 }, - { 0x1D64A, 0x1D64A }, - { 0x1D64B, 0x1D64B }, - { 0x1D64C, 0x1D64C }, - { 0x1D64D, 0x1D64D }, - { 0x1D64E, 0x1D64E }, - { 0x1D64F, 0x1D64F }, - { 0x1D650, 0x1D650 }, - { 0x1D651, 0x1D651 }, - { 0x1D652, 0x1D652 }, - { 0x1D653, 0x1D653 }, - { 0x1D654, 0x1D654 }, - { 0x1D655, 0x1D655 }, - { 0x1D670, 0x1D670 }, - { 0x1D671, 0x1D671 }, - { 0x1D672, 0x1D672 }, - { 0x1D673, 0x1D673 }, - { 0x1D674, 0x1D674 }, - { 0x1D675, 0x1D675 }, - { 0x1D676, 0x1D676 }, - { 0x1D677, 0x1D677 }, - { 0x1D678, 0x1D678 }, - { 0x1D679, 0x1D679 }, - { 0x1D67A, 0x1D67A }, - { 0x1D67B, 0x1D67B }, - { 0x1D67C, 0x1D67C }, - { 0x1D67D, 0x1D67D }, - { 0x1D67E, 0x1D67E }, - { 0x1D67F, 0x1D67F }, - { 0x1D680, 0x1D680 }, - { 0x1D681, 0x1D681 }, - { 0x1D682, 0x1D682 }, - { 0x1D683, 0x1D683 }, - { 0x1D684, 0x1D684 }, - { 0x1D685, 0x1D685 }, - { 0x1D686, 0x1D686 }, - { 0x1D687, 0x1D687 }, - { 0x1D688, 0x1D688 }, - { 0x1D689, 0x1D689 }, - { 0x1D6A8, 0x1D6A8 }, - { 0x1D6A9, 0x1D6A9 }, - { 0x1D6AA, 0x1D6AA }, - { 0x1D6AB, 0x1D6AB }, - { 0x1D6AC, 0x1D6AC }, - { 0x1D6AD, 0x1D6AD }, - { 0x1D6AE, 0x1D6AE }, - { 0x1D6AF, 0x1D6AF }, - { 0x1D6B0, 0x1D6B0 }, - { 0x1D6B1, 0x1D6B1 }, - { 0x1D6B2, 0x1D6B2 }, - { 0x1D6B3, 0x1D6B3 }, - { 0x1D6B4, 0x1D6B4 }, - { 0x1D6B5, 0x1D6B5 }, - { 0x1D6B6, 0x1D6B6 }, - { 0x1D6B7, 0x1D6B7 }, - { 0x1D6B8, 0x1D6B8 }, - { 0x1D6B9, 0x1D6B9 }, - { 0x1D6BA, 0x1D6BA }, - { 0x1D6BB, 0x1D6BB }, - { 0x1D6BC, 0x1D6BC }, - { 0x1D6BD, 0x1D6BD }, - { 0x1D6BE, 0x1D6BE }, - { 0x1D6BF, 0x1D6BF }, - { 0x1D6C0, 0x1D6C0 }, - { 0x1D6E2, 0x1D6E2 }, - { 0x1D6E3, 0x1D6E3 }, - { 0x1D6E4, 0x1D6E4 }, - { 0x1D6E5, 0x1D6E5 }, - { 0x1D6E6, 0x1D6E6 }, - { 0x1D6E7, 0x1D6E7 }, - { 0x1D6E8, 0x1D6E8 }, - { 0x1D6E9, 0x1D6E9 }, - { 0x1D6EA, 0x1D6EA }, - { 0x1D6EB, 0x1D6EB }, - { 0x1D6EC, 0x1D6EC }, - { 0x1D6ED, 0x1D6ED }, - { 0x1D6EE, 0x1D6EE }, - { 0x1D6EF, 0x1D6EF }, - { 0x1D6F0, 0x1D6F0 }, - { 0x1D6F1, 0x1D6F1 }, - { 0x1D6F2, 0x1D6F2 }, - { 0x1D6F3, 0x1D6F3 }, - { 0x1D6F4, 0x1D6F4 }, - { 0x1D6F5, 0x1D6F5 }, - { 0x1D6F6, 0x1D6F6 }, - { 0x1D6F7, 0x1D6F7 }, - { 0x1D6F8, 0x1D6F8 }, - { 0x1D6F9, 0x1D6F9 }, - { 0x1D6FA, 0x1D6FA }, - { 0x1D71C, 0x1D71C }, - { 0x1D71D, 0x1D71D }, - { 0x1D71E, 0x1D71E }, - { 0x1D71F, 0x1D71F }, - { 0x1D720, 0x1D720 }, - { 0x1D721, 0x1D721 }, - { 0x1D722, 0x1D722 }, - { 0x1D723, 0x1D723 }, - { 0x1D724, 0x1D724 }, - { 0x1D725, 0x1D725 }, - { 0x1D726, 0x1D726 }, - { 0x1D727, 0x1D727 }, - { 0x1D728, 0x1D728 }, - { 0x1D729, 0x1D729 }, - { 0x1D72A, 0x1D72A }, - { 0x1D72B, 0x1D72B }, - { 0x1D72C, 0x1D72C }, - { 0x1D72D, 0x1D72D }, - { 0x1D72E, 0x1D72E }, - { 0x1D72F, 0x1D72F }, - { 0x1D730, 0x1D730 }, - { 0x1D731, 0x1D731 }, - { 0x1D732, 0x1D732 }, - { 0x1D733, 0x1D733 }, - { 0x1D734, 0x1D734 }, - { 0x1D756, 0x1D756 }, - { 0x1D757, 0x1D757 }, - { 0x1D758, 0x1D758 }, - { 0x1D759, 0x1D759 }, - { 0x1D75A, 0x1D75A }, - { 0x1D75B, 0x1D75B }, - { 0x1D75C, 0x1D75C }, - { 0x1D75D, 0x1D75D }, - { 0x1D75E, 0x1D75E }, - { 0x1D75F, 0x1D75F }, - { 0x1D760, 0x1D760 }, - { 0x1D761, 0x1D761 }, - { 0x1D762, 0x1D762 }, - { 0x1D763, 0x1D763 }, - { 0x1D764, 0x1D764 }, - { 0x1D765, 0x1D765 }, - { 0x1D766, 0x1D766 }, - { 0x1D767, 0x1D767 }, - { 0x1D768, 0x1D768 }, - { 0x1D769, 0x1D769 }, - { 0x1D76A, 0x1D76A }, - { 0x1D76B, 0x1D76B }, - { 0x1D76C, 0x1D76C }, - { 0x1D76D, 0x1D76D }, - { 0x1D76E, 0x1D76E }, - { 0x1D790, 0x1D790 }, - { 0x1D791, 0x1D791 }, - { 0x1D792, 0x1D792 }, - { 0x1D793, 0x1D793 }, - { 0x1D794, 0x1D794 }, - { 0x1D795, 0x1D795 }, - { 0x1D796, 0x1D796 }, - { 0x1D797, 0x1D797 }, - { 0x1D798, 0x1D798 }, - { 0x1D799, 0x1D799 }, - { 0x1D79A, 0x1D79A }, - { 0x1D79B, 0x1D79B }, - { 0x1D79C, 0x1D79C }, - { 0x1D79D, 0x1D79D }, - { 0x1D79E, 0x1D79E }, - { 0x1D79F, 0x1D79F }, - { 0x1D7A0, 0x1D7A0 }, - { 0x1D7A1, 0x1D7A1 }, - { 0x1D7A2, 0x1D7A2 }, - { 0x1D7A3, 0x1D7A3 }, - { 0x1D7A4, 0x1D7A4 }, - { 0x1D7A5, 0x1D7A5 }, - { 0x1D7A6, 0x1D7A6 }, - { 0x1D7A7, 0x1D7A7 }, - { 0x1D7A8, 0x1D7A8 }, { 0x1D7CA, 0x1D7CA }, }; int isupperrune(Rune r) { + Rune *match; + + if(match = bsearch(&r, upper3, nelem(upper3), sizeof *upper3, &rune2cmp)) + return !((r - match[0]) % 2); if(bsearch(&r, upper2, nelem(upper2), sizeof *upper2, &rune2cmp)) return 1; if(bsearch(&r, upper1, nelem(upper1), sizeof *upper1, &rune1cmp)) @@ -1118,15 +227,16 @@ isupperrune(Rune r) int tolowerrune(Rune r) { - Rune *match1, *match2; - - match1 = bsearch(&r, upper1, nelem(upper1), sizeof *upper1, &rune1cmp); - if (match1) - r = match1[1]; - - match2 = bsearch(&r, upper2, nelem(upper2), sizeof *upper2, &rune2cmp); - if (match2) - r = match2[2] + (r - match2[0]); + Rune *match; + match = bsearch(&r, upper3, nelem(upper3), sizeof *upper3, &rune2cmp); + if (match) + return ((r - match[0]) % 2) ? r : r + 1; + match = bsearch(&r, upper2, nelem(upper2), sizeof *upper2, &rune2cmp); + if (match) + return match[2] + (r - match[0]); + match = bsearch(&r, upper1, nelem(upper1), sizeof *upper1, &rune1cmp); + if (match) + return match[1]; return r; }