00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "unicodeLatinMap.h"
00020
00021 bool UnicodeLatinMap::_initialized = false;
00022 UnicodeLatinMap::ByCharacter UnicodeLatinMap::_by_character;
00023 const UnicodeLatinMap::Entry *UnicodeLatinMap::_direct_chars[UnicodeLatinMap::max_direct_chars];
00024
00025 static const UnicodeLatinMap::Entry latin_map[] = {
00026 { 0x00a1, UnicodeLatinMap::CT_punct, '!', 0, 0x00a1, 0x00a1,
00027 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00028 { 0x00bf, UnicodeLatinMap::CT_punct, '?', 0, 0x00bf, 0x00bf,
00029 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00030 { 0x0061, UnicodeLatinMap::CT_lower, 'a', 0, 0x0061, 0x0041,
00031 UnicodeLatinMap::AT_none, 0 },
00032 { 0x0041, UnicodeLatinMap::CT_upper, 'A', 0, 0x0061, 0x0041,
00033 UnicodeLatinMap::AT_none, 0 },
00034 { 0x00e1, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e1, 0x00c1,
00035 UnicodeLatinMap::AT_acute, 0 },
00036 { 0x00c1, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e1, 0x00c1,
00037 UnicodeLatinMap::AT_acute, 0 },
00038 { 0x00e0, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e0, 0x00c0,
00039 UnicodeLatinMap::AT_grave, 0 },
00040 { 0x00c0, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e0, 0x00c0,
00041 UnicodeLatinMap::AT_grave, 0 },
00042 { 0x0103, UnicodeLatinMap::CT_lower, 'a', 0, 0x0103, 0x0102,
00043 UnicodeLatinMap::AT_breve, 0 },
00044 { 0x0102, UnicodeLatinMap::CT_upper, 'A', 0, 0x0103, 0x0102,
00045 UnicodeLatinMap::AT_breve, 0 },
00046 { 0x1eaf, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eaf, 0x1eae,
00047 UnicodeLatinMap::AT_breve_and_acute, 0 },
00048 { 0x1eae, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eaf, 0x1eae,
00049 UnicodeLatinMap::AT_breve_and_acute, 0 },
00050 { 0x1eb1, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eb1, 0x1eb0,
00051 UnicodeLatinMap::AT_breve_and_grave, 0 },
00052 { 0x1eb0, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eb1, 0x1eb0,
00053 UnicodeLatinMap::AT_breve_and_grave, 0 },
00054 { 0x1eb5, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eb5, 0x1eb4,
00055 UnicodeLatinMap::AT_breve_and_tilde, 0 },
00056 { 0x1eb4, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eb5, 0x1eb4,
00057 UnicodeLatinMap::AT_breve_and_tilde, 0 },
00058 { 0x1eb3, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eb3, 0x1eb2,
00059 UnicodeLatinMap::AT_breve_and_hook_above, 0 },
00060 { 0x1eb2, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eb3, 0x1eb2,
00061 UnicodeLatinMap::AT_breve_and_hook_above, 0 },
00062 { 0x00e2, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e2, 0x00c2,
00063 UnicodeLatinMap::AT_circumflex, 0 },
00064 { 0x00c2, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e2, 0x00c2,
00065 UnicodeLatinMap::AT_circumflex, 0 },
00066 { 0x1ea5, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ea5, 0x1ea4,
00067 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00068 { 0x1ea4, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ea5, 0x1ea4,
00069 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00070 { 0x1ea7, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ea7, 0x1ea6,
00071 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00072 { 0x1ea6, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ea7, 0x1ea6,
00073 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00074 { 0x1eab, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eab, 0x1eaa,
00075 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00076 { 0x1eaa, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eab, 0x1eaa,
00077 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00078 { 0x1ea9, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ea9, 0x1ea8,
00079 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00080 { 0x1ea8, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ea9, 0x1ea8,
00081 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00082 { 0x01ce, UnicodeLatinMap::CT_lower, 'a', 0, 0x01ce, 0x01cd,
00083 UnicodeLatinMap::AT_caron, 0 },
00084 { 0x01cd, UnicodeLatinMap::CT_upper, 'A', 0, 0x01ce, 0x01cd,
00085 UnicodeLatinMap::AT_caron, 0 },
00086 { 0x00e5, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e5, 0x00c5,
00087 UnicodeLatinMap::AT_ring_above, 0 },
00088 { 0x00c5, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e5, 0x00c5,
00089 UnicodeLatinMap::AT_ring_above, 0 },
00090 { 0x01fb, UnicodeLatinMap::CT_lower, 'a', 0, 0x01fb, 0x01fa,
00091 UnicodeLatinMap::AT_ring_above_and_acute, 0 },
00092 { 0x01fa, UnicodeLatinMap::CT_upper, 'A', 0, 0x01fb, 0x01fa,
00093 UnicodeLatinMap::AT_ring_above_and_acute, 0 },
00094 { 0x00e4, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e4, 0x00c4,
00095 UnicodeLatinMap::AT_diaeresis, 0 },
00096 { 0x00c4, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e4, 0x00c4,
00097 UnicodeLatinMap::AT_diaeresis, 0 },
00098 { 0x01df, UnicodeLatinMap::CT_lower, 'a', 0, 0x01df, 0x01de,
00099 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
00100 { 0x01de, UnicodeLatinMap::CT_upper, 'A', 0, 0x01df, 0x01de,
00101 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
00102 { 0x00e3, UnicodeLatinMap::CT_lower, 'a', 0, 0x00e3, 0x00c3,
00103 UnicodeLatinMap::AT_tilde, 0 },
00104 { 0x00c3, UnicodeLatinMap::CT_upper, 'A', 0, 0x00e3, 0x00c3,
00105 UnicodeLatinMap::AT_tilde, 0 },
00106 { 0x0227, UnicodeLatinMap::CT_lower, 'a', 0, 0x0227, 0x0226,
00107 UnicodeLatinMap::AT_dot_above, 0 },
00108 { 0x0226, UnicodeLatinMap::CT_upper, 'A', 0, 0x0227, 0x0226,
00109 UnicodeLatinMap::AT_dot_above, 0 },
00110 { 0x01e1, UnicodeLatinMap::CT_lower, 'a', 0, 0x01e1, 0x01e0,
00111 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
00112 { 0x01e0, UnicodeLatinMap::CT_upper, 'A', 0, 0x01e1, 0x01e0,
00113 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
00114 { 0x0105, UnicodeLatinMap::CT_lower, 'a', 0, 0x0105, 0x0104,
00115 UnicodeLatinMap::AT_ogonek, 0 },
00116 { 0x0104, UnicodeLatinMap::CT_upper, 'A', 0, 0x0105, 0x0104,
00117 UnicodeLatinMap::AT_ogonek, 0 },
00118 { 0x0101, UnicodeLatinMap::CT_lower, 'a', 0, 0x0101, 0x0100,
00119 UnicodeLatinMap::AT_macron, 0 },
00120 { 0x0100, UnicodeLatinMap::CT_upper, 'A', 0, 0x0101, 0x0100,
00121 UnicodeLatinMap::AT_macron, 0 },
00122 { 0x1ea3, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ea3, 0x1ea2,
00123 UnicodeLatinMap::AT_hook_above, 0 },
00124 { 0x1ea2, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ea3, 0x1ea2,
00125 UnicodeLatinMap::AT_hook_above, 0 },
00126 { 0x0201, UnicodeLatinMap::CT_lower, 'a', 0, 0x0201, 0x0200,
00127 UnicodeLatinMap::AT_double_grave, 0 },
00128 { 0x0200, UnicodeLatinMap::CT_upper, 'A', 0, 0x0201, 0x0200,
00129 UnicodeLatinMap::AT_double_grave, 0 },
00130 { 0x0203, UnicodeLatinMap::CT_lower, 'a', 0, 0x0203, 0x0202,
00131 UnicodeLatinMap::AT_inverted_breve, 0 },
00132 { 0x0202, UnicodeLatinMap::CT_upper, 'A', 0, 0x0203, 0x0202,
00133 UnicodeLatinMap::AT_inverted_breve, 0 },
00134 { 0x1ea1, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ea1, 0x1ea0,
00135 UnicodeLatinMap::AT_dot_below, 0 },
00136 { 0x1ea0, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ea1, 0x1ea0,
00137 UnicodeLatinMap::AT_dot_below, 0 },
00138 { 0x1eb7, UnicodeLatinMap::CT_lower, 'a', 0, 0x1eb7, 0x1eb6,
00139 UnicodeLatinMap::AT_breve_and_dot_below, 0 },
00140 { 0x1eb6, UnicodeLatinMap::CT_upper, 'A', 0, 0x1eb7, 0x1eb6,
00141 UnicodeLatinMap::AT_breve_and_dot_below, 0 },
00142 { 0x1ead, UnicodeLatinMap::CT_lower, 'a', 0, 0x1ead, 0x1eac,
00143 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00144 { 0x1eac, UnicodeLatinMap::CT_upper, 'A', 0, 0x1ead, 0x1eac,
00145 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00146 { 0x1e01, UnicodeLatinMap::CT_lower, 'a', 0, 0x1e01, 0x1e00,
00147 UnicodeLatinMap::AT_ring_below, 0 },
00148 { 0x1e00, UnicodeLatinMap::CT_upper, 'A', 0, 0x1e01, 0x1e00,
00149 UnicodeLatinMap::AT_ring_below, 0 },
00150 { 0x00e6, UnicodeLatinMap::CT_lower, 'a', 'e', 0x00e6, 0x00c6,
00151 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00152 { 0x00c6, UnicodeLatinMap::CT_upper, 'A', 'E', 0x00e6, 0x00c6,
00153 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00154 { 0x01fd, UnicodeLatinMap::CT_lower, 'a', 'e', 0x01fd, 0x01fc,
00155 UnicodeLatinMap::AT_acute, UnicodeLatinMap::AF_ligature },
00156 { 0x01fc, UnicodeLatinMap::CT_upper, 'A', 'E', 0x01fd, 0x01fc,
00157 UnicodeLatinMap::AT_acute, UnicodeLatinMap::AF_ligature },
00158 { 0x01e3, UnicodeLatinMap::CT_lower, 'a', 'e', 0x01e3, 0x01e2,
00159 UnicodeLatinMap::AT_macron, UnicodeLatinMap::AF_ligature },
00160 { 0x01e2, UnicodeLatinMap::CT_upper, 'A', 'E', 0x01e3, 0x01e2,
00161 UnicodeLatinMap::AT_macron, UnicodeLatinMap::AF_ligature },
00162 { 0x0250, UnicodeLatinMap::CT_lower, 'a', 0, 0x0250, 0x0041,
00163 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00164 { 0x0062, UnicodeLatinMap::CT_lower, 'b', 0, 0x0062, 0x0042,
00165 UnicodeLatinMap::AT_none, 0 },
00166 { 0x0042, UnicodeLatinMap::CT_upper, 'B', 0, 0x0062, 0x0042,
00167 UnicodeLatinMap::AT_none, 0 },
00168 { 0x1e03, UnicodeLatinMap::CT_lower, 'b', 0, 0x1e03, 0x1e02,
00169 UnicodeLatinMap::AT_dot_above, 0 },
00170 { 0x1e02, UnicodeLatinMap::CT_upper, 'B', 0, 0x1e03, 0x1e02,
00171 UnicodeLatinMap::AT_dot_above, 0 },
00172 { 0x1e05, UnicodeLatinMap::CT_lower, 'b', 0, 0x1e05, 0x1e04,
00173 UnicodeLatinMap::AT_dot_below, 0 },
00174 { 0x1e04, UnicodeLatinMap::CT_upper, 'B', 0, 0x1e05, 0x1e04,
00175 UnicodeLatinMap::AT_dot_below, 0 },
00176 { 0x1e07, UnicodeLatinMap::CT_lower, 'b', 0, 0x1e07, 0x1e06,
00177 UnicodeLatinMap::AT_line_below, 0 },
00178 { 0x1e06, UnicodeLatinMap::CT_upper, 'B', 0, 0x1e07, 0x1e06,
00179 UnicodeLatinMap::AT_line_below, 0 },
00180 { 0x0299, UnicodeLatinMap::CT_upper, 'B', 0, 0x0062, 0x0299,
00181 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00182 { 0x0180, UnicodeLatinMap::CT_lower, 'b', 0, 0x0180, 0x0042,
00183 UnicodeLatinMap::AT_stroke, 0 },
00184 { 0x0253, UnicodeLatinMap::CT_lower, 'b', 0, 0x0253, 0x0181,
00185 UnicodeLatinMap::AT_hook, 0 },
00186 { 0x0181, UnicodeLatinMap::CT_upper, 'B', 0, 0x0253, 0x0181,
00187 UnicodeLatinMap::AT_hook, 0 },
00188 { 0x0183, UnicodeLatinMap::CT_lower, 'b', 0, 0x0183, 0x0182,
00189 UnicodeLatinMap::AT_topbar, 0 },
00190 { 0x0182, UnicodeLatinMap::CT_upper, 'B', 0, 0x0183, 0x0182,
00191 UnicodeLatinMap::AT_topbar, 0 },
00192 { 0x0063, UnicodeLatinMap::CT_lower, 'c', 0, 0x0063, 0x0043,
00193 UnicodeLatinMap::AT_none, 0 },
00194 { 0x0043, UnicodeLatinMap::CT_upper, 'C', 0, 0x0063, 0x0043,
00195 UnicodeLatinMap::AT_none, 0 },
00196 { 0x0107, UnicodeLatinMap::CT_lower, 'c', 0, 0x0107, 0x0106,
00197 UnicodeLatinMap::AT_acute, 0 },
00198 { 0x0106, UnicodeLatinMap::CT_upper, 'C', 0, 0x0107, 0x0106,
00199 UnicodeLatinMap::AT_acute, 0 },
00200 { 0x0109, UnicodeLatinMap::CT_lower, 'c', 0, 0x0109, 0x0108,
00201 UnicodeLatinMap::AT_circumflex, 0 },
00202 { 0x0108, UnicodeLatinMap::CT_upper, 'C', 0, 0x0109, 0x0108,
00203 UnicodeLatinMap::AT_circumflex, 0 },
00204 { 0x010d, UnicodeLatinMap::CT_lower, 'c', 0, 0x010d, 0x010c,
00205 UnicodeLatinMap::AT_caron, 0 },
00206 { 0x010c, UnicodeLatinMap::CT_upper, 'C', 0, 0x010d, 0x010c,
00207 UnicodeLatinMap::AT_caron, 0 },
00208 { 0x010b, UnicodeLatinMap::CT_lower, 'c', 0, 0x010b, 0x010a,
00209 UnicodeLatinMap::AT_dot_above, 0 },
00210 { 0x010a, UnicodeLatinMap::CT_upper, 'C', 0, 0x010b, 0x010a,
00211 UnicodeLatinMap::AT_dot_above, 0 },
00212 { 0x00e7, UnicodeLatinMap::CT_lower, 'c', 0, 0x00e7, 0x00c7,
00213 UnicodeLatinMap::AT_cedilla, 0 },
00214 { 0x00c7, UnicodeLatinMap::CT_upper, 'C', 0, 0x00e7, 0x00c7,
00215 UnicodeLatinMap::AT_cedilla, 0 },
00216 { 0x1e09, UnicodeLatinMap::CT_lower, 'c', 0, 0x1e09, 0x1e08,
00217 UnicodeLatinMap::AT_cedilla_and_acute, 0 },
00218 { 0x1e08, UnicodeLatinMap::CT_upper, 'C', 0, 0x1e09, 0x1e08,
00219 UnicodeLatinMap::AT_cedilla_and_acute, 0 },
00220 { 0x0188, UnicodeLatinMap::CT_lower, 'c', 0, 0x0188, 0x0187,
00221 UnicodeLatinMap::AT_hook, 0 },
00222 { 0x0187, UnicodeLatinMap::CT_upper, 'C', 0, 0x0188, 0x0187,
00223 UnicodeLatinMap::AT_hook, 0 },
00224 { 0x0255, UnicodeLatinMap::CT_lower, 'c', 0, 0x0255, 0x0043,
00225 UnicodeLatinMap::AT_curl, 0 },
00226 { 0x0064, UnicodeLatinMap::CT_lower, 'd', 0, 0x0064, 0x0044,
00227 UnicodeLatinMap::AT_none, 0 },
00228 { 0x0044, UnicodeLatinMap::CT_upper, 'D', 0, 0x0064, 0x0044,
00229 UnicodeLatinMap::AT_none, 0 },
00230 { 0x010f, UnicodeLatinMap::CT_lower, 'd', 0, 0x010f, 0x010e,
00231 UnicodeLatinMap::AT_caron, 0 },
00232 { 0x010e, UnicodeLatinMap::CT_upper, 'D', 0, 0x010f, 0x010e,
00233 UnicodeLatinMap::AT_caron, 0 },
00234 { 0x1e0b, UnicodeLatinMap::CT_lower, 'd', 0, 0x1e0b, 0x1e0a,
00235 UnicodeLatinMap::AT_dot_above, 0 },
00236 { 0x1e0a, UnicodeLatinMap::CT_upper, 'D', 0, 0x1e0b, 0x1e0a,
00237 UnicodeLatinMap::AT_dot_above, 0 },
00238 { 0x1e11, UnicodeLatinMap::CT_lower, 'd', 0, 0x1e11, 0x1e10,
00239 UnicodeLatinMap::AT_cedilla, 0 },
00240 { 0x1e10, UnicodeLatinMap::CT_upper, 'D', 0, 0x1e11, 0x1e10,
00241 UnicodeLatinMap::AT_cedilla, 0 },
00242 { 0x1e0d, UnicodeLatinMap::CT_lower, 'd', 0, 0x1e0d, 0x1e0c,
00243 UnicodeLatinMap::AT_dot_below, 0 },
00244 { 0x1e0c, UnicodeLatinMap::CT_upper, 'D', 0, 0x1e0d, 0x1e0c,
00245 UnicodeLatinMap::AT_dot_below, 0 },
00246 { 0x1e13, UnicodeLatinMap::CT_lower, 'd', 0, 0x1e13, 0x1e12,
00247 UnicodeLatinMap::AT_circumflex_below, 0 },
00248 { 0x1e12, UnicodeLatinMap::CT_upper, 'D', 0, 0x1e13, 0x1e12,
00249 UnicodeLatinMap::AT_circumflex_below, 0 },
00250 { 0x1e0f, UnicodeLatinMap::CT_lower, 'd', 0, 0x1e0f, 0x1e0e,
00251 UnicodeLatinMap::AT_line_below, 0 },
00252 { 0x1e0e, UnicodeLatinMap::CT_upper, 'D', 0, 0x1e0f, 0x1e0e,
00253 UnicodeLatinMap::AT_line_below, 0 },
00254 { 0x0111, UnicodeLatinMap::CT_lower, 'd', 0, 0x0111, 0x0110,
00255 UnicodeLatinMap::AT_stroke, 0 },
00256 { 0x0110, UnicodeLatinMap::CT_upper, 'D', 0, 0x0111, 0x0110,
00257 UnicodeLatinMap::AT_stroke, 0 },
00258 { 0x0257, UnicodeLatinMap::CT_lower, 'd', 0, 0x0257, 0x018a,
00259 UnicodeLatinMap::AT_hook, 0 },
00260 { 0x018a, UnicodeLatinMap::CT_upper, 'D', 0, 0x0257, 0x018a,
00261 UnicodeLatinMap::AT_hook, 0 },
00262 { 0x018c, UnicodeLatinMap::CT_lower, 'd', 0, 0x018c, 0x018b,
00263 UnicodeLatinMap::AT_topbar, 0 },
00264 { 0x018b, UnicodeLatinMap::CT_upper, 'D', 0, 0x018c, 0x018b,
00265 UnicodeLatinMap::AT_topbar, 0 },
00266 { 0x0065, UnicodeLatinMap::CT_lower, 'e', 0, 0x0065, 0x0045,
00267 UnicodeLatinMap::AT_none, 0 },
00268 { 0x0045, UnicodeLatinMap::CT_upper, 'E', 0, 0x0065, 0x0045,
00269 UnicodeLatinMap::AT_none, 0 },
00270 { 0x00e9, UnicodeLatinMap::CT_lower, 'e', 0, 0x00e9, 0x00c9,
00271 UnicodeLatinMap::AT_acute, 0 },
00272 { 0x00c9, UnicodeLatinMap::CT_upper, 'E', 0, 0x00e9, 0x00c9,
00273 UnicodeLatinMap::AT_acute, 0 },
00274 { 0x00e8, UnicodeLatinMap::CT_lower, 'e', 0, 0x00e8, 0x00c8,
00275 UnicodeLatinMap::AT_grave, 0 },
00276 { 0x00c8, UnicodeLatinMap::CT_upper, 'E', 0, 0x00e8, 0x00c8,
00277 UnicodeLatinMap::AT_grave, 0 },
00278 { 0x0115, UnicodeLatinMap::CT_lower, 'e', 0, 0x0115, 0x0114,
00279 UnicodeLatinMap::AT_breve, 0 },
00280 { 0x0114, UnicodeLatinMap::CT_upper, 'E', 0, 0x0115, 0x0114,
00281 UnicodeLatinMap::AT_breve, 0 },
00282 { 0x00ea, UnicodeLatinMap::CT_lower, 'e', 0, 0x00ea, 0x00ca,
00283 UnicodeLatinMap::AT_circumflex, 0 },
00284 { 0x00ca, UnicodeLatinMap::CT_upper, 'E', 0, 0x00ea, 0x00ca,
00285 UnicodeLatinMap::AT_circumflex, 0 },
00286 { 0x1ebf, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ebf, 0x1ebe,
00287 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00288 { 0x1ebe, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ebf, 0x1ebe,
00289 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00290 { 0x1ec1, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ec1, 0x1ec0,
00291 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00292 { 0x1ec0, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ec1, 0x1ec0,
00293 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00294 { 0x1ec5, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ec5, 0x1ec4,
00295 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00296 { 0x1ec4, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ec5, 0x1ec4,
00297 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00298 { 0x1ec3, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ec3, 0x1ec2,
00299 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00300 { 0x1ec2, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ec3, 0x1ec2,
00301 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00302 { 0x011b, UnicodeLatinMap::CT_lower, 'e', 0, 0x011b, 0x011a,
00303 UnicodeLatinMap::AT_caron, 0 },
00304 { 0x011a, UnicodeLatinMap::CT_upper, 'E', 0, 0x011b, 0x011a,
00305 UnicodeLatinMap::AT_caron, 0 },
00306 { 0x00eb, UnicodeLatinMap::CT_lower, 'e', 0, 0x00eb, 0x00cb,
00307 UnicodeLatinMap::AT_diaeresis, 0 },
00308 { 0x00cb, UnicodeLatinMap::CT_upper, 'E', 0, 0x00eb, 0x00cb,
00309 UnicodeLatinMap::AT_diaeresis, 0 },
00310 { 0x1ebd, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ebd, 0x1ebc,
00311 UnicodeLatinMap::AT_tilde, 0 },
00312 { 0x1ebc, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ebd, 0x1ebc,
00313 UnicodeLatinMap::AT_tilde, 0 },
00314 { 0x0117, UnicodeLatinMap::CT_lower, 'e', 0, 0x0117, 0x0116,
00315 UnicodeLatinMap::AT_dot_above, 0 },
00316 { 0x0116, UnicodeLatinMap::CT_upper, 'E', 0, 0x0117, 0x0116,
00317 UnicodeLatinMap::AT_dot_above, 0 },
00318 { 0x0229, UnicodeLatinMap::CT_lower, 'e', 0, 0x0229, 0x0228,
00319 UnicodeLatinMap::AT_cedilla, 0 },
00320 { 0x0228, UnicodeLatinMap::CT_upper, 'E', 0, 0x0229, 0x0228,
00321 UnicodeLatinMap::AT_cedilla, 0 },
00322 { 0x1e1d, UnicodeLatinMap::CT_lower, 'e', 0, 0x1e1d, 0x1e1c,
00323 UnicodeLatinMap::AT_cedilla_and_breve, 0 },
00324 { 0x1e1c, UnicodeLatinMap::CT_upper, 'E', 0, 0x1e1d, 0x1e1c,
00325 UnicodeLatinMap::AT_cedilla_and_breve, 0 },
00326 { 0x0119, UnicodeLatinMap::CT_lower, 'e', 0, 0x0119, 0x0118,
00327 UnicodeLatinMap::AT_ogonek, 0 },
00328 { 0x0118, UnicodeLatinMap::CT_upper, 'E', 0, 0x0119, 0x0118,
00329 UnicodeLatinMap::AT_ogonek, 0 },
00330 { 0x0113, UnicodeLatinMap::CT_lower, 'e', 0, 0x0113, 0x0112,
00331 UnicodeLatinMap::AT_macron, 0 },
00332 { 0x0112, UnicodeLatinMap::CT_upper, 'E', 0, 0x0113, 0x0112,
00333 UnicodeLatinMap::AT_macron, 0 },
00334 { 0x1e17, UnicodeLatinMap::CT_lower, 'e', 0, 0x1e17, 0x1e16,
00335 UnicodeLatinMap::AT_macron_and_acute, 0 },
00336 { 0x1e16, UnicodeLatinMap::CT_upper, 'E', 0, 0x1e17, 0x1e16,
00337 UnicodeLatinMap::AT_macron_and_acute, 0 },
00338 { 0x1e15, UnicodeLatinMap::CT_lower, 'e', 0, 0x1e15, 0x1e14,
00339 UnicodeLatinMap::AT_macron_and_grave, 0 },
00340 { 0x1e14, UnicodeLatinMap::CT_upper, 'E', 0, 0x1e15, 0x1e14,
00341 UnicodeLatinMap::AT_macron_and_grave, 0 },
00342 { 0x1ebb, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ebb, 0x1eba,
00343 UnicodeLatinMap::AT_hook_above, 0 },
00344 { 0x1eba, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ebb, 0x1eba,
00345 UnicodeLatinMap::AT_hook_above, 0 },
00346 { 0x0205, UnicodeLatinMap::CT_lower, 'e', 0, 0x0205, 0x0204,
00347 UnicodeLatinMap::AT_double_grave, 0 },
00348 { 0x0204, UnicodeLatinMap::CT_upper, 'E', 0, 0x0205, 0x0204,
00349 UnicodeLatinMap::AT_double_grave, 0 },
00350 { 0x0207, UnicodeLatinMap::CT_lower, 'e', 0, 0x0207, 0x0206,
00351 UnicodeLatinMap::AT_inverted_breve, 0 },
00352 { 0x0206, UnicodeLatinMap::CT_upper, 'E', 0, 0x0207, 0x0206,
00353 UnicodeLatinMap::AT_inverted_breve, 0 },
00354 { 0x1eb9, UnicodeLatinMap::CT_lower, 'e', 0, 0x1eb9, 0x1eb8,
00355 UnicodeLatinMap::AT_dot_below, 0 },
00356 { 0x1eb8, UnicodeLatinMap::CT_upper, 'E', 0, 0x1eb9, 0x1eb8,
00357 UnicodeLatinMap::AT_dot_below, 0 },
00358 { 0x1ec7, UnicodeLatinMap::CT_lower, 'e', 0, 0x1ec7, 0x1ec6,
00359 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00360 { 0x1ec6, UnicodeLatinMap::CT_upper, 'E', 0, 0x1ec7, 0x1ec6,
00361 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00362 { 0x1e19, UnicodeLatinMap::CT_lower, 'e', 0, 0x1e19, 0x1e18,
00363 UnicodeLatinMap::AT_circumflex_below, 0 },
00364 { 0x1e18, UnicodeLatinMap::CT_upper, 'E', 0, 0x1e19, 0x1e18,
00365 UnicodeLatinMap::AT_circumflex_below, 0 },
00366 { 0x1e1b, UnicodeLatinMap::CT_lower, 'e', 0, 0x1e1b, 0x1e1a,
00367 UnicodeLatinMap::AT_tilde_below, 0 },
00368 { 0x1e1a, UnicodeLatinMap::CT_upper, 'E', 0, 0x1e1b, 0x1e1a,
00369 UnicodeLatinMap::AT_tilde_below, 0 },
00370 { 0x01dd, UnicodeLatinMap::CT_lower, 'e', 0, 0x01dd, 0x0045,
00371 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00372 { 0x018e, UnicodeLatinMap::CT_upper, 'E', 0, 0x0258, 0x018e,
00373 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_reversed },
00374 { 0x0258, UnicodeLatinMap::CT_lower, 'e', 0, 0x0258, 0x018e,
00375 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_reversed },
00376 { 0x0066, UnicodeLatinMap::CT_lower, 'f', 0, 0x0066, 0x0046,
00377 UnicodeLatinMap::AT_none, 0 },
00378 { 0x0046, UnicodeLatinMap::CT_upper, 'F', 0, 0x0066, 0x0046,
00379 UnicodeLatinMap::AT_none, 0 },
00380 { 0x1e1f, UnicodeLatinMap::CT_lower, 'f', 0, 0x1e1f, 0x1e1e,
00381 UnicodeLatinMap::AT_dot_above, 0 },
00382 { 0x1e1e, UnicodeLatinMap::CT_upper, 'F', 0, 0x1e1f, 0x1e1e,
00383 UnicodeLatinMap::AT_dot_above, 0 },
00384 { 0x0192, UnicodeLatinMap::CT_lower, 'f', 0, 0x0192, 0x0191,
00385 UnicodeLatinMap::AT_hook, 0 },
00386 { 0x0191, UnicodeLatinMap::CT_upper, 'F', 0, 0x0192, 0x0191,
00387 UnicodeLatinMap::AT_hook, 0 },
00388 { 0x0067, UnicodeLatinMap::CT_lower, 'g', 0, 0x0067, 0x0047,
00389 UnicodeLatinMap::AT_none, 0 },
00390 { 0x0047, UnicodeLatinMap::CT_upper, 'G', 0, 0x0067, 0x0047,
00391 UnicodeLatinMap::AT_none, 0 },
00392 { 0x01f5, UnicodeLatinMap::CT_lower, 'g', 0, 0x01f5, 0x01f4,
00393 UnicodeLatinMap::AT_acute, 0 },
00394 { 0x01f4, UnicodeLatinMap::CT_upper, 'G', 0, 0x01f5, 0x01f4,
00395 UnicodeLatinMap::AT_acute, 0 },
00396 { 0x011f, UnicodeLatinMap::CT_lower, 'g', 0, 0x011f, 0x011e,
00397 UnicodeLatinMap::AT_breve, 0 },
00398 { 0x011e, UnicodeLatinMap::CT_upper, 'G', 0, 0x011f, 0x011e,
00399 UnicodeLatinMap::AT_breve, 0 },
00400 { 0x011d, UnicodeLatinMap::CT_lower, 'g', 0, 0x011d, 0x011c,
00401 UnicodeLatinMap::AT_circumflex, 0 },
00402 { 0x011c, UnicodeLatinMap::CT_upper, 'G', 0, 0x011d, 0x011c,
00403 UnicodeLatinMap::AT_circumflex, 0 },
00404 { 0x01e7, UnicodeLatinMap::CT_lower, 'g', 0, 0x01e7, 0x01e6,
00405 UnicodeLatinMap::AT_caron, 0 },
00406 { 0x01e6, UnicodeLatinMap::CT_upper, 'G', 0, 0x01e7, 0x01e6,
00407 UnicodeLatinMap::AT_caron, 0 },
00408 { 0x0121, UnicodeLatinMap::CT_lower, 'g', 0, 0x0121, 0x0120,
00409 UnicodeLatinMap::AT_dot_above, 0 },
00410 { 0x0120, UnicodeLatinMap::CT_upper, 'G', 0, 0x0121, 0x0120,
00411 UnicodeLatinMap::AT_dot_above, 0 },
00412 { 0x0123, UnicodeLatinMap::CT_lower, 'g', 0, 0x0123, 0x0122,
00413 UnicodeLatinMap::AT_cedilla, 0 },
00414 { 0x0122, UnicodeLatinMap::CT_upper, 'G', 0, 0x0123, 0x0122,
00415 UnicodeLatinMap::AT_cedilla, 0 },
00416 { 0x1e21, UnicodeLatinMap::CT_lower, 'g', 0, 0x1e21, 0x1e20,
00417 UnicodeLatinMap::AT_macron, 0 },
00418 { 0x1e20, UnicodeLatinMap::CT_upper, 'G', 0, 0x1e21, 0x1e20,
00419 UnicodeLatinMap::AT_macron, 0 },
00420 { 0x0262, UnicodeLatinMap::CT_upper, 'G', 0, 0x0067, 0x0262,
00421 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00422 { 0x01e5, UnicodeLatinMap::CT_lower, 'g', 0, 0x01e5, 0x01e4,
00423 UnicodeLatinMap::AT_stroke, 0 },
00424 { 0x01e4, UnicodeLatinMap::CT_upper, 'G', 0, 0x01e5, 0x01e4,
00425 UnicodeLatinMap::AT_stroke, 0 },
00426 { 0x0260, UnicodeLatinMap::CT_lower, 'g', 0, 0x0260, 0x0193,
00427 UnicodeLatinMap::AT_hook, 0 },
00428 { 0x0193, UnicodeLatinMap::CT_upper, 'G', 0, 0x0260, 0x0193,
00429 UnicodeLatinMap::AT_hook, 0 },
00430 { 0x029b, UnicodeLatinMap::CT_upper, 'G', 0, 0x0067, 0x029b,
00431 UnicodeLatinMap::AT_hook, UnicodeLatinMap::AF_smallcap },
00432 { 0x01a3, UnicodeLatinMap::CT_lower, 'o', 'i', 0x01a3, 0x01a2,
00433 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00434 { 0x01a2, UnicodeLatinMap::CT_upper, 'O', 'I', 0x01a3, 0x01a2,
00435 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00436 { 0x0068, UnicodeLatinMap::CT_lower, 'h', 0, 0x0068, 0x0048,
00437 UnicodeLatinMap::AT_none, 0 },
00438 { 0x0048, UnicodeLatinMap::CT_upper, 'H', 0, 0x0068, 0x0048,
00439 UnicodeLatinMap::AT_none, 0 },
00440 { 0x0125, UnicodeLatinMap::CT_lower, 'h', 0, 0x0125, 0x0124,
00441 UnicodeLatinMap::AT_circumflex, 0 },
00442 { 0x0124, UnicodeLatinMap::CT_upper, 'H', 0, 0x0125, 0x0124,
00443 UnicodeLatinMap::AT_circumflex, 0 },
00444 { 0x021f, UnicodeLatinMap::CT_lower, 'h', 0, 0x021f, 0x021e,
00445 UnicodeLatinMap::AT_caron, 0 },
00446 { 0x021e, UnicodeLatinMap::CT_upper, 'H', 0, 0x021f, 0x021e,
00447 UnicodeLatinMap::AT_caron, 0 },
00448 { 0x1e27, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e27, 0x1e26,
00449 UnicodeLatinMap::AT_diaeresis, 0 },
00450 { 0x1e26, UnicodeLatinMap::CT_upper, 'H', 0, 0x1e27, 0x1e26,
00451 UnicodeLatinMap::AT_diaeresis, 0 },
00452 { 0x1e23, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e23, 0x1e22,
00453 UnicodeLatinMap::AT_dot_above, 0 },
00454 { 0x1e22, UnicodeLatinMap::CT_upper, 'H', 0, 0x1e23, 0x1e22,
00455 UnicodeLatinMap::AT_dot_above, 0 },
00456 { 0x1e29, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e29, 0x1e28,
00457 UnicodeLatinMap::AT_cedilla, 0 },
00458 { 0x1e28, UnicodeLatinMap::CT_upper, 'H', 0, 0x1e29, 0x1e28,
00459 UnicodeLatinMap::AT_cedilla, 0 },
00460 { 0x1e25, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e25, 0x1e24,
00461 UnicodeLatinMap::AT_dot_below, 0 },
00462 { 0x1e24, UnicodeLatinMap::CT_upper, 'H', 0, 0x1e25, 0x1e24,
00463 UnicodeLatinMap::AT_dot_below, 0 },
00464 { 0x1e2b, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e2b, 0x1e2a,
00465 UnicodeLatinMap::AT_breve_below, 0 },
00466 { 0x1e2a, UnicodeLatinMap::CT_upper, 'H', 0, 0x1e2b, 0x1e2a,
00467 UnicodeLatinMap::AT_breve_below, 0 },
00468 { 0x1e96, UnicodeLatinMap::CT_lower, 'h', 0, 0x1e96, 0x0048,
00469 UnicodeLatinMap::AT_line_below, 0 },
00470 { 0x029c, UnicodeLatinMap::CT_upper, 'H', 0, 0x0068, 0x029c,
00471 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00472 { 0x0195, UnicodeLatinMap::CT_lower, 'h', 'v', 0x0195, 0x195,
00473 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00474 { 0x0127, UnicodeLatinMap::CT_lower, 'h', 0, 0x0127, 0x0126,
00475 UnicodeLatinMap::AT_stroke, 0 },
00476 { 0x0126, UnicodeLatinMap::CT_upper, 'H', 0, 0x0127, 0x0126,
00477 UnicodeLatinMap::AT_stroke, 0 },
00478 { 0x0266, UnicodeLatinMap::CT_lower, 'h', 0, 0x0266, 0x0048,
00479 UnicodeLatinMap::AT_hook, 0 },
00480 { 0x0069, UnicodeLatinMap::CT_lower, 'i', 0, 0x0069, 0x0049,
00481 UnicodeLatinMap::AT_none, 0 },
00482 { 0x0049, UnicodeLatinMap::CT_upper, 'I', 0, 0x0069, 0x0049,
00483 UnicodeLatinMap::AT_none, 0 },
00484 { 0x00ed, UnicodeLatinMap::CT_lower, 'i', 0, 0x00ed, 0x00cd,
00485 UnicodeLatinMap::AT_acute, 0 },
00486 { 0x00cd, UnicodeLatinMap::CT_upper, 'I', 0, 0x00ed, 0x00cd,
00487 UnicodeLatinMap::AT_acute, 0 },
00488 { 0x00ec, UnicodeLatinMap::CT_lower, 'i', 0, 0x00ec, 0x00cc,
00489 UnicodeLatinMap::AT_grave, 0 },
00490 { 0x00cc, UnicodeLatinMap::CT_upper, 'I', 0, 0x00ec, 0x00cc,
00491 UnicodeLatinMap::AT_grave, 0 },
00492 { 0x012d, UnicodeLatinMap::CT_lower, 'i', 0, 0x012d, 0x012c,
00493 UnicodeLatinMap::AT_breve, 0 },
00494 { 0x012c, UnicodeLatinMap::CT_upper, 'I', 0, 0x012d, 0x012c,
00495 UnicodeLatinMap::AT_breve, 0 },
00496 { 0x00ee, UnicodeLatinMap::CT_lower, 'i', 0, 0x00ee, 0x00ce,
00497 UnicodeLatinMap::AT_circumflex, 0 },
00498 { 0x00ce, UnicodeLatinMap::CT_upper, 'I', 0, 0x00ee, 0x00ce,
00499 UnicodeLatinMap::AT_circumflex, 0 },
00500 { 0x01d0, UnicodeLatinMap::CT_lower, 'i', 0, 0x01d0, 0x01cf,
00501 UnicodeLatinMap::AT_caron, 0 },
00502 { 0x01cf, UnicodeLatinMap::CT_upper, 'I', 0, 0x01d0, 0x01cf,
00503 UnicodeLatinMap::AT_caron, 0 },
00504 { 0x00ef, UnicodeLatinMap::CT_lower, 'i', 0, 0x00ef, 0x00cf,
00505 UnicodeLatinMap::AT_diaeresis, 0 },
00506 { 0x00cf, UnicodeLatinMap::CT_upper, 'I', 0, 0x00ef, 0x00cf,
00507 UnicodeLatinMap::AT_diaeresis, 0 },
00508 { 0x1e2f, UnicodeLatinMap::CT_lower, 'i', 0, 0x1e2f, 0x1e2e,
00509 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
00510 { 0x1e2e, UnicodeLatinMap::CT_upper, 'I', 0, 0x1e2f, 0x1e2e,
00511 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
00512 { 0x0129, UnicodeLatinMap::CT_lower, 'i', 0, 0x0129, 0x0128,
00513 UnicodeLatinMap::AT_tilde, 0 },
00514 { 0x0128, UnicodeLatinMap::CT_upper, 'I', 0, 0x0129, 0x0128,
00515 UnicodeLatinMap::AT_tilde, 0 },
00516 { 0x0130, UnicodeLatinMap::CT_upper, 'I', 0, 0x0069, 0x0130,
00517 UnicodeLatinMap::AT_dot_above, 0 },
00518 { 0x012f, UnicodeLatinMap::CT_lower, 'i', 0, 0x012f, 0x012e,
00519 UnicodeLatinMap::AT_ogonek, 0 },
00520 { 0x012e, UnicodeLatinMap::CT_upper, 'I', 0, 0x012f, 0x012e,
00521 UnicodeLatinMap::AT_ogonek, 0 },
00522 { 0x012b, UnicodeLatinMap::CT_lower, 'i', 0, 0x012b, 0x012a,
00523 UnicodeLatinMap::AT_macron, 0 },
00524 { 0x012a, UnicodeLatinMap::CT_upper, 'I', 0, 0x012b, 0x012a,
00525 UnicodeLatinMap::AT_macron, 0 },
00526 { 0x1ec9, UnicodeLatinMap::CT_lower, 'i', 0, 0x1ec9, 0x1ec8,
00527 UnicodeLatinMap::AT_hook_above, 0 },
00528 { 0x1ec8, UnicodeLatinMap::CT_upper, 'I', 0, 0x1ec9, 0x1ec8,
00529 UnicodeLatinMap::AT_hook_above, 0 },
00530 { 0x0209, UnicodeLatinMap::CT_lower, 'i', 0, 0x0209, 0x0208,
00531 UnicodeLatinMap::AT_double_grave, 0 },
00532 { 0x0208, UnicodeLatinMap::CT_upper, 'I', 0, 0x0209, 0x0208,
00533 UnicodeLatinMap::AT_double_grave, 0 },
00534 { 0x020b, UnicodeLatinMap::CT_lower, 'i', 0, 0x020b, 0x020a,
00535 UnicodeLatinMap::AT_inverted_breve, 0 },
00536 { 0x020a, UnicodeLatinMap::CT_upper, 'I', 0, 0x020b, 0x020a,
00537 UnicodeLatinMap::AT_inverted_breve, 0 },
00538 { 0x1ecb, UnicodeLatinMap::CT_lower, 'i', 0, 0x1ecb, 0x1eca,
00539 UnicodeLatinMap::AT_dot_below, 0 },
00540 { 0x1eca, UnicodeLatinMap::CT_upper, 'I', 0, 0x1ecb, 0x1eca,
00541 UnicodeLatinMap::AT_dot_below, 0 },
00542 { 0x1e2d, UnicodeLatinMap::CT_lower, 'i', 0, 0x1e2d, 0x1e2c,
00543 UnicodeLatinMap::AT_tilde_below, 0 },
00544 { 0x1e2c, UnicodeLatinMap::CT_upper, 'I', 0, 0x1e2d, 0x1e2c,
00545 UnicodeLatinMap::AT_tilde_below, 0 },
00546 { 0x0131, UnicodeLatinMap::CT_lower, 'i', 0, 0x0131, 0x0049,
00547 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_dotless },
00548 { 0x026a, UnicodeLatinMap::CT_upper, 'I', 0, 0x0069, 0x026a,
00549 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00550 { 0x0268, UnicodeLatinMap::CT_lower, 'i', 0, 0x0268, 0x0197,
00551 UnicodeLatinMap::AT_stroke, 0 },
00552 { 0x0197, UnicodeLatinMap::CT_upper, 'I', 0, 0x0268, 0x0197,
00553 UnicodeLatinMap::AT_stroke, 0 },
00554 { 0x006a, UnicodeLatinMap::CT_lower, 'j', 0, 0x006a, 0x004a,
00555 UnicodeLatinMap::AT_none, 0 },
00556 { 0x004a, UnicodeLatinMap::CT_upper, 'J', 0, 0x006a, 0x004a,
00557 UnicodeLatinMap::AT_none, 0 },
00558 { 0x0135, UnicodeLatinMap::CT_lower, 'j', 0, 0x0135, 0x0134,
00559 UnicodeLatinMap::AT_circumflex, 0 },
00560 { 0x0134, UnicodeLatinMap::CT_upper, 'J', 0, 0x0135, 0x0134,
00561 UnicodeLatinMap::AT_circumflex, 0 },
00562 { 0x01f0, UnicodeLatinMap::CT_lower, 'j', 0, 0x01f0, 0x004a,
00563 UnicodeLatinMap::AT_caron, 0 },
00564 { 0x025f, UnicodeLatinMap::CT_lower, 'j', 0, 0x025f, 0x004a,
00565 UnicodeLatinMap::AT_stroke, UnicodeLatinMap::AF_dotless },
00566 { 0x0284, UnicodeLatinMap::CT_lower, 'j', 0, 0x0284, 0x004a,
00567 UnicodeLatinMap::AT_stroke_and_hook, UnicodeLatinMap::AF_dotless },
00568 { 0x006b, UnicodeLatinMap::CT_lower, 'k', 0, 0x006b, 0x004b,
00569 UnicodeLatinMap::AT_none, 0 },
00570 { 0x004b, UnicodeLatinMap::CT_upper, 'K', 0, 0x006b, 0x004b,
00571 UnicodeLatinMap::AT_none, 0 },
00572 { 0x1e31, UnicodeLatinMap::CT_lower, 'k', 0, 0x1e31, 0x1e30,
00573 UnicodeLatinMap::AT_acute, 0 },
00574 { 0x1e30, UnicodeLatinMap::CT_upper, 'K', 0, 0x1e31, 0x1e30,
00575 UnicodeLatinMap::AT_acute, 0 },
00576 { 0x01e9, UnicodeLatinMap::CT_lower, 'k', 0, 0x01e9, 0x01e8,
00577 UnicodeLatinMap::AT_caron, 0 },
00578 { 0x01e8, UnicodeLatinMap::CT_upper, 'K', 0, 0x01e9, 0x01e8,
00579 UnicodeLatinMap::AT_caron, 0 },
00580 { 0x0137, UnicodeLatinMap::CT_lower, 'k', 0, 0x0137, 0x0136,
00581 UnicodeLatinMap::AT_cedilla, 0 },
00582 { 0x0136, UnicodeLatinMap::CT_upper, 'K', 0, 0x0137, 0x0136,
00583 UnicodeLatinMap::AT_cedilla, 0 },
00584 { 0x1e33, UnicodeLatinMap::CT_lower, 'k', 0, 0x1e33, 0x1e32,
00585 UnicodeLatinMap::AT_dot_below, 0 },
00586 { 0x1e32, UnicodeLatinMap::CT_upper, 'K', 0, 0x1e33, 0x1e32,
00587 UnicodeLatinMap::AT_dot_below, 0 },
00588 { 0x1e35, UnicodeLatinMap::CT_lower, 'k', 0, 0x1e35, 0x1e34,
00589 UnicodeLatinMap::AT_line_below, 0 },
00590 { 0x1e34, UnicodeLatinMap::CT_upper, 'K', 0, 0x1e35, 0x1e34,
00591 UnicodeLatinMap::AT_line_below, 0 },
00592 { 0x0199, UnicodeLatinMap::CT_lower, 'k', 0, 0x0199, 0x0198,
00593 UnicodeLatinMap::AT_hook, 0 },
00594 { 0x0198, UnicodeLatinMap::CT_upper, 'K', 0, 0x0199, 0x0198,
00595 UnicodeLatinMap::AT_hook, 0 },
00596 { 0x029e, UnicodeLatinMap::CT_lower, 'k', 0, 0x029e, 0x004b,
00597 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00598 { 0x006c, UnicodeLatinMap::CT_lower, 'l', 0, 0x006c, 0x004c,
00599 UnicodeLatinMap::AT_none, 0 },
00600 { 0x004c, UnicodeLatinMap::CT_upper, 'L', 0, 0x006c, 0x004c,
00601 UnicodeLatinMap::AT_none, 0 },
00602 { 0x013a, UnicodeLatinMap::CT_lower, 'l', 0, 0x013a, 0x0139,
00603 UnicodeLatinMap::AT_acute, 0 },
00604 { 0x0139, UnicodeLatinMap::CT_upper, 'L', 0, 0x013a, 0x0139,
00605 UnicodeLatinMap::AT_acute, 0 },
00606 { 0x013e, UnicodeLatinMap::CT_lower, 'l', 0, 0x013e, 0x013d,
00607 UnicodeLatinMap::AT_caron, 0 },
00608 { 0x013d, UnicodeLatinMap::CT_upper, 'L', 0, 0x013e, 0x013d,
00609 UnicodeLatinMap::AT_caron, 0 },
00610 { 0x013c, UnicodeLatinMap::CT_lower, 'l', 0, 0x013c, 0x013b,
00611 UnicodeLatinMap::AT_cedilla, 0 },
00612 { 0x013b, UnicodeLatinMap::CT_upper, 'L', 0, 0x013c, 0x013b,
00613 UnicodeLatinMap::AT_cedilla, 0 },
00614 { 0x1e37, UnicodeLatinMap::CT_lower, 'l', 0, 0x1e37, 0x1e36,
00615 UnicodeLatinMap::AT_dot_below, 0 },
00616 { 0x1e36, UnicodeLatinMap::CT_upper, 'L', 0, 0x1e37, 0x1e36,
00617 UnicodeLatinMap::AT_dot_below, 0 },
00618 { 0x1e39, UnicodeLatinMap::CT_lower, 'l', 0, 0x1e39, 0x1e38,
00619 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
00620 { 0x1e38, UnicodeLatinMap::CT_upper, 'L', 0, 0x1e39, 0x1e38,
00621 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
00622 { 0x1e3d, UnicodeLatinMap::CT_lower, 'l', 0, 0x1e3d, 0x1e3c,
00623 UnicodeLatinMap::AT_circumflex_below, 0 },
00624 { 0x1e3c, UnicodeLatinMap::CT_upper, 'L', 0, 0x1e3d, 0x1e3c,
00625 UnicodeLatinMap::AT_circumflex_below, 0 },
00626 { 0x1e3b, UnicodeLatinMap::CT_lower, 'l', 0, 0x1e3b, 0x1e3a,
00627 UnicodeLatinMap::AT_line_below, 0 },
00628 { 0x1e3a, UnicodeLatinMap::CT_upper, 'L', 0, 0x1e3b, 0x1e3a,
00629 UnicodeLatinMap::AT_line_below, 0 },
00630 { 0x01c9, UnicodeLatinMap::CT_lower, 'l', 'j', 0x01c9, 0x01c7,
00631 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00632 { 0x01c8, UnicodeLatinMap::CT_upper, 'L', 'j', 0x01c9, 0x01c7,
00633 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00634 { 0x01c7, UnicodeLatinMap::CT_upper, 'L', 'J', 0x01c9, 0x01c7,
00635 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00636 { 0x029f, UnicodeLatinMap::CT_upper, 'L', 0, 0x006c, 0x029f,
00637 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00638 { 0x0142, UnicodeLatinMap::CT_lower, 'l', 0, 0x0142, 0x0141,
00639 UnicodeLatinMap::AT_stroke, 0 },
00640 { 0x0141, UnicodeLatinMap::CT_upper, 'L', 0, 0x0142, 0x0141,
00641 UnicodeLatinMap::AT_stroke, 0 },
00642 { 0x028e, UnicodeLatinMap::CT_lower, 'y', 0, 0x028e, 0x0059,
00643 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00644 { 0x006d, UnicodeLatinMap::CT_lower, 'm', 0, 0x006d, 0x004d,
00645 UnicodeLatinMap::AT_none, 0 },
00646 { 0x004d, UnicodeLatinMap::CT_upper, 'M', 0, 0x006d, 0x004d,
00647 UnicodeLatinMap::AT_none, 0 },
00648 { 0x1e3f, UnicodeLatinMap::CT_lower, 'm', 0, 0x1e3f, 0x1e3e,
00649 UnicodeLatinMap::AT_acute, 0 },
00650 { 0x1e3e, UnicodeLatinMap::CT_upper, 'M', 0, 0x1e3f, 0x1e3e,
00651 UnicodeLatinMap::AT_acute, 0 },
00652 { 0x1e41, UnicodeLatinMap::CT_lower, 'm', 0, 0x1e41, 0x1e40,
00653 UnicodeLatinMap::AT_dot_above, 0 },
00654 { 0x1e40, UnicodeLatinMap::CT_upper, 'M', 0, 0x1e41, 0x1e40,
00655 UnicodeLatinMap::AT_dot_above, 0 },
00656 { 0x1e43, UnicodeLatinMap::CT_lower, 'm', 0, 0x1e43, 0x1e42,
00657 UnicodeLatinMap::AT_dot_below, 0 },
00658 { 0x1e42, UnicodeLatinMap::CT_upper, 'M', 0, 0x1e43, 0x1e42,
00659 UnicodeLatinMap::AT_dot_below, 0 },
00660 { 0x0271, UnicodeLatinMap::CT_lower, 'm', 0, 0x0271, 0x004d,
00661 UnicodeLatinMap::AT_hook, 0 },
00662 { 0x006e, UnicodeLatinMap::CT_lower, 'n', 0, 0x006e, 0x004e,
00663 UnicodeLatinMap::AT_none, 0 },
00664 { 0x004e, UnicodeLatinMap::CT_upper, 'N', 0, 0x006e, 0x004e,
00665 UnicodeLatinMap::AT_none, 0 },
00666 { 0x0144, UnicodeLatinMap::CT_lower, 'n', 0, 0x0144, 0x0143,
00667 UnicodeLatinMap::AT_acute, 0 },
00668 { 0x0143, UnicodeLatinMap::CT_upper, 'N', 0, 0x0144, 0x0143,
00669 UnicodeLatinMap::AT_acute, 0 },
00670 { 0x01f9, UnicodeLatinMap::CT_lower, 'n', 0, 0x01f9, 0x01f8,
00671 UnicodeLatinMap::AT_grave, 0 },
00672 { 0x01f8, UnicodeLatinMap::CT_upper, 'N', 0, 0x01f9, 0x01f8,
00673 UnicodeLatinMap::AT_grave, 0 },
00674 { 0x0148, UnicodeLatinMap::CT_lower, 'n', 0, 0x0148, 0x0147,
00675 UnicodeLatinMap::AT_caron, 0 },
00676 { 0x0147, UnicodeLatinMap::CT_upper, 'N', 0, 0x0148, 0x0147,
00677 UnicodeLatinMap::AT_caron, 0 },
00678 { 0x00f1, UnicodeLatinMap::CT_lower, 'n', 0, 0x00f1, 0x00d1,
00679 UnicodeLatinMap::AT_tilde, 0 },
00680 { 0x00d1, UnicodeLatinMap::CT_upper, 'N', 0, 0x00f1, 0x00d1,
00681 UnicodeLatinMap::AT_tilde, 0 },
00682 { 0x1e45, UnicodeLatinMap::CT_lower, 'n', 0, 0x1e45, 0x1e44,
00683 UnicodeLatinMap::AT_dot_above, 0 },
00684 { 0x1e44, UnicodeLatinMap::CT_upper, 'N', 0, 0x1e45, 0x1e44,
00685 UnicodeLatinMap::AT_dot_above, 0 },
00686 { 0x0146, UnicodeLatinMap::CT_lower, 'n', 0, 0x0146, 0x0145,
00687 UnicodeLatinMap::AT_cedilla, 0 },
00688 { 0x0145, UnicodeLatinMap::CT_upper, 'N', 0, 0x0146, 0x0145,
00689 UnicodeLatinMap::AT_cedilla, 0 },
00690 { 0x1e47, UnicodeLatinMap::CT_lower, 'n', 0, 0x1e47, 0x1e46,
00691 UnicodeLatinMap::AT_dot_below, 0 },
00692 { 0x1e46, UnicodeLatinMap::CT_upper, 'N', 0, 0x1e47, 0x1e46,
00693 UnicodeLatinMap::AT_dot_below, 0 },
00694 { 0x1e4b, UnicodeLatinMap::CT_lower, 'n', 0, 0x1e4b, 0x1e4a,
00695 UnicodeLatinMap::AT_circumflex_below, 0 },
00696 { 0x1e4a, UnicodeLatinMap::CT_upper, 'N', 0, 0x1e4b, 0x1e4a,
00697 UnicodeLatinMap::AT_circumflex_below, 0 },
00698 { 0x1e49, UnicodeLatinMap::CT_lower, 'n', 0, 0x1e49, 0x1e48,
00699 UnicodeLatinMap::AT_line_below, 0 },
00700 { 0x1e48, UnicodeLatinMap::CT_upper, 'N', 0, 0x1e49, 0x1e48,
00701 UnicodeLatinMap::AT_line_below, 0 },
00702 { 0x01cc, UnicodeLatinMap::CT_lower, 'n', 'j', 0x01cc, 0x01ca,
00703 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00704 { 0x01cb, UnicodeLatinMap::CT_upper, 'N', 'j', 0x01cc, 0x01ca,
00705 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00706 { 0x01ca, UnicodeLatinMap::CT_upper, 'N', 'J', 0x01cc, 0x01ca,
00707 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00708 { 0x0274, UnicodeLatinMap::CT_upper, 'N', 0, 0x006e, 0x0274,
00709 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00710 { 0x006f, UnicodeLatinMap::CT_lower, 'o', 0, 0x006f, 0x004f,
00711 UnicodeLatinMap::AT_none, 0 },
00712 { 0x004f, UnicodeLatinMap::CT_upper, 'O', 0, 0x006f, 0x004f,
00713 UnicodeLatinMap::AT_none, 0 },
00714 { 0x00f3, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f3, 0x00d3,
00715 UnicodeLatinMap::AT_acute, 0 },
00716 { 0x00d3, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f3, 0x00d3,
00717 UnicodeLatinMap::AT_acute, 0 },
00718 { 0x00f2, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f2, 0x00d2,
00719 UnicodeLatinMap::AT_grave, 0 },
00720 { 0x00d2, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f2, 0x00d2,
00721 UnicodeLatinMap::AT_grave, 0 },
00722 { 0x014f, UnicodeLatinMap::CT_lower, 'o', 0, 0x014f, 0x014e,
00723 UnicodeLatinMap::AT_breve, 0 },
00724 { 0x014e, UnicodeLatinMap::CT_upper, 'O', 0, 0x014f, 0x014e,
00725 UnicodeLatinMap::AT_breve, 0 },
00726 { 0x00f4, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f4, 0x00d4,
00727 UnicodeLatinMap::AT_circumflex, 0 },
00728 { 0x00d4, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f4, 0x00d4,
00729 UnicodeLatinMap::AT_circumflex, 0 },
00730 { 0x1ed1, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ed1, 0x1ed0,
00731 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00732 { 0x1ed0, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ed1, 0x1ed0,
00733 UnicodeLatinMap::AT_circumflex_and_acute, 0 },
00734 { 0x1ed3, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ed3, 0x1ed2,
00735 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00736 { 0x1ed2, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ed3, 0x1ed2,
00737 UnicodeLatinMap::AT_circumflex_and_grave, 0 },
00738 { 0x1ed7, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ed7, 0x1ed6,
00739 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00740 { 0x1ed6, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ed7, 0x1ed6,
00741 UnicodeLatinMap::AT_circumflex_and_tilde, 0 },
00742 { 0x1ed5, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ed5, 0x1ed4,
00743 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00744 { 0x1ed4, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ed5, 0x1ed4,
00745 UnicodeLatinMap::AT_circumflex_and_hook_above, 0 },
00746 { 0x01d2, UnicodeLatinMap::CT_lower, 'o', 0, 0x01d2, 0x01d1,
00747 UnicodeLatinMap::AT_caron, 0 },
00748 { 0x01d1, UnicodeLatinMap::CT_upper, 'O', 0, 0x01d2, 0x01d1,
00749 UnicodeLatinMap::AT_caron, 0 },
00750 { 0x00f6, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f6, 0x00d6,
00751 UnicodeLatinMap::AT_diaeresis, 0 },
00752 { 0x00d6, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f6, 0x00d6,
00753 UnicodeLatinMap::AT_diaeresis, 0 },
00754 { 0x022b, UnicodeLatinMap::CT_lower, 'o', 0, 0x022b, 0x022a,
00755 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
00756 { 0x022a, UnicodeLatinMap::CT_upper, 'O', 0, 0x022b, 0x022a,
00757 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
00758 { 0x0151, UnicodeLatinMap::CT_lower, 'o', 0, 0x0151, 0x0150,
00759 UnicodeLatinMap::AT_double_acute, 0 },
00760 { 0x0150, UnicodeLatinMap::CT_upper, 'O', 0, 0x0151, 0x0150,
00761 UnicodeLatinMap::AT_double_acute, 0 },
00762 { 0x00f5, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f5, 0x00d5,
00763 UnicodeLatinMap::AT_tilde, 0 },
00764 { 0x00d5, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f5, 0x00d5,
00765 UnicodeLatinMap::AT_tilde, 0 },
00766 { 0x1e4d, UnicodeLatinMap::CT_lower, 'o', 0, 0x1e4d, 0x1e4c,
00767 UnicodeLatinMap::AT_tilde_and_acute, 0 },
00768 { 0x1e4c, UnicodeLatinMap::CT_upper, 'O', 0, 0x1e4d, 0x1e4c,
00769 UnicodeLatinMap::AT_tilde_and_acute, 0 },
00770 { 0x1e4f, UnicodeLatinMap::CT_lower, 'o', 0, 0x1e4f, 0x1e4e,
00771 UnicodeLatinMap::AT_tilde_and_diaeresis, 0 },
00772 { 0x1e4e, UnicodeLatinMap::CT_upper, 'O', 0, 0x1e4f, 0x1e4e,
00773 UnicodeLatinMap::AT_tilde_and_diaeresis, 0 },
00774 { 0x022d, UnicodeLatinMap::CT_lower, 'o', 0, 0x022d, 0x022c,
00775 UnicodeLatinMap::AT_tilde_and_macron, 0 },
00776 { 0x022c, UnicodeLatinMap::CT_upper, 'O', 0, 0x022d, 0x022c,
00777 UnicodeLatinMap::AT_tilde_and_macron, 0 },
00778 { 0x022f, UnicodeLatinMap::CT_lower, 'o', 0, 0x022f, 0x022e,
00779 UnicodeLatinMap::AT_dot_above, 0 },
00780 { 0x022e, UnicodeLatinMap::CT_upper, 'O', 0, 0x022f, 0x022e,
00781 UnicodeLatinMap::AT_dot_above, 0 },
00782 { 0x0231, UnicodeLatinMap::CT_lower, 'o', 0, 0x0231, 0x0230,
00783 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
00784 { 0x0230, UnicodeLatinMap::CT_upper, 'O', 0, 0x0231, 0x0230,
00785 UnicodeLatinMap::AT_dot_above_and_macron, 0 },
00786 { 0x01eb, UnicodeLatinMap::CT_lower, 'o', 0, 0x01eb, 0x01ea,
00787 UnicodeLatinMap::AT_ogonek, 0 },
00788 { 0x01ea, UnicodeLatinMap::CT_upper, 'O', 0, 0x01eb, 0x01ea,
00789 UnicodeLatinMap::AT_ogonek, 0 },
00790 { 0x01ed, UnicodeLatinMap::CT_lower, 'o', 0, 0x01ed, 0x01ec,
00791 UnicodeLatinMap::AT_ogonek_and_macron, 0 },
00792 { 0x01ec, UnicodeLatinMap::CT_upper, 'O', 0, 0x01ed, 0x01ec,
00793 UnicodeLatinMap::AT_ogonek_and_macron, 0 },
00794 { 0x014d, UnicodeLatinMap::CT_lower, 'o', 0, 0x014d, 0x014c,
00795 UnicodeLatinMap::AT_macron, 0 },
00796 { 0x014c, UnicodeLatinMap::CT_upper, 'O', 0, 0x014d, 0x014c,
00797 UnicodeLatinMap::AT_macron, 0 },
00798 { 0x1e53, UnicodeLatinMap::CT_lower, 'o', 0, 0x1e53, 0x1e52,
00799 UnicodeLatinMap::AT_macron_and_acute, 0 },
00800 { 0x1e52, UnicodeLatinMap::CT_upper, 'O', 0, 0x1e53, 0x1e52,
00801 UnicodeLatinMap::AT_macron_and_acute, 0 },
00802 { 0x1e51, UnicodeLatinMap::CT_lower, 'o', 0, 0x1e51, 0x1e50,
00803 UnicodeLatinMap::AT_macron_and_grave, 0 },
00804 { 0x1e50, UnicodeLatinMap::CT_upper, 'O', 0, 0x1e51, 0x1e50,
00805 UnicodeLatinMap::AT_macron_and_grave, 0 },
00806 { 0x1ecf, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ecf, 0x1ece,
00807 UnicodeLatinMap::AT_hook_above, 0 },
00808 { 0x1ece, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ecf, 0x1ece,
00809 UnicodeLatinMap::AT_hook_above, 0 },
00810 { 0x020d, UnicodeLatinMap::CT_lower, 'o', 0, 0x020d, 0x020c,
00811 UnicodeLatinMap::AT_double_grave, 0 },
00812 { 0x020c, UnicodeLatinMap::CT_upper, 'O', 0, 0x020d, 0x020c,
00813 UnicodeLatinMap::AT_double_grave, 0 },
00814 { 0x020f, UnicodeLatinMap::CT_lower, 'o', 0, 0x020f, 0x020e,
00815 UnicodeLatinMap::AT_inverted_breve, 0 },
00816 { 0x020e, UnicodeLatinMap::CT_upper, 'O', 0, 0x020f, 0x020e,
00817 UnicodeLatinMap::AT_inverted_breve, 0 },
00818 { 0x01a1, UnicodeLatinMap::CT_lower, 'o', 0, 0x01a1, 0x01a0,
00819 UnicodeLatinMap::AT_horn, 0 },
00820 { 0x01a0, UnicodeLatinMap::CT_upper, 'O', 0, 0x01a1, 0x01a0,
00821 UnicodeLatinMap::AT_horn, 0 },
00822 { 0x1edb, UnicodeLatinMap::CT_lower, 'o', 0, 0x1edb, 0x1eda,
00823 UnicodeLatinMap::AT_horn_and_acute, 0 },
00824 { 0x1eda, UnicodeLatinMap::CT_upper, 'O', 0, 0x1edb, 0x1eda,
00825 UnicodeLatinMap::AT_horn_and_acute, 0 },
00826 { 0x1edd, UnicodeLatinMap::CT_lower, 'o', 0, 0x1edd, 0x1edc,
00827 UnicodeLatinMap::AT_horn_and_grave, 0 },
00828 { 0x1edc, UnicodeLatinMap::CT_upper, 'O', 0, 0x1edd, 0x1edc,
00829 UnicodeLatinMap::AT_horn_and_grave, 0 },
00830 { 0x1ee1, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ee1, 0x1ee0,
00831 UnicodeLatinMap::AT_horn_and_tilde, 0 },
00832 { 0x1ee0, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ee1, 0x1ee0,
00833 UnicodeLatinMap::AT_horn_and_tilde, 0 },
00834 { 0x1edf, UnicodeLatinMap::CT_lower, 'o', 0, 0x1edf, 0x1ede,
00835 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
00836 { 0x1ede, UnicodeLatinMap::CT_upper, 'O', 0, 0x1edf, 0x1ede,
00837 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
00838 { 0x1ee3, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ee3, 0x1ee2,
00839 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
00840 { 0x1ee2, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ee3, 0x1ee2,
00841 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
00842 { 0x1ecd, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ecd, 0x1ecc,
00843 UnicodeLatinMap::AT_dot_below, 0 },
00844 { 0x1ecc, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ecd, 0x1ecc,
00845 UnicodeLatinMap::AT_dot_below, 0 },
00846 { 0x1ed9, UnicodeLatinMap::CT_lower, 'o', 0, 0x1ed9, 0x1ed8,
00847 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00848 { 0x1ed8, UnicodeLatinMap::CT_upper, 'O', 0, 0x1ed9, 0x1ed8,
00849 UnicodeLatinMap::AT_circumflex_and_dot_below, 0 },
00850 { 0x0153, UnicodeLatinMap::CT_lower, 'o', 'e', 0x0153, 0x0152,
00851 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00852 { 0x0152, UnicodeLatinMap::CT_upper, 'O', 'E', 0x0153, 0x0152,
00853 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_ligature },
00854 { 0x0276, UnicodeLatinMap::CT_upper, 'O', 'E', 0x0153, 0x0276,
00855 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap | UnicodeLatinMap::AF_ligature },
00856 { 0x00f8, UnicodeLatinMap::CT_lower, 'o', 0, 0x00f8, 0x00d8,
00857 UnicodeLatinMap::AT_stroke, 0 },
00858 { 0x00d8, UnicodeLatinMap::CT_upper, 'O', 0, 0x00f8, 0x00d8,
00859 UnicodeLatinMap::AT_stroke, 0 },
00860 { 0x01ff, UnicodeLatinMap::CT_lower, 'o', 0, 0x01ff, 0x01fe,
00861 UnicodeLatinMap::AT_stroke_and_acute, 0 },
00862 { 0x01fe, UnicodeLatinMap::CT_upper, 'O', 0, 0x01ff, 0x01fe,
00863 UnicodeLatinMap::AT_stroke_and_acute, 0 },
00864 { 0x0070, UnicodeLatinMap::CT_lower, 'p', 0, 0x0070, 0x0050,
00865 UnicodeLatinMap::AT_none, 0 },
00866 { 0x0050, UnicodeLatinMap::CT_upper, 'P', 0, 0x0070, 0x0050,
00867 UnicodeLatinMap::AT_none, 0 },
00868 { 0x1e55, UnicodeLatinMap::CT_lower, 'p', 0, 0x1e55, 0x1e54,
00869 UnicodeLatinMap::AT_acute, 0 },
00870 { 0x1e54, UnicodeLatinMap::CT_upper, 'P', 0, 0x1e55, 0x1e54,
00871 UnicodeLatinMap::AT_acute, 0 },
00872 { 0x1e57, UnicodeLatinMap::CT_lower, 'p', 0, 0x1e57, 0x1e56,
00873 UnicodeLatinMap::AT_dot_above, 0 },
00874 { 0x1e56, UnicodeLatinMap::CT_upper, 'P', 0, 0x1e57, 0x1e56,
00875 UnicodeLatinMap::AT_dot_above, 0 },
00876 { 0x01a5, UnicodeLatinMap::CT_lower, 'p', 0, 0x01a5, 0x01a4,
00877 UnicodeLatinMap::AT_hook, 0 },
00878 { 0x01a4, UnicodeLatinMap::CT_upper, 'P', 0, 0x01a5, 0x01a4,
00879 UnicodeLatinMap::AT_hook, 0 },
00880 { 0x0071, UnicodeLatinMap::CT_lower, 'q', 0, 0x0071, 0x0051,
00881 UnicodeLatinMap::AT_none, 0 },
00882 { 0x0051, UnicodeLatinMap::CT_upper, 'Q', 0, 0x0071, 0x0051,
00883 UnicodeLatinMap::AT_none, 0 },
00884 { 0x02a0, UnicodeLatinMap::CT_lower, 'q', 0, 0x02a0, 0x0051,
00885 UnicodeLatinMap::AT_hook, 0 },
00886 { 0x0072, UnicodeLatinMap::CT_lower, 'r', 0, 0x0072, 0x0052,
00887 UnicodeLatinMap::AT_none, 0 },
00888 { 0x0052, UnicodeLatinMap::CT_upper, 'R', 0, 0x0072, 0x0052,
00889 UnicodeLatinMap::AT_none, 0 },
00890 { 0x0155, UnicodeLatinMap::CT_lower, 'r', 0, 0x0155, 0x0154,
00891 UnicodeLatinMap::AT_acute, 0 },
00892 { 0x0154, UnicodeLatinMap::CT_upper, 'R', 0, 0x0155, 0x0154,
00893 UnicodeLatinMap::AT_acute, 0 },
00894 { 0x0159, UnicodeLatinMap::CT_lower, 'r', 0, 0x0159, 0x0158,
00895 UnicodeLatinMap::AT_caron, 0 },
00896 { 0x0158, UnicodeLatinMap::CT_upper, 'R', 0, 0x0159, 0x0158,
00897 UnicodeLatinMap::AT_caron, 0 },
00898 { 0x1e59, UnicodeLatinMap::CT_lower, 'r', 0, 0x1e59, 0x1e58,
00899 UnicodeLatinMap::AT_dot_above, 0 },
00900 { 0x1e58, UnicodeLatinMap::CT_upper, 'R', 0, 0x1e59, 0x1e58,
00901 UnicodeLatinMap::AT_dot_above, 0 },
00902 { 0x0157, UnicodeLatinMap::CT_lower, 'r', 0, 0x0157, 0x0156,
00903 UnicodeLatinMap::AT_cedilla, 0 },
00904 { 0x0156, UnicodeLatinMap::CT_upper, 'R', 0, 0x0157, 0x0156,
00905 UnicodeLatinMap::AT_cedilla, 0 },
00906 { 0x0211, UnicodeLatinMap::CT_lower, 'r', 0, 0x0211, 0x0210,
00907 UnicodeLatinMap::AT_double_grave, 0 },
00908 { 0x0210, UnicodeLatinMap::CT_upper, 'R', 0, 0x0211, 0x0210,
00909 UnicodeLatinMap::AT_double_grave, 0 },
00910 { 0x0213, UnicodeLatinMap::CT_lower, 'r', 0, 0x0213, 0x0212,
00911 UnicodeLatinMap::AT_inverted_breve, 0 },
00912 { 0x0212, UnicodeLatinMap::CT_upper, 'R', 0, 0x0213, 0x0212,
00913 UnicodeLatinMap::AT_inverted_breve, 0 },
00914 { 0x1e5b, UnicodeLatinMap::CT_lower, 'r', 0, 0x1e5b, 0x1e5a,
00915 UnicodeLatinMap::AT_dot_below, 0 },
00916 { 0x1e5a, UnicodeLatinMap::CT_upper, 'R', 0, 0x1e5b, 0x1e5a,
00917 UnicodeLatinMap::AT_dot_below, 0 },
00918 { 0x1e5d, UnicodeLatinMap::CT_lower, 'r', 0, 0x1e5d, 0x1e5c,
00919 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
00920 { 0x1e5c, UnicodeLatinMap::CT_upper, 'R', 0, 0x1e5d, 0x1e5c,
00921 UnicodeLatinMap::AT_dot_below_and_macron, 0 },
00922 { 0x1e5f, UnicodeLatinMap::CT_lower, 'r', 0, 0x1e5f, 0x1e5e,
00923 UnicodeLatinMap::AT_line_below, 0 },
00924 { 0x1e5e, UnicodeLatinMap::CT_upper, 'R', 0, 0x1e5f, 0x1e5e,
00925 UnicodeLatinMap::AT_line_below, 0 },
00926 { 0x0280, UnicodeLatinMap::CT_upper, 'R', 0, 0x0072, 0x0280,
00927 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
00928 { 0x0279, UnicodeLatinMap::CT_lower, 'r', 0, 0x0279, 0x0052,
00929 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
00930 { 0x027b, UnicodeLatinMap::CT_lower, 'r', 0, 0x027b, 0x0052,
00931 UnicodeLatinMap::AT_hook, UnicodeLatinMap::AF_turned },
00932 { 0x0281, UnicodeLatinMap::CT_upper, 'R', 0, 0x0072, 0x0281,
00933 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned | UnicodeLatinMap::AF_smallcap },
00934 { 0x0073, UnicodeLatinMap::CT_lower, 's', 0, 0x0073, 0x0053,
00935 UnicodeLatinMap::AT_none, 0 },
00936 { 0x0053, UnicodeLatinMap::CT_upper, 'S', 0, 0x0073, 0x0053,
00937 UnicodeLatinMap::AT_none, 0 },
00938 { 0x015b, UnicodeLatinMap::CT_lower, 's', 0, 0x015b, 0x015a,
00939 UnicodeLatinMap::AT_acute, 0 },
00940 { 0x015a, UnicodeLatinMap::CT_upper, 'S', 0, 0x015b, 0x015a,
00941 UnicodeLatinMap::AT_acute, 0 },
00942 { 0x1e65, UnicodeLatinMap::CT_lower, 's', 0, 0x1e65, 0x1e64,
00943 UnicodeLatinMap::AT_acute_and_dot_above, 0 },
00944 { 0x1e64, UnicodeLatinMap::CT_upper, 'S', 0, 0x1e65, 0x1e64,
00945 UnicodeLatinMap::AT_acute_and_dot_above, 0 },
00946 { 0x015d, UnicodeLatinMap::CT_lower, 's', 0, 0x015d, 0x015c,
00947 UnicodeLatinMap::AT_circumflex, 0 },
00948 { 0x015c, UnicodeLatinMap::CT_upper, 'S', 0, 0x015d, 0x015c,
00949 UnicodeLatinMap::AT_circumflex, 0 },
00950 { 0x0161, UnicodeLatinMap::CT_lower, 's', 0, 0x0161, 0x0160,
00951 UnicodeLatinMap::AT_caron, 0 },
00952 { 0x0160, UnicodeLatinMap::CT_upper, 'S', 0, 0x0161, 0x0160,
00953 UnicodeLatinMap::AT_caron, 0 },
00954 { 0x1e67, UnicodeLatinMap::CT_lower, 's', 0, 0x1e67, 0x1e66,
00955 UnicodeLatinMap::AT_caron_and_dot_above, 0 },
00956 { 0x1e66, UnicodeLatinMap::CT_upper, 'S', 0, 0x1e67, 0x1e66,
00957 UnicodeLatinMap::AT_caron_and_dot_above, 0 },
00958 { 0x1e61, UnicodeLatinMap::CT_lower, 's', 0, 0x1e61, 0x1e60,
00959 UnicodeLatinMap::AT_dot_above, 0 },
00960 { 0x1e60, UnicodeLatinMap::CT_upper, 'S', 0, 0x1e61, 0x1e60,
00961 UnicodeLatinMap::AT_dot_above, 0 },
00962 { 0x015f, UnicodeLatinMap::CT_lower, 's', 0, 0x015f, 0x015e,
00963 UnicodeLatinMap::AT_cedilla, 0 },
00964 { 0x015e, UnicodeLatinMap::CT_upper, 'S', 0, 0x015f, 0x015e,
00965 UnicodeLatinMap::AT_cedilla, 0 },
00966 { 0x1e63, UnicodeLatinMap::CT_lower, 's', 0, 0x1e63, 0x1e62,
00967 UnicodeLatinMap::AT_dot_below, 0 },
00968 { 0x1e62, UnicodeLatinMap::CT_upper, 'S', 0, 0x1e63, 0x1e62,
00969 UnicodeLatinMap::AT_dot_below, 0 },
00970 { 0x1e69, UnicodeLatinMap::CT_lower, 's', 0, 0x1e69, 0x1e68,
00971 UnicodeLatinMap::AT_dot_below_and_dot_above, 0 },
00972 { 0x1e68, UnicodeLatinMap::CT_upper, 'S', 0, 0x1e69, 0x1e68,
00973 UnicodeLatinMap::AT_dot_below_and_dot_above, 0 },
00974 { 0x0219, UnicodeLatinMap::CT_lower, 's', 0, 0x0219, 0x0218,
00975 UnicodeLatinMap::AT_comma_below, 0 },
00976 { 0x0218, UnicodeLatinMap::CT_upper, 'S', 0, 0x0219, 0x0218,
00977 UnicodeLatinMap::AT_comma_below, 0 },
00978 { 0x00df, UnicodeLatinMap::CT_lower, 's', 's', 0x00df, 0x00df,
00979 UnicodeLatinMap::AT_none, 0 },
00980 { 0x0282, UnicodeLatinMap::CT_lower, 's', 0, 0x0282, 0x0053,
00981 UnicodeLatinMap::AT_hook, 0 },
00982 { 0x0074, UnicodeLatinMap::CT_lower, 't', 0, 0x0074, 0x0054,
00983 UnicodeLatinMap::AT_none, 0 },
00984 { 0x0054, UnicodeLatinMap::CT_upper, 'T', 0, 0x0074, 0x0054,
00985 UnicodeLatinMap::AT_none, 0 },
00986 { 0x0165, UnicodeLatinMap::CT_lower, 't', 0, 0x0165, 0x0164,
00987 UnicodeLatinMap::AT_caron, 0 },
00988 { 0x0164, UnicodeLatinMap::CT_upper, 'T', 0, 0x0165, 0x0164,
00989 UnicodeLatinMap::AT_caron, 0 },
00990 { 0x1e97, UnicodeLatinMap::CT_lower, 't', 0, 0x1e97, 0x0054,
00991 UnicodeLatinMap::AT_diaeresis, 0 },
00992 { 0x1e6b, UnicodeLatinMap::CT_lower, 't', 0, 0x1e6b, 0x1e6a,
00993 UnicodeLatinMap::AT_dot_above, 0 },
00994 { 0x1e6a, UnicodeLatinMap::CT_upper, 'T', 0, 0x1e6b, 0x1e6a,
00995 UnicodeLatinMap::AT_dot_above, 0 },
00996 { 0x0163, UnicodeLatinMap::CT_lower, 't', 0, 0x0163, 0x0162,
00997 UnicodeLatinMap::AT_cedilla, 0 },
00998 { 0x0162, UnicodeLatinMap::CT_upper, 'T', 0, 0x0163, 0x0162,
00999 UnicodeLatinMap::AT_cedilla, 0 },
01000 { 0x1e6d, UnicodeLatinMap::CT_lower, 't', 0, 0x1e6d, 0x1e6c,
01001 UnicodeLatinMap::AT_dot_below, 0 },
01002 { 0x1e6c, UnicodeLatinMap::CT_upper, 'T', 0, 0x1e6d, 0x1e6c,
01003 UnicodeLatinMap::AT_dot_below, 0 },
01004 { 0x021b, UnicodeLatinMap::CT_lower, 't', 0, 0x021b, 0x021a,
01005 UnicodeLatinMap::AT_comma_below, 0 },
01006 { 0x021a, UnicodeLatinMap::CT_upper, 'T', 0, 0x021b, 0x021a,
01007 UnicodeLatinMap::AT_comma_below, 0 },
01008 { 0x1e71, UnicodeLatinMap::CT_lower, 't', 0, 0x1e71, 0x1e70,
01009 UnicodeLatinMap::AT_circumflex_below, 0 },
01010 { 0x1e70, UnicodeLatinMap::CT_upper, 'T', 0, 0x1e71, 0x1e70,
01011 UnicodeLatinMap::AT_circumflex_below, 0 },
01012 { 0x1e6f, UnicodeLatinMap::CT_lower, 't', 0, 0x1e6f, 0x1e6e,
01013 UnicodeLatinMap::AT_line_below, 0 },
01014 { 0x1e6e, UnicodeLatinMap::CT_upper, 'T', 0, 0x1e6f, 0x1e6e,
01015 UnicodeLatinMap::AT_line_below, 0 },
01016 { 0x0167, UnicodeLatinMap::CT_lower, 't', 0, 0x0167, 0x0166,
01017 UnicodeLatinMap::AT_stroke, 0 },
01018 { 0x0166, UnicodeLatinMap::CT_upper, 'T', 0, 0x0167, 0x0166,
01019 UnicodeLatinMap::AT_stroke, 0 },
01020 { 0x01ad, UnicodeLatinMap::CT_lower, 't', 0, 0x01ad, 0x01ac,
01021 UnicodeLatinMap::AT_hook, 0 },
01022 { 0x01ac, UnicodeLatinMap::CT_upper, 'T', 0, 0x01ad, 0x01ac,
01023 UnicodeLatinMap::AT_hook, 0 },
01024 { 0x0287, UnicodeLatinMap::CT_lower, 't', 0, 0x0287, 0x0054,
01025 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01026 { 0x0075, UnicodeLatinMap::CT_lower, 'u', 0, 0x0075, 0x0055,
01027 UnicodeLatinMap::AT_none, 0 },
01028 { 0x0055, UnicodeLatinMap::CT_upper, 'U', 0, 0x0075, 0x0055,
01029 UnicodeLatinMap::AT_none, 0 },
01030 { 0x00fa, UnicodeLatinMap::CT_lower, 'u', 0, 0x00fa, 0x00da,
01031 UnicodeLatinMap::AT_acute, 0 },
01032 { 0x00da, UnicodeLatinMap::CT_upper, 'U', 0, 0x00fa, 0x00da,
01033 UnicodeLatinMap::AT_acute, 0 },
01034 { 0x00f9, UnicodeLatinMap::CT_lower, 'u', 0, 0x00f9, 0x00d9,
01035 UnicodeLatinMap::AT_grave, 0 },
01036 { 0x00d9, UnicodeLatinMap::CT_upper, 'U', 0, 0x00f9, 0x00d9,
01037 UnicodeLatinMap::AT_grave, 0 },
01038 { 0x016d, UnicodeLatinMap::CT_lower, 'u', 0, 0x016d, 0x016c,
01039 UnicodeLatinMap::AT_breve, 0 },
01040 { 0x016c, UnicodeLatinMap::CT_upper, 'U', 0, 0x016d, 0x016c,
01041 UnicodeLatinMap::AT_breve, 0 },
01042 { 0x00fb, UnicodeLatinMap::CT_lower, 'u', 0, 0x00fb, 0x00db,
01043 UnicodeLatinMap::AT_circumflex, 0 },
01044 { 0x00db, UnicodeLatinMap::CT_upper, 'U', 0, 0x00fb, 0x00db,
01045 UnicodeLatinMap::AT_circumflex, 0 },
01046 { 0x01d4, UnicodeLatinMap::CT_lower, 'u', 0, 0x01d4, 0x01d3,
01047 UnicodeLatinMap::AT_caron, 0 },
01048 { 0x01d3, UnicodeLatinMap::CT_upper, 'U', 0, 0x01d4, 0x01d3,
01049 UnicodeLatinMap::AT_caron, 0 },
01050 { 0x016f, UnicodeLatinMap::CT_lower, 'u', 0, 0x016f, 0x016e,
01051 UnicodeLatinMap::AT_ring_above, 0 },
01052 { 0x016e, UnicodeLatinMap::CT_upper, 'U', 0, 0x016f, 0x016e,
01053 UnicodeLatinMap::AT_ring_above, 0 },
01054 { 0x00fc, UnicodeLatinMap::CT_lower, 'u', 0, 0x00fc, 0x00dc,
01055 UnicodeLatinMap::AT_diaeresis, 0 },
01056 { 0x00dc, UnicodeLatinMap::CT_upper, 'U', 0, 0x00fc, 0x00dc,
01057 UnicodeLatinMap::AT_diaeresis, 0 },
01058 { 0x01d8, UnicodeLatinMap::CT_lower, 'u', 0, 0x01d8, 0x01d7,
01059 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
01060 { 0x01d7, UnicodeLatinMap::CT_upper, 'U', 0, 0x01d8, 0x01d7,
01061 UnicodeLatinMap::AT_diaeresis_and_acute, 0 },
01062 { 0x01dc, UnicodeLatinMap::CT_lower, 'u', 0, 0x01dc, 0x01db,
01063 UnicodeLatinMap::AT_diaeresis_and_grave, 0 },
01064 { 0x01db, UnicodeLatinMap::CT_upper, 'U', 0, 0x01dc, 0x01db,
01065 UnicodeLatinMap::AT_diaeresis_and_grave, 0 },
01066 { 0x01da, UnicodeLatinMap::CT_lower, 'u', 0, 0x01da, 0x01d9,
01067 UnicodeLatinMap::AT_diaeresis_and_caron, 0 },
01068 { 0x01d9, UnicodeLatinMap::CT_upper, 'U', 0, 0x01da, 0x01d9,
01069 UnicodeLatinMap::AT_diaeresis_and_caron, 0 },
01070 { 0x01d6, UnicodeLatinMap::CT_lower, 'u', 0, 0x01d6, 0x01d5,
01071 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
01072 { 0x01d5, UnicodeLatinMap::CT_upper, 'U', 0, 0x01d6, 0x01d5,
01073 UnicodeLatinMap::AT_diaeresis_and_macron, 0 },
01074 { 0x0171, UnicodeLatinMap::CT_lower, 'u', 0, 0x0171, 0x0170,
01075 UnicodeLatinMap::AT_double_acute, 0 },
01076 { 0x0170, UnicodeLatinMap::CT_upper, 'U', 0, 0x0171, 0x0170,
01077 UnicodeLatinMap::AT_double_acute, 0 },
01078 { 0x0169, UnicodeLatinMap::CT_lower, 'u', 0, 0x0169, 0x0168,
01079 UnicodeLatinMap::AT_tilde, 0 },
01080 { 0x0168, UnicodeLatinMap::CT_upper, 'U', 0, 0x0169, 0x0168,
01081 UnicodeLatinMap::AT_tilde, 0 },
01082 { 0x1e79, UnicodeLatinMap::CT_lower, 'u', 0, 0x1e79, 0x1e78,
01083 UnicodeLatinMap::AT_tilde_and_acute, 0 },
01084 { 0x1e78, UnicodeLatinMap::CT_upper, 'U', 0, 0x1e79, 0x1e78,
01085 UnicodeLatinMap::AT_tilde_and_acute, 0 },
01086 { 0x0173, UnicodeLatinMap::CT_lower, 'u', 0, 0x0173, 0x0172,
01087 UnicodeLatinMap::AT_ogonek, 0 },
01088 { 0x0172, UnicodeLatinMap::CT_upper, 'U', 0, 0x0173, 0x0172,
01089 UnicodeLatinMap::AT_ogonek, 0 },
01090 { 0x016b, UnicodeLatinMap::CT_lower, 'u', 0, 0x016b, 0x016a,
01091 UnicodeLatinMap::AT_macron, 0 },
01092 { 0x016a, UnicodeLatinMap::CT_upper, 'U', 0, 0x016b, 0x016a,
01093 UnicodeLatinMap::AT_macron, 0 },
01094 { 0x1e7b, UnicodeLatinMap::CT_lower, 'u', 0, 0x1e7b, 0x1e7a,
01095 UnicodeLatinMap::AT_macron_and_diaeresis, 0 },
01096 { 0x1e7a, UnicodeLatinMap::CT_upper, 'U', 0, 0x1e7b, 0x1e7a,
01097 UnicodeLatinMap::AT_macron_and_diaeresis, 0 },
01098 { 0x1ee7, UnicodeLatinMap::CT_lower, 'u', 0, 0x1ee7, 0x1ee6,
01099 UnicodeLatinMap::AT_hook_above, 0 },
01100 { 0x1ee6, UnicodeLatinMap::CT_upper, 'U', 0, 0x1ee7, 0x1ee6,
01101 UnicodeLatinMap::AT_hook_above, 0 },
01102 { 0x0215, UnicodeLatinMap::CT_lower, 'u', 0, 0x0215, 0x0214,
01103 UnicodeLatinMap::AT_double_grave, 0 },
01104 { 0x0214, UnicodeLatinMap::CT_upper, 'U', 0, 0x0215, 0x0214,
01105 UnicodeLatinMap::AT_double_grave, 0 },
01106 { 0x0217, UnicodeLatinMap::CT_lower, 'u', 0, 0x0217, 0x0216,
01107 UnicodeLatinMap::AT_inverted_breve, 0 },
01108 { 0x0216, UnicodeLatinMap::CT_upper, 'U', 0, 0x0217, 0x0216,
01109 UnicodeLatinMap::AT_inverted_breve, 0 },
01110 { 0x01b0, UnicodeLatinMap::CT_lower, 'u', 0, 0x01b0, 0x01af,
01111 UnicodeLatinMap::AT_horn, 0 },
01112 { 0x01af, UnicodeLatinMap::CT_upper, 'U', 0, 0x01b0, 0x01af,
01113 UnicodeLatinMap::AT_horn, 0 },
01114 { 0x1ee9, UnicodeLatinMap::CT_lower, 'u', 0, 0x1ee9, 0x1ee8,
01115 UnicodeLatinMap::AT_horn_and_acute, 0 },
01116 { 0x1ee8, UnicodeLatinMap::CT_upper, 'U', 0, 0x1ee9, 0x1ee8,
01117 UnicodeLatinMap::AT_horn_and_acute, 0 },
01118 { 0x1eeb, UnicodeLatinMap::CT_lower, 'u', 0, 0x1eeb, 0x1eea,
01119 UnicodeLatinMap::AT_horn_and_grave, 0 },
01120 { 0x1eea, UnicodeLatinMap::CT_upper, 'U', 0, 0x1eeb, 0x1eea,
01121 UnicodeLatinMap::AT_horn_and_grave, 0 },
01122 { 0x1eef, UnicodeLatinMap::CT_lower, 'u', 0, 0x1eef, 0x1eee,
01123 UnicodeLatinMap::AT_horn_and_tilde, 0 },
01124 { 0x1eee, UnicodeLatinMap::CT_upper, 'U', 0, 0x1eef, 0x1eee,
01125 UnicodeLatinMap::AT_horn_and_tilde, 0 },
01126 { 0x1eed, UnicodeLatinMap::CT_lower, 'u', 0, 0x1eed, 0x1eec,
01127 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
01128 { 0x1eec, UnicodeLatinMap::CT_upper, 'U', 0, 0x1eed, 0x1eec,
01129 UnicodeLatinMap::AT_horn_and_hook_above, 0 },
01130 { 0x1ef1, UnicodeLatinMap::CT_lower, 'u', 0, 0x1ef1, 0x1ef0,
01131 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
01132 { 0x1ef0, UnicodeLatinMap::CT_upper, 'U', 0, 0x1ef1, 0x1ef0,
01133 UnicodeLatinMap::AT_horn_and_dot_below, 0 },
01134 { 0x1ee5, UnicodeLatinMap::CT_lower, 'u', 0, 0x1ee5, 0x1ee4,
01135 UnicodeLatinMap::AT_dot_below, 0 },
01136 { 0x1ee4, UnicodeLatinMap::CT_upper, 'U', 0, 0x1ee5, 0x1ee4,
01137 UnicodeLatinMap::AT_dot_below, 0 },
01138 { 0x1e73, UnicodeLatinMap::CT_lower, 'u', 0, 0x1e73, 0x1e72,
01139 UnicodeLatinMap::AT_diaeresis_below, 0 },
01140 { 0x1e72, UnicodeLatinMap::CT_upper, 'U', 0, 0x1e73, 0x1e72,
01141 UnicodeLatinMap::AT_diaeresis_below, 0 },
01142 { 0x1e77, UnicodeLatinMap::CT_lower, 'u', 0, 0x1e77, 0x1e76,
01143 UnicodeLatinMap::AT_circumflex_below, 0 },
01144 { 0x1e76, UnicodeLatinMap::CT_upper, 'U', 0, 0x1e77, 0x1e76,
01145 UnicodeLatinMap::AT_circumflex_below, 0 },
01146 { 0x1e75, UnicodeLatinMap::CT_lower, 'u', 0, 0x1e75, 0x1e74,
01147 UnicodeLatinMap::AT_tilde_below, 0 },
01148 { 0x1e74, UnicodeLatinMap::CT_upper, 'U', 0, 0x1e75, 0x1e74,
01149 UnicodeLatinMap::AT_tilde_below, 0 },
01150 { 0x0265, UnicodeLatinMap::CT_lower, 'h', 0, 0x0265, 0x0048,
01151 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01152 { 0x026f, UnicodeLatinMap::CT_lower, 'm', 0, 0x026f, 0x019c,
01153 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01154 { 0x019c, UnicodeLatinMap::CT_upper, 'M', 0, 0x026f, 0x019c,
01155 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01156 { 0x0076, UnicodeLatinMap::CT_lower, 'v', 0, 0x0076, 0x0056,
01157 UnicodeLatinMap::AT_none, 0 },
01158 { 0x0056, UnicodeLatinMap::CT_upper, 'V', 0, 0x0076, 0x0056,
01159 UnicodeLatinMap::AT_none, 0 },
01160 { 0x1e7d, UnicodeLatinMap::CT_lower, 'v', 0, 0x1e7d, 0x1e7c,
01161 UnicodeLatinMap::AT_tilde, 0 },
01162 { 0x1e7c, UnicodeLatinMap::CT_upper, 'V', 0, 0x1e7d, 0x1e7c,
01163 UnicodeLatinMap::AT_tilde, 0 },
01164 { 0x1e7f, UnicodeLatinMap::CT_lower, 'v', 0, 0x1e7f, 0x1e7e,
01165 UnicodeLatinMap::AT_dot_below, 0 },
01166 { 0x1e7e, UnicodeLatinMap::CT_upper, 'V', 0, 0x1e7f, 0x1e7e,
01167 UnicodeLatinMap::AT_dot_below, 0 },
01168 { 0x028b, UnicodeLatinMap::CT_lower, 'v', 0, 0x028b, 0x01b2,
01169 UnicodeLatinMap::AT_hook, 0 },
01170 { 0x01b2, UnicodeLatinMap::CT_upper, 'V', 0, 0x028b, 0x01b2,
01171 UnicodeLatinMap::AT_hook, 0 },
01172 { 0x028c, UnicodeLatinMap::CT_lower, 'v', 0, 0x028c, 0x0056,
01173 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01174 { 0x0077, UnicodeLatinMap::CT_lower, 'w', 0, 0x0077, 0x0057,
01175 UnicodeLatinMap::AT_none, 0 },
01176 { 0x0057, UnicodeLatinMap::CT_upper, 'W', 0, 0x0077, 0x0057,
01177 UnicodeLatinMap::AT_none, 0 },
01178 { 0x1e83, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e83, 0x1e82,
01179 UnicodeLatinMap::AT_acute, 0 },
01180 { 0x1e82, UnicodeLatinMap::CT_upper, 'W', 0, 0x1e83, 0x1e82,
01181 UnicodeLatinMap::AT_acute, 0 },
01182 { 0x1e81, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e81, 0x1e80,
01183 UnicodeLatinMap::AT_grave, 0 },
01184 { 0x1e80, UnicodeLatinMap::CT_upper, 'W', 0, 0x1e81, 0x1e80,
01185 UnicodeLatinMap::AT_grave, 0 },
01186 { 0x0175, UnicodeLatinMap::CT_lower, 'w', 0, 0x0175, 0x0174,
01187 UnicodeLatinMap::AT_circumflex, 0 },
01188 { 0x0174, UnicodeLatinMap::CT_upper, 'W', 0, 0x0175, 0x0174,
01189 UnicodeLatinMap::AT_circumflex, 0 },
01190 { 0x1e98, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e98, 0x0057,
01191 UnicodeLatinMap::AT_ring_above, 0 },
01192 { 0x1e85, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e85, 0x1e84,
01193 UnicodeLatinMap::AT_diaeresis, 0 },
01194 { 0x1e84, UnicodeLatinMap::CT_upper, 'W', 0, 0x1e85, 0x1e84,
01195 UnicodeLatinMap::AT_diaeresis, 0 },
01196 { 0x1e87, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e87, 0x1e86,
01197 UnicodeLatinMap::AT_dot_above, 0 },
01198 { 0x1e86, UnicodeLatinMap::CT_upper, 'W', 0, 0x1e87, 0x1e86,
01199 UnicodeLatinMap::AT_dot_above, 0 },
01200 { 0x1e89, UnicodeLatinMap::CT_lower, 'w', 0, 0x1e89, 0x1e88,
01201 UnicodeLatinMap::AT_dot_below, 0 },
01202 { 0x1e88, UnicodeLatinMap::CT_upper, 'W', 0, 0x1e89, 0x1e88,
01203 UnicodeLatinMap::AT_dot_below, 0 },
01204 { 0x028d, UnicodeLatinMap::CT_lower, 'w', 0, 0x028d, 0x0057,
01205 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_turned },
01206 { 0x0078, UnicodeLatinMap::CT_lower, 'x', 0, 0x0078, 0x0058,
01207 UnicodeLatinMap::AT_none, 0 },
01208 { 0x0058, UnicodeLatinMap::CT_upper, 'X', 0, 0x0078, 0x0058,
01209 UnicodeLatinMap::AT_none, 0 },
01210 { 0x1e8d, UnicodeLatinMap::CT_lower, 'x', 0, 0x1e8d, 0x1e8c,
01211 UnicodeLatinMap::AT_diaeresis, 0 },
01212 { 0x1e8c, UnicodeLatinMap::CT_upper, 'X', 0, 0x1e8d, 0x1e8c,
01213 UnicodeLatinMap::AT_diaeresis, 0 },
01214 { 0x1e8b, UnicodeLatinMap::CT_lower, 'x', 0, 0x1e8b, 0x1e8a,
01215 UnicodeLatinMap::AT_dot_above, 0 },
01216 { 0x1e8a, UnicodeLatinMap::CT_upper, 'X', 0, 0x1e8b, 0x1e8a,
01217 UnicodeLatinMap::AT_dot_above, 0 },
01218 { 0x0079, UnicodeLatinMap::CT_lower, 'y', 0, 0x0079, 0x0059,
01219 UnicodeLatinMap::AT_none, 0 },
01220 { 0x0059, UnicodeLatinMap::CT_upper, 'Y', 0, 0x0079, 0x0059,
01221 UnicodeLatinMap::AT_none, 0 },
01222 { 0x00fd, UnicodeLatinMap::CT_lower, 'y', 0, 0x00fd, 0x00dd,
01223 UnicodeLatinMap::AT_acute, 0 },
01224 { 0x00dd, UnicodeLatinMap::CT_upper, 'Y', 0, 0x00fd, 0x00dd,
01225 UnicodeLatinMap::AT_acute, 0 },
01226 { 0x1ef3, UnicodeLatinMap::CT_lower, 'y', 0, 0x1ef3, 0x1ef2,
01227 UnicodeLatinMap::AT_grave, 0 },
01228 { 0x1ef2, UnicodeLatinMap::CT_upper, 'Y', 0, 0x1ef3, 0x1ef2,
01229 UnicodeLatinMap::AT_grave, 0 },
01230 { 0x0177, UnicodeLatinMap::CT_lower, 'y', 0, 0x0177, 0x0176,
01231 UnicodeLatinMap::AT_circumflex, 0 },
01232 { 0x0176, UnicodeLatinMap::CT_upper, 'Y', 0, 0x0177, 0x0176,
01233 UnicodeLatinMap::AT_circumflex, 0 },
01234 { 0x1e99, UnicodeLatinMap::CT_lower, 'y', 0, 0x1e99, 0x0059,
01235 UnicodeLatinMap::AT_ring_above, 0 },
01236 { 0x00ff, UnicodeLatinMap::CT_lower, 'y', 0, 0x00ff, 0x0178,
01237 UnicodeLatinMap::AT_diaeresis, 0 },
01238 { 0x0178, UnicodeLatinMap::CT_upper, 'Y', 0, 0x00ff, 0x0178,
01239 UnicodeLatinMap::AT_diaeresis, 0 },
01240 { 0x1ef9, UnicodeLatinMap::CT_lower, 'y', 0, 0x1ef9, 0x1ef8,
01241 UnicodeLatinMap::AT_tilde, 0 },
01242 { 0x1ef8, UnicodeLatinMap::CT_upper, 'Y', 0, 0x1ef9, 0x1ef8,
01243 UnicodeLatinMap::AT_tilde, 0 },
01244 { 0x1e8f, UnicodeLatinMap::CT_lower, 'y', 0, 0x1e8f, 0x1e8e,
01245 UnicodeLatinMap::AT_dot_above, 0 },
01246 { 0x1e8e, UnicodeLatinMap::CT_upper, 'Y', 0, 0x1e8f, 0x1e8e,
01247 UnicodeLatinMap::AT_dot_above, 0 },
01248 { 0x0233, UnicodeLatinMap::CT_lower, 'y', 0, 0x0233, 0x0232,
01249 UnicodeLatinMap::AT_macron, 0 },
01250 { 0x0232, UnicodeLatinMap::CT_upper, 'Y', 0, 0x0233, 0x0232,
01251 UnicodeLatinMap::AT_macron, 0 },
01252 { 0x1ef7, UnicodeLatinMap::CT_lower, 'y', 0, 0x1ef7, 0x1ef6,
01253 UnicodeLatinMap::AT_hook_above, 0 },
01254 { 0x1ef6, UnicodeLatinMap::CT_upper, 'Y', 0, 0x1ef7, 0x1ef6,
01255 UnicodeLatinMap::AT_hook_above, 0 },
01256 { 0x1ef5, UnicodeLatinMap::CT_lower, 'y', 0, 0x1ef5, 0x1ef4,
01257 UnicodeLatinMap::AT_dot_below, 0 },
01258 { 0x1ef4, UnicodeLatinMap::CT_upper, 'Y', 0, 0x1ef5, 0x1ef4,
01259 UnicodeLatinMap::AT_dot_below, 0 },
01260 { 0x028f, UnicodeLatinMap::CT_upper, 'Y', 0, 0x0079, 0x028f,
01261 UnicodeLatinMap::AT_none, UnicodeLatinMap::AF_smallcap },
01262 { 0x01b4, UnicodeLatinMap::CT_lower, 'y', 0, 0x01b4, 0x01b3,
01263 UnicodeLatinMap::AT_hook, 0 },
01264 { 0x01b3, UnicodeLatinMap::CT_upper, 'Y', 0, 0x01b4, 0x01b3,
01265 UnicodeLatinMap::AT_hook, 0 },
01266 { 0x007a, UnicodeLatinMap::CT_lower, 'z', 0, 0x007a, 0x005a,
01267 UnicodeLatinMap::AT_none, 0 },
01268 { 0x005a, UnicodeLatinMap::CT_upper, 'Z', 0, 0x007a, 0x005a,
01269 UnicodeLatinMap::AT_none, 0 },
01270 { 0x017a, UnicodeLatinMap::CT_lower, 'z', 0, 0x017a, 0x0179,
01271 UnicodeLatinMap::AT_acute, 0 },
01272 { 0x0179, UnicodeLatinMap::CT_upper, 'Z', 0, 0x017a, 0x0179,
01273 UnicodeLatinMap::AT_acute, 0 },
01274 { 0x1e91, UnicodeLatinMap::CT_lower, 'z', 0, 0x1e91, 0x1e90,
01275 UnicodeLatinMap::AT_circumflex, 0 },
01276 { 0x1e90, UnicodeLatinMap::CT_upper, 'Z', 0, 0x1e91, 0x1e90,
01277 UnicodeLatinMap::AT_circumflex, 0 },
01278 { 0x017e, UnicodeLatinMap::CT_lower, 'z', 0, 0x017e, 0x017d,
01279 UnicodeLatinMap::AT_caron, 0 },
01280 { 0x017d, UnicodeLatinMap::CT_upper, 'Z', 0, 0x017e, 0x017d,
01281 UnicodeLatinMap::AT_caron, 0 },
01282 { 0x017c, UnicodeLatinMap::CT_lower, 'z', 0, 0x017c, 0x017b,
01283 UnicodeLatinMap::AT_dot_above, 0 },
01284 { 0x017b, UnicodeLatinMap::CT_upper, 'Z', 0, 0x017c, 0x017b,
01285 UnicodeLatinMap::AT_dot_above, 0 },
01286 { 0x1e93, UnicodeLatinMap::CT_lower, 'z', 0, 0x1e93, 0x1e92,
01287 UnicodeLatinMap::AT_dot_below, 0 },
01288 { 0x1e92, UnicodeLatinMap::CT_upper, 'Z', 0, 0x1e93, 0x1e92,
01289 UnicodeLatinMap::AT_dot_below, 0 },
01290 { 0x1e95, UnicodeLatinMap::CT_lower, 'z', 0, 0x1e95, 0x1e94,
01291 UnicodeLatinMap::AT_line_below, 0 },
01292 { 0x1e94, UnicodeLatinMap::CT_upper, 'Z', 0, 0x1e95, 0x1e94,
01293 UnicodeLatinMap::AT_line_below, 0 },
01294 { 0x01b6, UnicodeLatinMap::CT_lower, 'z', 0, 0x01b6, 0x01b5,
01295 UnicodeLatinMap::AT_stroke, 0 },
01296 { 0x01b5, UnicodeLatinMap::CT_upper, 'Z', 0, 0x01b6, 0x01b5,
01297 UnicodeLatinMap::AT_stroke, 0 },
01298 { 0x0225, UnicodeLatinMap::CT_lower, 'z', 0, 0x0225, 0x0224,
01299 UnicodeLatinMap::AT_hook, 0 },
01300 { 0x0224, UnicodeLatinMap::CT_upper, 'Z', 0, 0x0225, 0x0224,
01301 UnicodeLatinMap::AT_hook, 0 },
01302 { 0x0291, UnicodeLatinMap::CT_lower, 'z', 0, 0x0291, 0x005a,
01303 UnicodeLatinMap::AT_curl, 0 },
01304 };
01305 #ifndef CPPPARSER
01306 static const int latin_map_length = sizeof(latin_map) / sizeof(UnicodeLatinMap::Entry);
01307 #endif
01308
01309
01310
01311
01312
01313
01314
01315
01316 const UnicodeLatinMap::Entry *UnicodeLatinMap::
01317 look_up(wchar_t character) {
01318 if (!_initialized) {
01319 init();
01320 }
01321
01322 if (character < max_direct_chars) {
01323 return _direct_chars[character];
01324
01325 } else {
01326 ByCharacter::const_iterator ci;
01327 ci = _by_character.find(character);
01328 if (ci != _by_character.end()) {
01329 return (*ci).second;
01330 }
01331 return NULL;
01332 }
01333 }
01334
01335
01336
01337
01338
01339
01340
01341 void UnicodeLatinMap::
01342 init() {
01343 if (!_initialized) {
01344 for (int i = 0; i < latin_map_length; i++) {
01345 const UnicodeLatinMap::Entry *entry = &latin_map[i];
01346
01347
01348
01349
01350 if (entry->_character < max_direct_chars) {
01351 _direct_chars[entry->_character] = entry;
01352 } else {
01353 _by_character[entry->_character] = entry;
01354 }
01355 }
01356 _initialized = true;
01357 }
01358 }
01359