2 /* This file is part of
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 1995 Matthias Ettrich
8 * Copyright 1995-2000 The LyX Team.
10 * ====================================================== */
22 typedef unsigned short int Uchar;
34 Encoding(string const & l, Uchar const * e)
35 : LatexName_(l) , encoding_table(e) {}
37 string const & LatexName() const {
41 Uchar ucs(unsigned char c) const {
42 return encoding_table[c];
46 bool IsComposeChar_hebrew(unsigned char c);
49 bool IsComposeChar_arabic(unsigned char c);
52 bool is_arabic(unsigned char c);
55 unsigned char TransformChar(unsigned char c, Letter_Form form);
60 Uchar const * encoding_table;
64 extern Encoding iso8859_1;
65 extern Encoding iso8859_2;
66 extern Encoding iso8859_3;
67 extern Encoding iso8859_4;
68 extern Encoding iso8859_6;
69 extern Encoding iso8859_7;
70 extern Encoding iso8859_9;
71 extern Encoding cp1255;
73 extern Encoding symbol_encoding;
76 bool Encoding::IsComposeChar_hebrew(unsigned char c)
78 return c <= 0xd2 && c >= 0xc0 &&
79 c != 0xce && c != 0xd0;
84 bool Encoding::IsComposeChar_arabic(unsigned char c)
86 return c >= 0xeb && c <= 0xf2;
90 extern unsigned char arabic_table[][2];
91 extern unsigned char arabic_table2[][4];
92 unsigned char const arabic_start = 0xc1;
96 bool Encoding::is_arabic(unsigned char c)
98 return c >= arabic_start && arabic_table[c-arabic_start][0];
103 unsigned char Encoding::TransformChar(unsigned char c, Encoding::Letter_Form form)
108 if (lyxrc.font_norm == "iso10646-1")
109 return arabic_table2[c-arabic_start][form];
111 return arabic_table[c-arabic_start][form >> 1];