11ab64890Smrg 21ab64890Smrg/* 31ab64890Smrg * GEORGIAN-ACADEMY 41ab64890Smrg */ 51ab64890Smrg 61ab64890Smrgstatic const unsigned short georgian_academy_2uni[32] = { 71ab64890Smrg /* 0x80 */ 81ab64890Smrg 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 91ab64890Smrg 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, 101ab64890Smrg /* 0x90 */ 111ab64890Smrg 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 121ab64890Smrg 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, 131ab64890Smrg}; 141ab64890Smrg 151ab64890Smrgstatic int 161ab64890Smrggeorgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) 171ab64890Smrg{ 181ab64890Smrg unsigned char c = *s; 191ab64890Smrg if (c >= 0x80 && c < 0xa0) 201ab64890Smrg *pwc = (ucs4_t) georgian_academy_2uni[c-0x80]; 211ab64890Smrg else if (c >= 0xc0 && c < 0xe7) 221ab64890Smrg *pwc = (ucs4_t) c + 0x1010; 231ab64890Smrg else 241ab64890Smrg *pwc = (ucs4_t) c; 251ab64890Smrg return 1; 261ab64890Smrg} 271ab64890Smrg 281ab64890Smrgstatic const unsigned char georgian_academy_page00[32] = { 291ab64890Smrg 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 301ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 311ab64890Smrg 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 321ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ 331ab64890Smrg}; 341ab64890Smrgstatic const unsigned char georgian_academy_page01[72] = { 351ab64890Smrg 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 361ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 371ab64890Smrg 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 381ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 391ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 401ab64890Smrg 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 411ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 421ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 431ab64890Smrg 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 441ab64890Smrg}; 451ab64890Smrgstatic const unsigned char georgian_academy_page02[32] = { 461ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 471ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 481ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 491ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 501ab64890Smrg}; 511ab64890Smrgstatic const unsigned char georgian_academy_page20[48] = { 521ab64890Smrg 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 531ab64890Smrg 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 541ab64890Smrg 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 551ab64890Smrg 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 561ab64890Smrg 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 571ab64890Smrg 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 581ab64890Smrg}; 591ab64890Smrg 601ab64890Smrgstatic int 611ab64890Smrggeorgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) 621ab64890Smrg{ 631ab64890Smrg unsigned char c = 0; 641ab64890Smrg if (wc < 0x0080) { 659c019ec5Smaya *r = (unsigned char) wc; 661ab64890Smrg return 1; 671ab64890Smrg } 681ab64890Smrg else if (wc >= 0x0080 && wc < 0x00a0) 691ab64890Smrg c = georgian_academy_page00[wc-0x0080]; 701ab64890Smrg else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100)) 719c019ec5Smaya c = (unsigned char) wc; 721ab64890Smrg else if (wc >= 0x0150 && wc < 0x0198) 731ab64890Smrg c = georgian_academy_page01[wc-0x0150]; 741ab64890Smrg else if (wc >= 0x02c0 && wc < 0x02e0) 751ab64890Smrg c = georgian_academy_page02[wc-0x02c0]; 761ab64890Smrg else if (wc >= 0x10d0 && wc < 0x10f7) 779c019ec5Smaya c = (unsigned char) (wc - 0x1010); 781ab64890Smrg else if (wc >= 0x2010 && wc < 0x2040) 791ab64890Smrg c = georgian_academy_page20[wc-0x2010]; 801ab64890Smrg else if (wc == 0x2122) 811ab64890Smrg c = 0x99; 821ab64890Smrg if (c != 0) { 831ab64890Smrg *r = c; 841ab64890Smrg return 1; 851ab64890Smrg } 861ab64890Smrg return RET_ILSEQ; 871ab64890Smrg} 88