76 864, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
77 MIMECONTF_MIME_LATEST,
78 "ibm864",
"ibm864",
"ibm864" },
80 1006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
81 MIMECONTF_MIME_LATEST,
82 "ibm1006",
"ibm1006",
"ibm1006" },
84 1256, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
85 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
86 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
87 "windows-1256",
"windows-1256",
"windows-1256" },
89 28596, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
90 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
91 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
92 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
93 "iso-8859-6",
"iso-8859-6",
"iso-8859-6" }
98 775, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
99 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
100 "ibm775",
"ibm775",
"ibm775" },
101 {
"Baltic (Windows)",
102 1257, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
103 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
104 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
105 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
106 "windows-1257",
"windows-1257",
"windows-1257" },
108 28594, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
109 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
110 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
111 MIMECONTF_MIME_LATEST,
112 "iso-8859-4",
"iso-8859-4",
"iso-8859-4" },
114 28603, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
115 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
116 "iso-8859-13",
"iso-8859-13",
"iso-8859-13" }
120 {
"Chinese Simplified (Auto-Select)",
121 50936, MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
122 MIMECONTF_MIME_LATEST,
123 "_autodetect_chs",
"_autodetect_chs",
"_autodetect_chs" },
124 {
"Chinese Simplified (GB2312)",
125 936, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
126 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID |
127 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
128 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
129 "gb2312",
"gb2312",
"gb2312" },
130 {
"Chinese Simplified (GB2312-80)",
131 20936, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
132 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
133 "x-cp20936",
"x-cp20936",
"x-cp20936" },
134 {
"Chinese Simplified (HZ)",
135 52936, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
136 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
137 MIMECONTF_VALID | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
138 MIMECONTF_MIME_LATEST,
139 "hz-gb-2312",
"hz-gb-2312",
"hz-gb-2312" },
140 {
"Chinese Simplified (GB18030)",
141 54936, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
142 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
143 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
144 MIMECONTF_MIME_LATEST,
145 "GB18030",
"GB18030",
"GB18030" },
146 {
"Chinese Simplified (GBK)",
147 936, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
148 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
149 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
150 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
151 "gbk",
"gbk",
"gbk" }
155 {
"Chinese Traditional (Auto-Select)",
156 50950, MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
157 MIMECONTF_MIME_LATEST,
158 "_autodetect_cht",
"_autodetect_cht",
"_autodetect_cht" },
159 {
"Chinese Traditional (Big5)",
160 950, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
161 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
162 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
163 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
164 "big5",
"big5",
"big5" },
165 {
"Chinese Traditional (CNS)",
166 20000, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
167 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
168 "x-Chinese-CNS",
"x-Chinese-CNS",
"x-Chinese-CNS" }
172 {
"Central European (DOS)",
173 852, MIMECONTF_BROWSER | MIMECONTF_IMPORT | MIMECONTF_SAVABLE_BROWSER |
174 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
175 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
176 "ibm852",
"ibm852",
"ibm852" },
177 {
"Central European (Windows)",
178 1250, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
179 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
180 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
181 MIMECONTF_MIME_LATEST,
182 "windows-1250",
"windows-1250",
"windows-1250" },
183 {
"Central European (Mac)",
184 10029, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
185 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
186 "x-mac-ce",
"x-mac-ce",
"x-mac-ce" },
187 {
"Central European (ISO)",
188 28592, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
189 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
190 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
191 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
192 "iso-8859-2",
"iso-8859-2",
"iso-8859-2" }
197 855, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
198 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
199 "ibm855",
"ibm855",
"ibm855" },
201 866, MIMECONTF_BROWSER | MIMECONTF_IMPORT | MIMECONTF_SAVABLE_BROWSER |
202 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
203 MIMECONTF_MIME_LATEST,
204 "cp866",
"cp866",
"cp866" },
206 {
"Cyrillic (KOI8-R)",
207 878, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
208 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
209 "koi8-r",
"koi8-r",
"koi8-r" },
211 {
"Cyrillic (Windows)",
212 1251, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
213 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
214 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
215 "windows-1251",
"windows-1251",
"windows-1251" },
217 10007, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
218 MIMECONTF_MIME_LATEST,
219 "x-mac-cyrillic",
"x-mac-cyrillic",
"x-mac-cyrillic" },
220 {
"Cyrillic (KOI8-R)",
221 20866, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
222 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
223 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
224 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
225 "koi8-r",
"koi8-r",
"koi8-r" },
226 {
"Cyrillic (KOI8-U)",
227 21866, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
228 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
229 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
230 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
231 "koi8-u",
"koi8-u",
"koi8-u" },
233 28595, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
234 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
235 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
236 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
237 "iso-8859-5",
"iso-8859-5",
"iso-8859-5" }
242 737, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
243 MIMECONTF_MIME_LATEST,
244 "ibm737",
"ibm737",
"ibm737" },
245 {
"Greek, Modern (DOS)",
246 869, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
247 MIMECONTF_MIME_LATEST,
248 "ibm869",
"ibm869",
"ibm869" },
249 {
"IBM EBCDIC (Greek Modern)",
250 875, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
251 MIMECONTF_MIME_LATEST,
252 "cp875",
"cp875",
"cp875" },
254 1253, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
255 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
256 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
257 "windows-1253",
"windows-1253",
"windows-1253" },
259 10006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
260 MIMECONTF_MIME_LATEST,
261 "x-mac-greek",
"x-mac-greek",
"x-mac-greek" },
263 28597, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
264 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
265 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
266 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
267 "iso-8859-7",
"iso-8859-7",
"iso-8859-7" }
272 424, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
273 MIMECONTF_MIME_LATEST,
274 "ibm424",
"ibm424",
"ibm424" },
276 856, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
277 MIMECONTF_MIME_LATEST,
278 "cp856",
"cp856",
"cp856" },
280 862, MIMECONTF_BROWSER | MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
281 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
282 MIMECONTF_MIME_LATEST,
283 "dos-862",
"dos-862",
"dos-862" },
284 {
"Hebrew (Windows)",
285 1255, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
286 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
287 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
288 "windows-1255",
"windows-1255",
"windows-1255" },
289 {
"Hebrew (ISO-Visual)",
290 28598, MIMECONTF_BROWSER | MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
291 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
292 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
293 "iso-8859-8",
"iso-8859-8",
"iso-8859-8" }
297 {
"Japanese (Auto-Select)",
298 50932, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
299 MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
300 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
301 "_autodetect",
"_autodetect",
"_autodetect" },
303 51932, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
304 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
305 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
306 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
307 "euc-jp",
"euc-jp",
"euc-jp" },
309 50220, MIMECONTF_IMPORT | MIMECONTF_MAILNEWS | MIMECONTF_EXPORT |
310 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID_NLS |
311 MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST |
313 "iso-2022-jp",
"iso-2022-jp",
"iso-2022-jp"},
314 {
"Japanese (JIS 0208-1990 and 0212-1990)",
315 20932, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
316 MIMECONTF_VALID | MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
317 "EUC-JP",
"EUC-JP",
"EUC-JP"},
318 {
"Japanese (JIS-Allow 1 byte Kana)",
319 50221, MIMECONTF_MAILNEWS | MIMECONTF_EXPORT | MIMECONTF_SAVABLE_BROWSER |
320 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID_NLS |
321 MIMECONTF_VALID | MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
322 "csISO2022JP",
"iso-2022-jp",
"iso-2022-jp"},
323 {
"Japanese (JIS-Allow 1 byte Kana - SO/SI)",
324 50222, MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_VALID |
325 MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
326 "iso-2022-jp",
"iso-2022-jp",
"iso-2022-jp"},
328 10001, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
329 MIMECONTF_VALID | MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
330 "x-mac-japanese",
"x-mac-japanese",
"x-mac-japanese"},
331 {
"Japanese (Shift-JIS)",
332 932, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
333 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
334 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
335 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
336 "shift_jis",
"iso-2022-jp",
"iso-2022-jp" }
341 949, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
342 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
343 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
344 MIMECONTF_MIME_LATEST,
345 "ks_c_5601-1987",
"ks_c_5601-1987",
"ks_c_5601-1987" }
350 874, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_MIME_LATEST,
351 "ibm-thai",
"ibm-thai",
"ibm-thai" }
356 857, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
357 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
358 "ibm857",
"ibm857",
"ibm857" },
359 {
"IBM EBCDIC (Turkish Latin-5)",
360 1026, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
361 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
362 "ibm1026",
"ibm1026",
"ibm1026" },
363 {
"Turkish (Windows)",
364 1254, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
365 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
366 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
367 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
368 "windows-1254",
"windows-1254",
"windows-1254" },
370 10081, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
371 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
372 "x-mac-turkish",
"x-mac-turkish",
"x-mac-turkish" },
374 28593, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
375 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_EXPORT | MIMECONTF_VALID |
376 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
377 "iso-8859-3",
"iso-8859-3",
"iso-8859-3" },
379 28599, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
380 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
381 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
382 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
383 "iso-8859-9",
"iso-8859-9",
"iso-8859-9" }
387 {
"Vietnamese (Windows)",
388 1258, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
389 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
390 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
391 MIMECONTF_MIME_LATEST,
392 "windows-1258",
"windows-1258",
"windows-1258" }
399 {
"IBM EBCDIC (US-Canada)",
400 37, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
401 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
402 "ibm037",
"ibm037",
"ibm037" },
403 {
"OEM United States",
404 437, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
405 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
406 "ibm437",
"ibm437",
"ibm437" },
407 {
"IBM EBCDIC (International)",
408 500, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
409 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
410 "ibm500",
"ibm500",
"ibm500" },
411 {
"Western European (DOS)",
412 850, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
413 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
414 "ibm850",
"ibm850",
"ibm850" },
415 {
"Portuguese (DOS)",
416 860, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
417 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
418 "ibm860",
"ibm860",
"ibm860" },
420 861, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
421 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
422 "ibm861",
"ibm861",
"ibm861" },
423 {
"French Canadian (DOS)",
424 863, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
425 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
426 "ibm863",
"ibm863",
"ibm863" },
428 865, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
429 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
430 "ibm865",
"ibm865",
"ibm865" },
431 {
"Western European (Windows)",
432 1252, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
433 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
434 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
435 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
436 "windows-1252",
"windows-1252",
"iso-8859-1" },
437 {
"Western European (Mac)",
438 10000, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
439 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
440 "macintosh",
"macintosh",
"macintosh" },
442 10079, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
443 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
444 "x-mac-icelandic",
"x-mac-icelandic",
"x-mac-icelandic" },
446 20127, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT | MIMECONTF_EXPORT |
447 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID |
448 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
449 "us-ascii",
"us-ascii",
"us-ascii",
asciiW },
450 {
"Western European (ISO)",
451 28591, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
452 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
453 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
454 MIMECONTF_MIME_LATEST,
455 "iso-8859-1",
"iso-8859-1",
"iso-8859-1" },
457 28605, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
458 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
459 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
460 MIMECONTF_MIME_LATEST,
461 "iso-8859-15",
"iso-8859-15",
"iso-8859-15" }
466 CP_UNICODE, MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
467 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
468 MIMECONTF_VALID | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
469 MIMECONTF_MIME_LATEST,
470 "unicode",
"unicode",
"unicode" },
472 CP_UTF7, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
473 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_EXPORT | MIMECONTF_VALID |
474 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
475 "utf-7",
"utf-7",
"utf-7" },
477 CP_UTF8, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
478 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
479 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
480 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
481 "utf-8",
"utf-8",
"utf-8" }
496 "Simplified Arabic Fixed",
"Simplified Arabic", sidArabic },
498 "Courier New",
"Arial", sidAsciiLatin },
500 "Simsun",
"Simsun", sidHan },
502 "MingLiu",
"New MingLiu", sidBopomofo },
504 "Courier New",
"Arial", sidAsciiLatin },
506 "Courier New",
"Arial", sidCyrillic },
508 "Courier New",
"Arial", sidGreek },
510 "Miriam Fixed",
"David", sidHebrew },
512 "MS Gothic",
"MS PGothic", sidKana },
514 "GulimChe",
"Gulim", sidHangul },
516 "Tahoma",
"Tahoma", sidThai },
518 "Courier New",
"Arial", sidAsciiLatin },
520 "Courier New",
"Arial", sidAsciiLatin },
522 "Courier New",
"Arial", sidAsciiLatin },
524 "Courier New",
"Arial" }
541 0, 0, { (
DWORD_PTR)(__FILE__
": font_cache_critical") }
553#define HANKATA(A) ((A >= 161) && (A <= 223))
554#define ISEUC(A) ((A >= 161) && (A <= 254))
555#define NOTEUC(A,B) (((A >= 129) && (A <= 159)) && ((B >= 64) && (B <= 160)))
556#define SJIS1(A) (((A >= 129) && (A <= 159)) || ((A >= 224) && (A <= 239)))
557#define SJIS2(A) ((A >= 64) && (A <= 252))
558#define ISMARU(A) ((A >= 202) && (A <= 206))
559#define ISNIGORI(A) (((A >= 182) && (A <= 196)) || ((A >= 202) && (A <= 206)))
582 if (c1 ==
'B' || c1 ==
'@')
598 else if (((c1 == 142)) &&
HANKATA(c2))
606static inline void jis2sjis(
unsigned char *p1,
unsigned char *p2)
608 unsigned char c1 = *p1;
609 unsigned char c2 = *p2;
610 int row = c1 < 95 ? 112 : 176;
611 int cell = c1 % 2 ? 31 + (c2 > 95) : 126;
613 *p1 = ((c1 + 1) >> 1) +
row;
617static inline void sjis2jis(
unsigned char *p1,
unsigned char *p2)
619 unsigned char c1 = *p1;
620 unsigned char c2 = *p2;
621 int shift = c2 < 159;
622 int row = c1 < 160 ? 112 : 176;
623 int cell =
shift ? (31 + (c2 > 127)): 126;
629static int han2zen(
unsigned char *p1,
unsigned char *p2)
633 static const unsigned char char1[] = {129,129,129,129,129,131,131,131,131,
634 131,131,131,131,131,131,129,131,131,131,131,131,131,131,131,131,131,
635 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
636 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
638 static const unsigned char char2[] = {66,117,118,65,69,146,64,66,68,70,
639 72,131,133,135,98,91,65,67,69,71,73,74,76,78,80,82,84,86,88,90,92,94,
640 96,99,101,103,105,106,107,108,109,110,113,116,119,122,125,126,128,
641 129,130,132,134,136,137,138,139,140,141,143,147,74,75};
643 if (( *p2 == 222) && ((
ISNIGORI(*p1) || (*p1 == 179))))
645 else if ((*p2 == 223) && (
ISMARU(*p1)))
648 if (*p1 >= 161 && *p1 <= 223)
650 unsigned char index = *p1 - 161;
659 if (((*p2 >= 74) && (*p2 <= 103)) || ((*p2 >= 110) && (*p2 <= 122)))
661 else if ((*p1 == 131) && (*p2 == 69))
664 else if ((maru) && ((*p2 >= 110) && (*p2 <= 122)))
690 if (p2 ==
'$' || p2 ==
'(')
692 if (p2 ==
'K' || p2 ==
'$')
752 if (
p == 10 ||
p == 13)
962 TRACE(
"%p %d %s %p %p %p\n", pdwMode, dwEncoding,
963 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
969 pcSrcSize = &src_len;
978 if (dwEncoding == 51932)
984 if (*pcSrcSize == -1)
986 *pcDstSize =
min(*pcSrcSize, *pcDstSize);
987 *pcSrcSize *=
sizeof(
WCHAR);
1002 if (*pcSrcSize == -1)
1006 *pcDstSize =
MultiByteToWideChar(dwEncoding, 0, pSrcStr, *pcSrcSize, pDstStr, *pcDstSize);
1029 TRACE(
"%p %d %s %p %p %p\n", pdwMode, dwEncoding,
1030 debugstr_w(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1036 pcSrcSize = &src_len;
1038 destsz = (pDstStr) ? *pcDstSize : 0;
1041 if (!pSrcStr || !*pcSrcSize)
1044 if (*pcSrcSize == -1)
1048 if (dwEncoding == 51932)
1053 if (*pcSrcSize == -1)
1063 else if (dwEncoding == 50220 || dwEncoding == 50221 || dwEncoding == 50222)
1105 DWORD dwSrcEncoding,
1106 DWORD dwDstEncoding,
1113 TRACE(
"%p %d %d %s %p %p %p\n", pdwMode, dwSrcEncoding, dwDstEncoding,
1114 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1119 if (pcSrcSize && *pcSrcSize != -1)
1121 cSrcSizeW = *pcSrcSize /
sizeof(
WCHAR);
1122 pcSrcSize = &cSrcSizeW;
1129 *pcDstSize *=
sizeof(
WCHAR);
1138 TRACE(
"convert %s from %d to %d\n",
debugstr_a(pSrcStr), dwSrcEncoding, dwDstEncoding);
1156 UINT* puiFamilyCodePage)
1160 TRACE(
"%u %p\n", uiCodePage, puiFamilyCodePage);
1162 if (!puiFamilyCodePage)
return S_FALSE;
1180 DWORD dwSrcEncoding,
1181 DWORD dwDstEncoding)
1183 UINT src_family, dst_family;
1185 TRACE(
"%d %d\n", dwSrcEncoding, dwDstEncoding);
1191 if (src_family == dst_family)
return S_OK;
1258 TRACE(
"%04x %p %u\n", lcid, pszRfc1766, nChar);
1270 TRACE(
"%04x %p %u\n", lcid, pszRfc1766, nChar);
1282 while (IEnumRfc1766_Next(iface, 1, &
info, &
num) ==
S_OK)
1301 IEnumRfc1766 *enumrfc1766;
1306 if (!pLocale || !pszRfc1766)
1314 IEnumRfc1766_Release(enumrfc1766);
1321 WCHAR rfc1766W[MAX_RFC1766_NAME + 1];
1327 rfc1766W[MAX_RFC1766_NAME] = 0;
1336 HFONT new_font, old_font;
1346 for (
i = 0;
i < 32;
i++)
1349 if (codepages &
mask)
1357 found_cached =
FALSE;
1364 if (dst_font !=
NULL)
1365 *dst_font = font_list_entry->
font;
1366 found_cached =
TRUE;
1370 if (found_cached)
return S_OK;
1372 GetObjectW(src_font,
sizeof(font_attr), &font_attr);
1377 if (new_font ==
NULL)
continue;
1388 font_list_entry->
font = new_font;
1395 if (dst_font !=
NULL)
1396 *dst_font = new_font;
1479 IClassFactory_AddRef(iface);
1521 hres = IUnknown_QueryInterface(punk,
riid, ppobj);
1522 IUnknown_Release(punk);
1524 TRACE(
"returning (%p) -> %x\n", *ppobj,
hres);
1620 IEnumCodePage* iface,
1631 IEnumCodePage_AddRef(iface);
1632 TRACE(
"Returning IID_IEnumCodePage %p ref = %d\n",
This,
This->ref);
1642 IEnumCodePage* iface)
1649 IEnumCodePage* iface)
1666 IEnumCodePage* iface,
1667 IEnumCodePage** ppEnum)
1675 IEnumCodePage* iface,
1678 ULONG* pceltFetched)
1683 TRACE(
"%p %u %p %p\n",
This, celt, rgelt, pceltFetched);
1685 if (!pceltFetched)
return S_FALSE;
1690 if (
This->pos + celt >
This->total)
1695 memcpy(rgelt,
This->cpinfo +
This->pos, celt *
sizeof(MIMECPINFO));
1696 *pceltFetched = celt;
1699 for (
i = 0;
i < celt;
i++)
1701 TRACE(
"#%u: %08x %u %u %s %s %s %s %s %s %d\n",
1703 rgelt[
i].uiFamilyCodePage,
1710 rgelt[
i].bGDICharset);
1716 IEnumCodePage* iface)
1727 IEnumCodePage* iface,
1752 LANGID LangId, IEnumCodePage** ppEnumCodePage )
1758 TRACE(
"%p, %08x, %04x, %p\n",
mlang, grfFlags, LangId, ppEnumCodePage);
1761 grfFlags = MIMECONTF_MIME_LATEST;
1778 sizeof(MIMECPINFO) * ecp->
total);
1790 TRACE(
"enumerated %d codepages with flags %08x\n", ecp->
total, grfFlags);
1824 IEnumScript_AddRef(iface);
1825 TRACE(
"Returning IID_IEnumScript %p ref = %d\n",
This,
This->ref);
1860 IEnumScript** ppEnum)
1871 ULONG* pceltFetched)
1875 TRACE(
"%p %u %p %p\n",
This, celt, rgelt, pceltFetched);
1877 if (!pceltFetched || !rgelt)
return E_FAIL;
1881 if (
This->pos + celt >
This->total)
1886 memcpy(rgelt,
This->script_info +
This->pos, celt *
sizeof(SCRIPTINFO));
1887 *pceltFetched = celt;
1930 LANGID LangId, IEnumScript** ppEnumScript )
1938 dwFlags = SCRIPTCONTF_SCRIPT_USER | SCRIPTCONTF_SCRIPT_HIDE | SCRIPTCONTF_SCRIPT_SYSTEM;
1948 for (
i = 0;
i <
es->total;
i++)
1950 es->script_info[
i].ScriptId =
i;
1953 es->script_info[
i].wszDescription, MAX_SCRIPT_NAME);
1955 es->script_info[
i].wszFixedWidthFont, MAX_MIMEFACE_NAME);
1957 es->script_info[
i].wszProportionalFont, MAX_MIMEFACE_NAME);
1960 TRACE(
"enumerated %d scripts with flags %08x\n",
es->total,
dwFlags);
1962 *ppEnumScript = &
es->IEnumScript_iface;
1975 IMLangFontLink* iface,
1980 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid,
ppvObject );
1984 IMLangFontLink* iface)
1987 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
1991 IMLangFontLink* iface)
1994 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
1998 IMLangFontLink* iface,
2003 return IMLangFontLink2_GetCharCodePages(&
This->IMLangFontLink2_iface, ch_src, codepages);
2007 IMLangFontLink* iface,
2015 return IMLangFontLink2_GetStrCodePages(&
This->IMLangFontLink2_iface,
src, src_len, priority_cp,
2020 IMLangFontLink* iface,
2025 return IMLangFontLink2_CodePageToCodePages(&
This->IMLangFontLink2_iface,
codepage, codepages);
2029 IMLangFontLink* iface,
2035 return IMLangFontLink2_CodePagesToCodePage(&
This->IMLangFontLink2_iface, codepages,
2040 IMLangFontLink* iface,
2046 return IMLangFontLink2_GetFontCodePages(&
This->IMLangFontLink2_iface,
hdc,
hfont, codepages);
2050 IMLangFontLink* iface,
2056 TRACE(
"(%p)->%p %08x %p %p\n",iface,
hDC, dwCodePages, hSrcFont, phDestFont);
2058 return map_font(
hDC, dwCodePages, hSrcFont, phDestFont);
2062 IMLangFontLink* iface,
2071 IMLangFontLink* iface)
2073 TRACE(
"(%p)\n",iface);
2102 IMultiLanguage* iface,
2107 return IMultiLanguage3_QueryInterface(&
This->IMultiLanguage3_iface,
riid,
obj);
2113 return IMultiLanguage3_AddRef(&
This->IMultiLanguage3_iface);
2119 return IMultiLanguage3_Release(&
This->IMultiLanguage3_iface);
2123 IMultiLanguage* iface,
2128 return IMultiLanguage3_GetNumberOfCodePageInfo(&
This->IMultiLanguage3_iface,
cp);
2132 IMultiLanguage* iface,
2134 PMIMECPINFO pCodePageInfo)
2139 TRACE(
"%p, %u, %p\n",
This, uiCodePage, pCodePageInfo);
2157 IMultiLanguage* iface,
2162 return IMultiLanguage3_GetFamilyCodePage(&
This->IMultiLanguage3_iface,
cp, family_cp);
2166 IMultiLanguage* iface,
2168 IEnumCodePage** ppEnumCodePage)
2172 TRACE(
"%p %08x %p\n",
This, grfFlags, ppEnumCodePage);
2178 IMultiLanguage* iface,
2180 PMIMECSETINFO pCharsetInfo)
2183 return IMultiLanguage3_GetCharsetInfo( &
This->IMultiLanguage3_iface, Charset, pCharsetInfo );
2187 IMultiLanguage* iface,
2192 return IMultiLanguage3_IsConvertible(&
This->IMultiLanguage3_iface, src_enc, dst_enc);
2196 IMultiLanguage* iface,
2206 return IMultiLanguage3_ConvertString(&
This->IMultiLanguage3_iface,
mode, src_enc,
2207 dst_enc,
src, src_size,
dest, dest_size);
2211 IMultiLanguage* iface,
2220 return IMultiLanguage3_ConvertStringToUnicode(&
This->IMultiLanguage3_iface,
2225 IMultiLanguage* iface,
2234 return IMultiLanguage3_ConvertStringFromUnicode(&
This->IMultiLanguage3_iface,
2239 IMultiLanguage* iface)
2242 return IMultiLanguage3_ConvertStringReset(&
This->IMultiLanguage3_iface);
2246 IMultiLanguage* iface,
2251 return IMultiLanguage3_GetRfc1766FromLcid(&
This->IMultiLanguage3_iface, lcid, pbstrRfc1766);
2255 IMultiLanguage* iface,
2260 return IMultiLanguage3_GetLcidFromRfc1766(&
This->IMultiLanguage3_iface,
locale, rfc1766);
2279 IEnumRfc1766 *iface,
2290 IEnumRfc1766_AddRef(iface);
2291 TRACE(
"Returning IID_IEnumRfc1766 %p ref = %d\n",
This,
This->ref);
2301 IEnumRfc1766 *iface)
2308 IEnumRfc1766 *iface)
2324 IEnumRfc1766 *iface,
2325 IEnumRfc1766 **ppEnum)
2334 IEnumRfc1766 *iface,
2337 ULONG *pceltFetched)
2342 TRACE(
"%p %u %p %p\n",
This, celt, rgelt, pceltFetched);
2344 if (!pceltFetched)
return S_FALSE;
2349 if (
This->pos + celt >
This->total)
2354 memcpy(rgelt,
This->info +
This->pos, celt *
sizeof(RFC1766INFO));
2355 *pceltFetched = celt;
2358 for (
i = 0;
i < celt;
i++)
2360 TRACE(
"#%u: %08x %s %s\n",
2369 IEnumRfc1766 *iface)
2380 IEnumRfc1766 *iface,
2418 if (
data->total >=
data->allocated)
2420 data->allocated += 32;
2431 info->wszRfc1766[0] = 0;
2434 info->wszLocaleName[0] = 0;
2448 TRACE(
"%04x, %p\n", LangId, ppEnum);
2457 data.allocated = 160;
2469 TRACE(
"enumerated %d rfc1766 structures\n",
data.total);
2486 IMultiLanguage *iface,
2487 IEnumRfc1766 **ppEnumRfc1766)
2499 IMultiLanguage* iface,
2501 PRFC1766INFO pRfc1766Info)
2505 TRACE(
"(%p, 0x%04x, %p)\n", iface, Locale, pRfc1766Info);
2520 TRACE(
"SUBLANGID missing in 0x%04x\n", Locale);
2525 pRfc1766Info->lcid = Locale;
2526 pRfc1766Info->wszRfc1766[0] = 0;
2527 pRfc1766Info->wszLocaleName[0] = 0;
2529 if ((!
lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2538 IMultiLanguage* iface,
2545 return IMultiLanguage3_CreateConvertCharset(&
This->IMultiLanguage3_iface, src_cp, dst_cp, prop,
convert_charset);
2579 IMultiLanguage3* iface,
2590 *
obj = &
This->IMultiLanguage_iface;
2595 *
obj = &
This->IMLangFontLink_iface;
2599 *
obj = &
This->IMLangFontLink2_iface;
2604 *
obj = &
This->IMultiLanguage3_iface;
2608 *
obj = &
This->IMLangLineBreakConsole_iface;
2617 IMultiLanguage3_AddRef(iface);
2643 IMultiLanguage3* iface,
2652 *pcCodePage =
This->total_cp;
2662 mime_cp_info->bGDICharset = csi.
ciCharset;
2670 mime_cp_info->wszDescription,
ARRAY_SIZE(mime_cp_info->wszDescription));
2672 mime_cp_info->wszWebCharset,
ARRAY_SIZE(mime_cp_info->wszWebCharset));
2674 mime_cp_info->wszHeaderCharset,
ARRAY_SIZE(mime_cp_info->wszHeaderCharset));
2676 mime_cp_info->wszBodyCharset,
ARRAY_SIZE(mime_cp_info->wszBodyCharset));
2679 mime_cp_info->wszFixedWidthFont,
ARRAY_SIZE(mime_cp_info->wszFixedWidthFont));
2681 mime_cp_info->wszProportionalFont,
ARRAY_SIZE(mime_cp_info->wszProportionalFont));
2683 TRACE(
"%08x %u %u %s %s %s %s %s %s %d\n",
2684 mime_cp_info->dwFlags, mime_cp_info->uiCodePage,
2685 mime_cp_info->uiFamilyCodePage,
2692 mime_cp_info->bGDICharset);
2696 IMultiLanguage3* iface,
2699 PMIMECPINFO pCodePageInfo)
2704 TRACE(
"%p, %u, %04x, %p\n",
This, uiCodePage, LangId, pCodePageInfo);
2722 IMultiLanguage3* iface,
2724 UINT* puiFamilyCodePage)
2730 IMultiLanguage3* iface,
2733 IEnumCodePage** ppEnumCodePage)
2737 TRACE(
"%p %08x %04x %p\n",
This, grfFlags, LangId, ppEnumCodePage);
2743 IMultiLanguage3* iface,
2745 PMIMECSETINFO pCharsetInfo)
2752 if (!pCharsetInfo)
return E_FAIL;
2758 WCHAR csetW[MAX_MIMECSET_NAME];
2765 lstrcpyW(pCharsetInfo->wszCharset, csetW);
2787 WCHAR csetW[MAX_MIMECSET_NAME];
2794 lstrcpyW(pCharsetInfo->wszCharset, csetW);
2804 IMultiLanguage3* iface,
2805 DWORD dwSrcEncoding,
2806 DWORD dwDstEncoding)
2812 IMultiLanguage3* iface,
2814 DWORD dwSrcEncoding,
2815 DWORD dwDstEncoding,
2826 IMultiLanguage3* iface,
2835 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
2839 IMultiLanguage3* iface,
2848 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
2852 IMultiLanguage3* iface)
2859 IMultiLanguage3* iface,
2865 TRACE(
"%p %04x %p\n", iface, lcid, pbstrRfc1766);
2878 IMultiLanguage3* iface,
2883 IEnumRfc1766 *rfc1766;
2887 if (!pLocale || !bstrRfc1766)
2890 hr = IMultiLanguage3_EnumRfc1766(iface, 0, &rfc1766);
2896 IEnumRfc1766_Release(rfc1766);
2901 IMultiLanguage3* iface,
2903 IEnumRfc1766** ppEnumRfc1766)
2913 IMultiLanguage3* iface,
2916 PRFC1766INFO pRfc1766Info)
2918 static LANGID last_lang = -1;
2921 TRACE(
"(%p, 0x%04x, 0x%04x, %p)\n", iface, Locale, LangId, pRfc1766Info);
2936 TRACE(
"SUBLANGID missing in 0x%04x\n", Locale);
2941 pRfc1766Info->lcid = Locale;
2942 pRfc1766Info->wszRfc1766[0] = 0;
2943 pRfc1766Info->wszLocaleName[0] = 0;
2946 (last_lang != LangId)) {
2947 FIXME(
"Only English names supported (requested: 0x%04x)\n", LangId);
2951 if ((!
lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2960 IMultiLanguage3* iface,
2973 return IMLangConvertCharset_Initialize(*
convert_charset, src_cp, dst_cp, prop);
2977 IMultiLanguage3* iface,
2981 DWORD dwSrcEncoding,
2982 DWORD dwDstEncoding,
2991 TRACE(
"%p %0x8 %s %u %u %p %p\n",
2992 pdwMode, dwFlag,
debugstr_w(lpFallBack), dwSrcEncoding, dwDstEncoding, pstmIn, pstmOut);
2994 FIXME(
"dwFlag and lpFallBack not handled\n");
2996 hr = IStream_Stat(pstmIn, &
stat, STATFLAG_NONAME);
3025 IMultiLanguage3* iface,
3035 if (dwFlag || lpFallBack)
3036 FIXME(
"Ignoring dwFlag (0x%x/%d) and lpFallBack (%p)\n",
3037 dwFlag, dwFlag, lpFallBack);
3040 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
3062 IMultiLanguage3*
This,
3074 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
3078 IMultiLanguage3* iface,
3080 DWORD dwPrefWinCodePage,
3082 DetectEncodingInfo* lpEncoding,
3090 IMultiLanguage3* iface,
3092 DWORD dwPrefWinCodePage,
3095 DetectEncodingInfo* lpEncoding,
3103 IMultiLanguage3* iface,
3107 return IMultiLanguage3_ValidateCodePageEx(iface,uiCodePage,
hwnd,0);
3111 IMultiLanguage3* iface,
3120 TRACE (
"%u, %04x, %p, %d\n", uiCodePage, lcid, lpWideCharStr, cchWideChar);
3129 -1, lpWideCharStr, cchWideChar);
3139 IMultiLanguage3* iface,
3142 TRACE(
"%u\n", uiCodePage);
3145 return IMultiLanguage3_ValidateCodePageEx(iface, uiCodePage,
NULL, CPIOD_PEEK);
3149 IMultiLanguage3* iface,
3152 FIXME(
"0x%08x\n", dwSource);
3157 IMultiLanguage3* iface,
3164 if (!pnScripts)
return S_FALSE;
3166 *pnScripts =
This->total_scripts;
3171 IMultiLanguage3* iface,
3174 IEnumScript** ppEnumScript)
3184 IMultiLanguage3* iface,
3187 DWORD dwfIODControl)
3192 TRACE(
"%p %u %p %08x\n",
This, uiCodePage,
hwnd, dwfIODControl);
3209 if (dwfIODControl != CPIOD_PEEK)
3210 FIXME(
"Request to install codepage language pack not handled\n");
3216 IMultiLanguage3 *iface,
3220 UINT *puiPreferredCodePages,
3221 UINT nPreferredCodePages,
3222 UINT *puiDetectedCodePages,
3223 UINT *pnDetectedCodePages,
3224 WCHAR *lpSpecialChar)
3229 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3230 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3233 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3236 puiDetectedCodePages[0] =
CP_UTF8;
3237 *pnDetectedCodePages = 1;
3242 IMultiLanguage3 *iface,
3245 UINT *puiPreferredCodePages,
3246 UINT nPreferredCodePages,
3247 UINT *puiDetectedCodePages,
3248 UINT *pnDetectedCodePages,
3249 WCHAR *lpSpecialChar)
3254 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3255 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3258 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3261 puiDetectedCodePages[0] =
CP_UTF8;
3262 *pnDetectedCodePages = 1;
3310 IMLangFontLink2 * iface,
3315 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid,
ppvObject );
3321 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
3327 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
3346 &ch_src, 1, &
buf, 1,
NULL, &used_dc);
3353 IMLangFontLink2_CodePageToCodePages(iface,
3355 *ret_codepages |= codepages;
3372 if (codepages) *codepages = 0;
3375 if (!
src || !src_len || src_len < 0)
3378 for (
i = 0;
i < src_len;
i++)
3383 ret = IMLangFontLink2_GetCharCodePages(iface,
src[
i], &
cp);
3390 if (priority_cp & cps)
break;
3393 if (codepages) *codepages = cps;
3411 *codepages =
cs.fs.fsCsb[0];
3412 TRACE(
"resulting codepages 0x%x\n", *codepages);
3416 TRACE(
"codepage not found\n");
3435 if (rc && (codepages &
cs.fs.fsCsb[0]))
3437 TRACE(
"Found Default Codepage\n");
3442 for (
i = 0;
i < 32;
i++)
3445 if (codepages &
mask)
3454 TRACE(
"Falling back to least significant found CodePage %u\n",
3461 TRACE(
"no codepage found\n");
3478 *codepages = fontsig.
fsCsb[0];
3504 TRACE(
"(%p)->%p %08x %04x %p\n",
This,
hDC, dwCodePages, chSrc, pFont);
3508 if (dwCodePages != 0)
3511 return map_font(
hDC, dwCodePages, old_font, pFont);
3516 FIXME(
"the situation where dwCodepages is set to zero is not implemented\n");
3522 HDC hDC,
UINT *puiRanges, UNICODERANGE *pUranges)
3527 TRACE(
"(%p)->%p %p %p\n",
This,
hDC, puiRanges, pUranges);
3533 GetFontUnicodeRanges(
hDC,
gs);
3534 *puiRanges =
gs->cRanges;
3538 for (
i = 0;
i <
gs->cRanges;
i++)
3540 if (
i >= *puiRanges)
break;
3541 pUranges[
i].wcFrom =
gs->ranges[
i].wcLow;
3542 pUranges[
i].wcTo =
gs->ranges[
i].wcLow +
gs->ranges[
i].cGlyphs;
3552 SCRIPTFONTINFO *pScriptFont)
3566 if (
j >= *puiFonts)
break;
3569 if (
dwFlags == SCRIPTCONTF_FIXED_FONT)
3572 pScriptFont[
j].wszFont, MAX_MIMEFACE_NAME);
3574 else if (
dwFlags == SCRIPTCONTF_PROPORTIONAL_FONT)
3577 pScriptFont[
j].wszFont, MAX_MIMEFACE_NAME);
3633 IMLangLineBreakConsole* iface,
3638 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid,
ppvObject );
3642 IMLangLineBreakConsole* iface )
3645 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
3649 IMLangLineBreakConsole* iface )
3652 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
3656 IMLangLineBreakConsole* iface,
3657 IMLangString* pSrcMLStr,
3665 FIXME(
"(%p)->%p %i %i %i %i %p %p\n", iface, pSrcMLStr, lSrcPos, lSrcLen, cMinColumns, cMaxColumns, plLineLen, plSkipLen);
3670 IMLangLineBreakConsole* iface,
3672 const WCHAR* pszSrc,
3678 FIXME(
"(%p)->%i %s %i %i %p %p\n", iface,
locale,
debugstr_wn(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip);
3686 IMLangLineBreakConsole* iface,
3697 FIXME(
"(%p)->%i %i %s %i %i %p %p\n", iface,
locale, uCodePage,
debugstr_an(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip);
3699 if (uCodePage == CP_USASCII && cchSrc > cMaxColumns)
3701 for (
line = cMaxColumns,
i = cMaxColumns - 1;
i >= 0;
i--)
3703 if (pszSrc[
i] ==
' ')
3705 while (
i >= 0 && pszSrc[
i] ==
' ')
3751 *
obj = &
This->IMLangConvertCharset_iface;
3752 IMLangConvertCharset_AddRef(iface);
3790 prop &= ~MLCONVCHARF_USEDEFCHAR;
3792 FIXME(
"property 0x%08x not supported\n", prop);
3825 FIXME(
"(%p)->(%p): stub\n",
This, prop);
3833 FIXME(
"(%p)->(%p %p %p %p): stub\n",
This,
src, src_size,
dest, dest_size);
3872 TRACE(
"Creating MultiLanguage object\n");
3884 mlang->total_cp = 0;
3892 *ppObj = &
mlang->IMultiLanguage_iface;
3937 static const WCHAR db_key_nameW[] = {
3939 '\\',
'D',
'a',
't',
'a',
'b',
'a',
's',
'e',
3940 '\\',
'C',
'o',
'd',
'e',
'p',
'a',
'g',
'e',0};
3941 static const WCHAR familyW[] = {
'F',
'a',
'm',
'i',
'l',
'y',0};
3942 static const WCHAR formatW[] = {
'%',
'u',0};
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
static const WCHAR szClassName[]
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
static __inline const char * debugstr_an(const char *s, int n)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
LPVOID WINAPI TlsGetValue(IN DWORD Index)
DWORD WINAPI TlsAlloc(VOID)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
BOOL WINAPI TlsFree(IN DWORD Index)
BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW lpfnLocaleEnum, DWORD dwFlags)
INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
BOOL WINAPI IsValidCodePage(UINT codepage)
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
static int exit_shift(LPSTR out, int c)
static const IMLangFontLink2Vtbl IMLangFontLink2_vtbl
static HRESULT WINAPI fnIMultiLanguage_IsConvertible(IMultiLanguage *iface, DWORD src_enc, DWORD dst_enc)
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766FromLcid(IMultiLanguage *iface, LCID lcid, BSTR *pbstrRfc1766)
static HRESULT WINAPI fnIEnumRfc1766_Skip(IEnumRfc1766 *iface, ULONG celt)
static HRESULT map_font(HDC hdc, DWORD codepages, HFONT src_font, HFONT *dst_font)
static HRESULT MLangConvertCharset_create(IUnknown *outer, void **obj)
static HRESULT WINAPI fnIMultiLanguage3_SetMimeDBSource(IMultiLanguage3 *iface, MIMECONTF dwSource)
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringReset(IMultiLanguage3 *iface)
static const IClassFactoryVtbl MLANGCF_Vtbl
static HRESULT WINAPI fnIEnumCodePage_Next(IEnumCodePage *iface, ULONG celt, PMIMECPINFO rgelt, ULONG *pceltFetched)
static const MIME_CP_INFO thai_cp[]
static HRESULT GetFamilyCodePage(UINT uiCodePage, UINT *puiFamilyCodePage)
static HRESULT WINAPI fnIMultiLanguage_GetCharsetInfo(IMultiLanguage *iface, BSTR Charset, PMIMECSETINFO pCharsetInfo)
static HRESULT WINAPI fnIMLangFontLink_MapFont(IMLangFontLink *iface, HDC hDC, DWORD dwCodePages, HFONT hSrcFont, HFONT *phDestFont)
static HRESULT WINAPI MLangConvertCharset_QueryInterface(IMLangConvertCharset *iface, REFIID riid, void **obj)
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
static HRESULT WINAPI fnIMLangFontLink2_CodePageToScriptID(IMLangFontLink2 *This, UINT uiCodePage, SCRIPT_ID *pSid)
static const IEnumCodePageVtbl IEnumCodePage_vtbl
static const struct object_creation_info object_creation[]
static ULONG WINAPI fnIEnumCodePage_Release(IEnumCodePage *iface)
static MLang_impl * impl_from_IMLangFontLink(IMLangFontLink *iface)
static ULONG WINAPI fnIEnumScript_AddRef(IEnumScript *iface)
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringInIStream(IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwFlag, WCHAR *lpFallBack, DWORD dwSrcEncoding, DWORD dwDstEncoding, IStream *pstmIn, IStream *pstmOut)
static HRESULT WINAPI fnIMultiLanguage3_QueryInterface(IMultiLanguage3 *iface, REFIID riid, void **obj)
struct tagEnumCodePage_impl EnumCodePage_impl
HRESULT WINAPI DllRegisterServer(void)
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicodeEx(IMultiLanguage3 *This, DWORD *pdwMode, DWORD dwEncoding, WCHAR *pSrcStr, UINT *pcSrcSize, CHAR *pDstStr, UINT *pcDstSize, DWORD dwFlag, WCHAR *lpFallBack)
static CRITICAL_SECTION_DEBUG font_cache_critical_debug
static HRESULT WINAPI fnIEnumRfc1766_QueryInterface(IEnumRfc1766 *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI fnIMLangFontLink2_AddRef(IMLangFontLink2 *iface)
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766Info(IMultiLanguage *iface, LCID Locale, PRFC1766INFO pRfc1766Info)
static HRESULT WINAPI fnIMLangFontLink2_QueryInterface(IMLangFontLink2 *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfScripts(IMultiLanguage3 *iface, UINT *pnScripts)
static ULONG WINAPI fnIEnumCodePage_AddRef(IEnumCodePage *iface)
static HRESULT WINAPI MLangConvertCharset_GetProperty(IMLangConvertCharset *iface, DWORD *prop)
static HRESULT release_font(HFONT font)
static HRESULT WINAPI fnIMultiLanguage3_EnumRfc1766(IMultiLanguage3 *iface, LANGID LangId, IEnumRfc1766 **ppEnumRfc1766)
static int enter_shift(LPSTR out, int c)
static HRESULT WINAPI fnIMLangFontLink2_ResetFontMapping(IMLangFontLink2 *This)
static HRESULT lcid_from_rfc1766(IEnumRfc1766 *iface, LCID *lcid, LPCWSTR rfc1766)
static HRESULT EnumScript_create(MLang_impl *mlang, DWORD dwFlags, LANGID LangId, IEnumScript **ppEnumScript)
static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePage(IMultiLanguage3 *iface, UINT uiCodePage, HWND hwnd)
static HRESULT WINAPI fnIMultiLanguage3_DetectInputCodepage(IMultiLanguage3 *iface, DWORD dwFlag, DWORD dwPrefWinCodePage, CHAR *pSrcStr, INT *pcSrcSize, DetectEncodingInfo *lpEncoding, INT *pnScores)
static void fill_cp_info(const struct mlang_data *ml_data, UINT index, MIMECPINFO *mime_cp_info)
static HRESULT WINAPI MLangConvertCharset_DoConversion(IMLangConvertCharset *iface, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
static const MIME_CP_INFO arabic_cp[]
static HRESULT WINAPI fnIMLangFontLink2_GetCharCodePages(IMLangFontLink2 *iface, WCHAR ch_src, DWORD *ret_codepages)
static HRESULT WINAPI fnIMultiLanguage_GetFamilyCodePage(IMultiLanguage *iface, UINT cp, UINT *family_cp)
static EnumRfc1766_impl * impl_from_IEnumRfc1766(IEnumRfc1766 *iface)
static UINT ConvertUnknownJapaneseToUnicode(LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
static DWORD MLANG_tls_index
static HRESULT WINAPI fnIMultiLanguage3_GetCodePageDescription(IMultiLanguage3 *iface, UINT uiCodePage, LCID lcid, LPWSTR lpWideCharStr, int cchWideChar)
static MLang_impl * impl_from_IMultiLanguage3(IMultiLanguage3 *iface)
static HRESULT WINAPI fnIMultiLanguage_CreateConvertCharset(IMultiLanguage *iface, UINT src_cp, UINT dst_cp, DWORD prop, IMLangConvertCharset **convert_charset)
static HRESULT WINAPI fnIMultiLanguage_ConvertStringFromUnicode(IMultiLanguage *iface, DWORD *mode, DWORD encoding, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
static int han2zen(unsigned char *p1, unsigned char *p2)
static const IEnumRfc1766Vtbl IEnumRfc1766_vtbl
static HRESULT EnumCodePage_create(MLang_impl *mlang, DWORD grfFlags, LANGID LangId, IEnumCodePage **ppEnumCodePage)
static HINSTANCE instance
static HRESULT WINAPI fnIMLangFontLink2_CodePagesToCodePage(IMLangFontLink2 *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
static HRESULT WINAPI fnIMLangFontLink_GetCharCodePages(IMLangFontLink *iface, WCHAR ch_src, DWORD *codepages)
static HRESULT WINAPI fnIEnumCodePage_Clone(IEnumCodePage *iface, IEnumCodePage **ppEnum)
static HRESULT WINAPI fnIMLangFontLink_CodePageToCodePages(IMLangFontLink *iface, UINT codepage, DWORD *codepages)
static EnumCodePage_impl * impl_from_IEnumCodePage(IEnumCodePage *iface)
static struct convert_charset * impl_from_IMLangConvertCharset(IMLangConvertCharset *iface)
static HRESULT WINAPI fnIMultiLanguage3_IsConvertible(IMultiLanguage3 *iface, DWORD dwSrcEncoding, DWORD dwDstEncoding)
static HRESULT WINAPI fnIMultiLanguage3_ConvertString(IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, BYTE *pSrcStr, UINT *pcSrcSize, BYTE *pDstStr, UINT *pcDstSize)
static ULONG WINAPI fnIMLangFontLink_Release(IMLangFontLink *iface)
static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface(IMLangLineBreakConsole *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI fnIMultiLanguage_ConvertStringToUnicode(IMultiLanguage *iface, DWORD *mode, DWORD src_enc, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
static HRESULT WINAPI fnIMLangFontLink_ResetFontMapping(IMLangFontLink *iface)
static struct list font_cache
static MLang_impl * impl_from_IMLangFontLink2(IMLangFontLink2 *iface)
static HRESULT WINAPI fnIMultiLanguage_GetCodePageInfo(IMultiLanguage *iface, UINT uiCodePage, PMIMECPINFO pCodePageInfo)
static HRESULT WINAPI MLANGCF_LockServer(IClassFactory *iface, BOOL dolock)
static HRESULT WINAPI fnIMultiLanguage_GetNumberOfCodePageInfo(IMultiLanguage *iface, UINT *cp)
static const IMLangConvertCharsetVtbl MLangConvertCharsetVtbl
static MLang_impl * impl_from_IMLangLineBreakConsole(IMLangLineBreakConsole *iface)
static UINT DetectJapaneseCode(LPCSTR input, DWORD count)
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineW(IMLangLineBreakConsole *iface, LCID locale, const WCHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
static HRESULT lcid_to_rfc1766W(LCID lcid, LPWSTR rfc1766, INT len)
HRESULT WINAPI DllUnregisterServer(void)
static const MIME_CP_INFO baltic_cp[]
static HRESULT WINAPI fnIMultiLanguage_QueryInterface(IMultiLanguage *iface, REFIID riid, void **obj)
static BOOL register_codepages(void)
static UINT ConvertJapaneseUnicodeToJIS(LPCWSTR input, DWORD count, LPSTR output, DWORD out_count)
static CRITICAL_SECTION font_cache_critical
static HRESULT WINAPI fnIEnumScript_Next(IEnumScript *iface, ULONG celt, PSCRIPTINFO rgelt, ULONG *pceltFetched)
static const MIME_CP_INFO chinese_traditional_cp[]
static HRESULT WINAPI fnIMultiLanguage_GetLcidFromRfc1766(IMultiLanguage *iface, LCID *locale, BSTR rfc1766)