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