diff options
author | Tomer Shalev <shalev.tomer@gmail.com> | 2009-11-28 17:07:57 +0000 |
---|---|---|
committer | Tomer Shalev <shalev.tomer@gmail.com> | 2009-11-28 17:07:57 +0000 |
commit | c2617dc4ed76eceaefd4ca39c0159498eb5e9762 (patch) | |
tree | 72ba77525fae0b356e6976175ddfe114d5a12c02 /firmware/drivers/diacritic.c | |
parent | c074c76211621ab15518649a4a835aeb5798bf29 (diff) | |
download | rockbox-c2617dc4ed76eceaefd4ca39c0159498eb5e9762.tar.gz rockbox-c2617dc4ed76eceaefd4ca39c0159498eb5e9762.zip |
Diacritic display enhancements
- Use the fact that unicode code currently does not support chars above 0xffff
(see utf8decode()), and change diacritic database's char code type to
unsigned short from int. Also comment out database entries above unsupported
range.
- Use const when possible.
- Iterate over buffer using the buffer's pointer, thus avoiding usage of some
variables, and avoiding multiple access to the same array item.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23776 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/diacritic.c')
-rw-r--r-- | firmware/drivers/diacritic.c | 610 |
1 files changed, 310 insertions, 300 deletions
diff --git a/firmware/drivers/diacritic.c b/firmware/drivers/diacritic.c index 728492a06e..576fe174e6 100644 --- a/firmware/drivers/diacritic.c +++ b/firmware/drivers/diacritic.c | |||
@@ -26,309 +26,319 @@ | |||
26 | #include "diacritic.h" | 26 | #include "diacritic.h" |
27 | #include "system.h" | 27 | #include "system.h" |
28 | 28 | ||
29 | #define DIAC_FLAG_DIACRITIC (1 << 31) | 29 | #define DIAC_FLAG_NONE 0 |
30 | #define DIAC_FLAG_RTL (1 << 30) | 30 | #define DIAC_FLAG_DIACRITIC (1 << 0) |
31 | #define DIAC_MASK 0x000FFFFF | 31 | #define DIAC_FLAG_RTL (1 << 1) |
32 | 32 | ||
33 | #define DIAC_VAL(i) (diac_range[(i)] & DIAC_MASK) | 33 | #define DIAC_VAL(i) (diac_ranges[(i)].last) |
34 | #define DIAC_IS_DIACRITIC(i) ((diac_range[(i)] & DIAC_FLAG_DIACRITIC) ? 1 : 0) | 34 | #define DIAC_IS_DIACRITIC(i) (diac_ranges[(i)].flags & DIAC_FLAG_DIACRITIC) |
35 | #define DIAC_IS_RTL(i) ((diac_range[(i)] & DIAC_FLAG_RTL) ? 1 : 0) | 35 | #define DIAC_IS_RTL(i) (diac_ranges[(i)].flags & DIAC_FLAG_RTL) |
36 | #define DIAC_NUM_RANGES (ARRAYLEN(diac_range)) | 36 | #define DIAC_NUM_RANGES (ARRAYLEN(diac_ranges)) |
37 | |||
38 | struct diac_range | ||
39 | { | ||
40 | unsigned short last; | ||
41 | unsigned char flags; | ||
42 | }; | ||
37 | 43 | ||
38 | /* Sorted by Unicode value */ | 44 | /* Sorted by Unicode value */ |
39 | static const int diac_range[] = | 45 | static const struct diac_range diac_ranges[] = |
40 | { | 46 | { |
41 | 0x00000, | 47 | { 0x0000, DIAC_FLAG_NONE }, |
42 | 0x002ff, | 48 | { 0x02ff, DIAC_FLAG_NONE }, |
43 | 0x0036f | DIAC_FLAG_DIACRITIC, /* Combining Diacritical Marks */ | 49 | { 0x036f, DIAC_FLAG_DIACRITIC }, /* Combining Diacritical Marks */ |
44 | 0x00482, | 50 | { 0x0482, DIAC_FLAG_NONE }, |
45 | 0x00489 | DIAC_FLAG_DIACRITIC, /* Cyrillic */ | 51 | { 0x0489, DIAC_FLAG_DIACRITIC }, /* Cyrillic */ |
46 | 0x00590, | 52 | { 0x0590, DIAC_FLAG_NONE }, |
47 | 0x005bd | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Hebrew */ | 53 | { 0x05bd, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Hebrew */ |
48 | 0x005be | DIAC_FLAG_RTL, | 54 | { 0x05be, DIAC_FLAG_RTL }, |
49 | 0x005bf | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Hebrew */ | 55 | { 0x05bf, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Hebrew */ |
50 | 0x005c0 | DIAC_FLAG_RTL, | 56 | { 0x05c0, DIAC_FLAG_RTL }, |
51 | 0x005c2 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Hebrew */ | 57 | { 0x05c2, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Hebrew */ |
52 | 0x005c3 | DIAC_FLAG_RTL, | 58 | { 0x05c3, DIAC_FLAG_RTL }, |
53 | 0x005c5 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Hebrew */ | 59 | { 0x05c5, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Hebrew */ |
54 | 0x005c6 | DIAC_FLAG_RTL, | 60 | { 0x05c6, DIAC_FLAG_RTL }, |
55 | 0x005c7 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Hebrew */ | 61 | { 0x05c7, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Hebrew */ |
56 | 0x0060f | DIAC_FLAG_RTL, | 62 | { 0x060f, DIAC_FLAG_RTL }, |
57 | 0x0061a | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 63 | { 0x061a, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
58 | 0x0064a | DIAC_FLAG_RTL, | 64 | { 0x064a, DIAC_FLAG_RTL }, |
59 | 0x0065e | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 65 | { 0x065e, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
60 | 0x0066f | DIAC_FLAG_RTL, | 66 | { 0x066f, DIAC_FLAG_RTL }, |
61 | 0x00670 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 67 | { 0x0670, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
62 | 0x006d5 | DIAC_FLAG_RTL, | 68 | { 0x06d5, DIAC_FLAG_RTL }, |
63 | 0x006dc | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 69 | { 0x06dc, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
64 | 0x006de | DIAC_FLAG_RTL, | 70 | { 0x06de, DIAC_FLAG_RTL }, |
65 | 0x006e4 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 71 | { 0x06e4, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
66 | 0x006e6 | DIAC_FLAG_RTL, | 72 | { 0x06e6, DIAC_FLAG_RTL }, |
67 | 0x006e8 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 73 | { 0x06e8, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
68 | 0x006e9 | DIAC_FLAG_RTL, | 74 | { 0x06e9, DIAC_FLAG_RTL }, |
69 | 0x006ed | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Arabic */ | 75 | { 0x06ed, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Arabic */ |
70 | 0x00710 | DIAC_FLAG_RTL, | 76 | { 0x0710, DIAC_FLAG_RTL }, |
71 | 0x00711 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Syriac */ | 77 | { 0x0711, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Syriac */ |
72 | 0x0072f | DIAC_FLAG_RTL, | 78 | { 0x072f, DIAC_FLAG_RTL }, |
73 | 0x0074a | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Syriac */ | 79 | { 0x074a, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Syriac */ |
74 | 0x007a5 | DIAC_FLAG_RTL, | 80 | { 0x07a5, DIAC_FLAG_RTL }, |
75 | 0x007b0 | DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL, /* Thaana */ | 81 | { 0x07b0, DIAC_FLAG_DIACRITIC | DIAC_FLAG_RTL }, /* Thaana */ |
76 | 0x007c0 | DIAC_FLAG_RTL, | 82 | { 0x07c0, DIAC_FLAG_RTL }, |
77 | 0x007ea, | 83 | { 0x07ea, DIAC_FLAG_NONE }, |
78 | 0x007f3 | DIAC_FLAG_DIACRITIC, /* NKo */ | 84 | { 0x07f3, DIAC_FLAG_DIACRITIC }, /* NKo */ |
79 | 0x00815, | 85 | { 0x0815, DIAC_FLAG_NONE }, |
80 | 0x00819 | DIAC_FLAG_DIACRITIC, /* Samaritan */ | 86 | { 0x0819, DIAC_FLAG_DIACRITIC }, /* Samaritan */ |
81 | 0x0081a, | 87 | { 0x081a, DIAC_FLAG_NONE }, |
82 | 0x00823 | DIAC_FLAG_DIACRITIC, /* Samaritan */ | 88 | { 0x0823, DIAC_FLAG_DIACRITIC }, /* Samaritan */ |
83 | 0x00824, | 89 | { 0x0824, DIAC_FLAG_NONE }, |
84 | 0x00827 | DIAC_FLAG_DIACRITIC, /* Samaritan */ | 90 | { 0x0827, DIAC_FLAG_DIACRITIC }, /* Samaritan */ |
85 | 0x00828, | 91 | { 0x0828, DIAC_FLAG_NONE }, |
86 | 0x0082d | DIAC_FLAG_DIACRITIC, /* Samaritan */ | 92 | { 0x082d, DIAC_FLAG_DIACRITIC }, /* Samaritan */ |
87 | 0x008ff, | 93 | { 0x08ff, DIAC_FLAG_NONE }, |
88 | 0x00903 | DIAC_FLAG_DIACRITIC, /* Devanagari */ | 94 | { 0x0903, DIAC_FLAG_DIACRITIC }, /* Devanagari */ |
89 | 0x0093b, | 95 | { 0x093b, DIAC_FLAG_NONE }, |
90 | 0x0093c | DIAC_FLAG_DIACRITIC, /* Devanagari */ | 96 | { 0x093c, DIAC_FLAG_DIACRITIC }, /* Devanagari */ |
91 | 0x0093d, | 97 | { 0x093d, DIAC_FLAG_NONE }, |
92 | 0x0094e | DIAC_FLAG_DIACRITIC, /* Devanagari */ | 98 | { 0x094e, DIAC_FLAG_DIACRITIC }, /* Devanagari */ |
93 | 0x00950, | 99 | { 0x0950, DIAC_FLAG_NONE }, |
94 | 0x00955 | DIAC_FLAG_DIACRITIC, /* Devanagari */ | 100 | { 0x0955, DIAC_FLAG_DIACRITIC }, /* Devanagari */ |
95 | 0x00961, | 101 | { 0x0961, DIAC_FLAG_NONE }, |
96 | 0x00963 | DIAC_FLAG_DIACRITIC, /* Devanagari */ | 102 | { 0x0963, DIAC_FLAG_DIACRITIC }, /* Devanagari */ |
97 | 0x00980, | 103 | { 0x0980, DIAC_FLAG_NONE }, |
98 | 0x00983 | DIAC_FLAG_DIACRITIC, /* Bengali */ | 104 | { 0x0983, DIAC_FLAG_DIACRITIC }, /* Bengali */ |
99 | 0x009bb, | 105 | { 0x09bb, DIAC_FLAG_NONE }, |
100 | 0x009bc | DIAC_FLAG_DIACRITIC, /* Bengali */ | 106 | { 0x09bc, DIAC_FLAG_DIACRITIC }, /* Bengali */ |
101 | 0x009bd, | 107 | { 0x09bd, DIAC_FLAG_NONE }, |
102 | 0x009cd | DIAC_FLAG_DIACRITIC, /* Bengali */ | 108 | { 0x09cd, DIAC_FLAG_DIACRITIC }, /* Bengali */ |
103 | 0x009d6, | 109 | { 0x09d6, DIAC_FLAG_NONE }, |
104 | 0x009d7 | DIAC_FLAG_DIACRITIC, /* Bengali */ | 110 | { 0x09d7, DIAC_FLAG_DIACRITIC }, /* Bengali */ |
105 | 0x009e1, | 111 | { 0x09e1, DIAC_FLAG_NONE }, |
106 | 0x009e3 | DIAC_FLAG_DIACRITIC, /* Bengali */ | 112 | { 0x09e3, DIAC_FLAG_DIACRITIC }, /* Bengali */ |
107 | 0x00a00, | 113 | { 0x0a00, DIAC_FLAG_NONE }, |
108 | 0x00a03 | DIAC_FLAG_DIACRITIC, /* Gurmukhi */ | 114 | { 0x0a03, DIAC_FLAG_DIACRITIC }, /* Gurmukhi */ |
109 | 0x00a3b, | 115 | { 0x0a3b, DIAC_FLAG_NONE }, |
110 | 0x00a51 | DIAC_FLAG_DIACRITIC, /* Gurmukhi */ | 116 | { 0x0a51, DIAC_FLAG_DIACRITIC }, /* Gurmukhi */ |
111 | 0x00a6f, | 117 | { 0x0a6f, DIAC_FLAG_NONE }, |
112 | 0x00a71 | DIAC_FLAG_DIACRITIC, /* Gurmukhi */ | 118 | { 0x0a71, DIAC_FLAG_DIACRITIC }, /* Gurmukhi */ |
113 | 0x00a74, | 119 | { 0x0a74, DIAC_FLAG_NONE }, |
114 | 0x00a75 | DIAC_FLAG_DIACRITIC, /* Gurmukhi */ | 120 | { 0x0a75, DIAC_FLAG_DIACRITIC }, /* Gurmukhi */ |
115 | 0x00a80, | 121 | { 0x0a80, DIAC_FLAG_NONE }, |
116 | 0x00a83 | DIAC_FLAG_DIACRITIC, /* Gujarati */ | 122 | { 0x0a83, DIAC_FLAG_DIACRITIC }, /* Gujarati */ |
117 | 0x00abb, | 123 | { 0x0abb, DIAC_FLAG_NONE }, |
118 | 0x00abc | DIAC_FLAG_DIACRITIC, /* Gujarati */ | 124 | { 0x0abc, DIAC_FLAG_DIACRITIC }, /* Gujarati */ |
119 | 0x00abd, | 125 | { 0x0abd, DIAC_FLAG_NONE }, |
120 | 0x00acd | DIAC_FLAG_DIACRITIC, /* Gujarati */ | 126 | { 0x0acd, DIAC_FLAG_DIACRITIC }, /* Gujarati */ |
121 | 0x00ae1, | 127 | { 0x0ae1, DIAC_FLAG_NONE }, |
122 | 0x00ae3 | DIAC_FLAG_DIACRITIC, /* Gujarati */ | 128 | { 0x0ae3, DIAC_FLAG_DIACRITIC }, /* Gujarati */ |
123 | 0x00b00, | 129 | { 0x0b00, DIAC_FLAG_NONE }, |
124 | 0x00b03 | DIAC_FLAG_DIACRITIC, /* Oriya */ | 130 | { 0x0b03, DIAC_FLAG_DIACRITIC }, /* Oriya */ |
125 | 0x00b3b, | 131 | { 0x0b3b, DIAC_FLAG_NONE }, |
126 | 0x00b3c | DIAC_FLAG_DIACRITIC, /* Oriya */ | 132 | { 0x0b3c, DIAC_FLAG_DIACRITIC }, /* Oriya */ |
127 | 0x00b3d, | 133 | { 0x0b3d, DIAC_FLAG_NONE }, |
128 | 0x00b57 | DIAC_FLAG_DIACRITIC, /* Oriya */ | 134 | { 0x0b57, DIAC_FLAG_DIACRITIC }, /* Oriya */ |
129 | 0x00b81, | 135 | { 0x0b81, DIAC_FLAG_NONE }, |
130 | 0x00b82 | DIAC_FLAG_DIACRITIC, /* Tamil */ | 136 | { 0x0b82, DIAC_FLAG_DIACRITIC }, /* Tamil */ |
131 | 0x00bbd, | 137 | { 0x0bbd, DIAC_FLAG_NONE }, |
132 | 0x00bcd | DIAC_FLAG_DIACRITIC, /* Tamil */ | 138 | { 0x0bcd, DIAC_FLAG_DIACRITIC }, /* Tamil */ |
133 | 0x00bd6, | 139 | { 0x0bd6, DIAC_FLAG_NONE }, |
134 | 0x00bd7 | DIAC_FLAG_DIACRITIC, /* Tamil */ | 140 | { 0x0bd7, DIAC_FLAG_DIACRITIC }, /* Tamil */ |
135 | 0x00c00, | 141 | { 0x0c00, DIAC_FLAG_NONE }, |
136 | 0x00c03 | DIAC_FLAG_DIACRITIC, /* Telugu */ | 142 | { 0x0c03, DIAC_FLAG_DIACRITIC }, /* Telugu */ |
137 | 0x00c3d, | 143 | { 0x0c3d, DIAC_FLAG_NONE }, |
138 | 0x00c56 | DIAC_FLAG_DIACRITIC, /* Telugu */ | 144 | { 0x0c56, DIAC_FLAG_DIACRITIC }, /* Telugu */ |
139 | 0x00c61, | 145 | { 0x0c61, DIAC_FLAG_NONE }, |
140 | 0x00c63 | DIAC_FLAG_DIACRITIC, /* Telugu */ | 146 | { 0x0c63, DIAC_FLAG_DIACRITIC }, /* Telugu */ |
141 | 0x00c81, | 147 | { 0x0c81, DIAC_FLAG_NONE }, |
142 | 0x00c83 | DIAC_FLAG_DIACRITIC, /* Kannada */ | 148 | { 0x0c83, DIAC_FLAG_DIACRITIC }, /* Kannada */ |
143 | 0x00cbb, | 149 | { 0x0cbb, DIAC_FLAG_NONE }, |
144 | 0x00cbc | DIAC_FLAG_DIACRITIC, /* Kannada */ | 150 | { 0x0cbc, DIAC_FLAG_DIACRITIC }, /* Kannada */ |
145 | 0x00cbd, | 151 | { 0x0cbd, DIAC_FLAG_NONE }, |
146 | 0x00cd6 | DIAC_FLAG_DIACRITIC, /* Kannada */ | 152 | { 0x0cd6, DIAC_FLAG_DIACRITIC }, /* Kannada */ |
147 | 0x00ce1, | 153 | { 0x0ce1, DIAC_FLAG_NONE }, |
148 | 0x00ce3 | DIAC_FLAG_DIACRITIC, /* Kannada */ | 154 | { 0x0ce3, DIAC_FLAG_DIACRITIC }, /* Kannada */ |
149 | 0x00d01, | 155 | { 0x0d01, DIAC_FLAG_NONE }, |
150 | 0x00d03 | DIAC_FLAG_DIACRITIC, /* Malayalam */ | 156 | { 0x0d03, DIAC_FLAG_DIACRITIC }, /* Malayalam */ |
151 | 0x00d3d, | 157 | { 0x0d3d, DIAC_FLAG_NONE }, |
152 | 0x00d57 | DIAC_FLAG_DIACRITIC, /* Malayalam */ | 158 | { 0x0d57, DIAC_FLAG_DIACRITIC }, /* Malayalam */ |
153 | 0x00d61, | 159 | { 0x0d61, DIAC_FLAG_NONE }, |
154 | 0x00d63 | DIAC_FLAG_DIACRITIC, /* Malayalam */ | 160 | { 0x0d63, DIAC_FLAG_DIACRITIC }, /* Malayalam */ |
155 | 0x00d81, | 161 | { 0x0d81, DIAC_FLAG_NONE }, |
156 | 0x00d83 | DIAC_FLAG_DIACRITIC, /* Sinhala */ | 162 | { 0x0d83, DIAC_FLAG_DIACRITIC }, /* Sinhala */ |
157 | 0x00dc9, | 163 | { 0x0dc9, DIAC_FLAG_NONE }, |
158 | 0x00df3 | DIAC_FLAG_DIACRITIC, /* Sinhala */ | 164 | { 0x0df3, DIAC_FLAG_DIACRITIC }, /* Sinhala */ |
159 | 0x00e30, | 165 | { 0x0e30, DIAC_FLAG_NONE }, |
160 | 0x00e31 | DIAC_FLAG_DIACRITIC, /* Thai */ | 166 | { 0x0e31, DIAC_FLAG_DIACRITIC }, /* Thai */ |
161 | 0x00e33, | 167 | { 0x0e33, DIAC_FLAG_NONE }, |
162 | 0x00e3a | DIAC_FLAG_DIACRITIC, /* Thai */ | 168 | { 0x0e3a, DIAC_FLAG_DIACRITIC }, /* Thai */ |
163 | 0x00e46, | 169 | { 0x0e46, DIAC_FLAG_NONE }, |
164 | 0x00e4e | DIAC_FLAG_DIACRITIC, /* Thai */ | 170 | { 0x0e4e, DIAC_FLAG_DIACRITIC }, /* Thai */ |
165 | 0x00eb0, | 171 | { 0x0eb0, DIAC_FLAG_NONE }, |
166 | 0x00eb1 | DIAC_FLAG_DIACRITIC, /* Lao */ | 172 | { 0x0eb1, DIAC_FLAG_DIACRITIC }, /* Lao */ |
167 | 0x00eb3, | 173 | { 0x0eb3, DIAC_FLAG_NONE }, |
168 | 0x00ebc | DIAC_FLAG_DIACRITIC, /* Lao */ | 174 | { 0x0ebc, DIAC_FLAG_DIACRITIC }, /* Lao */ |
169 | 0x00ec7, | 175 | { 0x0ec7, DIAC_FLAG_NONE }, |
170 | 0x00ecd | DIAC_FLAG_DIACRITIC, /* Lao */ | 176 | { 0x0ecd, DIAC_FLAG_DIACRITIC }, /* Lao */ |
171 | 0x00f17, | 177 | { 0x0f17, DIAC_FLAG_NONE }, |
172 | 0x00f19 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 178 | { 0x0f19, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
173 | 0x00f34, | 179 | { 0x0f34, DIAC_FLAG_NONE }, |
174 | 0x00f35 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 180 | { 0x0f35, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
175 | 0x00f36, | 181 | { 0x0f36, DIAC_FLAG_NONE }, |
176 | 0x00f37 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 182 | { 0x0f37, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
177 | 0x00f38, | 183 | { 0x0f38, DIAC_FLAG_NONE }, |
178 | 0x00f39 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 184 | { 0x0f39, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
179 | 0x00f3d, | 185 | { 0x0f3d, DIAC_FLAG_NONE }, |
180 | 0x00f3f | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 186 | { 0x0f3f, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
181 | 0x00f70, | 187 | { 0x0f70, DIAC_FLAG_NONE }, |
182 | 0x00f84 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 188 | { 0x0f84, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
183 | 0x00f85, | 189 | { 0x0f85, DIAC_FLAG_NONE }, |
184 | 0x00f87 | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 190 | { 0x0f87, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
185 | 0x00f8f, | 191 | { 0x0f8f, DIAC_FLAG_NONE }, |
186 | 0x00fbc | DIAC_FLAG_DIACRITIC, /* Tibetan */ | 192 | { 0x0fbc, DIAC_FLAG_DIACRITIC }, /* Tibetan */ |
187 | 0x0102a, | 193 | { 0x102a, DIAC_FLAG_NONE }, |
188 | 0x0103e | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 194 | { 0x103e, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
189 | 0x01055, | 195 | { 0x1055, DIAC_FLAG_NONE }, |
190 | 0x01059 | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 196 | { 0x1059, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
191 | 0x0105d, | 197 | { 0x105d, DIAC_FLAG_NONE }, |
192 | 0x01060 | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 198 | { 0x1060, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
193 | 0x01061, | 199 | { 0x1061, DIAC_FLAG_NONE }, |
194 | 0x01064 | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 200 | { 0x1064, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
195 | 0x01066, | 201 | { 0x1066, DIAC_FLAG_NONE }, |
196 | 0x0106d | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 202 | { 0x106d, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
197 | 0x01070, | 203 | { 0x1070, DIAC_FLAG_NONE }, |
198 | 0x01074 | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 204 | { 0x1074, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
199 | 0x01081, | 205 | { 0x1081, DIAC_FLAG_NONE }, |
200 | 0x0108d | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 206 | { 0x108d, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
201 | 0x0108e, | 207 | { 0x108e, DIAC_FLAG_NONE }, |
202 | 0x0108f | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 208 | { 0x108f, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
203 | 0x01099, | 209 | { 0x1099, DIAC_FLAG_NONE }, |
204 | 0x0109d | DIAC_FLAG_DIACRITIC, /* Myanmar */ | 210 | { 0x109d, DIAC_FLAG_DIACRITIC }, /* Myanmar */ |
205 | 0x0135e, | 211 | { 0x135e, DIAC_FLAG_NONE }, |
206 | 0x0135f | DIAC_FLAG_DIACRITIC, /* Ethiopic */ | 212 | { 0x135f, DIAC_FLAG_DIACRITIC }, /* Ethiopic */ |
207 | 0x01711, | 213 | { 0x1711, DIAC_FLAG_NONE }, |
208 | 0x01714 | DIAC_FLAG_DIACRITIC, /* Tagalog */ | 214 | { 0x1714, DIAC_FLAG_DIACRITIC }, /* Tagalog */ |
209 | 0x01731, | 215 | { 0x1731, DIAC_FLAG_NONE }, |
210 | 0x01734 | DIAC_FLAG_DIACRITIC, /* Hanunoo */ | 216 | { 0x1734, DIAC_FLAG_DIACRITIC }, /* Hanunoo */ |
211 | 0x01751, | 217 | { 0x1751, DIAC_FLAG_NONE }, |
212 | 0x01753 | DIAC_FLAG_DIACRITIC, /* Buhid */ | 218 | { 0x1753, DIAC_FLAG_DIACRITIC }, /* Buhid */ |
213 | 0x01771, | 219 | { 0x1771, DIAC_FLAG_NONE }, |
214 | 0x01773 | DIAC_FLAG_DIACRITIC, /* Tagbanwa */ | 220 | { 0x1773, DIAC_FLAG_DIACRITIC }, /* Tagbanwa */ |
215 | 0x017b5, | 221 | { 0x17b5, DIAC_FLAG_NONE }, |
216 | 0x017d3 | DIAC_FLAG_DIACRITIC, /* Khmer */ | 222 | { 0x17d3, DIAC_FLAG_DIACRITIC }, /* Khmer */ |
217 | 0x017dc, | 223 | { 0x17dc, DIAC_FLAG_NONE }, |
218 | 0x017dd | DIAC_FLAG_DIACRITIC, /* Khmer */ | 224 | { 0x17dd, DIAC_FLAG_DIACRITIC }, /* Khmer */ |
219 | 0x018a8, | 225 | { 0x18a8, DIAC_FLAG_NONE }, |
220 | 0x018a9 | DIAC_FLAG_DIACRITIC, /* Mongolian */ | 226 | { 0x18a9, DIAC_FLAG_DIACRITIC }, /* Mongolian */ |
221 | 0x0191f, | 227 | { 0x191f, DIAC_FLAG_NONE }, |
222 | 0x0193b | DIAC_FLAG_DIACRITIC, /* Limbu */ | 228 | { 0x193b, DIAC_FLAG_DIACRITIC }, /* Limbu */ |
223 | 0x019af, | 229 | { 0x19af, DIAC_FLAG_NONE }, |
224 | 0x019c0 | DIAC_FLAG_DIACRITIC, /* New Tai Lue */ | 230 | { 0x19c0, DIAC_FLAG_DIACRITIC }, /* New Tai Lue */ |
225 | 0x019c7, | 231 | { 0x19c7, DIAC_FLAG_NONE }, |
226 | 0x019c9 | DIAC_FLAG_DIACRITIC, /* New Tai Lue */ | 232 | { 0x19c9, DIAC_FLAG_DIACRITIC }, /* New Tai Lue */ |
227 | 0x01a16, | 233 | { 0x1a16, DIAC_FLAG_NONE }, |
228 | 0x01a1b | DIAC_FLAG_DIACRITIC, /* Buginese */ | 234 | { 0x1a1b, DIAC_FLAG_DIACRITIC }, /* Buginese */ |
229 | 0x01a54, | 235 | { 0x1a54, DIAC_FLAG_NONE }, |
230 | 0x01a7f | DIAC_FLAG_DIACRITIC, /* Tai Tham */ | 236 | { 0x1a7f, DIAC_FLAG_DIACRITIC }, /* Tai Tham */ |
231 | 0x01aff, | 237 | { 0x1aff, DIAC_FLAG_NONE }, |
232 | 0x01b04 | DIAC_FLAG_DIACRITIC, /* Balinese */ | 238 | { 0x1b04, DIAC_FLAG_DIACRITIC }, /* Balinese */ |
233 | 0x01b33, | 239 | { 0x1b33, DIAC_FLAG_NONE }, |
234 | 0x01b44 | DIAC_FLAG_DIACRITIC, /* Balinese */ | 240 | { 0x1b44, DIAC_FLAG_DIACRITIC }, /* Balinese */ |
235 | 0x01b6a, | 241 | { 0x1b6a, DIAC_FLAG_NONE }, |
236 | 0x01b73 | DIAC_FLAG_DIACRITIC, /* Balinese */ | 242 | { 0x1b73, DIAC_FLAG_DIACRITIC }, /* Balinese */ |
237 | 0x01b7f, | 243 | { 0x1b7f, DIAC_FLAG_NONE }, |
238 | 0x01b82 | DIAC_FLAG_DIACRITIC, /* Sundanese */ | 244 | { 0x1b82, DIAC_FLAG_DIACRITIC }, /* Sundanese */ |
239 | 0x01ba0, | 245 | { 0x1ba0, DIAC_FLAG_NONE }, |
240 | 0x01baa | DIAC_FLAG_DIACRITIC, /* Sundanese */ | 246 | { 0x1baa, DIAC_FLAG_DIACRITIC }, /* Sundanese */ |
241 | 0x01c23, | 247 | { 0x1c23, DIAC_FLAG_NONE }, |
242 | 0x01c37 | DIAC_FLAG_DIACRITIC, /* Lepcha */ | 248 | { 0x1c37, DIAC_FLAG_DIACRITIC }, /* Lepcha */ |
243 | 0x01ccf, | 249 | { 0x1ccf, DIAC_FLAG_NONE }, |
244 | 0x01cd2 | DIAC_FLAG_DIACRITIC, /* Vedic Extensions */ | 250 | { 0x1cd2, DIAC_FLAG_DIACRITIC }, /* Vedic Extensions */ |
245 | 0x01cd3, | 251 | { 0x1cd3, DIAC_FLAG_NONE }, |
246 | 0x01ce8 | DIAC_FLAG_DIACRITIC, /* Vedic Extensions */ | 252 | { 0x1ce8, DIAC_FLAG_DIACRITIC }, /* Vedic Extensions */ |
247 | 0x01cec, | 253 | { 0x1cec, DIAC_FLAG_NONE }, |
248 | 0x01ced | DIAC_FLAG_DIACRITIC, /* Vedic Extensions */ | 254 | { 0x1ced, DIAC_FLAG_DIACRITIC }, /* Vedic Extensions */ |
249 | 0x01cf1, | 255 | { 0x1cf1, DIAC_FLAG_NONE }, |
250 | 0x01cf2 | DIAC_FLAG_DIACRITIC, /* Vedic Extensions */ | 256 | { 0x1cf2, DIAC_FLAG_DIACRITIC }, /* Vedic Extensions */ |
251 | 0x01dbf, | 257 | { 0x1dbf, DIAC_FLAG_NONE }, |
252 | 0x01dff | DIAC_FLAG_DIACRITIC, /* Combining Diacritical Marks Supplement */ | 258 | { 0x1dff, DIAC_FLAG_DIACRITIC }, /* Combining Diacritical Marks Supplement */ |
253 | 0x020cf, | 259 | { 0x20cf, DIAC_FLAG_NONE }, |
254 | 0x020f0 | DIAC_FLAG_DIACRITIC, /* Combining Diacritical Marks for Symbols */ | 260 | { 0x20f0, DIAC_FLAG_DIACRITIC }, /* Combining Diacritical Marks for Symbols */ |
255 | 0x02cee, | 261 | { 0x2cee, DIAC_FLAG_NONE }, |
256 | 0x02cf1 | DIAC_FLAG_DIACRITIC, /* Coptic */ | 262 | { 0x2cf1, DIAC_FLAG_DIACRITIC }, /* Coptic */ |
257 | 0x02ddf, | 263 | { 0x2ddf, DIAC_FLAG_NONE }, |
258 | 0x02dff | DIAC_FLAG_DIACRITIC, /* Coptic */ | 264 | { 0x2dff, DIAC_FLAG_DIACRITIC }, /* Coptic */ |
259 | 0x03029, | 265 | { 0x3029, DIAC_FLAG_NONE }, |
260 | 0x0302f | DIAC_FLAG_DIACRITIC, /* CJK Symbols and Punctuation */ | 266 | { 0x302f, DIAC_FLAG_DIACRITIC }, /* CJK Symbols and Punctuation */ |
261 | 0x03098, | 267 | { 0x3098, DIAC_FLAG_NONE }, |
262 | 0x0309a | DIAC_FLAG_DIACRITIC, /* Hiragana */ | 268 | { 0x309a, DIAC_FLAG_DIACRITIC }, /* Hiragana */ |
263 | 0x0a66e, | 269 | { 0xa66e, DIAC_FLAG_NONE }, |
264 | 0x0a672 | DIAC_FLAG_DIACRITIC, /* Hiragana */ | 270 | { 0xa672, DIAC_FLAG_DIACRITIC }, /* Hiragana */ |
265 | 0x0a67b, | 271 | { 0xa67b, DIAC_FLAG_NONE }, |
266 | 0x0a67d | DIAC_FLAG_DIACRITIC, /* Hiragana */ | 272 | { 0xa67d, DIAC_FLAG_DIACRITIC }, /* Hiragana */ |
267 | 0x0a6ef, | 273 | { 0xa6ef, DIAC_FLAG_NONE }, |
268 | 0x0a6f1 | DIAC_FLAG_DIACRITIC, /* Bamum */ | 274 | { 0xa6f1, DIAC_FLAG_DIACRITIC }, /* Bamum */ |
269 | 0x0a801, | 275 | { 0xa801, DIAC_FLAG_NONE }, |
270 | 0x0a802 | DIAC_FLAG_DIACRITIC, /* Syloti Nagri */ | 276 | { 0xa802, DIAC_FLAG_DIACRITIC }, /* Syloti Nagri */ |
271 | 0x0a805, | 277 | { 0xa805, DIAC_FLAG_NONE }, |
272 | 0x0a806 | DIAC_FLAG_DIACRITIC, /* Syloti Nagri */ | 278 | { 0xa806, DIAC_FLAG_DIACRITIC }, /* Syloti Nagri */ |
273 | 0x0a80a, | 279 | { 0xa80a, DIAC_FLAG_NONE }, |
274 | 0x0a80b | DIAC_FLAG_DIACRITIC, /* Syloti Nagri */ | 280 | { 0xa80b, DIAC_FLAG_DIACRITIC }, /* Syloti Nagri */ |
275 | 0x0a822, | 281 | { 0xa822, DIAC_FLAG_NONE }, |
276 | 0x0a827 | DIAC_FLAG_DIACRITIC, /* Syloti Nagri */ | 282 | { 0xa827, DIAC_FLAG_DIACRITIC }, /* Syloti Nagri */ |
277 | 0x0a87f, | 283 | { 0xa87f, DIAC_FLAG_NONE }, |
278 | 0x0a881 | DIAC_FLAG_DIACRITIC, /* Saurashtra */ | 284 | { 0xa881, DIAC_FLAG_DIACRITIC }, /* Saurashtra */ |
279 | 0x0a8b3, | 285 | { 0xa8b3, DIAC_FLAG_NONE }, |
280 | 0x0a8c4 | DIAC_FLAG_DIACRITIC, /* Saurashtra */ | 286 | { 0xa8c4, DIAC_FLAG_DIACRITIC }, /* Saurashtra */ |
281 | 0x0a8df, | 287 | { 0xa8df, DIAC_FLAG_NONE }, |
282 | 0x0a8f1 | DIAC_FLAG_DIACRITIC, /* Devanagari Extended */ | 288 | { 0xa8f1, DIAC_FLAG_DIACRITIC }, /* Devanagari Extended */ |
283 | 0x0a925, | 289 | { 0xa925, DIAC_FLAG_NONE }, |
284 | 0x0a92d | DIAC_FLAG_DIACRITIC, /* Kayah Li */ | 290 | { 0xa92d, DIAC_FLAG_DIACRITIC }, /* Kayah Li */ |
285 | 0x0a946, | 291 | { 0xa946, DIAC_FLAG_NONE }, |
286 | 0x0a953 | DIAC_FLAG_DIACRITIC, /* Rejang */ | 292 | { 0xa953, DIAC_FLAG_DIACRITIC }, /* Rejang */ |
287 | 0x0a97f, | 293 | { 0xa97f, DIAC_FLAG_NONE }, |
288 | 0x0a983 | DIAC_FLAG_DIACRITIC, /* Javanese */ | 294 | { 0xa983, DIAC_FLAG_DIACRITIC }, /* Javanese */ |
289 | 0x0a9b2, | 295 | { 0xa9b2, DIAC_FLAG_NONE }, |
290 | 0x0a9c0 | DIAC_FLAG_DIACRITIC, /* Javanese */ | 296 | { 0xa9c0, DIAC_FLAG_DIACRITIC }, /* Javanese */ |
291 | 0x0aa28, | 297 | { 0xaa28, DIAC_FLAG_NONE }, |
292 | 0x0aa36 | DIAC_FLAG_DIACRITIC, /* Cham */ | 298 | { 0xaa36, DIAC_FLAG_DIACRITIC }, /* Cham */ |
293 | 0x0aa42, | 299 | { 0xaa42, DIAC_FLAG_NONE }, |
294 | 0x0aa43 | DIAC_FLAG_DIACRITIC, /* Cham */ | 300 | { 0xaa43, DIAC_FLAG_DIACRITIC }, /* Cham */ |
295 | 0x0aa4b, | 301 | { 0xaa4b, DIAC_FLAG_NONE }, |
296 | 0x0aa4d | DIAC_FLAG_DIACRITIC, /* Cham */ | 302 | { 0xaa4d, DIAC_FLAG_DIACRITIC }, /* Cham */ |
297 | 0x0aa7a, | 303 | { 0xaa7a, DIAC_FLAG_NONE }, |
298 | 0x0aa7b | DIAC_FLAG_DIACRITIC, /* Cham */ | 304 | { 0xaa7b, DIAC_FLAG_DIACRITIC }, /* Cham */ |
299 | 0x0aaaf, | 305 | { 0xaaaf, DIAC_FLAG_NONE }, |
300 | 0x0aab0 | DIAC_FLAG_DIACRITIC, /* Tai Viet */ | 306 | { 0xaab0, DIAC_FLAG_DIACRITIC }, /* Tai Viet */ |
301 | 0x0aab1, | 307 | { 0xaab1, DIAC_FLAG_NONE }, |
302 | 0x0aab4 | DIAC_FLAG_DIACRITIC, /* Tai Viet */ | 308 | { 0xaab4, DIAC_FLAG_DIACRITIC }, /* Tai Viet */ |
303 | 0x0aab6, | 309 | { 0xaab6, DIAC_FLAG_NONE }, |
304 | 0x0aab8 | DIAC_FLAG_DIACRITIC, /* Tai Viet */ | 310 | { 0xaab8, DIAC_FLAG_DIACRITIC }, /* Tai Viet */ |
305 | 0x0aabd, | 311 | { 0xaabd, DIAC_FLAG_NONE }, |
306 | 0x0aabf | DIAC_FLAG_DIACRITIC, /* Tai Viet */ | 312 | { 0xaabf, DIAC_FLAG_DIACRITIC }, /* Tai Viet */ |
307 | 0x0aac0, | 313 | { 0xaac0, DIAC_FLAG_NONE }, |
308 | 0x0aac1 | DIAC_FLAG_DIACRITIC, /* Tai Viet */ | 314 | { 0xaac1, DIAC_FLAG_DIACRITIC }, /* Tai Viet */ |
309 | 0x0abe2, | 315 | { 0xabe2, DIAC_FLAG_NONE }, |
310 | 0x0abea | DIAC_FLAG_DIACRITIC, /* Meetei Mayek */ | 316 | { 0xabea, DIAC_FLAG_DIACRITIC }, /* Meetei Mayek */ |
311 | 0x0abeb, | 317 | { 0xabeb, DIAC_FLAG_NONE }, |
312 | 0x0abed | DIAC_FLAG_DIACRITIC, /* Meetei Mayek */ | 318 | { 0xabed, DIAC_FLAG_DIACRITIC }, /* Meetei Mayek */ |
313 | 0x0fb1d, | 319 | { 0xfb1d, DIAC_FLAG_NONE }, |
314 | 0x0fb1e | DIAC_FLAG_DIACRITIC, /* Alphabetic Presentation Forms */ | 320 | { 0xfb1e, DIAC_FLAG_DIACRITIC }, /* Alphabetic Presentation Forms */ |
315 | 0x0fe1f, | 321 | { 0xfe1f, DIAC_FLAG_NONE }, |
316 | 0x0fe26 | DIAC_FLAG_DIACRITIC, /* Combining Half Marks */ | 322 | { 0xfe26, DIAC_FLAG_DIACRITIC }, /* Combining Half Marks */ |
317 | 0x1107f, | 323 | /* Currently we don't support chars above U-FFFF */ |
318 | 0x11082 | DIAC_FLAG_DIACRITIC, /* Kaithi */ | 324 | { 0xffff, DIAC_FLAG_NONE }, |
319 | 0x110af, | 325 | #if 0 |
320 | 0x110ba | DIAC_FLAG_DIACRITIC, /* Kaithi */ | 326 | { 0x1107f, DIAC_FLAG_NONE }, |
321 | 0x1d164, | 327 | { 0x11082, DIAC_FLAG_DIACRITIC }, /* Kaithi */ |
322 | 0x1d169 | DIAC_FLAG_DIACRITIC, /* Musical Symbols */ | 328 | { 0x110af, DIAC_FLAG_NONE }, |
323 | 0x1d16c, | 329 | { 0x110ba, DIAC_FLAG_DIACRITIC }, /* Kaithi */ |
324 | 0x1d182 | DIAC_FLAG_DIACRITIC, /* Musical Symbols */ | 330 | { 0x1d164, DIAC_FLAG_NONE }, |
325 | 0x1d184, | 331 | { 0x1d169, DIAC_FLAG_DIACRITIC }, /* Musical Symbols */ |
326 | 0x1d18b | DIAC_FLAG_DIACRITIC, /* Musical Symbols */ | 332 | { 0x1d16c, DIAC_FLAG_NONE }, |
327 | 0x1d1a9, | 333 | { 0x1d182, DIAC_FLAG_DIACRITIC }, /* Musical Symbols */ |
328 | 0x1d1ad | DIAC_FLAG_DIACRITIC, /* Musical Symbols */ | 334 | { 0x1d184, DIAC_FLAG_NONE }, |
329 | 0x1d241, | 335 | { 0x1d18b, DIAC_FLAG_DIACRITIC }, /* Musical Symbols */ |
330 | 0x1d244 | DIAC_FLAG_DIACRITIC, /* Ancient Greek Musical Notation */ | 336 | { 0x1d1a9, DIAC_FLAG_NONE }, |
331 | 0xe01ef, | 337 | { 0x1d1ad, DIAC_FLAG_DIACRITIC }, /* Musical Symbols */ |
338 | { 0x1d241, DIAC_FLAG_NONE }, | ||
339 | { 0x1d244, DIAC_FLAG_DIACRITIC }, /* Ancient Greek Musical Notation */ | ||
340 | { 0xe01ef, DIAC_FLAG_NONE }, | ||
341 | #endif | ||
332 | }; | 342 | }; |
333 | 343 | ||
334 | #define MRU_MAX_LEN 32 | 344 | #define MRU_MAX_LEN 32 |
@@ -336,7 +346,7 @@ static const int diac_range[] = | |||
336 | static unsigned short mru_len = 0; | 346 | static unsigned short mru_len = 0; |
337 | static unsigned short diacritic_mru[MRU_MAX_LEN]; | 347 | static unsigned short diacritic_mru[MRU_MAX_LEN]; |
338 | 348 | ||
339 | int is_diacritic(unsigned short char_code, bool *is_rtl) | 349 | int is_diacritic(const unsigned short char_code, bool *is_rtl) |
340 | { | 350 | { |
341 | unsigned short mru, i; | 351 | unsigned short mru, i; |
342 | 352 | ||