enum { ENC_ISO_8859_1 = 1 << 0, ENC_ISO_8859_2 = 1 << 1, ENC_ISO_8859_3 = 1 << 2, ENC_ISO_8859_4 = 1 << 3, ENC_ISO_8859_5 = 1 << 4, ENC_ISO_8859_6 = 1 << 5, ENC_ISO_8859_7 = 1 << 6, ENC_ISO_8859_8 = 1 << 7, ENC_ISO_8859_9 = 1 << 8, ENC_ISO_10646 = 1 << 12 }; Charset charsets[] = { { "ISO-8859-1", "iso8859-1", conv_8bit }, { "ISO-8859-2", "iso8859-2", conv_8bit }, { "ISO-8859-3", "iso8859-3", conv_8bit }, { "ISO-8859-4", "iso8859-4", conv_8bit }, { "ISO-8859-5", "iso8859-5", conv_8bit }, { "ISO-8859-6", "iso8859-6", conv_8bit }, { "ISO-8859-7", "iso8859-7", conv_8bit }, { "ISO-8859-8", "iso8859-8", conv_8bit }, { "ISO-8859-9", "iso8859-9", conv_8bit }, { "ISO-10646", "iso10646-1", conv_ucs4 } }; static PangoEngineRange basic_ranges[] = { { 0x0000, 0x02af, "*" }, { 0x02b0, 0x02ff, "" }, { 0x0380, 0x058f, "*" }, { 0x0591, 0x05f4, "*" }, /* Hebrew */ { 0x060c, 0x06f9, "" }, /* Arabic */ { 0x2015, 0x2017, "*" }, }; const CharRange ranges[] = { { 0x20, 0x2f, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0x30, 0x39, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0x3a, 0x7e, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa0, 0xa0, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa1, 0xa1, ENC_ISO_8859_1|ENC_ISO_8859_9 }, { 0xa2, 0xa2, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa3, 0xa3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa4, 0xa4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_6|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa5, 0xa5, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa6, 0xa6, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa7, 0xa7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa8, 0xa8, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xa9, 0xa9, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xaa, 0xaa, ENC_ISO_8859_1|ENC_ISO_8859_9 }, { 0xab, 0xac, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xad, 0xad, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xae, 0xae, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xaf, 0xaf, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xb0, 0xb0, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb1, 0xb1, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb2, 0xb3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb4, 0xb4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb5, 0xb5, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb6, 0xb6, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb7, 0xb7, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb8, 0xb8, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xb9, 0xb9, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xba, 0xba, ENC_ISO_8859_1|ENC_ISO_8859_9 }, { 0xbb, 0xbb, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xbc, 0xbc, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xbd, 0xbd, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xbe, 0xbe, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xbf, 0xbf, ENC_ISO_8859_1|ENC_ISO_8859_9 }, { 0xc0, 0xc0, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xc1, 0xc2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xc3, 0xc3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xc4, 0xc4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xc5, 0xc6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xc7, 0xc7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xc8, 0xc8, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xc9, 0xc9, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xca, 0xca, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xcb, 0xcb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xcc, 0xcc, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xcd, 0xce, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xcf, 0xcf, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xd0, 0xd0, ENC_ISO_8859_1 }, { 0xd1, 0xd2, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xd3, 0xd3, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xd4, 0xd4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xd5, 0xd5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xd6, 0xd6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xd7, 0xd7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xd8, 0xd8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xd9, 0xd9, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xda, 0xda, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xdb, 0xdb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xdc, 0xdc, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xdd, 0xdd, ENC_ISO_8859_1|ENC_ISO_8859_2 }, { 0xde, 0xde, ENC_ISO_8859_1 }, { 0xdf, 0xdf, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xe0, 0xe0, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xe1, 0xe2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xe3, 0xe3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xe4, 0xe4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xe5, 0xe6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xe7, 0xe7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xe8, 0xe8, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xe9, 0xe9, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xea, 0xea, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xeb, 0xeb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xec, 0xec, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xed, 0xee, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xef, 0xef, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xf0, 0xf0, ENC_ISO_8859_1 }, { 0xf1, 0xf2, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xf3, 0xf3, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xf4, 0xf4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xf5, 0xf5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xf6, 0xf6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xf7, 0xf7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 }, { 0xf8, 0xf8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xf9, 0xf9, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0xfa, 0xfa, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xfb, 0xfb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xfc, 0xfc, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 }, { 0xfd, 0xfd, ENC_ISO_8859_1|ENC_ISO_8859_2 }, { 0xfe, 0xfe, ENC_ISO_8859_1 }, { 0xff, 0xff, ENC_ISO_8859_1|ENC_ISO_8859_9 }, { 0x100, 0x101, ENC_ISO_8859_4 }, { 0x102, 0x103, ENC_ISO_8859_2 }, { 0x104, 0x105, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x106, 0x107, ENC_ISO_8859_2 }, { 0x108, 0x10b, ENC_ISO_8859_3 }, { 0x10c, 0x10d, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x10e, 0x10f, ENC_ISO_8859_2 }, { 0x110, 0x111, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x112, 0x113, ENC_ISO_8859_4 }, { 0x116, 0x117, ENC_ISO_8859_4 }, { 0x118, 0x119, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x11a, 0x11b, ENC_ISO_8859_2 }, { 0x11c, 0x11d, ENC_ISO_8859_3 }, { 0x11e, 0x11f, ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0x120, 0x121, ENC_ISO_8859_3 }, { 0x122, 0x123, ENC_ISO_8859_4 }, { 0x124, 0x127, ENC_ISO_8859_3 }, { 0x128, 0x12b, ENC_ISO_8859_4 }, { 0x12e, 0x12f, ENC_ISO_8859_4 }, { 0x130, 0x131, ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0x134, 0x135, ENC_ISO_8859_3 }, { 0x136, 0x138, ENC_ISO_8859_4 }, { 0x139, 0x13a, ENC_ISO_8859_2 }, { 0x13b, 0x13c, ENC_ISO_8859_4 }, { 0x13d, 0x13e, ENC_ISO_8859_2 }, { 0x141, 0x144, ENC_ISO_8859_2 }, { 0x145, 0x146, ENC_ISO_8859_4 }, { 0x147, 0x148, ENC_ISO_8859_2 }, { 0x14a, 0x14d, ENC_ISO_8859_4 }, { 0x150, 0x151, ENC_ISO_8859_2 }, { 0x154, 0x155, ENC_ISO_8859_2 }, { 0x156, 0x157, ENC_ISO_8859_4 }, { 0x158, 0x15b, ENC_ISO_8859_2 }, { 0x15c, 0x15d, ENC_ISO_8859_3 }, { 0x15e, 0x15f, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 }, { 0x160, 0x161, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x162, 0x165, ENC_ISO_8859_2 }, { 0x166, 0x16b, ENC_ISO_8859_4 }, { 0x16c, 0x16d, ENC_ISO_8859_3 }, { 0x16e, 0x171, ENC_ISO_8859_2 }, { 0x172, 0x173, ENC_ISO_8859_4 }, { 0x179, 0x17a, ENC_ISO_8859_2 }, { 0x17b, 0x17c, ENC_ISO_8859_2|ENC_ISO_8859_3 }, { 0x17d, 0x17e, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x2bc, 0x2bd, ENC_ISO_8859_7 }, { 0x2c7, 0x2c7, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x2d8, 0x2d8, ENC_ISO_8859_2|ENC_ISO_8859_3 }, { 0x2d9, 0x2d9, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4 }, { 0x2db, 0x2db, ENC_ISO_8859_2|ENC_ISO_8859_4 }, { 0x2dd, 0x2dd, ENC_ISO_8859_2 }, { 0x384, 0x386, ENC_ISO_8859_7 }, { 0x388, 0x38a, ENC_ISO_8859_7 }, { 0x38c, 0x38c, ENC_ISO_8859_7 }, { 0x38e, 0x3a1, ENC_ISO_8859_7 }, { 0x3a3, 0x3ce, ENC_ISO_8859_7 }, { 0x401, 0x40c, ENC_ISO_8859_5 }, { 0x40e, 0x44f, ENC_ISO_8859_5 }, { 0x451, 0x45c, ENC_ISO_8859_5 }, { 0x45e, 0x45f, ENC_ISO_8859_5 }, { 0x5d0, 0x5ea, ENC_ISO_8859_8 }, { 0x60c, 0x60c, ENC_ISO_8859_6 }, { 0x61b, 0x61b, ENC_ISO_8859_6 }, { 0x61f, 0x61f, ENC_ISO_8859_6 }, { 0x621, 0x63a, ENC_ISO_8859_6 }, { 0x640, 0x652, ENC_ISO_8859_6 }, { 0x660, 0x669, ENC_ISO_8859_6 }, { 0x2015, 0x2015, ENC_ISO_8859_7 }, { 0x2017, 0x2017, ENC_ISO_8859_8 } };