summaryrefslogtreecommitdiff
path: root/firmware/drivers/diacritic.c
diff options
context:
space:
mode:
authorTomer Shalev <shalev.tomer@gmail.com>2009-11-28 17:07:57 +0000
committerTomer Shalev <shalev.tomer@gmail.com>2009-11-28 17:07:57 +0000
commitc2617dc4ed76eceaefd4ca39c0159498eb5e9762 (patch)
tree72ba77525fae0b356e6976175ddfe114d5a12c02 /firmware/drivers/diacritic.c
parentc074c76211621ab15518649a4a835aeb5798bf29 (diff)
downloadrockbox-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.c610
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
38struct diac_range
39{
40 unsigned short last;
41 unsigned char flags;
42};
37 43
38/* Sorted by Unicode value */ 44/* Sorted by Unicode value */
39static const int diac_range[] = 45static 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[] =
336static unsigned short mru_len = 0; 346static unsigned short mru_len = 0;
337static unsigned short diacritic_mru[MRU_MAX_LEN]; 347static unsigned short diacritic_mru[MRU_MAX_LEN];
338 348
339int is_diacritic(unsigned short char_code, bool *is_rtl) 349int is_diacritic(const unsigned short char_code, bool *is_rtl)
340{ 350{
341 unsigned short mru, i; 351 unsigned short mru, i;
342 352