#include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "wv.h" #include "iconv_internal.h" size_t wvConvert874ToUnicode(const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { U16 c; size_t ret=0; while( (*inbytesleft) && (*outbytesleft) ) { c = Convert874ToUnicode((unsigned char)(**inbuf)); (*inbytesleft)--; (*inbuf)++; **outbuf = ((c>>8)&0x00FF); (*outbuf)++; **outbuf = (c&0x00FF); (*outbuf)++; (*outbytesleft)-=2; ret+=2; } return(ret); } U16 Convert874ToUnicode(U16 char8) { switch (char8) { case 0x80: return(0x20AC); /* #EURO SIGN */ case 0x81: case 0x82: case 0x83: case 0x84: return(0xffff); case 0x85: return(0x2026); /* #HORIZONTAL ELLIPSIS */ case 0x86: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E: case 0x8F: case 0x90: return(0xffff); case 0x91: return(0x2018); /* #LEFT SINGLE QUOTATION MARK */ case 0x92: return(0x2019); /* #RIGHT SINGLE QUOTATION MARK */ case 0x93: return(0x201C); /* #LEFT DOUBLE QUOTATION MARK */ case 0x94: return(0x201D); /* #RIGHT DOUBLE QUOTATION MARK */ case 0x95: return(0x2022); /* #BULLET */ case 0x96: return(0x2013); /* #EN DASH */ case 0x97: return(0x2014); /* #EM DASH */ case 0x98: case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D: case 0x9E: case 0x9F: return(0xffff); case 0xA0: return(0x00A0); /* #NO-BREAK SPACE */ case 0xA1: return(0x0E01); /* #THAI CHARACTER KO KAI */ case 0xA2: return(0x0E02); /* #THAI CHARACTER KHO KHAI */ case 0xA3: return(0x0E03); /* #THAI CHARACTER KHO KHUAT */ case 0xA4: return(0x0E04); /* #THAI CHARACTER KHO KHWAI */ case 0xA5: return(0x0E05); /* #THAI CHARACTER KHO KHON */ case 0xA6: return(0x0E06); /* #THAI CHARACTER KHO RAKHANG */ case 0xA7: return(0x0E07); /* #THAI CHARACTER NGO NGU */ case 0xA8: return(0x0E08); /* #THAI CHARACTER CHO CHAN */ case 0xA9: return(0x0E09); /* #THAI CHARACTER CHO CHING */ case 0xAA: return(0x0E0A); /* #THAI CHARACTER CHO CHANG */ case 0xAB: return(0x0E0B); /* #THAI CHARACTER SO SO */ case 0xAC: return(0x0E0C); /* #THAI CHARACTER CHO CHOE */ case 0xAD: return(0x0E0D); /* #THAI CHARACTER YO YING */ case 0xAE: return(0x0E0E); /* #THAI CHARACTER DO CHADA */ case 0xAF: return(0x0E0F); /* #THAI CHARACTER TO PATAK */ case 0xB0: return(0x0E10); /* #THAI CHARACTER THO THAN */ case 0xB1: return(0x0E11); /* #THAI CHARACTER THO NANGMONTHO */ case 0xB2: return(0x0E12); /* #THAI CHARACTER THO PHUTHAO */ case 0xB3: return(0x0E13); /* #THAI CHARACTER NO NEN */ case 0xB4: return(0x0E14); /* #THAI CHARACTER DO DEK */ case 0xB5: return(0x0E15); /* #THAI CHARACTER TO TAO */ case 0xB6: return(0x0E16); /* #THAI CHARACTER THO THUNG */ case 0xB7: return(0x0E17); /* #THAI CHARACTER THO THAHAN */ case 0xB8: return(0x0E18); /* #THAI CHARACTER THO THONG */ case 0xB9: return(0x0E19); /* #THAI CHARACTER NO NU */ case 0xBA: return(0x0E1A); /* #THAI CHARACTER BO BAIMAI */ case 0xBB: return(0x0E1B); /* #THAI CHARACTER PO PLA */ case 0xBC: return(0x0E1C); /* #THAI CHARACTER PHO PHUNG */ case 0xBD: return(0x0E1D); /* #THAI CHARACTER FO FA */ case 0xBE: return(0x0E1E); /* #THAI CHARACTER PHO PHAN */ case 0xBF: return(0x0E1F); /* #THAI CHARACTER FO FAN */ case 0xC0: return(0x0E20); /* #THAI CHARACTER PHO SAMPHAO */ case 0xC1: return(0x0E21); /* #THAI CHARACTER MO MA */ case 0xC2: return(0x0E22); /* #THAI CHARACTER YO YAK */ case 0xC3: return(0x0E23); /* #THAI CHARACTER RO RUA */ case 0xC4: return(0x0E24); /* #THAI CHARACTER RU */ case 0xC5: return(0x0E25); /* #THAI CHARACTER LO LING */ case 0xC6: return(0x0E26); /* #THAI CHARACTER LU */ case 0xC7: return(0x0E27); /* #THAI CHARACTER WO WAEN */ case 0xC8: return(0x0E28); /* #THAI CHARACTER SO SALA */ case 0xC9: return(0x0E29); /* #THAI CHARACTER SO RUSI */ case 0xCA: return(0x0E2A); /* #THAI CHARACTER SO SUA */ case 0xCB: return(0x0E2B); /* #THAI CHARACTER HO HIP */ case 0xCC: return(0x0E2C); /* #THAI CHARACTER LO CHULA */ case 0xCD: return(0x0E2D); /* #THAI CHARACTER O ANG */ case 0xCE: return(0x0E2E); /* #THAI CHARACTER HO NOKHUK */ case 0xCF: return(0x0E2F); /* #THAI CHARACTER PAIYANNOI */ case 0xD0: return(0x0E30); /* #THAI CHARACTER SARA A */ case 0xD1: return(0x0E31); /* #THAI CHARACTER MAI HAN-AKAT */ case 0xD2: return(0x0E32); /* #THAI CHARACTER SARA AA */ case 0xD3: return(0x0E33); /* #THAI CHARACTER SARA AM */ case 0xD4: return(0x0E34); /* #THAI CHARACTER SARA I */ case 0xD5: return(0x0E35); /* #THAI CHARACTER SARA II */ case 0xD6: return(0x0E36); /* #THAI CHARACTER SARA UE */ case 0xD7: return(0x0E37); /* #THAI CHARACTER SARA UEE */ case 0xD8: return(0x0E38); /* #THAI CHARACTER SARA U */ case 0xD9: return(0x0E39); /* #THAI CHARACTER SARA UU */ case 0xDA: return(0x0E3A); /* #THAI CHARACTER PHINTHU */ case 0xDB: case 0xDC: case 0xDD: case 0xDE: return(0xffff); case 0xDF: return(0x0E3F); /* #THAI CURRENCY SYMBOL BAHT */ case 0xE0: return(0x0E40); /* #THAI CHARACTER SARA E */ case 0xE1: return(0x0E41); /* #THAI CHARACTER SARA AE */ case 0xE2: return(0x0E42); /* #THAI CHARACTER SARA O */ case 0xE3: return(0x0E43); /* #THAI CHARACTER SARA AI MAIMUAN */ case 0xE4: return(0x0E44); /* #THAI CHARACTER SARA AI MAIMALAI */ case 0xE5: return(0x0E45); /* #THAI CHARACTER LAKKHANGYAO */ case 0xE6: return(0x0E46); /* #THAI CHARACTER MAIYAMOK */ case 0xE7: return(0x0E47); /* #THAI CHARACTER MAITAIKHU */ case 0xE8: return(0x0E48); /* #THAI CHARACTER MAI EK */ case 0xE9: return(0x0E49); /* #THAI CHARACTER MAI THO */ case 0xEA: return(0x0E4A); /* #THAI CHARACTER MAI TRI */ case 0xEB: return(0x0E4B); /* #THAI CHARACTER MAI CHATTAWA */ case 0xEC: return(0x0E4C); /* #THAI CHARACTER THANTHAKHAT */ case 0xED: return(0x0E4D); /* #THAI CHARACTER NIKHAHIT */ case 0xEE: return(0x0E4E); /* #THAI CHARACTER YAMAKKAN */ case 0xEF: return(0x0E4F); /* #THAI CHARACTER FONGMAN */ case 0xF0: return(0x0E50); /* #THAI DIGIT ZERO */ case 0xF1: return(0x0E51); /* #THAI DIGIT ONE */ case 0xF2: return(0x0E52); /* #THAI DIGIT TWO */ case 0xF3: return(0x0E53); /* #THAI DIGIT THREE */ case 0xF4: return(0x0E54); /* #THAI DIGIT FOUR */ case 0xF5: return(0x0E55); /* #THAI DIGIT FIVE */ case 0xF6: return(0x0E56); /* #THAI DIGIT SIX */ case 0xF7: return(0x0E57); /* #THAI DIGIT SEVEN */ case 0xF8: return(0x0E58); /* #THAI DIGIT EIGHT */ case 0xF9: return(0x0E59); /* #THAI DIGIT NINE */ case 0xFA: return(0x0E5A); /* #THAI CHARACTER ANGKHANKHU */ case 0xFB: return(0x0E5B); /* #THAI CHARACTER KHOMUT */ case 0xFC: case 0xFD: case 0xFE: case 0xFF: return(0xffff); default: return(char8); } }