- if ((unsigned)wc - 0x10a0 < 0x26 || (unsigned)wc - 0x2d00 < 0x26)
- return wc + lmul*(0x2d00-0x10a0);
+ if (lower && (unsigned)wc - 0x10a0 < 0x2e)
+ if (wc>0x10c5 && wc != 0x10c7 && wc != 0x10cd) return wc;
+ else return wc + 0x2d00 - 0x10a0;
+ if (!lower && (unsigned)wc - 0x2d00 < 0x26)
+ if (wc>0x2d25 && wc != 0x2d27 && wc != 0x2d2d) return wc;
+ else return wc + 0x10a0 - 0x2d00;
+ if (lower && (unsigned)wc - 0x13a0 < 0x50)
+ return wc + 0xab70 - 0x13a0;
+ if (!lower && (unsigned)wc - 0xab70 < 0x50)
+ return wc + 0x13a0 - 0xab70;