- if (EQ (charset, Vcharset_ascii))
- return c1;
- else if (EQ (charset, Vcharset_control_1))
- return c1 | 0x80;
- else if (EQ (charset, Vcharset_ucs_bmp))
- return (c1 << 8) | c2;
- else if (EQ (charset, Vcharset_latin_iso8859_1))
- return c1 | 0x80;
- else if (EQ (charset, Vcharset_latin_iso8859_2))
- return latin_iso8859_2_to_ucs[c1 - 32];
- else if (EQ (charset, Vcharset_latin_iso8859_3))
- return latin_iso8859_3_to_ucs[c1 - 32];
- else if (EQ (charset, Vcharset_latin_iso8859_4))
- return latin_iso8859_4_to_ucs[c1 - 32];
- else if (EQ (charset, Vcharset_cyrillic_iso8859_5))
- return c1 + MIN_CHAR_CYRILLIC - 0x20;
- else if (EQ (charset, Vcharset_greek_iso8859_7))
- return c1 + MIN_CHAR_GREEK - 0x20;
- else if (EQ (charset, Vcharset_hebrew_iso8859_8))
- return c1 + MIN_CHAR_HEBREW - 0x20;
- else if (EQ (charset, Vcharset_latin_iso8859_9))
- return latin_iso8859_9_to_ucs[c1 - 32];
- else if (EQ (charset, Vcharset_thai_tis620))
- return c1 + MIN_CHAR_THAI - 0x20;
- else if (EQ (charset, Vcharset_katakana_jisx0201))
- if (c1 < 0x60)
- return c1 + MIN_CHAR_HALFWIDTH_KATAKANA - 0x20;
- else
- return 32;
- else if (EQ (charset, Vcharset_latin_jisx0201))
- return latin_jisx0201_to_ucs[c1 - 33];
- else if (EQ (charset, Vcharset_latin_viscii_lower))
- return latin_viscii_lower_to_ucs[c1 - 32];
- else if (EQ (charset, Vcharset_latin_viscii_upper))
- return latin_viscii_upper_to_ucs[c1 - 32];
- else if (XCHARSET_DIMENSION (charset) == 1)
- {
- switch (XCHARSET_CHARS (charset))
- {
- case 94:
- return MIN_CHAR_94
- + (XCHARSET_FINAL (charset) - '0') * 94 + (c1 - 33);
- case 96:
- return MIN_CHAR_96
- + (XCHARSET_FINAL (charset) - '0') * 96 + (c1 - 32);
- default:
- abort ();
- }
- }