15 #include "unicodeLatinMap.h" 17 bool UnicodeLatinMap::_initialized =
false;
18 UnicodeLatinMap::ByCharacter *UnicodeLatinMap::_by_character;
22 { 0x00a1, UnicodeLatinMap::CT_punct,
'!', 0, 0x00a1, 0x00a1,
23 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
24 { 0x00bf, UnicodeLatinMap::CT_punct,
'?', 0, 0x00bf, 0x00bf,
25 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
26 { 0x0061, UnicodeLatinMap::CT_lower,
'a', 0, 0x0061, 0x0041,
27 UnicodeLatinMap::AT_none, 0 },
28 { 0x0041, UnicodeLatinMap::CT_upper,
'A', 0, 0x0061, 0x0041,
29 UnicodeLatinMap::AT_none, 0 },
30 { 0x00e1, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e1, 0x00c1,
31 UnicodeLatinMap::AT_acute, 0 },
32 { 0x00c1, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e1, 0x00c1,
33 UnicodeLatinMap::AT_acute, 0 },
34 { 0x00e0, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e0, 0x00c0,
35 UnicodeLatinMap::AT_grave, 0 },
36 { 0x00c0, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e0, 0x00c0,
37 UnicodeLatinMap::AT_grave, 0 },
38 { 0x0103, UnicodeLatinMap::CT_lower,
'a', 0, 0x0103, 0x0102,
39 UnicodeLatinMap::AT_breve, 0 },
40 { 0x0102, UnicodeLatinMap::CT_upper,
'A', 0, 0x0103, 0x0102,
41 UnicodeLatinMap::AT_breve, 0 },
42 { 0x1eaf, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eaf, 0x1eae,
43 UnicodeLatinMap::AT_breve_and_acute, 0 },
44 { 0x1eae, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eaf, 0x1eae,
45 UnicodeLatinMap::AT_breve_and_acute, 0 },
46 { 0x1eb1, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eb1, 0x1eb0,
47 UnicodeLatinMap::AT_breve_and_grave, 0 },
48 { 0x1eb0, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eb1, 0x1eb0,
49 UnicodeLatinMap::AT_breve_and_grave, 0 },
50 { 0x1eb5, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eb5, 0x1eb4,
51 UnicodeLatinMap::AT_breve_and_tilde, 0 },
52 { 0x1eb4, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eb5, 0x1eb4,
53 UnicodeLatinMap::AT_breve_and_tilde, 0 },
54 { 0x1eb3, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eb3, 0x1eb2,
55 UnicodeLatinMap::AT_breve_and_hook_above, 0 },
56 { 0x1eb2, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eb3, 0x1eb2,
57 UnicodeLatinMap::AT_breve_and_hook_above, 0 },
58 { 0x00e2, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e2, 0x00c2,
59 UnicodeLatinMap::AT_circumflex, 0 },
60 { 0x00c2, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e2, 0x00c2,
61 UnicodeLatinMap::AT_circumflex, 0 },
62 { 0x1ea5, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ea5, 0x1ea4,
63 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
64 { 0x1ea4, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ea5, 0x1ea4,
65 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
66 { 0x1ea7, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ea7, 0x1ea6,
67 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
68 { 0x1ea6, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ea7, 0x1ea6,
69 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
70 { 0x1eab, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eab, 0x1eaa,
71 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
72 { 0x1eaa, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eab, 0x1eaa,
73 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
74 { 0x1ea9, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ea9, 0x1ea8,
75 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
76 { 0x1ea8, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ea9, 0x1ea8,
77 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
78 { 0x01ce, UnicodeLatinMap::CT_lower,
'a', 0, 0x01ce, 0x01cd,
79 UnicodeLatinMap::AT_caron, 0 },
80 { 0x01cd, UnicodeLatinMap::CT_upper,
'A', 0, 0x01ce, 0x01cd,
81 UnicodeLatinMap::AT_caron, 0 },
82 { 0x00e5, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e5, 0x00c5,
83 UnicodeLatinMap::AT_ring_above, 0 },
84 { 0x00c5, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e5, 0x00c5,
85 UnicodeLatinMap::AT_ring_above, 0 },
86 { 0x01fb, UnicodeLatinMap::CT_lower,
'a', 0, 0x01fb, 0x01fa,
87 UnicodeLatinMap::AT_ring_above_and_acute, 0 },
88 { 0x01fa, UnicodeLatinMap::CT_upper,
'A', 0, 0x01fb, 0x01fa,
89 UnicodeLatinMap::AT_ring_above_and_acute, 0 },
90 { 0x00e4, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e4, 0x00c4,
91 UnicodeLatinMap::AT_diaeresis, 0 },
92 { 0x00c4, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e4, 0x00c4,
93 UnicodeLatinMap::AT_diaeresis, 0 },
94 { 0x01df, UnicodeLatinMap::CT_lower,
'a', 0, 0x01df, 0x01de,
95 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
96 { 0x01de, UnicodeLatinMap::CT_upper,
'A', 0, 0x01df, 0x01de,
97 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
98 { 0x00e3, UnicodeLatinMap::CT_lower,
'a', 0, 0x00e3, 0x00c3,
99 UnicodeLatinMap::AT_tilde, 0 },
100 { 0x00c3, UnicodeLatinMap::CT_upper,
'A', 0, 0x00e3, 0x00c3,
101 UnicodeLatinMap::AT_tilde, 0 },
102 { 0x0227, UnicodeLatinMap::CT_lower,
'a', 0, 0x0227, 0x0226,
103 UnicodeLatinMap::AT_dot_above, 0 },
104 { 0x0226, UnicodeLatinMap::CT_upper,
'A', 0, 0x0227, 0x0226,
105 UnicodeLatinMap::AT_dot_above, 0 },
106 { 0x01e1, UnicodeLatinMap::CT_lower,
'a', 0, 0x01e1, 0x01e0,
107 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
108 { 0x01e0, UnicodeLatinMap::CT_upper,
'A', 0, 0x01e1, 0x01e0,
109 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
110 { 0x0105, UnicodeLatinMap::CT_lower,
'a', 0, 0x0105, 0x0104,
111 UnicodeLatinMap::AT_ogonek, 0 },
112 { 0x0104, UnicodeLatinMap::CT_upper,
'A', 0, 0x0105, 0x0104,
113 UnicodeLatinMap::AT_ogonek, 0 },
114 { 0x0101, UnicodeLatinMap::CT_lower,
'a', 0, 0x0101, 0x0100,
115 UnicodeLatinMap::AT_macron, 0 },
116 { 0x0100, UnicodeLatinMap::CT_upper,
'A', 0, 0x0101, 0x0100,
117 UnicodeLatinMap::AT_macron, 0 },
118 { 0x1ea3, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ea3, 0x1ea2,
119 UnicodeLatinMap::AT_hook_above, 0 },
120 { 0x1ea2, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ea3, 0x1ea2,
121 UnicodeLatinMap::AT_hook_above, 0 },
122 { 0x0201, UnicodeLatinMap::CT_lower,
'a', 0, 0x0201, 0x0200,
123 UnicodeLatinMap::AT_double_grave, 0 },
124 { 0x0200, UnicodeLatinMap::CT_upper,
'A', 0, 0x0201, 0x0200,
125 UnicodeLatinMap::AT_double_grave, 0 },
126 { 0x0203, UnicodeLatinMap::CT_lower,
'a', 0, 0x0203, 0x0202,
127 UnicodeLatinMap::AT_inverted_breve, 0 },
128 { 0x0202, UnicodeLatinMap::CT_upper,
'A', 0, 0x0203, 0x0202,
129 UnicodeLatinMap::AT_inverted_breve, 0 },
130 { 0x1ea1, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ea1, 0x1ea0,
131 UnicodeLatinMap::AT_dot_below, 0 },
132 { 0x1ea0, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ea1, 0x1ea0,
133 UnicodeLatinMap::AT_dot_below, 0 },
134 { 0x1eb7, UnicodeLatinMap::CT_lower,
'a', 0, 0x1eb7, 0x1eb6,
135 UnicodeLatinMap::AT_breve_and_dot_below, 0 },
136 { 0x1eb6, UnicodeLatinMap::CT_upper,
'A', 0, 0x1eb7, 0x1eb6,
137 UnicodeLatinMap::AT_breve_and_dot_below, 0 },
138 { 0x1ead, UnicodeLatinMap::CT_lower,
'a', 0, 0x1ead, 0x1eac,
139 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
140 { 0x1eac, UnicodeLatinMap::CT_upper,
'A', 0, 0x1ead, 0x1eac,
141 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
142 { 0x1e01, UnicodeLatinMap::CT_lower,
'a', 0, 0x1e01, 0x1e00,
143 UnicodeLatinMap::AT_ring_below, 0 },
144 { 0x1e00, UnicodeLatinMap::CT_upper,
'A', 0, 0x1e01, 0x1e00,
145 UnicodeLatinMap::AT_ring_below, 0 },
146 { 0x00e6, UnicodeLatinMap::CT_lower,
'a',
'e', 0x00e6, 0x00c6,
147 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
148 { 0x00c6, UnicodeLatinMap::CT_upper,
'A',
'E', 0x00e6, 0x00c6,
149 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
150 { 0x01fd, UnicodeLatinMap::CT_lower,
'a',
'e', 0x01fd, 0x01fc,
151 UnicodeLatinMap::AT_acute, UnicodeLatinMap::AF_ligature },
152 { 0x01fc, UnicodeLatinMap::CT_upper,
'A',
'E', 0x01fd, 0x01fc,
153 UnicodeLatinMap::AT_acute, UnicodeLatinMap::AF_ligature },
154 { 0x01e3, UnicodeLatinMap::CT_lower,
'a',
'e', 0x01e3, 0x01e2,
155 UnicodeLatinMap::AT_macron, UnicodeLatinMap::AF_ligature },
156 { 0x01e2, UnicodeLatinMap::CT_upper,
'A',
'E', 0x01e3, 0x01e2,
157 UnicodeLatinMap::AT_macron, UnicodeLatinMap::AF_ligature },
158 { 0x0250, UnicodeLatinMap::CT_lower,
'a', 0, 0x0250, 0x0041,
159 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
160 { 0x0062, UnicodeLatinMap::CT_lower,
'b', 0, 0x0062, 0x0042,
161 UnicodeLatinMap::AT_none, 0 },
162 { 0x0042, UnicodeLatinMap::CT_upper,
'B', 0, 0x0062, 0x0042,
163 UnicodeLatinMap::AT_none, 0 },
164 { 0x1e03, UnicodeLatinMap::CT_lower,
'b', 0, 0x1e03, 0x1e02,
165 UnicodeLatinMap::AT_dot_above, 0 },
166 { 0x1e02, UnicodeLatinMap::CT_upper,
'B', 0, 0x1e03, 0x1e02,
167 UnicodeLatinMap::AT_dot_above, 0 },
168 { 0x1e05, UnicodeLatinMap::CT_lower,
'b', 0, 0x1e05, 0x1e04,
169 UnicodeLatinMap::AT_dot_below, 0 },
170 { 0x1e04, UnicodeLatinMap::CT_upper,
'B', 0, 0x1e05, 0x1e04,
171 UnicodeLatinMap::AT_dot_below, 0 },
172 { 0x1e07, UnicodeLatinMap::CT_lower,
'b', 0, 0x1e07, 0x1e06,
173 UnicodeLatinMap::AT_line_below, 0 },
174 { 0x1e06, UnicodeLatinMap::CT_upper,
'B', 0, 0x1e07, 0x1e06,
175 UnicodeLatinMap::AT_line_below, 0 },
176 { 0x0299, UnicodeLatinMap::CT_upper,
'B', 0, 0x0062, 0x0299,
177 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
178 { 0x0180, UnicodeLatinMap::CT_lower,
'b', 0, 0x0180, 0x0042,
179 UnicodeLatinMap::AT_stroke, 0 },
180 { 0x0253, UnicodeLatinMap::CT_lower,
'b', 0, 0x0253, 0x0181,
181 UnicodeLatinMap::AT_hook, 0 },
182 { 0x0181, UnicodeLatinMap::CT_upper,
'B', 0, 0x0253, 0x0181,
183 UnicodeLatinMap::AT_hook, 0 },
184 { 0x0183, UnicodeLatinMap::CT_lower,
'b', 0, 0x0183, 0x0182,
185 UnicodeLatinMap::AT_topbar, 0 },
186 { 0x0182, UnicodeLatinMap::CT_upper,
'B', 0, 0x0183, 0x0182,
187 UnicodeLatinMap::AT_topbar, 0 },
188 { 0x0063, UnicodeLatinMap::CT_lower,
'c', 0, 0x0063, 0x0043,
189 UnicodeLatinMap::AT_none, 0 },
190 { 0x0043, UnicodeLatinMap::CT_upper,
'C', 0, 0x0063, 0x0043,
191 UnicodeLatinMap::AT_none, 0 },
192 { 0x0107, UnicodeLatinMap::CT_lower,
'c', 0, 0x0107, 0x0106,
193 UnicodeLatinMap::AT_acute, 0 },
194 { 0x0106, UnicodeLatinMap::CT_upper,
'C', 0, 0x0107, 0x0106,
195 UnicodeLatinMap::AT_acute, 0 },
196 { 0x0109, UnicodeLatinMap::CT_lower,
'c', 0, 0x0109, 0x0108,
197 UnicodeLatinMap::AT_circumflex, 0 },
198 { 0x0108, UnicodeLatinMap::CT_upper,
'C', 0, 0x0109, 0x0108,
199 UnicodeLatinMap::AT_circumflex, 0 },
200 { 0x010d, UnicodeLatinMap::CT_lower,
'c', 0, 0x010d, 0x010c,
201 UnicodeLatinMap::AT_caron, 0 },
202 { 0x010c, UnicodeLatinMap::CT_upper,
'C', 0, 0x010d, 0x010c,
203 UnicodeLatinMap::AT_caron, 0 },
204 { 0x010b, UnicodeLatinMap::CT_lower,
'c', 0, 0x010b, 0x010a,
205 UnicodeLatinMap::AT_dot_above, 0 },
206 { 0x010a, UnicodeLatinMap::CT_upper,
'C', 0, 0x010b, 0x010a,
207 UnicodeLatinMap::AT_dot_above, 0 },
208 { 0x00e7, UnicodeLatinMap::CT_lower,
'c', 0, 0x00e7, 0x00c7,
209 UnicodeLatinMap::AT_cedilla, 0 },
210 { 0x00c7, UnicodeLatinMap::CT_upper,
'C', 0, 0x00e7, 0x00c7,
211 UnicodeLatinMap::AT_cedilla, 0 },
212 { 0x1e09, UnicodeLatinMap::CT_lower,
'c', 0, 0x1e09, 0x1e08,
213 UnicodeLatinMap::AT_cedilla_and_acute, 0 },
214 { 0x1e08, UnicodeLatinMap::CT_upper,
'C', 0, 0x1e09, 0x1e08,
215 UnicodeLatinMap::AT_cedilla_and_acute, 0 },
216 { 0x0188, UnicodeLatinMap::CT_lower,
'c', 0, 0x0188, 0x0187,
217 UnicodeLatinMap::AT_hook, 0 },
218 { 0x0187, UnicodeLatinMap::CT_upper,
'C', 0, 0x0188, 0x0187,
219 UnicodeLatinMap::AT_hook, 0 },
220 { 0x0255, UnicodeLatinMap::CT_lower,
'c', 0, 0x0255, 0x0043,
221 UnicodeLatinMap::AT_curl, 0 },
222 { 0x0064, UnicodeLatinMap::CT_lower,
'd', 0, 0x0064, 0x0044,
223 UnicodeLatinMap::AT_none, 0 },
224 { 0x0044, UnicodeLatinMap::CT_upper,
'D', 0, 0x0064, 0x0044,
225 UnicodeLatinMap::AT_none, 0 },
226 { 0x010f, UnicodeLatinMap::CT_lower,
'd', 0, 0x010f, 0x010e,
227 UnicodeLatinMap::AT_caron, 0 },
228 { 0x010e, UnicodeLatinMap::CT_upper,
'D', 0, 0x010f, 0x010e,
229 UnicodeLatinMap::AT_caron, 0 },
230 { 0x1e0b, UnicodeLatinMap::CT_lower,
'd', 0, 0x1e0b, 0x1e0a,
231 UnicodeLatinMap::AT_dot_above, 0 },
232 { 0x1e0a, UnicodeLatinMap::CT_upper,
'D', 0, 0x1e0b, 0x1e0a,
233 UnicodeLatinMap::AT_dot_above, 0 },
234 { 0x1e11, UnicodeLatinMap::CT_lower,
'd', 0, 0x1e11, 0x1e10,
235 UnicodeLatinMap::AT_cedilla, 0 },
236 { 0x1e10, UnicodeLatinMap::CT_upper,
'D', 0, 0x1e11, 0x1e10,
237 UnicodeLatinMap::AT_cedilla, 0 },
238 { 0x1e0d, UnicodeLatinMap::CT_lower,
'd', 0, 0x1e0d, 0x1e0c,
239 UnicodeLatinMap::AT_dot_below, 0 },
240 { 0x1e0c, UnicodeLatinMap::CT_upper,
'D', 0, 0x1e0d, 0x1e0c,
241 UnicodeLatinMap::AT_dot_below, 0 },
242 { 0x1e13, UnicodeLatinMap::CT_lower,
'd', 0, 0x1e13, 0x1e12,
243 UnicodeLatinMap::AT_circumflex_below, 0 },
244 { 0x1e12, UnicodeLatinMap::CT_upper,
'D', 0, 0x1e13, 0x1e12,
245 UnicodeLatinMap::AT_circumflex_below, 0 },
246 { 0x1e0f, UnicodeLatinMap::CT_lower,
'd', 0, 0x1e0f, 0x1e0e,
247 UnicodeLatinMap::AT_line_below, 0 },
248 { 0x1e0e, UnicodeLatinMap::CT_upper,
'D', 0, 0x1e0f, 0x1e0e,
249 UnicodeLatinMap::AT_line_below, 0 },
250 { 0x0111, UnicodeLatinMap::CT_lower,
'd', 0, 0x0111, 0x0110,
251 UnicodeLatinMap::AT_stroke, 0 },
252 { 0x0110, UnicodeLatinMap::CT_upper,
'D', 0, 0x0111, 0x0110,
253 UnicodeLatinMap::AT_stroke, 0 },
254 { 0x0257, UnicodeLatinMap::CT_lower,
'd', 0, 0x0257, 0x018a,
255 UnicodeLatinMap::AT_hook, 0 },
256 { 0x018a, UnicodeLatinMap::CT_upper,
'D', 0, 0x0257, 0x018a,
257 UnicodeLatinMap::AT_hook, 0 },
258 { 0x018c, UnicodeLatinMap::CT_lower,
'd', 0, 0x018c, 0x018b,
259 UnicodeLatinMap::AT_topbar, 0 },
260 { 0x018b, UnicodeLatinMap::CT_upper,
'D', 0, 0x018c, 0x018b,
261 UnicodeLatinMap::AT_topbar, 0 },
262 { 0x0065, UnicodeLatinMap::CT_lower,
'e', 0, 0x0065, 0x0045,
263 UnicodeLatinMap::AT_none, 0 },
264 { 0x0045, UnicodeLatinMap::CT_upper,
'E', 0, 0x0065, 0x0045,
265 UnicodeLatinMap::AT_none, 0 },
266 { 0x00e9, UnicodeLatinMap::CT_lower,
'e', 0, 0x00e9, 0x00c9,
267 UnicodeLatinMap::AT_acute, 0 },
268 { 0x00c9, UnicodeLatinMap::CT_upper,
'E', 0, 0x00e9, 0x00c9,
269 UnicodeLatinMap::AT_acute, 0 },
270 { 0x00e8, UnicodeLatinMap::CT_lower,
'e', 0, 0x00e8, 0x00c8,
271 UnicodeLatinMap::AT_grave, 0 },
272 { 0x00c8, UnicodeLatinMap::CT_upper,
'E', 0, 0x00e8, 0x00c8,
273 UnicodeLatinMap::AT_grave, 0 },
274 { 0x0115, UnicodeLatinMap::CT_lower,
'e', 0, 0x0115, 0x0114,
275 UnicodeLatinMap::AT_breve, 0 },
276 { 0x0114, UnicodeLatinMap::CT_upper,
'E', 0, 0x0115, 0x0114,
277 UnicodeLatinMap::AT_breve, 0 },
278 { 0x00ea, UnicodeLatinMap::CT_lower,
'e', 0, 0x00ea, 0x00ca,
279 UnicodeLatinMap::AT_circumflex, 0 },
280 { 0x00ca, UnicodeLatinMap::CT_upper,
'E', 0, 0x00ea, 0x00ca,
281 UnicodeLatinMap::AT_circumflex, 0 },
282 { 0x1ebf, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ebf, 0x1ebe,
283 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
284 { 0x1ebe, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ebf, 0x1ebe,
285 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
286 { 0x1ec1, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ec1, 0x1ec0,
287 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
288 { 0x1ec0, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ec1, 0x1ec0,
289 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
290 { 0x1ec5, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ec5, 0x1ec4,
291 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
292 { 0x1ec4, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ec5, 0x1ec4,
293 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
294 { 0x1ec3, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ec3, 0x1ec2,
295 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
296 { 0x1ec2, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ec3, 0x1ec2,
297 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
298 { 0x011b, UnicodeLatinMap::CT_lower,
'e', 0, 0x011b, 0x011a,
299 UnicodeLatinMap::AT_caron, 0 },
300 { 0x011a, UnicodeLatinMap::CT_upper,
'E', 0, 0x011b, 0x011a,
301 UnicodeLatinMap::AT_caron, 0 },
302 { 0x00eb, UnicodeLatinMap::CT_lower,
'e', 0, 0x00eb, 0x00cb,
303 UnicodeLatinMap::AT_diaeresis, 0 },
304 { 0x00cb, UnicodeLatinMap::CT_upper,
'E', 0, 0x00eb, 0x00cb,
305 UnicodeLatinMap::AT_diaeresis, 0 },
306 { 0x1ebd, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ebd, 0x1ebc,
307 UnicodeLatinMap::AT_tilde, 0 },
308 { 0x1ebc, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ebd, 0x1ebc,
309 UnicodeLatinMap::AT_tilde, 0 },
310 { 0x0117, UnicodeLatinMap::CT_lower,
'e', 0, 0x0117, 0x0116,
311 UnicodeLatinMap::AT_dot_above, 0 },
312 { 0x0116, UnicodeLatinMap::CT_upper,
'E', 0, 0x0117, 0x0116,
313 UnicodeLatinMap::AT_dot_above, 0 },
314 { 0x0229, UnicodeLatinMap::CT_lower,
'e', 0, 0x0229, 0x0228,
315 UnicodeLatinMap::AT_cedilla, 0 },
316 { 0x0228, UnicodeLatinMap::CT_upper,
'E', 0, 0x0229, 0x0228,
317 UnicodeLatinMap::AT_cedilla, 0 },
318 { 0x1e1d, UnicodeLatinMap::CT_lower,
'e', 0, 0x1e1d, 0x1e1c,
319 UnicodeLatinMap::AT_cedilla_and_breve, 0 },
320 { 0x1e1c, UnicodeLatinMap::CT_upper,
'E', 0, 0x1e1d, 0x1e1c,
321 UnicodeLatinMap::AT_cedilla_and_breve, 0 },
322 { 0x0119, UnicodeLatinMap::CT_lower,
'e', 0, 0x0119, 0x0118,
323 UnicodeLatinMap::AT_ogonek, 0 },
324 { 0x0118, UnicodeLatinMap::CT_upper,
'E', 0, 0x0119, 0x0118,
325 UnicodeLatinMap::AT_ogonek, 0 },
326 { 0x0113, UnicodeLatinMap::CT_lower,
'e', 0, 0x0113, 0x0112,
327 UnicodeLatinMap::AT_macron, 0 },
328 { 0x0112, UnicodeLatinMap::CT_upper,
'E', 0, 0x0113, 0x0112,
329 UnicodeLatinMap::AT_macron, 0 },
330 { 0x1e17, UnicodeLatinMap::CT_lower,
'e', 0, 0x1e17, 0x1e16,
331 UnicodeLatinMap::AT_macron_and_acute, 0 },
332 { 0x1e16, UnicodeLatinMap::CT_upper,
'E', 0, 0x1e17, 0x1e16,
333 UnicodeLatinMap::AT_macron_and_acute, 0 },
334 { 0x1e15, UnicodeLatinMap::CT_lower,
'e', 0, 0x1e15, 0x1e14,
335 UnicodeLatinMap::AT_macron_and_grave, 0 },
336 { 0x1e14, UnicodeLatinMap::CT_upper,
'E', 0, 0x1e15, 0x1e14,
337 UnicodeLatinMap::AT_macron_and_grave, 0 },
338 { 0x1ebb, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ebb, 0x1eba,
339 UnicodeLatinMap::AT_hook_above, 0 },
340 { 0x1eba, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ebb, 0x1eba,
341 UnicodeLatinMap::AT_hook_above, 0 },
342 { 0x0205, UnicodeLatinMap::CT_lower,
'e', 0, 0x0205, 0x0204,
343 UnicodeLatinMap::AT_double_grave, 0 },
344 { 0x0204, UnicodeLatinMap::CT_upper,
'E', 0, 0x0205, 0x0204,
345 UnicodeLatinMap::AT_double_grave, 0 },
346 { 0x0207, UnicodeLatinMap::CT_lower,
'e', 0, 0x0207, 0x0206,
347 UnicodeLatinMap::AT_inverted_breve, 0 },
348 { 0x0206, UnicodeLatinMap::CT_upper,
'E', 0, 0x0207, 0x0206,
349 UnicodeLatinMap::AT_inverted_breve, 0 },
350 { 0x1eb9, UnicodeLatinMap::CT_lower,
'e', 0, 0x1eb9, 0x1eb8,
351 UnicodeLatinMap::AT_dot_below, 0 },
352 { 0x1eb8, UnicodeLatinMap::CT_upper,
'E', 0, 0x1eb9, 0x1eb8,
353 UnicodeLatinMap::AT_dot_below, 0 },
354 { 0x1ec7, UnicodeLatinMap::CT_lower,
'e', 0, 0x1ec7, 0x1ec6,
355 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
356 { 0x1ec6, UnicodeLatinMap::CT_upper,
'E', 0, 0x1ec7, 0x1ec6,
357 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
358 { 0x1e19, UnicodeLatinMap::CT_lower,
'e', 0, 0x1e19, 0x1e18,
359 UnicodeLatinMap::AT_circumflex_below, 0 },
360 { 0x1e18, UnicodeLatinMap::CT_upper,
'E', 0, 0x1e19, 0x1e18,
361 UnicodeLatinMap::AT_circumflex_below, 0 },
362 { 0x1e1b, UnicodeLatinMap::CT_lower,
'e', 0, 0x1e1b, 0x1e1a,
363 UnicodeLatinMap::AT_tilde_below, 0 },
364 { 0x1e1a, UnicodeLatinMap::CT_upper,
'E', 0, 0x1e1b, 0x1e1a,
365 UnicodeLatinMap::AT_tilde_below, 0 },
366 { 0x01dd, UnicodeLatinMap::CT_lower,
'e', 0, 0x01dd, 0x0045,
367 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
368 { 0x018e, UnicodeLatinMap::CT_upper,
'E', 0, 0x0258, 0x018e,
369 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_reversed },
370 { 0x0258, UnicodeLatinMap::CT_lower,
'e', 0, 0x0258, 0x018e,
371 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_reversed },
372 { 0x0066, UnicodeLatinMap::CT_lower,
'f', 0, 0x0066, 0x0046,
373 UnicodeLatinMap::AT_none, 0 },
374 { 0x0046, UnicodeLatinMap::CT_upper,
'F', 0, 0x0066, 0x0046,
375 UnicodeLatinMap::AT_none, 0 },
376 { 0x1e1f, UnicodeLatinMap::CT_lower,
'f', 0, 0x1e1f, 0x1e1e,
377 UnicodeLatinMap::AT_dot_above, 0 },
378 { 0x1e1e, UnicodeLatinMap::CT_upper,
'F', 0, 0x1e1f, 0x1e1e,
379 UnicodeLatinMap::AT_dot_above, 0 },
380 { 0x0192, UnicodeLatinMap::CT_lower,
'f', 0, 0x0192, 0x0191,
381 UnicodeLatinMap::AT_hook, 0 },
382 { 0x0191, UnicodeLatinMap::CT_upper,
'F', 0, 0x0192, 0x0191,
383 UnicodeLatinMap::AT_hook, 0 },
384 { 0x0067, UnicodeLatinMap::CT_lower,
'g', 0, 0x0067, 0x0047,
385 UnicodeLatinMap::AT_none, 0 },
386 { 0x0047, UnicodeLatinMap::CT_upper,
'G', 0, 0x0067, 0x0047,
387 UnicodeLatinMap::AT_none, 0 },
388 { 0x01f5, UnicodeLatinMap::CT_lower,
'g', 0, 0x01f5, 0x01f4,
389 UnicodeLatinMap::AT_acute, 0 },
390 { 0x01f4, UnicodeLatinMap::CT_upper,
'G', 0, 0x01f5, 0x01f4,
391 UnicodeLatinMap::AT_acute, 0 },
392 { 0x011f, UnicodeLatinMap::CT_lower,
'g', 0, 0x011f, 0x011e,
393 UnicodeLatinMap::AT_breve, 0 },
394 { 0x011e, UnicodeLatinMap::CT_upper,
'G', 0, 0x011f, 0x011e,
395 UnicodeLatinMap::AT_breve, 0 },
396 { 0x011d, UnicodeLatinMap::CT_lower,
'g', 0, 0x011d, 0x011c,
397 UnicodeLatinMap::AT_circumflex, 0 },
398 { 0x011c, UnicodeLatinMap::CT_upper,
'G', 0, 0x011d, 0x011c,
399 UnicodeLatinMap::AT_circumflex, 0 },
400 { 0x01e7, UnicodeLatinMap::CT_lower,
'g', 0, 0x01e7, 0x01e6,
401 UnicodeLatinMap::AT_caron, 0 },
402 { 0x01e6, UnicodeLatinMap::CT_upper,
'G', 0, 0x01e7, 0x01e6,
403 UnicodeLatinMap::AT_caron, 0 },
404 { 0x0121, UnicodeLatinMap::CT_lower,
'g', 0, 0x0121, 0x0120,
405 UnicodeLatinMap::AT_dot_above, 0 },
406 { 0x0120, UnicodeLatinMap::CT_upper,
'G', 0, 0x0121, 0x0120,
407 UnicodeLatinMap::AT_dot_above, 0 },
408 { 0x0123, UnicodeLatinMap::CT_lower,
'g', 0, 0x0123, 0x0122,
409 UnicodeLatinMap::AT_cedilla, 0 },
410 { 0x0122, UnicodeLatinMap::CT_upper,
'G', 0, 0x0123, 0x0122,
411 UnicodeLatinMap::AT_cedilla, 0 },
412 { 0x1e21, UnicodeLatinMap::CT_lower,
'g', 0, 0x1e21, 0x1e20,
413 UnicodeLatinMap::AT_macron, 0 },
414 { 0x1e20, UnicodeLatinMap::CT_upper,
'G', 0, 0x1e21, 0x1e20,
415 UnicodeLatinMap::AT_macron, 0 },
416 { 0x0262, UnicodeLatinMap::CT_upper,
'G', 0, 0x0067, 0x0262,
417 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
418 { 0x01e5, UnicodeLatinMap::CT_lower,
'g', 0, 0x01e5, 0x01e4,
419 UnicodeLatinMap::AT_stroke, 0 },
420 { 0x01e4, UnicodeLatinMap::CT_upper,
'G', 0, 0x01e5, 0x01e4,
421 UnicodeLatinMap::AT_stroke, 0 },
422 { 0x0260, UnicodeLatinMap::CT_lower,
'g', 0, 0x0260, 0x0193,
423 UnicodeLatinMap::AT_hook, 0 },
424 { 0x0193, UnicodeLatinMap::CT_upper,
'G', 0, 0x0260, 0x0193,
425 UnicodeLatinMap::AT_hook, 0 },
426 { 0x029b, UnicodeLatinMap::CT_upper,
'G', 0, 0x0067, 0x029b,
427 UnicodeLatinMap::AT_hook, UnicodeLatinMap::AF_smallcap },
428 { 0x01a3, UnicodeLatinMap::CT_lower,
'o',
'i', 0x01a3, 0x01a2,
429 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
430 { 0x01a2, UnicodeLatinMap::CT_upper,
'O',
'I', 0x01a3, 0x01a2,
431 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
432 { 0x0068, UnicodeLatinMap::CT_lower,
'h', 0, 0x0068, 0x0048,
433 UnicodeLatinMap::AT_none, 0 },
434 { 0x0048, UnicodeLatinMap::CT_upper,
'H', 0, 0x0068, 0x0048,
435 UnicodeLatinMap::AT_none, 0 },
436 { 0x0125, UnicodeLatinMap::CT_lower,
'h', 0, 0x0125, 0x0124,
437 UnicodeLatinMap::AT_circumflex, 0 },
438 { 0x0124, UnicodeLatinMap::CT_upper,
'H', 0, 0x0125, 0x0124,
439 UnicodeLatinMap::AT_circumflex, 0 },
440 { 0x021f, UnicodeLatinMap::CT_lower,
'h', 0, 0x021f, 0x021e,
441 UnicodeLatinMap::AT_caron, 0 },
442 { 0x021e, UnicodeLatinMap::CT_upper,
'H', 0, 0x021f, 0x021e,
443 UnicodeLatinMap::AT_caron, 0 },
444 { 0x1e27, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e27, 0x1e26,
445 UnicodeLatinMap::AT_diaeresis, 0 },
446 { 0x1e26, UnicodeLatinMap::CT_upper,
'H', 0, 0x1e27, 0x1e26,
447 UnicodeLatinMap::AT_diaeresis, 0 },
448 { 0x1e23, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e23, 0x1e22,
449 UnicodeLatinMap::AT_dot_above, 0 },
450 { 0x1e22, UnicodeLatinMap::CT_upper,
'H', 0, 0x1e23, 0x1e22,
451 UnicodeLatinMap::AT_dot_above, 0 },
452 { 0x1e29, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e29, 0x1e28,
453 UnicodeLatinMap::AT_cedilla, 0 },
454 { 0x1e28, UnicodeLatinMap::CT_upper,
'H', 0, 0x1e29, 0x1e28,
455 UnicodeLatinMap::AT_cedilla, 0 },
456 { 0x1e25, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e25, 0x1e24,
457 UnicodeLatinMap::AT_dot_below, 0 },
458 { 0x1e24, UnicodeLatinMap::CT_upper,
'H', 0, 0x1e25, 0x1e24,
459 UnicodeLatinMap::AT_dot_below, 0 },
460 { 0x1e2b, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e2b, 0x1e2a,
461 UnicodeLatinMap::AT_breve_below, 0 },
462 { 0x1e2a, UnicodeLatinMap::CT_upper,
'H', 0, 0x1e2b, 0x1e2a,
463 UnicodeLatinMap::AT_breve_below, 0 },
464 { 0x1e96, UnicodeLatinMap::CT_lower,
'h', 0, 0x1e96, 0x0048,
465 UnicodeLatinMap::AT_line_below, 0 },
466 { 0x029c, UnicodeLatinMap::CT_upper,
'H', 0, 0x0068, 0x029c,
467 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
468 { 0x0195, UnicodeLatinMap::CT_lower,
'h',
'v', 0x0195, 0x195,
469 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
470 { 0x0127, UnicodeLatinMap::CT_lower,
'h', 0, 0x0127, 0x0126,
471 UnicodeLatinMap::AT_stroke, 0 },
472 { 0x0126, UnicodeLatinMap::CT_upper,
'H', 0, 0x0127, 0x0126,
473 UnicodeLatinMap::AT_stroke, 0 },
474 { 0x0266, UnicodeLatinMap::CT_lower,
'h', 0, 0x0266, 0x0048,
475 UnicodeLatinMap::AT_hook, 0 },
476 { 0x0069, UnicodeLatinMap::CT_lower,
'i', 0, 0x0069, 0x0049,
477 UnicodeLatinMap::AT_none, 0 },
478 { 0x0049, UnicodeLatinMap::CT_upper,
'I', 0, 0x0069, 0x0049,
479 UnicodeLatinMap::AT_none, 0 },
480 { 0x00ed, UnicodeLatinMap::CT_lower,
'i', 0, 0x00ed, 0x00cd,
481 UnicodeLatinMap::AT_acute, 0 },
482 { 0x00cd, UnicodeLatinMap::CT_upper,
'I', 0, 0x00ed, 0x00cd,
483 UnicodeLatinMap::AT_acute, 0 },
484 { 0x00ec, UnicodeLatinMap::CT_lower,
'i', 0, 0x00ec, 0x00cc,
485 UnicodeLatinMap::AT_grave, 0 },
486 { 0x00cc, UnicodeLatinMap::CT_upper,
'I', 0, 0x00ec, 0x00cc,
487 UnicodeLatinMap::AT_grave, 0 },
488 { 0x012d, UnicodeLatinMap::CT_lower,
'i', 0, 0x012d, 0x012c,
489 UnicodeLatinMap::AT_breve, 0 },
490 { 0x012c, UnicodeLatinMap::CT_upper,
'I', 0, 0x012d, 0x012c,
491 UnicodeLatinMap::AT_breve, 0 },
492 { 0x00ee, UnicodeLatinMap::CT_lower,
'i', 0, 0x00ee, 0x00ce,
493 UnicodeLatinMap::AT_circumflex, 0 },
494 { 0x00ce, UnicodeLatinMap::CT_upper,
'I', 0, 0x00ee, 0x00ce,
495 UnicodeLatinMap::AT_circumflex, 0 },
496 { 0x01d0, UnicodeLatinMap::CT_lower,
'i', 0, 0x01d0, 0x01cf,
497 UnicodeLatinMap::AT_caron, 0 },
498 { 0x01cf, UnicodeLatinMap::CT_upper,
'I', 0, 0x01d0, 0x01cf,
499 UnicodeLatinMap::AT_caron, 0 },
500 { 0x00ef, UnicodeLatinMap::CT_lower,
'i', 0, 0x00ef, 0x00cf,
501 UnicodeLatinMap::AT_diaeresis, 0 },
502 { 0x00cf, UnicodeLatinMap::CT_upper,
'I', 0, 0x00ef, 0x00cf,
503 UnicodeLatinMap::AT_diaeresis, 0 },
504 { 0x1e2f, UnicodeLatinMap::CT_lower,
'i', 0, 0x1e2f, 0x1e2e,
505 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
506 { 0x1e2e, UnicodeLatinMap::CT_upper,
'I', 0, 0x1e2f, 0x1e2e,
507 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
508 { 0x0129, UnicodeLatinMap::CT_lower,
'i', 0, 0x0129, 0x0128,
509 UnicodeLatinMap::AT_tilde, 0 },
510 { 0x0128, UnicodeLatinMap::CT_upper,
'I', 0, 0x0129, 0x0128,
511 UnicodeLatinMap::AT_tilde, 0 },
512 { 0x0130, UnicodeLatinMap::CT_upper,
'I', 0, 0x0069, 0x0130,
513 UnicodeLatinMap::AT_dot_above, 0 },
514 { 0x012f, UnicodeLatinMap::CT_lower,
'i', 0, 0x012f, 0x012e,
515 UnicodeLatinMap::AT_ogonek, 0 },
516 { 0x012e, UnicodeLatinMap::CT_upper,
'I', 0, 0x012f, 0x012e,
517 UnicodeLatinMap::AT_ogonek, 0 },
518 { 0x012b, UnicodeLatinMap::CT_lower,
'i', 0, 0x012b, 0x012a,
519 UnicodeLatinMap::AT_macron, 0 },
520 { 0x012a, UnicodeLatinMap::CT_upper,
'I', 0, 0x012b, 0x012a,
521 UnicodeLatinMap::AT_macron, 0 },
522 { 0x1ec9, UnicodeLatinMap::CT_lower,
'i', 0, 0x1ec9, 0x1ec8,
523 UnicodeLatinMap::AT_hook_above, 0 },
524 { 0x1ec8, UnicodeLatinMap::CT_upper,
'I', 0, 0x1ec9, 0x1ec8,
525 UnicodeLatinMap::AT_hook_above, 0 },
526 { 0x0209, UnicodeLatinMap::CT_lower,
'i', 0, 0x0209, 0x0208,
527 UnicodeLatinMap::AT_double_grave, 0 },
528 { 0x0208, UnicodeLatinMap::CT_upper,
'I', 0, 0x0209, 0x0208,
529 UnicodeLatinMap::AT_double_grave, 0 },
530 { 0x020b, UnicodeLatinMap::CT_lower,
'i', 0, 0x020b, 0x020a,
531 UnicodeLatinMap::AT_inverted_breve, 0 },
532 { 0x020a, UnicodeLatinMap::CT_upper,
'I', 0, 0x020b, 0x020a,
533 UnicodeLatinMap::AT_inverted_breve, 0 },
534 { 0x1ecb, UnicodeLatinMap::CT_lower,
'i', 0, 0x1ecb, 0x1eca,
535 UnicodeLatinMap::AT_dot_below, 0 },
536 { 0x1eca, UnicodeLatinMap::CT_upper,
'I', 0, 0x1ecb, 0x1eca,
537 UnicodeLatinMap::AT_dot_below, 0 },
538 { 0x1e2d, UnicodeLatinMap::CT_lower,
'i', 0, 0x1e2d, 0x1e2c,
539 UnicodeLatinMap::AT_tilde_below, 0 },
540 { 0x1e2c, UnicodeLatinMap::CT_upper,
'I', 0, 0x1e2d, 0x1e2c,
541 UnicodeLatinMap::AT_tilde_below, 0 },
542 { 0x0131, UnicodeLatinMap::CT_lower,
'i', 0, 0x0131, 0x0049,
543 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_dotless },
544 { 0x026a, UnicodeLatinMap::CT_upper,
'I', 0, 0x0069, 0x026a,
545 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
546 { 0x0268, UnicodeLatinMap::CT_lower,
'i', 0, 0x0268, 0x0197,
547 UnicodeLatinMap::AT_stroke, 0 },
548 { 0x0197, UnicodeLatinMap::CT_upper,
'I', 0, 0x0268, 0x0197,
549 UnicodeLatinMap::AT_stroke, 0 },
550 { 0x006a, UnicodeLatinMap::CT_lower,
'j', 0, 0x006a, 0x004a,
551 UnicodeLatinMap::AT_none, 0 },
552 { 0x004a, UnicodeLatinMap::CT_upper,
'J', 0, 0x006a, 0x004a,
553 UnicodeLatinMap::AT_none, 0 },
554 { 0x0135, UnicodeLatinMap::CT_lower,
'j', 0, 0x0135, 0x0134,
555 UnicodeLatinMap::AT_circumflex, 0 },
556 { 0x0134, UnicodeLatinMap::CT_upper,
'J', 0, 0x0135, 0x0134,
557 UnicodeLatinMap::AT_circumflex, 0 },
558 { 0x01f0, UnicodeLatinMap::CT_lower,
'j', 0, 0x01f0, 0x004a,
559 UnicodeLatinMap::AT_caron, 0 },
560 { 0x025f, UnicodeLatinMap::CT_lower,
'j', 0, 0x025f, 0x004a,
561 UnicodeLatinMap::AT_stroke, UnicodeLatinMap::AF_dotless },
562 { 0x0284, UnicodeLatinMap::CT_lower,
'j', 0, 0x0284, 0x004a,
563 UnicodeLatinMap::AT_stroke_and_hook, UnicodeLatinMap::AF_dotless },
564 { 0x006b, UnicodeLatinMap::CT_lower,
'k', 0, 0x006b, 0x004b,
565 UnicodeLatinMap::AT_none, 0 },
566 { 0x004b, UnicodeLatinMap::CT_upper,
'K', 0, 0x006b, 0x004b,
567 UnicodeLatinMap::AT_none, 0 },
568 { 0x1e31, UnicodeLatinMap::CT_lower,
'k', 0, 0x1e31, 0x1e30,
569 UnicodeLatinMap::AT_acute, 0 },
570 { 0x1e30, UnicodeLatinMap::CT_upper,
'K', 0, 0x1e31, 0x1e30,
571 UnicodeLatinMap::AT_acute, 0 },
572 { 0x01e9, UnicodeLatinMap::CT_lower,
'k', 0, 0x01e9, 0x01e8,
573 UnicodeLatinMap::AT_caron, 0 },
574 { 0x01e8, UnicodeLatinMap::CT_upper,
'K', 0, 0x01e9, 0x01e8,
575 UnicodeLatinMap::AT_caron, 0 },
576 { 0x0137, UnicodeLatinMap::CT_lower,
'k', 0, 0x0137, 0x0136,
577 UnicodeLatinMap::AT_cedilla, 0 },
578 { 0x0136, UnicodeLatinMap::CT_upper,
'K', 0, 0x0137, 0x0136,
579 UnicodeLatinMap::AT_cedilla, 0 },
580 { 0x1e33, UnicodeLatinMap::CT_lower,
'k', 0, 0x1e33, 0x1e32,
581 UnicodeLatinMap::AT_dot_below, 0 },
582 { 0x1e32, UnicodeLatinMap::CT_upper,
'K', 0, 0x1e33, 0x1e32,
583 UnicodeLatinMap::AT_dot_below, 0 },
584 { 0x1e35, UnicodeLatinMap::CT_lower,
'k', 0, 0x1e35, 0x1e34,
585 UnicodeLatinMap::AT_line_below, 0 },
586 { 0x1e34, UnicodeLatinMap::CT_upper,
'K', 0, 0x1e35, 0x1e34,
587 UnicodeLatinMap::AT_line_below, 0 },
588 { 0x0199, UnicodeLatinMap::CT_lower,
'k', 0, 0x0199, 0x0198,
589 UnicodeLatinMap::AT_hook, 0 },
590 { 0x0198, UnicodeLatinMap::CT_upper,
'K', 0, 0x0199, 0x0198,
591 UnicodeLatinMap::AT_hook, 0 },
592 { 0x029e, UnicodeLatinMap::CT_lower,
'k', 0, 0x029e, 0x004b,
593 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
594 { 0x006c, UnicodeLatinMap::CT_lower,
'l', 0, 0x006c, 0x004c,
595 UnicodeLatinMap::AT_none, 0 },
596 { 0x004c, UnicodeLatinMap::CT_upper,
'L', 0, 0x006c, 0x004c,
597 UnicodeLatinMap::AT_none, 0 },
598 { 0x013a, UnicodeLatinMap::CT_lower,
'l', 0, 0x013a, 0x0139,
599 UnicodeLatinMap::AT_acute, 0 },
600 { 0x0139, UnicodeLatinMap::CT_upper,
'L', 0, 0x013a, 0x0139,
601 UnicodeLatinMap::AT_acute, 0 },
602 { 0x013e, UnicodeLatinMap::CT_lower,
'l', 0, 0x013e, 0x013d,
603 UnicodeLatinMap::AT_caron, 0 },
604 { 0x013d, UnicodeLatinMap::CT_upper,
'L', 0, 0x013e, 0x013d,
605 UnicodeLatinMap::AT_caron, 0 },
606 { 0x013c, UnicodeLatinMap::CT_lower,
'l', 0, 0x013c, 0x013b,
607 UnicodeLatinMap::AT_cedilla, 0 },
608 { 0x013b, UnicodeLatinMap::CT_upper,
'L', 0, 0x013c, 0x013b,
609 UnicodeLatinMap::AT_cedilla, 0 },
610 { 0x1e37, UnicodeLatinMap::CT_lower,
'l', 0, 0x1e37, 0x1e36,
611 UnicodeLatinMap::AT_dot_below, 0 },
612 { 0x1e36, UnicodeLatinMap::CT_upper,
'L', 0, 0x1e37, 0x1e36,
613 UnicodeLatinMap::AT_dot_below, 0 },
614 { 0x1e39, UnicodeLatinMap::CT_lower,
'l', 0, 0x1e39, 0x1e38,
615 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
616 { 0x1e38, UnicodeLatinMap::CT_upper,
'L', 0, 0x1e39, 0x1e38,
617 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
618 { 0x1e3d, UnicodeLatinMap::CT_lower,
'l', 0, 0x1e3d, 0x1e3c,
619 UnicodeLatinMap::AT_circumflex_below, 0 },
620 { 0x1e3c, UnicodeLatinMap::CT_upper,
'L', 0, 0x1e3d, 0x1e3c,
621 UnicodeLatinMap::AT_circumflex_below, 0 },
622 { 0x1e3b, UnicodeLatinMap::CT_lower,
'l', 0, 0x1e3b, 0x1e3a,
623 UnicodeLatinMap::AT_line_below, 0 },
624 { 0x1e3a, UnicodeLatinMap::CT_upper,
'L', 0, 0x1e3b, 0x1e3a,
625 UnicodeLatinMap::AT_line_below, 0 },
626 { 0x01c9, UnicodeLatinMap::CT_lower,
'l',
'j', 0x01c9, 0x01c7,
627 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
628 { 0x01c8, UnicodeLatinMap::CT_upper,
'L',
'j', 0x01c9, 0x01c7,
629 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
630 { 0x01c7, UnicodeLatinMap::CT_upper,
'L',
'J', 0x01c9, 0x01c7,
631 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
632 { 0x029f, UnicodeLatinMap::CT_upper,
'L', 0, 0x006c, 0x029f,
633 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
634 { 0x0142, UnicodeLatinMap::CT_lower,
'l', 0, 0x0142, 0x0141,
635 UnicodeLatinMap::AT_stroke, 0 },
636 { 0x0141, UnicodeLatinMap::CT_upper,
'L', 0, 0x0142, 0x0141,
637 UnicodeLatinMap::AT_stroke, 0 },
638 { 0x028e, UnicodeLatinMap::CT_lower,
'y', 0, 0x028e, 0x0059,
639 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
640 { 0x006d, UnicodeLatinMap::CT_lower,
'm', 0, 0x006d, 0x004d,
641 UnicodeLatinMap::AT_none, 0 },
642 { 0x004d, UnicodeLatinMap::CT_upper,
'M', 0, 0x006d, 0x004d,
643 UnicodeLatinMap::AT_none, 0 },
644 { 0x1e3f, UnicodeLatinMap::CT_lower,
'm', 0, 0x1e3f, 0x1e3e,
645 UnicodeLatinMap::AT_acute, 0 },
646 { 0x1e3e, UnicodeLatinMap::CT_upper,
'M', 0, 0x1e3f, 0x1e3e,
647 UnicodeLatinMap::AT_acute, 0 },
648 { 0x1e41, UnicodeLatinMap::CT_lower,
'm', 0, 0x1e41, 0x1e40,
649 UnicodeLatinMap::AT_dot_above, 0 },
650 { 0x1e40, UnicodeLatinMap::CT_upper,
'M', 0, 0x1e41, 0x1e40,
651 UnicodeLatinMap::AT_dot_above, 0 },
652 { 0x1e43, UnicodeLatinMap::CT_lower,
'm', 0, 0x1e43, 0x1e42,
653 UnicodeLatinMap::AT_dot_below, 0 },
654 { 0x1e42, UnicodeLatinMap::CT_upper,
'M', 0, 0x1e43, 0x1e42,
655 UnicodeLatinMap::AT_dot_below, 0 },
656 { 0x0271, UnicodeLatinMap::CT_lower,
'm', 0, 0x0271, 0x004d,
657 UnicodeLatinMap::AT_hook, 0 },
658 { 0x006e, UnicodeLatinMap::CT_lower,
'n', 0, 0x006e, 0x004e,
659 UnicodeLatinMap::AT_none, 0 },
660 { 0x004e, UnicodeLatinMap::CT_upper,
'N', 0, 0x006e, 0x004e,
661 UnicodeLatinMap::AT_none, 0 },
662 { 0x0144, UnicodeLatinMap::CT_lower,
'n', 0, 0x0144, 0x0143,
663 UnicodeLatinMap::AT_acute, 0 },
664 { 0x0143, UnicodeLatinMap::CT_upper,
'N', 0, 0x0144, 0x0143,
665 UnicodeLatinMap::AT_acute, 0 },
666 { 0x01f9, UnicodeLatinMap::CT_lower,
'n', 0, 0x01f9, 0x01f8,
667 UnicodeLatinMap::AT_grave, 0 },
668 { 0x01f8, UnicodeLatinMap::CT_upper,
'N', 0, 0x01f9, 0x01f8,
669 UnicodeLatinMap::AT_grave, 0 },
670 { 0x0148, UnicodeLatinMap::CT_lower,
'n', 0, 0x0148, 0x0147,
671 UnicodeLatinMap::AT_caron, 0 },
672 { 0x0147, UnicodeLatinMap::CT_upper,
'N', 0, 0x0148, 0x0147,
673 UnicodeLatinMap::AT_caron, 0 },
674 { 0x00f1, UnicodeLatinMap::CT_lower,
'n', 0, 0x00f1, 0x00d1,
675 UnicodeLatinMap::AT_tilde, 0 },
676 { 0x00d1, UnicodeLatinMap::CT_upper,
'N', 0, 0x00f1, 0x00d1,
677 UnicodeLatinMap::AT_tilde, 0 },
678 { 0x1e45, UnicodeLatinMap::CT_lower,
'n', 0, 0x1e45, 0x1e44,
679 UnicodeLatinMap::AT_dot_above, 0 },
680 { 0x1e44, UnicodeLatinMap::CT_upper,
'N', 0, 0x1e45, 0x1e44,
681 UnicodeLatinMap::AT_dot_above, 0 },
682 { 0x0146, UnicodeLatinMap::CT_lower,
'n', 0, 0x0146, 0x0145,
683 UnicodeLatinMap::AT_cedilla, 0 },
684 { 0x0145, UnicodeLatinMap::CT_upper,
'N', 0, 0x0146, 0x0145,
685 UnicodeLatinMap::AT_cedilla, 0 },
686 { 0x1e47, UnicodeLatinMap::CT_lower,
'n', 0, 0x1e47, 0x1e46,
687 UnicodeLatinMap::AT_dot_below, 0 },
688 { 0x1e46, UnicodeLatinMap::CT_upper,
'N', 0, 0x1e47, 0x1e46,
689 UnicodeLatinMap::AT_dot_below, 0 },
690 { 0x1e4b, UnicodeLatinMap::CT_lower,
'n', 0, 0x1e4b, 0x1e4a,
691 UnicodeLatinMap::AT_circumflex_below, 0 },
692 { 0x1e4a, UnicodeLatinMap::CT_upper,
'N', 0, 0x1e4b, 0x1e4a,
693 UnicodeLatinMap::AT_circumflex_below, 0 },
694 { 0x1e49, UnicodeLatinMap::CT_lower,
'n', 0, 0x1e49, 0x1e48,
695 UnicodeLatinMap::AT_line_below, 0 },
696 { 0x1e48, UnicodeLatinMap::CT_upper,
'N', 0, 0x1e49, 0x1e48,
697 UnicodeLatinMap::AT_line_below, 0 },
698 { 0x01cc, UnicodeLatinMap::CT_lower,
'n',
'j', 0x01cc, 0x01ca,
699 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
700 { 0x01cb, UnicodeLatinMap::CT_upper,
'N',
'j', 0x01cc, 0x01ca,
701 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
702 { 0x01ca, UnicodeLatinMap::CT_upper,
'N',
'J', 0x01cc, 0x01ca,
703 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
704 { 0x0274, UnicodeLatinMap::CT_upper,
'N', 0, 0x006e, 0x0274,
705 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
706 { 0x006f, UnicodeLatinMap::CT_lower,
'o', 0, 0x006f, 0x004f,
707 UnicodeLatinMap::AT_none, 0 },
708 { 0x004f, UnicodeLatinMap::CT_upper,
'O', 0, 0x006f, 0x004f,
709 UnicodeLatinMap::AT_none, 0 },
710 { 0x00f3, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f3, 0x00d3,
711 UnicodeLatinMap::AT_acute, 0 },
712 { 0x00d3, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f3, 0x00d3,
713 UnicodeLatinMap::AT_acute, 0 },
714 { 0x00f2, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f2, 0x00d2,
715 UnicodeLatinMap::AT_grave, 0 },
716 { 0x00d2, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f2, 0x00d2,
717 UnicodeLatinMap::AT_grave, 0 },
718 { 0x014f, UnicodeLatinMap::CT_lower,
'o', 0, 0x014f, 0x014e,
719 UnicodeLatinMap::AT_breve, 0 },
720 { 0x014e, UnicodeLatinMap::CT_upper,
'O', 0, 0x014f, 0x014e,
721 UnicodeLatinMap::AT_breve, 0 },
722 { 0x00f4, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f4, 0x00d4,
723 UnicodeLatinMap::AT_circumflex, 0 },
724 { 0x00d4, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f4, 0x00d4,
725 UnicodeLatinMap::AT_circumflex, 0 },
726 { 0x1ed1, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ed1, 0x1ed0,
727 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
728 { 0x1ed0, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ed1, 0x1ed0,
729 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
730 { 0x1ed3, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ed3, 0x1ed2,
731 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
732 { 0x1ed2, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ed3, 0x1ed2,
733 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
734 { 0x1ed7, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ed7, 0x1ed6,
735 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
736 { 0x1ed6, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ed7, 0x1ed6,
737 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
738 { 0x1ed5, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ed5, 0x1ed4,
739 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
740 { 0x1ed4, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ed5, 0x1ed4,
741 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
742 { 0x01d2, UnicodeLatinMap::CT_lower,
'o', 0, 0x01d2, 0x01d1,
743 UnicodeLatinMap::AT_caron, 0 },
744 { 0x01d1, UnicodeLatinMap::CT_upper,
'O', 0, 0x01d2, 0x01d1,
745 UnicodeLatinMap::AT_caron, 0 },
746 { 0x00f6, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f6, 0x00d6,
747 UnicodeLatinMap::AT_diaeresis, 0 },
748 { 0x00d6, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f6, 0x00d6,
749 UnicodeLatinMap::AT_diaeresis, 0 },
750 { 0x022b, UnicodeLatinMap::CT_lower,
'o', 0, 0x022b, 0x022a,
751 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
752 { 0x022a, UnicodeLatinMap::CT_upper,
'O', 0, 0x022b, 0x022a,
753 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
754 { 0x0151, UnicodeLatinMap::CT_lower,
'o', 0, 0x0151, 0x0150,
755 UnicodeLatinMap::AT_double_acute, 0 },
756 { 0x0150, UnicodeLatinMap::CT_upper,
'O', 0, 0x0151, 0x0150,
757 UnicodeLatinMap::AT_double_acute, 0 },
758 { 0x00f5, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f5, 0x00d5,
759 UnicodeLatinMap::AT_tilde, 0 },
760 { 0x00d5, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f5, 0x00d5,
761 UnicodeLatinMap::AT_tilde, 0 },
762 { 0x1e4d, UnicodeLatinMap::CT_lower,
'o', 0, 0x1e4d, 0x1e4c,
763 UnicodeLatinMap::AT_tilde_and_acute, 0 },
764 { 0x1e4c, UnicodeLatinMap::CT_upper,
'O', 0, 0x1e4d, 0x1e4c,
765 UnicodeLatinMap::AT_tilde_and_acute, 0 },
766 { 0x1e4f, UnicodeLatinMap::CT_lower,
'o', 0, 0x1e4f, 0x1e4e,
767 UnicodeLatinMap::AT_tilde_and_diaeresis, 0 },
768 { 0x1e4e, UnicodeLatinMap::CT_upper,
'O', 0, 0x1e4f, 0x1e4e,
769 UnicodeLatinMap::AT_tilde_and_diaeresis, 0 },
770 { 0x022d, UnicodeLatinMap::CT_lower,
'o', 0, 0x022d, 0x022c,
771 UnicodeLatinMap::AT_tilde_and_macron, 0 },
772 { 0x022c, UnicodeLatinMap::CT_upper,
'O', 0, 0x022d, 0x022c,
773 UnicodeLatinMap::AT_tilde_and_macron, 0 },
774 { 0x022f, UnicodeLatinMap::CT_lower,
'o', 0, 0x022f, 0x022e,
775 UnicodeLatinMap::AT_dot_above, 0 },
776 { 0x022e, UnicodeLatinMap::CT_upper,
'O', 0, 0x022f, 0x022e,
777 UnicodeLatinMap::AT_dot_above, 0 },
778 { 0x0231, UnicodeLatinMap::CT_lower,
'o', 0, 0x0231, 0x0230,
779 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
780 { 0x0230, UnicodeLatinMap::CT_upper,
'O', 0, 0x0231, 0x0230,
781 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
782 { 0x01eb, UnicodeLatinMap::CT_lower,
'o', 0, 0x01eb, 0x01ea,
783 UnicodeLatinMap::AT_ogonek, 0 },
784 { 0x01ea, UnicodeLatinMap::CT_upper,
'O', 0, 0x01eb, 0x01ea,
785 UnicodeLatinMap::AT_ogonek, 0 },
786 { 0x01ed, UnicodeLatinMap::CT_lower,
'o', 0, 0x01ed, 0x01ec,
787 UnicodeLatinMap::AT_ogonek_and_macron, 0 },
788 { 0x01ec, UnicodeLatinMap::CT_upper,
'O', 0, 0x01ed, 0x01ec,
789 UnicodeLatinMap::AT_ogonek_and_macron, 0 },
790 { 0x014d, UnicodeLatinMap::CT_lower,
'o', 0, 0x014d, 0x014c,
791 UnicodeLatinMap::AT_macron, 0 },
792 { 0x014c, UnicodeLatinMap::CT_upper,
'O', 0, 0x014d, 0x014c,
793 UnicodeLatinMap::AT_macron, 0 },
794 { 0x1e53, UnicodeLatinMap::CT_lower,
'o', 0, 0x1e53, 0x1e52,
795 UnicodeLatinMap::AT_macron_and_acute, 0 },
796 { 0x1e52, UnicodeLatinMap::CT_upper,
'O', 0, 0x1e53, 0x1e52,
797 UnicodeLatinMap::AT_macron_and_acute, 0 },
798 { 0x1e51, UnicodeLatinMap::CT_lower,
'o', 0, 0x1e51, 0x1e50,
799 UnicodeLatinMap::AT_macron_and_grave, 0 },
800 { 0x1e50, UnicodeLatinMap::CT_upper,
'O', 0, 0x1e51, 0x1e50,
801 UnicodeLatinMap::AT_macron_and_grave, 0 },
802 { 0x1ecf, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ecf, 0x1ece,
803 UnicodeLatinMap::AT_hook_above, 0 },
804 { 0x1ece, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ecf, 0x1ece,
805 UnicodeLatinMap::AT_hook_above, 0 },
806 { 0x020d, UnicodeLatinMap::CT_lower,
'o', 0, 0x020d, 0x020c,
807 UnicodeLatinMap::AT_double_grave, 0 },
808 { 0x020c, UnicodeLatinMap::CT_upper,
'O', 0, 0x020d, 0x020c,
809 UnicodeLatinMap::AT_double_grave, 0 },
810 { 0x020f, UnicodeLatinMap::CT_lower,
'o', 0, 0x020f, 0x020e,
811 UnicodeLatinMap::AT_inverted_breve, 0 },
812 { 0x020e, UnicodeLatinMap::CT_upper,
'O', 0, 0x020f, 0x020e,
813 UnicodeLatinMap::AT_inverted_breve, 0 },
814 { 0x01a1, UnicodeLatinMap::CT_lower,
'o', 0, 0x01a1, 0x01a0,
815 UnicodeLatinMap::AT_horn, 0 },
816 { 0x01a0, UnicodeLatinMap::CT_upper,
'O', 0, 0x01a1, 0x01a0,
817 UnicodeLatinMap::AT_horn, 0 },
818 { 0x1edb, UnicodeLatinMap::CT_lower,
'o', 0, 0x1edb, 0x1eda,
819 UnicodeLatinMap::AT_horn_and_acute, 0 },
820 { 0x1eda, UnicodeLatinMap::CT_upper,
'O', 0, 0x1edb, 0x1eda,
821 UnicodeLatinMap::AT_horn_and_acute, 0 },
822 { 0x1edd, UnicodeLatinMap::CT_lower,
'o', 0, 0x1edd, 0x1edc,
823 UnicodeLatinMap::AT_horn_and_grave, 0 },
824 { 0x1edc, UnicodeLatinMap::CT_upper,
'O', 0, 0x1edd, 0x1edc,
825 UnicodeLatinMap::AT_horn_and_grave, 0 },
826 { 0x1ee1, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ee1, 0x1ee0,
827 UnicodeLatinMap::AT_horn_and_tilde, 0 },
828 { 0x1ee0, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ee1, 0x1ee0,
829 UnicodeLatinMap::AT_horn_and_tilde, 0 },
830 { 0x1edf, UnicodeLatinMap::CT_lower,
'o', 0, 0x1edf, 0x1ede,
831 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
832 { 0x1ede, UnicodeLatinMap::CT_upper,
'O', 0, 0x1edf, 0x1ede,
833 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
834 { 0x1ee3, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ee3, 0x1ee2,
835 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
836 { 0x1ee2, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ee3, 0x1ee2,
837 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
838 { 0x1ecd, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ecd, 0x1ecc,
839 UnicodeLatinMap::AT_dot_below, 0 },
840 { 0x1ecc, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ecd, 0x1ecc,
841 UnicodeLatinMap::AT_dot_below, 0 },
842 { 0x1ed9, UnicodeLatinMap::CT_lower,
'o', 0, 0x1ed9, 0x1ed8,
843 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
844 { 0x1ed8, UnicodeLatinMap::CT_upper,
'O', 0, 0x1ed9, 0x1ed8,
845 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
846 { 0x0153, UnicodeLatinMap::CT_lower,
'o',
'e', 0x0153, 0x0152,
847 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
848 { 0x0152, UnicodeLatinMap::CT_upper,
'O',
'E', 0x0153, 0x0152,
849 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
850 { 0x0276, UnicodeLatinMap::CT_upper,
'O',
'E', 0x0153, 0x0276,
851 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap | UnicodeLatinMap::AF_ligature },
852 { 0x00f8, UnicodeLatinMap::CT_lower,
'o', 0, 0x00f8, 0x00d8,
853 UnicodeLatinMap::AT_stroke, 0 },
854 { 0x00d8, UnicodeLatinMap::CT_upper,
'O', 0, 0x00f8, 0x00d8,
855 UnicodeLatinMap::AT_stroke, 0 },
856 { 0x01ff, UnicodeLatinMap::CT_lower,
'o', 0, 0x01ff, 0x01fe,
857 UnicodeLatinMap::AT_stroke_and_acute, 0 },
858 { 0x01fe, UnicodeLatinMap::CT_upper,
'O', 0, 0x01ff, 0x01fe,
859 UnicodeLatinMap::AT_stroke_and_acute, 0 },
860 { 0x0070, UnicodeLatinMap::CT_lower,
'p', 0, 0x0070, 0x0050,
861 UnicodeLatinMap::AT_none, 0 },
862 { 0x0050, UnicodeLatinMap::CT_upper,
'P', 0, 0x0070, 0x0050,
863 UnicodeLatinMap::AT_none, 0 },
864 { 0x1e55, UnicodeLatinMap::CT_lower,
'p', 0, 0x1e55, 0x1e54,
865 UnicodeLatinMap::AT_acute, 0 },
866 { 0x1e54, UnicodeLatinMap::CT_upper,
'P', 0, 0x1e55, 0x1e54,
867 UnicodeLatinMap::AT_acute, 0 },
868 { 0x1e57, UnicodeLatinMap::CT_lower,
'p', 0, 0x1e57, 0x1e56,
869 UnicodeLatinMap::AT_dot_above, 0 },
870 { 0x1e56, UnicodeLatinMap::CT_upper,
'P', 0, 0x1e57, 0x1e56,
871 UnicodeLatinMap::AT_dot_above, 0 },
872 { 0x01a5, UnicodeLatinMap::CT_lower,
'p', 0, 0x01a5, 0x01a4,
873 UnicodeLatinMap::AT_hook, 0 },
874 { 0x01a4, UnicodeLatinMap::CT_upper,
'P', 0, 0x01a5, 0x01a4,
875 UnicodeLatinMap::AT_hook, 0 },
876 { 0x0071, UnicodeLatinMap::CT_lower,
'q', 0, 0x0071, 0x0051,
877 UnicodeLatinMap::AT_none, 0 },
878 { 0x0051, UnicodeLatinMap::CT_upper,
'Q', 0, 0x0071, 0x0051,
879 UnicodeLatinMap::AT_none, 0 },
880 { 0x02a0, UnicodeLatinMap::CT_lower,
'q', 0, 0x02a0, 0x0051,
881 UnicodeLatinMap::AT_hook, 0 },
882 { 0x0072, UnicodeLatinMap::CT_lower,
'r', 0, 0x0072, 0x0052,
883 UnicodeLatinMap::AT_none, 0 },
884 { 0x0052, UnicodeLatinMap::CT_upper,
'R', 0, 0x0072, 0x0052,
885 UnicodeLatinMap::AT_none, 0 },
886 { 0x0155, UnicodeLatinMap::CT_lower,
'r', 0, 0x0155, 0x0154,
887 UnicodeLatinMap::AT_acute, 0 },
888 { 0x0154, UnicodeLatinMap::CT_upper,
'R', 0, 0x0155, 0x0154,
889 UnicodeLatinMap::AT_acute, 0 },
890 { 0x0159, UnicodeLatinMap::CT_lower,
'r', 0, 0x0159, 0x0158,
891 UnicodeLatinMap::AT_caron, 0 },
892 { 0x0158, UnicodeLatinMap::CT_upper,
'R', 0, 0x0159, 0x0158,
893 UnicodeLatinMap::AT_caron, 0 },
894 { 0x1e59, UnicodeLatinMap::CT_lower,
'r', 0, 0x1e59, 0x1e58,
895 UnicodeLatinMap::AT_dot_above, 0 },
896 { 0x1e58, UnicodeLatinMap::CT_upper,
'R', 0, 0x1e59, 0x1e58,
897 UnicodeLatinMap::AT_dot_above, 0 },
898 { 0x0157, UnicodeLatinMap::CT_lower,
'r', 0, 0x0157, 0x0156,
899 UnicodeLatinMap::AT_cedilla, 0 },
900 { 0x0156, UnicodeLatinMap::CT_upper,
'R', 0, 0x0157, 0x0156,
901 UnicodeLatinMap::AT_cedilla, 0 },
902 { 0x0211, UnicodeLatinMap::CT_lower,
'r', 0, 0x0211, 0x0210,
903 UnicodeLatinMap::AT_double_grave, 0 },
904 { 0x0210, UnicodeLatinMap::CT_upper,
'R', 0, 0x0211, 0x0210,
905 UnicodeLatinMap::AT_double_grave, 0 },
906 { 0x0213, UnicodeLatinMap::CT_lower,
'r', 0, 0x0213, 0x0212,
907 UnicodeLatinMap::AT_inverted_breve, 0 },
908 { 0x0212, UnicodeLatinMap::CT_upper,
'R', 0, 0x0213, 0x0212,
909 UnicodeLatinMap::AT_inverted_breve, 0 },
910 { 0x1e5b, UnicodeLatinMap::CT_lower,
'r', 0, 0x1e5b, 0x1e5a,
911 UnicodeLatinMap::AT_dot_below, 0 },
912 { 0x1e5a, UnicodeLatinMap::CT_upper,
'R', 0, 0x1e5b, 0x1e5a,
913 UnicodeLatinMap::AT_dot_below, 0 },
914 { 0x1e5d, UnicodeLatinMap::CT_lower,
'r', 0, 0x1e5d, 0x1e5c,
915 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
916 { 0x1e5c, UnicodeLatinMap::CT_upper,
'R', 0, 0x1e5d, 0x1e5c,
917 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
918 { 0x1e5f, UnicodeLatinMap::CT_lower,
'r', 0, 0x1e5f, 0x1e5e,
919 UnicodeLatinMap::AT_line_below, 0 },
920 { 0x1e5e, UnicodeLatinMap::CT_upper,
'R', 0, 0x1e5f, 0x1e5e,
921 UnicodeLatinMap::AT_line_below, 0 },
922 { 0x0280, UnicodeLatinMap::CT_upper,
'R', 0, 0x0072, 0x0280,
923 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
924 { 0x0279, UnicodeLatinMap::CT_lower,
'r', 0, 0x0279, 0x0052,
925 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
926 { 0x027b, UnicodeLatinMap::CT_lower,
'r', 0, 0x027b, 0x0052,
927 UnicodeLatinMap::AT_hook, UnicodeLatinMap::AF_turned },
928 { 0x0281, UnicodeLatinMap::CT_upper,
'R', 0, 0x0072, 0x0281,
929 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned | UnicodeLatinMap::AF_smallcap },
930 { 0x0073, UnicodeLatinMap::CT_lower,
's', 0, 0x0073, 0x0053,
931 UnicodeLatinMap::AT_none, 0 },
932 { 0x0053, UnicodeLatinMap::CT_upper,
'S', 0, 0x0073, 0x0053,
933 UnicodeLatinMap::AT_none, 0 },
934 { 0x015b, UnicodeLatinMap::CT_lower,
's', 0, 0x015b, 0x015a,
935 UnicodeLatinMap::AT_acute, 0 },
936 { 0x015a, UnicodeLatinMap::CT_upper,
'S', 0, 0x015b, 0x015a,
937 UnicodeLatinMap::AT_acute, 0 },
938 { 0x1e65, UnicodeLatinMap::CT_lower,
's', 0, 0x1e65, 0x1e64,
939 UnicodeLatinMap::AT_acute_and_dot_above, 0 },
940 { 0x1e64, UnicodeLatinMap::CT_upper,
'S', 0, 0x1e65, 0x1e64,
941 UnicodeLatinMap::AT_acute_and_dot_above, 0 },
942 { 0x015d, UnicodeLatinMap::CT_lower,
's', 0, 0x015d, 0x015c,
943 UnicodeLatinMap::AT_circumflex, 0 },
944 { 0x015c, UnicodeLatinMap::CT_upper,
'S', 0, 0x015d, 0x015c,
945 UnicodeLatinMap::AT_circumflex, 0 },
946 { 0x0161, UnicodeLatinMap::CT_lower,
's', 0, 0x0161, 0x0160,
947 UnicodeLatinMap::AT_caron, 0 },
948 { 0x0160, UnicodeLatinMap::CT_upper,
'S', 0, 0x0161, 0x0160,
949 UnicodeLatinMap::AT_caron, 0 },
950 { 0x1e67, UnicodeLatinMap::CT_lower,
's', 0, 0x1e67, 0x1e66,
951 UnicodeLatinMap::AT_caron_and_dot_above, 0 },
952 { 0x1e66, UnicodeLatinMap::CT_upper,
'S', 0, 0x1e67, 0x1e66,
953 UnicodeLatinMap::AT_caron_and_dot_above, 0 },
954 { 0x1e61, UnicodeLatinMap::CT_lower,
's', 0, 0x1e61, 0x1e60,
955 UnicodeLatinMap::AT_dot_above, 0 },
956 { 0x1e60, UnicodeLatinMap::CT_upper,
'S', 0, 0x1e61, 0x1e60,
957 UnicodeLatinMap::AT_dot_above, 0 },
958 { 0x015f, UnicodeLatinMap::CT_lower,
's', 0, 0x015f, 0x015e,
959 UnicodeLatinMap::AT_cedilla, 0 },
960 { 0x015e, UnicodeLatinMap::CT_upper,
'S', 0, 0x015f, 0x015e,
961 UnicodeLatinMap::AT_cedilla, 0 },
962 { 0x1e63, UnicodeLatinMap::CT_lower,
's', 0, 0x1e63, 0x1e62,
963 UnicodeLatinMap::AT_dot_below, 0 },
964 { 0x1e62, UnicodeLatinMap::CT_upper,
'S', 0, 0x1e63, 0x1e62,
965 UnicodeLatinMap::AT_dot_below, 0 },
966 { 0x1e69, UnicodeLatinMap::CT_lower,
's', 0, 0x1e69, 0x1e68,
967 UnicodeLatinMap::AT_dot_below_and_dot_above, 0 },
968 { 0x1e68, UnicodeLatinMap::CT_upper,
'S', 0, 0x1e69, 0x1e68,
969 UnicodeLatinMap::AT_dot_below_and_dot_above, 0 },
970 { 0x0219, UnicodeLatinMap::CT_lower,
's', 0, 0x0219, 0x0218,
971 UnicodeLatinMap::AT_comma_below, 0 },
972 { 0x0218, UnicodeLatinMap::CT_upper,
'S', 0, 0x0219, 0x0218,
973 UnicodeLatinMap::AT_comma_below, 0 },
974 { 0x00df, UnicodeLatinMap::CT_lower,
's',
's', 0x00df, 0x00df,
975 UnicodeLatinMap::AT_none, 0 },
976 { 0x0282, UnicodeLatinMap::CT_lower,
's', 0, 0x0282, 0x0053,
977 UnicodeLatinMap::AT_hook, 0 },
978 { 0x0074, UnicodeLatinMap::CT_lower,
't', 0, 0x0074, 0x0054,
979 UnicodeLatinMap::AT_none, 0 },
980 { 0x0054, UnicodeLatinMap::CT_upper,
'T', 0, 0x0074, 0x0054,
981 UnicodeLatinMap::AT_none, 0 },
982 { 0x0165, UnicodeLatinMap::CT_lower,
't', 0, 0x0165, 0x0164,
983 UnicodeLatinMap::AT_caron, 0 },
984 { 0x0164, UnicodeLatinMap::CT_upper,
'T', 0, 0x0165, 0x0164,
985 UnicodeLatinMap::AT_caron, 0 },
986 { 0x1e97, UnicodeLatinMap::CT_lower,
't', 0, 0x1e97, 0x0054,
987 UnicodeLatinMap::AT_diaeresis, 0 },
988 { 0x1e6b, UnicodeLatinMap::CT_lower,
't', 0, 0x1e6b, 0x1e6a,
989 UnicodeLatinMap::AT_dot_above, 0 },
990 { 0x1e6a, UnicodeLatinMap::CT_upper,
'T', 0, 0x1e6b, 0x1e6a,
991 UnicodeLatinMap::AT_dot_above, 0 },
992 { 0x0163, UnicodeLatinMap::CT_lower,
't', 0, 0x0163, 0x0162,
993 UnicodeLatinMap::AT_cedilla, 0 },
994 { 0x0162, UnicodeLatinMap::CT_upper,
'T', 0, 0x0163, 0x0162,
995 UnicodeLatinMap::AT_cedilla, 0 },
996 { 0x1e6d, UnicodeLatinMap::CT_lower,
't', 0, 0x1e6d, 0x1e6c,
997 UnicodeLatinMap::AT_dot_below, 0 },
998 { 0x1e6c, UnicodeLatinMap::CT_upper,
'T', 0, 0x1e6d, 0x1e6c,
999 UnicodeLatinMap::AT_dot_below, 0 },
1000 { 0x021b, UnicodeLatinMap::CT_lower,
't', 0, 0x021b, 0x021a,
1001 UnicodeLatinMap::AT_comma_below, 0 },
1002 { 0x021a, UnicodeLatinMap::CT_upper,
'T', 0, 0x021b, 0x021a,
1003 UnicodeLatinMap::AT_comma_below, 0 },
1004 { 0x1e71, UnicodeLatinMap::CT_lower,
't', 0, 0x1e71, 0x1e70,
1005 UnicodeLatinMap::AT_circumflex_below, 0 },
1006 { 0x1e70, UnicodeLatinMap::CT_upper,
'T', 0, 0x1e71, 0x1e70,
1007 UnicodeLatinMap::AT_circumflex_below, 0 },
1008 { 0x1e6f, UnicodeLatinMap::CT_lower,
't', 0, 0x1e6f, 0x1e6e,
1009 UnicodeLatinMap::AT_line_below, 0 },
1010 { 0x1e6e, UnicodeLatinMap::CT_upper,
'T', 0, 0x1e6f, 0x1e6e,
1011 UnicodeLatinMap::AT_line_below, 0 },
1012 { 0x0167, UnicodeLatinMap::CT_lower,
't', 0, 0x0167, 0x0166,
1013 UnicodeLatinMap::AT_stroke, 0 },
1014 { 0x0166, UnicodeLatinMap::CT_upper,
'T', 0, 0x0167, 0x0166,
1015 UnicodeLatinMap::AT_stroke, 0 },
1016 { 0x01ad, UnicodeLatinMap::CT_lower,
't', 0, 0x01ad, 0x01ac,
1017 UnicodeLatinMap::AT_hook, 0 },
1018 { 0x01ac, UnicodeLatinMap::CT_upper,
'T', 0, 0x01ad, 0x01ac,
1019 UnicodeLatinMap::AT_hook, 0 },
1020 { 0x0287, UnicodeLatinMap::CT_lower,
't', 0, 0x0287, 0x0054,
1021 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1022 { 0x0075, UnicodeLatinMap::CT_lower,
'u', 0, 0x0075, 0x0055,
1023 UnicodeLatinMap::AT_none, 0 },
1024 { 0x0055, UnicodeLatinMap::CT_upper,
'U', 0, 0x0075, 0x0055,
1025 UnicodeLatinMap::AT_none, 0 },
1026 { 0x00fa, UnicodeLatinMap::CT_lower,
'u', 0, 0x00fa, 0x00da,
1027 UnicodeLatinMap::AT_acute, 0 },
1028 { 0x00da, UnicodeLatinMap::CT_upper,
'U', 0, 0x00fa, 0x00da,
1029 UnicodeLatinMap::AT_acute, 0 },
1030 { 0x00f9, UnicodeLatinMap::CT_lower,
'u', 0, 0x00f9, 0x00d9,
1031 UnicodeLatinMap::AT_grave, 0 },
1032 { 0x00d9, UnicodeLatinMap::CT_upper,
'U', 0, 0x00f9, 0x00d9,
1033 UnicodeLatinMap::AT_grave, 0 },
1034 { 0x016d, UnicodeLatinMap::CT_lower,
'u', 0, 0x016d, 0x016c,
1035 UnicodeLatinMap::AT_breve, 0 },
1036 { 0x016c, UnicodeLatinMap::CT_upper,
'U', 0, 0x016d, 0x016c,
1037 UnicodeLatinMap::AT_breve, 0 },
1038 { 0x00fb, UnicodeLatinMap::CT_lower,
'u', 0, 0x00fb, 0x00db,
1039 UnicodeLatinMap::AT_circumflex, 0 },
1040 { 0x00db, UnicodeLatinMap::CT_upper,
'U', 0, 0x00fb, 0x00db,
1041 UnicodeLatinMap::AT_circumflex, 0 },
1042 { 0x01d4, UnicodeLatinMap::CT_lower,
'u', 0, 0x01d4, 0x01d3,
1043 UnicodeLatinMap::AT_caron, 0 },
1044 { 0x01d3, UnicodeLatinMap::CT_upper,
'U', 0, 0x01d4, 0x01d3,
1045 UnicodeLatinMap::AT_caron, 0 },
1046 { 0x016f, UnicodeLatinMap::CT_lower,
'u', 0, 0x016f, 0x016e,
1047 UnicodeLatinMap::AT_ring_above, 0 },
1048 { 0x016e, UnicodeLatinMap::CT_upper,
'U', 0, 0x016f, 0x016e,
1049 UnicodeLatinMap::AT_ring_above, 0 },
1050 { 0x00fc, UnicodeLatinMap::CT_lower,
'u', 0, 0x00fc, 0x00dc,
1051 UnicodeLatinMap::AT_diaeresis, 0 },
1052 { 0x00dc, UnicodeLatinMap::CT_upper,
'U', 0, 0x00fc, 0x00dc,
1053 UnicodeLatinMap::AT_diaeresis, 0 },
1054 { 0x01d8, UnicodeLatinMap::CT_lower,
'u', 0, 0x01d8, 0x01d7,
1055 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
1056 { 0x01d7, UnicodeLatinMap::CT_upper,
'U', 0, 0x01d8, 0x01d7,
1057 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
1058 { 0x01dc, UnicodeLatinMap::CT_lower,
'u', 0, 0x01dc, 0x01db,
1059 UnicodeLatinMap::AT_diaeresis_and_grave, 0 },
1060 { 0x01db, UnicodeLatinMap::CT_upper,
'U', 0, 0x01dc, 0x01db,
1061 UnicodeLatinMap::AT_diaeresis_and_grave, 0 },
1062 { 0x01da, UnicodeLatinMap::CT_lower,
'u', 0, 0x01da, 0x01d9,
1063 UnicodeLatinMap::AT_diaeresis_and_caron, 0 },
1064 { 0x01d9, UnicodeLatinMap::CT_upper,
'U', 0, 0x01da, 0x01d9,
1065 UnicodeLatinMap::AT_diaeresis_and_caron, 0 },
1066 { 0x01d6, UnicodeLatinMap::CT_lower,
'u', 0, 0x01d6, 0x01d5,
1067 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
1068 { 0x01d5, UnicodeLatinMap::CT_upper,
'U', 0, 0x01d6, 0x01d5,
1069 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
1070 { 0x0171, UnicodeLatinMap::CT_lower,
'u', 0, 0x0171, 0x0170,
1071 UnicodeLatinMap::AT_double_acute, 0 },
1072 { 0x0170, UnicodeLatinMap::CT_upper,
'U', 0, 0x0171, 0x0170,
1073 UnicodeLatinMap::AT_double_acute, 0 },
1074 { 0x0169, UnicodeLatinMap::CT_lower,
'u', 0, 0x0169, 0x0168,
1075 UnicodeLatinMap::AT_tilde, 0 },
1076 { 0x0168, UnicodeLatinMap::CT_upper,
'U', 0, 0x0169, 0x0168,
1077 UnicodeLatinMap::AT_tilde, 0 },
1078 { 0x1e79, UnicodeLatinMap::CT_lower,
'u', 0, 0x1e79, 0x1e78,
1079 UnicodeLatinMap::AT_tilde_and_acute, 0 },
1080 { 0x1e78, UnicodeLatinMap::CT_upper,
'U', 0, 0x1e79, 0x1e78,
1081 UnicodeLatinMap::AT_tilde_and_acute, 0 },
1082 { 0x0173, UnicodeLatinMap::CT_lower,
'u', 0, 0x0173, 0x0172,
1083 UnicodeLatinMap::AT_ogonek, 0 },
1084 { 0x0172, UnicodeLatinMap::CT_upper,
'U', 0, 0x0173, 0x0172,
1085 UnicodeLatinMap::AT_ogonek, 0 },
1086 { 0x016b, UnicodeLatinMap::CT_lower,
'u', 0, 0x016b, 0x016a,
1087 UnicodeLatinMap::AT_macron, 0 },
1088 { 0x016a, UnicodeLatinMap::CT_upper,
'U', 0, 0x016b, 0x016a,
1089 UnicodeLatinMap::AT_macron, 0 },
1090 { 0x1e7b, UnicodeLatinMap::CT_lower,
'u', 0, 0x1e7b, 0x1e7a,
1091 UnicodeLatinMap::AT_macron_and_diaeresis, 0 },
1092 { 0x1e7a, UnicodeLatinMap::CT_upper,
'U', 0, 0x1e7b, 0x1e7a,
1093 UnicodeLatinMap::AT_macron_and_diaeresis, 0 },
1094 { 0x1ee7, UnicodeLatinMap::CT_lower,
'u', 0, 0x1ee7, 0x1ee6,
1095 UnicodeLatinMap::AT_hook_above, 0 },
1096 { 0x1ee6, UnicodeLatinMap::CT_upper,
'U', 0, 0x1ee7, 0x1ee6,
1097 UnicodeLatinMap::AT_hook_above, 0 },
1098 { 0x0215, UnicodeLatinMap::CT_lower,
'u', 0, 0x0215, 0x0214,
1099 UnicodeLatinMap::AT_double_grave, 0 },
1100 { 0x0214, UnicodeLatinMap::CT_upper,
'U', 0, 0x0215, 0x0214,
1101 UnicodeLatinMap::AT_double_grave, 0 },
1102 { 0x0217, UnicodeLatinMap::CT_lower,
'u', 0, 0x0217, 0x0216,
1103 UnicodeLatinMap::AT_inverted_breve, 0 },
1104 { 0x0216, UnicodeLatinMap::CT_upper,
'U', 0, 0x0217, 0x0216,
1105 UnicodeLatinMap::AT_inverted_breve, 0 },
1106 { 0x01b0, UnicodeLatinMap::CT_lower,
'u', 0, 0x01b0, 0x01af,
1107 UnicodeLatinMap::AT_horn, 0 },
1108 { 0x01af, UnicodeLatinMap::CT_upper,
'U', 0, 0x01b0, 0x01af,
1109 UnicodeLatinMap::AT_horn, 0 },
1110 { 0x1ee9, UnicodeLatinMap::CT_lower,
'u', 0, 0x1ee9, 0x1ee8,
1111 UnicodeLatinMap::AT_horn_and_acute, 0 },
1112 { 0x1ee8, UnicodeLatinMap::CT_upper,
'U', 0, 0x1ee9, 0x1ee8,
1113 UnicodeLatinMap::AT_horn_and_acute, 0 },
1114 { 0x1eeb, UnicodeLatinMap::CT_lower,
'u', 0, 0x1eeb, 0x1eea,
1115 UnicodeLatinMap::AT_horn_and_grave, 0 },
1116 { 0x1eea, UnicodeLatinMap::CT_upper,
'U', 0, 0x1eeb, 0x1eea,
1117 UnicodeLatinMap::AT_horn_and_grave, 0 },
1118 { 0x1eef, UnicodeLatinMap::CT_lower,
'u', 0, 0x1eef, 0x1eee,
1119 UnicodeLatinMap::AT_horn_and_tilde, 0 },
1120 { 0x1eee, UnicodeLatinMap::CT_upper,
'U', 0, 0x1eef, 0x1eee,
1121 UnicodeLatinMap::AT_horn_and_tilde, 0 },
1122 { 0x1eed, UnicodeLatinMap::CT_lower,
'u', 0, 0x1eed, 0x1eec,
1123 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
1124 { 0x1eec, UnicodeLatinMap::CT_upper,
'U', 0, 0x1eed, 0x1eec,
1125 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
1126 { 0x1ef1, UnicodeLatinMap::CT_lower,
'u', 0, 0x1ef1, 0x1ef0,
1127 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
1128 { 0x1ef0, UnicodeLatinMap::CT_upper,
'U', 0, 0x1ef1, 0x1ef0,
1129 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
1130 { 0x1ee5, UnicodeLatinMap::CT_lower,
'u', 0, 0x1ee5, 0x1ee4,
1131 UnicodeLatinMap::AT_dot_below, 0 },
1132 { 0x1ee4, UnicodeLatinMap::CT_upper,
'U', 0, 0x1ee5, 0x1ee4,
1133 UnicodeLatinMap::AT_dot_below, 0 },
1134 { 0x1e73, UnicodeLatinMap::CT_lower,
'u', 0, 0x1e73, 0x1e72,
1135 UnicodeLatinMap::AT_diaeresis_below, 0 },
1136 { 0x1e72, UnicodeLatinMap::CT_upper,
'U', 0, 0x1e73, 0x1e72,
1137 UnicodeLatinMap::AT_diaeresis_below, 0 },
1138 { 0x1e77, UnicodeLatinMap::CT_lower,
'u', 0, 0x1e77, 0x1e76,
1139 UnicodeLatinMap::AT_circumflex_below, 0 },
1140 { 0x1e76, UnicodeLatinMap::CT_upper,
'U', 0, 0x1e77, 0x1e76,
1141 UnicodeLatinMap::AT_circumflex_below, 0 },
1142 { 0x1e75, UnicodeLatinMap::CT_lower,
'u', 0, 0x1e75, 0x1e74,
1143 UnicodeLatinMap::AT_tilde_below, 0 },
1144 { 0x1e74, UnicodeLatinMap::CT_upper,
'U', 0, 0x1e75, 0x1e74,
1145 UnicodeLatinMap::AT_tilde_below, 0 },
1146 { 0x0265, UnicodeLatinMap::CT_lower,
'h', 0, 0x0265, 0x0048,
1147 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1148 { 0x026f, UnicodeLatinMap::CT_lower,
'm', 0, 0x026f, 0x019c,
1149 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1150 { 0x019c, UnicodeLatinMap::CT_upper,
'M', 0, 0x026f, 0x019c,
1151 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1152 { 0x0076, UnicodeLatinMap::CT_lower,
'v', 0, 0x0076, 0x0056,
1153 UnicodeLatinMap::AT_none, 0 },
1154 { 0x0056, UnicodeLatinMap::CT_upper,
'V', 0, 0x0076, 0x0056,
1155 UnicodeLatinMap::AT_none, 0 },
1156 { 0x1e7d, UnicodeLatinMap::CT_lower,
'v', 0, 0x1e7d, 0x1e7c,
1157 UnicodeLatinMap::AT_tilde, 0 },
1158 { 0x1e7c, UnicodeLatinMap::CT_upper,
'V', 0, 0x1e7d, 0x1e7c,
1159 UnicodeLatinMap::AT_tilde, 0 },
1160 { 0x1e7f, UnicodeLatinMap::CT_lower,
'v', 0, 0x1e7f, 0x1e7e,
1161 UnicodeLatinMap::AT_dot_below, 0 },
1162 { 0x1e7e, UnicodeLatinMap::CT_upper,
'V', 0, 0x1e7f, 0x1e7e,
1163 UnicodeLatinMap::AT_dot_below, 0 },
1164 { 0x028b, UnicodeLatinMap::CT_lower,
'v', 0, 0x028b, 0x01b2,
1165 UnicodeLatinMap::AT_hook, 0 },
1166 { 0x01b2, UnicodeLatinMap::CT_upper,
'V', 0, 0x028b, 0x01b2,
1167 UnicodeLatinMap::AT_hook, 0 },
1168 { 0x028c, UnicodeLatinMap::CT_lower,
'v', 0, 0x028c, 0x0056,
1169 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1170 { 0x0077, UnicodeLatinMap::CT_lower,
'w', 0, 0x0077, 0x0057,
1171 UnicodeLatinMap::AT_none, 0 },
1172 { 0x0057, UnicodeLatinMap::CT_upper,
'W', 0, 0x0077, 0x0057,
1173 UnicodeLatinMap::AT_none, 0 },
1174 { 0x1e83, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e83, 0x1e82,
1175 UnicodeLatinMap::AT_acute, 0 },
1176 { 0x1e82, UnicodeLatinMap::CT_upper,
'W', 0, 0x1e83, 0x1e82,
1177 UnicodeLatinMap::AT_acute, 0 },
1178 { 0x1e81, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e81, 0x1e80,
1179 UnicodeLatinMap::AT_grave, 0 },
1180 { 0x1e80, UnicodeLatinMap::CT_upper,
'W', 0, 0x1e81, 0x1e80,
1181 UnicodeLatinMap::AT_grave, 0 },
1182 { 0x0175, UnicodeLatinMap::CT_lower,
'w', 0, 0x0175, 0x0174,
1183 UnicodeLatinMap::AT_circumflex, 0 },
1184 { 0x0174, UnicodeLatinMap::CT_upper,
'W', 0, 0x0175, 0x0174,
1185 UnicodeLatinMap::AT_circumflex, 0 },
1186 { 0x1e98, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e98, 0x0057,
1187 UnicodeLatinMap::AT_ring_above, 0 },
1188 { 0x1e85, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e85, 0x1e84,
1189 UnicodeLatinMap::AT_diaeresis, 0 },
1190 { 0x1e84, UnicodeLatinMap::CT_upper,
'W', 0, 0x1e85, 0x1e84,
1191 UnicodeLatinMap::AT_diaeresis, 0 },
1192 { 0x1e87, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e87, 0x1e86,
1193 UnicodeLatinMap::AT_dot_above, 0 },
1194 { 0x1e86, UnicodeLatinMap::CT_upper,
'W', 0, 0x1e87, 0x1e86,
1195 UnicodeLatinMap::AT_dot_above, 0 },
1196 { 0x1e89, UnicodeLatinMap::CT_lower,
'w', 0, 0x1e89, 0x1e88,
1197 UnicodeLatinMap::AT_dot_below, 0 },
1198 { 0x1e88, UnicodeLatinMap::CT_upper,
'W', 0, 0x1e89, 0x1e88,
1199 UnicodeLatinMap::AT_dot_below, 0 },
1200 { 0x028d, UnicodeLatinMap::CT_lower,
'w', 0, 0x028d, 0x0057,
1201 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
1202 { 0x0078, UnicodeLatinMap::CT_lower,
'x', 0, 0x0078, 0x0058,
1203 UnicodeLatinMap::AT_none, 0 },
1204 { 0x0058, UnicodeLatinMap::CT_upper,
'X', 0, 0x0078, 0x0058,
1205 UnicodeLatinMap::AT_none, 0 },
1206 { 0x1e8d, UnicodeLatinMap::CT_lower,
'x', 0, 0x1e8d, 0x1e8c,
1207 UnicodeLatinMap::AT_diaeresis, 0 },
1208 { 0x1e8c, UnicodeLatinMap::CT_upper,
'X', 0, 0x1e8d, 0x1e8c,
1209 UnicodeLatinMap::AT_diaeresis, 0 },
1210 { 0x1e8b, UnicodeLatinMap::CT_lower,
'x', 0, 0x1e8b, 0x1e8a,
1211 UnicodeLatinMap::AT_dot_above, 0 },
1212 { 0x1e8a, UnicodeLatinMap::CT_upper,
'X', 0, 0x1e8b, 0x1e8a,
1213 UnicodeLatinMap::AT_dot_above, 0 },
1214 { 0x0079, UnicodeLatinMap::CT_lower,
'y', 0, 0x0079, 0x0059,
1215 UnicodeLatinMap::AT_none, 0 },
1216 { 0x0059, UnicodeLatinMap::CT_upper,
'Y', 0, 0x0079, 0x0059,
1217 UnicodeLatinMap::AT_none, 0 },
1218 { 0x00fd, UnicodeLatinMap::CT_lower,
'y', 0, 0x00fd, 0x00dd,
1219 UnicodeLatinMap::AT_acute, 0 },
1220 { 0x00dd, UnicodeLatinMap::CT_upper,
'Y', 0, 0x00fd, 0x00dd,
1221 UnicodeLatinMap::AT_acute, 0 },
1222 { 0x1ef3, UnicodeLatinMap::CT_lower,
'y', 0, 0x1ef3, 0x1ef2,
1223 UnicodeLatinMap::AT_grave, 0 },
1224 { 0x1ef2, UnicodeLatinMap::CT_upper,
'Y', 0, 0x1ef3, 0x1ef2,
1225 UnicodeLatinMap::AT_grave, 0 },
1226 { 0x0177, UnicodeLatinMap::CT_lower,
'y', 0, 0x0177, 0x0176,
1227 UnicodeLatinMap::AT_circumflex, 0 },
1228 { 0x0176, UnicodeLatinMap::CT_upper,
'Y', 0, 0x0177, 0x0176,
1229 UnicodeLatinMap::AT_circumflex, 0 },
1230 { 0x1e99, UnicodeLatinMap::CT_lower,
'y', 0, 0x1e99, 0x0059,
1231 UnicodeLatinMap::AT_ring_above, 0 },
1232 { 0x00ff, UnicodeLatinMap::CT_lower,
'y', 0, 0x00ff, 0x0178,
1233 UnicodeLatinMap::AT_diaeresis, 0 },
1234 { 0x0178, UnicodeLatinMap::CT_upper,
'Y', 0, 0x00ff, 0x0178,
1235 UnicodeLatinMap::AT_diaeresis, 0 },
1236 { 0x1ef9, UnicodeLatinMap::CT_lower,
'y', 0, 0x1ef9, 0x1ef8,
1237 UnicodeLatinMap::AT_tilde, 0 },
1238 { 0x1ef8, UnicodeLatinMap::CT_upper,
'Y', 0, 0x1ef9, 0x1ef8,
1239 UnicodeLatinMap::AT_tilde, 0 },
1240 { 0x1e8f, UnicodeLatinMap::CT_lower,
'y', 0, 0x1e8f, 0x1e8e,
1241 UnicodeLatinMap::AT_dot_above, 0 },
1242 { 0x1e8e, UnicodeLatinMap::CT_upper,
'Y', 0, 0x1e8f, 0x1e8e,
1243 UnicodeLatinMap::AT_dot_above, 0 },
1244 { 0x0233, UnicodeLatinMap::CT_lower,
'y', 0, 0x0233, 0x0232,
1245 UnicodeLatinMap::AT_macron, 0 },
1246 { 0x0232, UnicodeLatinMap::CT_upper,
'Y', 0, 0x0233, 0x0232,
1247 UnicodeLatinMap::AT_macron, 0 },
1248 { 0x1ef7, UnicodeLatinMap::CT_lower,
'y', 0, 0x1ef7, 0x1ef6,
1249 UnicodeLatinMap::AT_hook_above, 0 },
1250 { 0x1ef6, UnicodeLatinMap::CT_upper,
'Y', 0, 0x1ef7, 0x1ef6,
1251 UnicodeLatinMap::AT_hook_above, 0 },
1252 { 0x1ef5, UnicodeLatinMap::CT_lower,
'y', 0, 0x1ef5, 0x1ef4,
1253 UnicodeLatinMap::AT_dot_below, 0 },
1254 { 0x1ef4, UnicodeLatinMap::CT_upper,
'Y', 0, 0x1ef5, 0x1ef4,
1255 UnicodeLatinMap::AT_dot_below, 0 },
1256 { 0x028f, UnicodeLatinMap::CT_upper,
'Y', 0, 0x0079, 0x028f,
1257 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
1258 { 0x01b4, UnicodeLatinMap::CT_lower,
'y', 0, 0x01b4, 0x01b3,
1259 UnicodeLatinMap::AT_hook, 0 },
1260 { 0x01b3, UnicodeLatinMap::CT_upper,
'Y', 0, 0x01b4, 0x01b3,
1261 UnicodeLatinMap::AT_hook, 0 },
1262 { 0x007a, UnicodeLatinMap::CT_lower,
'z', 0, 0x007a, 0x005a,
1263 UnicodeLatinMap::AT_none, 0 },
1264 { 0x005a, UnicodeLatinMap::CT_upper,
'Z', 0, 0x007a, 0x005a,
1265 UnicodeLatinMap::AT_none, 0 },
1266 { 0x017a, UnicodeLatinMap::CT_lower,
'z', 0, 0x017a, 0x0179,
1267 UnicodeLatinMap::AT_acute, 0 },
1268 { 0x0179, UnicodeLatinMap::CT_upper,
'Z', 0, 0x017a, 0x0179,
1269 UnicodeLatinMap::AT_acute, 0 },
1270 { 0x1e91, UnicodeLatinMap::CT_lower,
'z', 0, 0x1e91, 0x1e90,
1271 UnicodeLatinMap::AT_circumflex, 0 },
1272 { 0x1e90, UnicodeLatinMap::CT_upper,
'Z', 0, 0x1e91, 0x1e90,
1273 UnicodeLatinMap::AT_circumflex, 0 },
1274 { 0x017e, UnicodeLatinMap::CT_lower,
'z', 0, 0x017e, 0x017d,
1275 UnicodeLatinMap::AT_caron, 0 },
1276 { 0x017d, UnicodeLatinMap::CT_upper,
'Z', 0, 0x017e, 0x017d,
1277 UnicodeLatinMap::AT_caron, 0 },
1278 { 0x017c, UnicodeLatinMap::CT_lower,
'z', 0, 0x017c, 0x017b,
1279 UnicodeLatinMap::AT_dot_above, 0 },
1280 { 0x017b, UnicodeLatinMap::CT_upper,
'Z', 0, 0x017c, 0x017b,
1281 UnicodeLatinMap::AT_dot_above, 0 },
1282 { 0x1e93, UnicodeLatinMap::CT_lower,
'z', 0, 0x1e93, 0x1e92,
1283 UnicodeLatinMap::AT_dot_below, 0 },
1284 { 0x1e92, UnicodeLatinMap::CT_upper,
'Z', 0, 0x1e93, 0x1e92,
1285 UnicodeLatinMap::AT_dot_below, 0 },
1286 { 0x1e95, UnicodeLatinMap::CT_lower,
'z', 0, 0x1e95, 0x1e94,
1287 UnicodeLatinMap::AT_line_below, 0 },
1288 { 0x1e94, UnicodeLatinMap::CT_upper,
'Z', 0, 0x1e95, 0x1e94,
1289 UnicodeLatinMap::AT_line_below, 0 },
1290 { 0x01b6, UnicodeLatinMap::CT_lower,
'z', 0, 0x01b6, 0x01b5,
1291 UnicodeLatinMap::AT_stroke, 0 },
1292 { 0x01b5, UnicodeLatinMap::CT_upper,
'Z', 0, 0x01b6, 0x01b5,
1293 UnicodeLatinMap::AT_stroke, 0 },
1294 { 0x0225, UnicodeLatinMap::CT_lower,
'z', 0, 0x0225, 0x0224,
1295 UnicodeLatinMap::AT_hook, 0 },
1296 { 0x0224, UnicodeLatinMap::CT_upper,
'Z', 0, 0x0225, 0x0224,
1297 UnicodeLatinMap::AT_hook, 0 },
1298 { 0x0291, UnicodeLatinMap::CT_lower,
'z', 0, 0x0291, 0x005a,
1299 UnicodeLatinMap::AT_curl, 0 },
1314 if (!_initialized) {
1318 if (character < max_direct_chars) {
1319 return _direct_chars[character];
1322 ByCharacter::const_iterator ci;
1323 ci = _by_character->find(character);
1324 if (ci != _by_character->end()) {
1325 return (*ci).second;
1337 void UnicodeLatinMap::
1339 if (!_initialized) {
1340 _by_character =
new ByCharacter;
1341 for (
int i = 0; i < latin_map_length; i++) {
1347 if (entry->_character < max_direct_chars) {
1348 _direct_chars[entry->_character] = entry;
1350 (*_by_character)[entry->_character] = entry;
1353 _initialized =
true;
static const Entry * look_up(wchar_t character)
Returns the Entry associated with the indicated character, if there is one.