76 864, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
77 MIMECONTF_MIME_LATEST,
78 L"ibm864",
L"ibm864",
L"ibm864" },
80 1006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
81 MIMECONTF_MIME_LATEST,
82 L"ibm1006",
L"ibm1006",
L"ibm1006" },
83 {
L"Arabic (Windows)",
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 L"windows-1256",
L"windows-1256",
L"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 L"iso-8859-6",
L"iso-8859-6",
L"iso-8859-6" }
98 775, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
99 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
100 L"ibm775",
L"ibm775",
L"ibm775" },
101 {
L"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 L"windows-1257",
L"windows-1257",
L"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 L"iso-8859-4",
L"iso-8859-4",
L"iso-8859-4" },
114 28603, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
115 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
116 L"iso-8859-13",
L"iso-8859-13",
L"iso-8859-13" }
120 {
L"Chinese Simplified (Auto-Select)",
121 50936, MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
122 MIMECONTF_MIME_LATEST,
123 L"_autodetect_chs",
L"_autodetect_chs",
L"_autodetect_chs" },
124 {
L"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 L"gb2312",
L"gb2312",
L"gb2312" },
130 {
L"Chinese Simplified (GB2312-80)",
131 20936, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
132 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
133 L"x-cp20936",
L"x-cp20936",
L"x-cp20936" },
134 {
L"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 L"hz-gb-2312",
L"hz-gb-2312",
L"hz-gb-2312" },
140 {
L"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 L"GB18030",
L"GB18030",
L"GB18030" },
146 {
L"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 L"gbk",
L"gbk",
L"gbk" }
155 {
L"Chinese Traditional (Auto-Select)",
156 50950, MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
157 MIMECONTF_MIME_LATEST,
158 L"_autodetect_cht",
L"_autodetect_cht",
L"_autodetect_cht" },
159 {
L"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 L"big5",
L"big5",
L"big5" },
165 {
L"Chinese Traditional (CNS)",
166 20000, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
167 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
168 L"x-Chinese-CNS",
L"x-Chinese-CNS",
L"x-Chinese-CNS" }
172 {
L"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 L"ibm852",
L"ibm852",
L"ibm852" },
177 {
L"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 L"windows-1250",
L"windows-1250",
L"windows-1250" },
183 {
L"Central European (Mac)",
184 10029, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
185 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
186 L"x-mac-ce",
L"x-mac-ce",
L"x-mac-ce" },
187 {
L"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 L"iso-8859-2",
L"iso-8859-2",
L"iso-8859-2" }
197 855, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
198 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
199 L"ibm855",
L"ibm855",
L"ibm855" },
201 866, MIMECONTF_BROWSER | MIMECONTF_IMPORT | MIMECONTF_SAVABLE_BROWSER |
202 MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
203 MIMECONTF_MIME_LATEST,
204 L"cp866",
L"cp866",
L"cp866" },
206 {
L"Cyrillic (KOI8-R)",
207 878, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
208 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
209 L"koi8-r",
L"koi8-r",
L"koi8-r" },
211 {
L"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 L"windows-1251",
L"windows-1251",
L"windows-1251" },
217 10007, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
218 MIMECONTF_MIME_LATEST,
219 L"x-mac-cyrillic",
L"x-mac-cyrillic",
L"x-mac-cyrillic" },
220 {
L"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 L"koi8-r",
L"koi8-r",
L"koi8-r" },
226 {
L"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 L"koi8-u",
L"koi8-u",
L"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 L"iso-8859-5",
L"iso-8859-5",
L"iso-8859-5" }
242 737, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
243 MIMECONTF_MIME_LATEST,
244 L"ibm737",
L"ibm737",
L"ibm737" },
245 {
L"Greek, Modern (DOS)",
246 869, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
247 MIMECONTF_MIME_LATEST,
248 L"ibm869",
L"ibm869",
L"ibm869" },
249 {
L"IBM EBCDIC (Greek Modern)",
250 875, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
251 MIMECONTF_MIME_LATEST,
252 L"cp875",
L"cp875",
L"cp875" },
253 {
L"Greek (Windows)",
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 L"windows-1253",
L"windows-1253",
L"windows-1253" },
259 10006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
260 MIMECONTF_MIME_LATEST,
261 L"x-mac-greek",
L"x-mac-greek",
L"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 L"iso-8859-7",
L"iso-8859-7",
L"iso-8859-7" }
272 424, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
273 MIMECONTF_MIME_LATEST,
274 L"ibm424",
L"ibm424",
L"ibm424" },
276 856, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
277 MIMECONTF_MIME_LATEST,
278 L"cp856",
L"cp856",
L"cp856" },
280 862, MIMECONTF_BROWSER | MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
281 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
282 MIMECONTF_MIME_LATEST,
283 L"dos-862",
L"dos-862",
L"dos-862" },
284 {
L"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 L"windows-1255",
L"windows-1255",
L"windows-1255" },
289 {
L"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 L"iso-8859-8",
L"iso-8859-8",
L"iso-8859-8" }
297 {
L"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 L"_autodetect",
L"_autodetect",
L"_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 L"euc-jp",
L"euc-jp",
L"euc-jp" },
309 50220, MIMECONTF_IMPORT | MIMECONTF_MAILNEWS | MIMECONTF_EXPORT |
310 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID_NLS |
311 MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST |
313 L"iso-2022-jp",
L"iso-2022-jp",
L"iso-2022-jp"},
314 {
L"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 L"EUC-JP",
L"EUC-JP",
L"EUC-JP"},
318 {
L"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 L"csISO2022JP",
L"iso-2022-jp",
L"iso-2022-jp"},
323 {
L"Japanese (JIS-Allow 1 byte Kana - SO/SI)",
324 50222, MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_VALID |
325 MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
326 L"iso-2022-jp",
L"iso-2022-jp",
L"iso-2022-jp"},
328 10001, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
329 MIMECONTF_VALID | MIMECONTF_PRIVCONVERTER | MIMECONTF_MIME_LATEST,
330 L"x-mac-japanese",
L"x-mac-japanese",
L"x-mac-japanese"},
331 {
L"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 L"shift_jis",
L"iso-2022-jp",
L"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 L"ks_c_5601-1987",
L"ks_c_5601-1987",
L"ks_c_5601-1987" }
350 874, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_MIME_LATEST,
351 L"ibm-thai",
L"ibm-thai",
L"ibm-thai" }
356 857, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
357 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
358 L"ibm857",
L"ibm857",
L"ibm857" },
359 {
L"IBM EBCDIC (Turkish Latin-5)",
360 1026, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
361 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
362 L"ibm1026",
L"ibm1026",
L"ibm1026" },
363 {
L"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 L"windows-1254",
L"windows-1254",
L"windows-1254" },
370 10081, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
371 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
372 L"x-mac-turkish",
L"x-mac-turkish",
L"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 L"iso-8859-3",
L"iso-8859-3",
L"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 L"iso-8859-9",
L"iso-8859-9",
L"iso-8859-9" }
387 {
L"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 L"windows-1258",
L"windows-1258",
L"windows-1258" }
397 {
L"IBM EBCDIC (US-Canada)",
398 37, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
399 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
400 L"ibm037",
L"ibm037",
L"ibm037" },
401 {
L"OEM United States",
402 437, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
403 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
404 L"ibm437",
L"ibm437",
L"ibm437" },
405 {
L"IBM EBCDIC (International)",
406 500, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
407 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
408 L"ibm500",
L"ibm500",
L"ibm500" },
409 {
L"Western European (DOS)",
410 850, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
411 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
412 L"ibm850",
L"ibm850",
L"ibm850" },
413 {
L"Portuguese (DOS)",
414 860, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
415 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
416 L"ibm860",
L"ibm860",
L"ibm860" },
417 {
L"Icelandic (DOS)",
418 861, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
419 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
420 L"ibm861",
L"ibm861",
L"ibm861" },
421 {
L"French Canadian (DOS)",
422 863, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
423 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
424 L"ibm863",
L"ibm863",
L"ibm863" },
426 865, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
427 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
428 L"ibm865",
L"ibm865",
L"ibm865" },
429 {
L"Western European (Windows)",
430 1252, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
431 MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
432 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
433 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
434 L"windows-1252",
L"windows-1252",
L"iso-8859-1" },
435 {
L"Western European (Mac)",
436 10000, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
437 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
438 L"macintosh",
L"macintosh",
L"macintosh" },
439 {
L"Icelandic (Mac)",
440 10079, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
441 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
442 L"x-mac-icelandic",
L"x-mac-icelandic",
L"x-mac-icelandic" },
444 20127, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT | MIMECONTF_EXPORT |
445 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID |
446 MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
447 L"us-ascii",
L"us-ascii",
L"us-ascii",
L"ascii" },
448 {
L"Western European (ISO)",
449 28591, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
450 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
451 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
452 MIMECONTF_MIME_LATEST,
453 L"iso-8859-1",
L"iso-8859-1",
L"iso-8859-1",
L"iso8859-1" },
455 28605, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
456 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
457 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
458 MIMECONTF_MIME_LATEST,
459 L"iso-8859-15",
L"iso-8859-15",
L"iso-8859-15" }
464 CP_UNICODE, MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
465 MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
466 MIMECONTF_VALID | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
467 MIMECONTF_MIME_LATEST,
468 L"unicode",
L"unicode",
L"unicode" },
469 {
L"Unicode (UTF-7)",
470 CP_UTF7, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
471 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_EXPORT | MIMECONTF_VALID |
472 MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
473 L"utf-7",
L"utf-7",
L"utf-7" },
474 {
L"Unicode (UTF-8)",
475 CP_UTF8, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
476 MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
477 MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
478 MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
479 L"utf-8",
L"utf-8",
L"utf-8" }
494 L"Simplified Arabic Fixed",
L"Simplified Arabic", sidArabic },
496 L"Courier New",
L"Arial", sidAsciiLatin },
498 L"Simsun",
L"Simsun", sidHan },
500 L"MingLiu",
L"New MingLiu", sidBopomofo },
502 L"Courier New",
L"Arial", sidAsciiLatin },
504 L"Courier New",
L"Arial", sidCyrillic },
506 L"Courier New",
L"Arial", sidGreek },
508 L"Miriam Fixed",
L"David", sidHebrew },
510 L"MS Gothic",
L"MS PGothic", sidKana },
512 L"GulimChe",
L"Gulim", sidHangul },
514 L"Tahoma",
L"Tahoma", sidThai },
516 L"Courier New",
L"Arial", sidAsciiLatin },
518 L"Courier New",
L"Arial", sidAsciiLatin },
520 L"Courier New",
L"Arial", sidAsciiLatin },
522 L"Courier New",
L"Arial" }
539 0, 0, { (
DWORD_PTR)(__FILE__
": font_cache_critical") }
551#define HANKATA(A) ((A >= 161) && (A <= 223))
552#define ISEUC(A) ((A >= 161) && (A <= 254))
553#define NOTEUC(A,B) (((A >= 129) && (A <= 159)) && ((B >= 64) && (B <= 160)))
554#define SJIS1(A) (((A >= 129) && (A <= 159)) || ((A >= 224) && (A <= 239)))
555#define SJIS2(A) ((A >= 64) && (A <= 252))
556#define ISMARU(A) ((A >= 202) && (A <= 206))
557#define ISNIGORI(A) (((A >= 182) && (A <= 196)) || ((A >= 202) && (A <= 206)))
580 if (c1 ==
'B' || c1 ==
'@')
596 else if (((c1 == 142)) &&
HANKATA(c2))
604static inline void jis2sjis(
unsigned char *p1,
unsigned char *p2)
606 unsigned char c1 = *p1;
607 unsigned char c2 = *p2;
608 int row = c1 < 95 ? 112 : 176;
609 int cell = c1 % 2 ? 31 + (c2 > 95) : 126;
611 *p1 = ((c1 + 1) >> 1) +
row;
615static inline void sjis2jis(
unsigned char *p1,
unsigned char *p2)
617 unsigned char c1 = *p1;
618 unsigned char c2 = *p2;
619 int shift = c2 < 159;
620 int row = c1 < 160 ? 112 : 176;
621 int cell =
shift ? (31 + (c2 > 127)): 126;
627static int han2zen(
unsigned char *p1,
unsigned char *p2)
631 static const unsigned char char1[] = {129,129,129,129,129,131,131,131,131,
632 131,131,131,131,131,131,129,131,131,131,131,131,131,131,131,131,131,
633 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
634 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
636 static const unsigned char char2[] = {66,117,118,65,69,146,64,66,68,70,
637 72,131,133,135,98,91,65,67,69,71,73,74,76,78,80,82,84,86,88,90,92,94,
638 96,99,101,103,105,106,107,108,109,110,113,116,119,122,125,126,128,
639 129,130,132,134,136,137,138,139,140,141,143,147,74,75};
641 if (( *p2 == 222) && ((
ISNIGORI(*p1) || (*p1 == 179))))
643 else if ((*p2 == 223) && (
ISMARU(*p1)))
646 if (*p1 >= 161 && *p1 <= 223)
648 unsigned char index = *p1 - 161;
657 if (((*p2 >= 74) && (*p2 <= 103)) || ((*p2 >= 110) && (*p2 <= 122)))
659 else if ((*p1 == 131) && (*p2 == 69))
662 else if ((maru) && ((*p2 >= 110) && (*p2 <= 122)))
688 if (p2 ==
'$' || p2 ==
'(')
690 if (p2 ==
'K' || p2 ==
'$')
750 if (
p == 10 ||
p == 13)
944 TRACE(
"%p %ld %s %p %p %p\n", pdwMode, dwEncoding,
945 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
951 pcSrcSize = &src_len;
960 if (dwEncoding == 51932)
966 if (*pcSrcSize == -1)
968 *pcDstSize =
min(*pcSrcSize, *pcDstSize);
969 *pcSrcSize *=
sizeof(
WCHAR);
984 if (*pcSrcSize == -1)
1011 TRACE(
"%p %ld %s %p %p %p\n", pdwMode, dwEncoding,
1012 debugstr_w(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1018 pcSrcSize = &src_len;
1020 destsz = (pDstStr) ? *pcDstSize : 0;
1023 if (!pSrcStr || !*pcSrcSize)
1026 if (*pcSrcSize == -1)
1030 if (dwEncoding == 51932)
1035 if (*pcSrcSize == -1)
1045 else if (dwEncoding == 50220 || dwEncoding == 50221 || dwEncoding == 50222)
1087 DWORD dwSrcEncoding,
1088 DWORD dwDstEncoding,
1095 TRACE(
"%p %ld %ld %s %p %p %p\n", pdwMode, dwSrcEncoding, dwDstEncoding,
1096 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1101 if (pcSrcSize && *pcSrcSize != -1)
1103 cSrcSizeW = *pcSrcSize /
sizeof(
WCHAR);
1104 pcSrcSize = &cSrcSizeW;
1111 *pcDstSize *=
sizeof(
WCHAR);
1120 TRACE(
"convert %s from %ld to %ld\n",
debugstr_a(pSrcStr), dwSrcEncoding, dwDstEncoding);
1138 UINT* puiFamilyCodePage)
1142 TRACE(
"%u %p\n", uiCodePage, puiFamilyCodePage);
1144 if (!puiFamilyCodePage)
return S_FALSE;
1162 DWORD dwSrcEncoding,
1163 DWORD dwDstEncoding)
1165 UINT src_family, dst_family;
1167 TRACE(
"%ld %ld\n", dwSrcEncoding, dwDstEncoding);
1173 if (src_family == dst_family)
return S_OK;
1264 while (IEnumRfc1766_Next(iface, 1, &
info, &
num) ==
S_OK)
1283 IEnumRfc1766 *enumrfc1766;
1288 if (!pLocale || !pszRfc1766)
1296 IEnumRfc1766_Release(enumrfc1766);
1303 WCHAR rfc1766W[MAX_RFC1766_NAME + 1];
1309 rfc1766W[MAX_RFC1766_NAME] = 0;
1325 HFONT new_font, old_font;
1334 if (new_font ==
NULL)
return 1;
1343 data->font = new_font;
1369 for (
i = 0;
i < 32;
i++)
1380 found_cached =
FALSE;
1387 if (dst_font !=
NULL)
1388 *dst_font = font_list_entry->
font;
1389 found_cached =
TRUE;
1393 if (found_cached)
return S_OK;
1404 font_list_entry =
malloc(
sizeof(*font_list_entry));
1415 if (dst_font !=
NULL)
1421 WARN(
"couldn't create an appropriate mapped font...\n");
1438 free(font_list_entry);
1458 free(font_list_entry);
1499 IClassFactory_AddRef(iface);
1542 IUnknown_Release(
punk);
1544 TRACE(
"returning (%p) -> %lx\n", *ppobj,
hres);
1640 IEnumCodePage* iface,
1651 IEnumCodePage_AddRef(iface);
1652 TRACE(
"Returning IID_IEnumCodePage %p ref = %ld\n",
This,
This->ref);
1653 *ppvObject = &
This->IEnumCodePage_iface;
1662 IEnumCodePage* iface)
1669 IEnumCodePage* iface)
1686 IEnumCodePage* iface,
1687 IEnumCodePage** ppEnum)
1695 IEnumCodePage* iface,
1698 ULONG* pceltFetched)
1703 TRACE(
"%p %lu %p %p\n",
This, celt, rgelt, pceltFetched);
1705 if (!pceltFetched)
return S_FALSE;
1710 if (
This->pos + celt >
This->total)
1715 memcpy(rgelt,
This->cpinfo +
This->pos, celt *
sizeof(MIMECPINFO));
1716 *pceltFetched = celt;
1719 for (
i = 0;
i < celt;
i++)
1721 TRACE(
"#%lu: %08lx %u %u %s %s %s %s %s %s %d\n",
1723 rgelt[
i].uiFamilyCodePage,
1730 rgelt[
i].bGDICharset);
1736 IEnumCodePage* iface)
1747 IEnumCodePage* iface,
1772 LANGID LangId, IEnumCodePage** ppEnumCodePage )
1778 TRACE(
"%p, %08lx, %04x, %p\n",
mlang, grfFlags, LangId, ppEnumCodePage);
1781 grfFlags = MIMECONTF_MIME_LATEST;
1809 TRACE(
"enumerated %ld codepages with flags %08lx\n", ecp->
total, grfFlags);
1843 IEnumScript_AddRef(iface);
1844 TRACE(
"Returning IID_IEnumScript %p ref = %ld\n",
This,
This->ref);
1845 *ppvObject = &
This->IEnumScript_iface;
1879 IEnumScript** ppEnum)
1890 ULONG* pceltFetched)
1894 TRACE(
"%p %lu %p %p\n",
This, celt, rgelt, pceltFetched);
1896 if (!pceltFetched || !rgelt)
return E_FAIL;
1900 if (
This->pos + celt >
This->total)
1905 memcpy(rgelt,
This->script_info +
This->pos, celt *
sizeof(SCRIPTINFO));
1906 *pceltFetched = celt;
1949 LANGID LangId, IEnumScript** ppEnumScript )
1957 dwFlags = SCRIPTCONTF_SCRIPT_USER | SCRIPTCONTF_SCRIPT_HIDE | SCRIPTCONTF_SCRIPT_SYSTEM;
1965 es->script_info =
malloc(
sizeof(SCRIPTINFO) *
es->total);
1967 for (
i = 0;
i <
es->total;
i++)
1969 es->script_info[
i].ScriptId =
i;
1976 TRACE(
"enumerated %ld scripts with flags %08lx\n",
es->total,
dwFlags);
1978 *ppEnumScript = &
es->IEnumScript_iface;
1991 IMLangFontLink* iface,
1996 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid, ppvObject );
2000 IMLangFontLink* iface)
2003 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
2007 IMLangFontLink* iface)
2010 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
2014 IMLangFontLink* iface,
2019 return IMLangFontLink2_GetCharCodePages(&
This->IMLangFontLink2_iface, ch_src,
codepages);
2023 IMLangFontLink* iface,
2031 return IMLangFontLink2_GetStrCodePages(&
This->IMLangFontLink2_iface,
src, src_len, priority_cp,
2036 IMLangFontLink* iface,
2045 IMLangFontLink* iface,
2051 return IMLangFontLink2_CodePagesToCodePage(&
This->IMLangFontLink2_iface,
codepages,
2056 IMLangFontLink* iface,
2066 IMLangFontLink* iface,
2072 TRACE(
"(%p)->%p %08lx %p %p\n",iface,
hDC, dwCodePages, hSrcFont, phDestFont);
2074 return map_font(
hDC, dwCodePages, hSrcFont, phDestFont);
2078 IMLangFontLink* iface,
2087 IMLangFontLink* iface)
2089 TRACE(
"(%p)\n",iface);
2118 IMultiLanguage* iface,
2123 return IMultiLanguage3_QueryInterface(&
This->IMultiLanguage3_iface,
riid,
obj);
2129 return IMultiLanguage3_AddRef(&
This->IMultiLanguage3_iface);
2135 return IMultiLanguage3_Release(&
This->IMultiLanguage3_iface);
2139 IMultiLanguage* iface,
2144 return IMultiLanguage3_GetNumberOfCodePageInfo(&
This->IMultiLanguage3_iface,
cp);
2148 IMultiLanguage* iface,
2150 PMIMECPINFO pCodePageInfo)
2155 TRACE(
"%p, %u, %p\n",
This, uiCodePage, pCodePageInfo);
2173 IMultiLanguage* iface,
2178 return IMultiLanguage3_GetFamilyCodePage(&
This->IMultiLanguage3_iface,
cp, family_cp);
2182 IMultiLanguage* iface,
2184 IEnumCodePage** ppEnumCodePage)
2188 TRACE(
"%p %08lx %p\n",
This, grfFlags, ppEnumCodePage);
2194 IMultiLanguage* iface,
2196 PMIMECSETINFO pCharsetInfo)
2199 return IMultiLanguage3_GetCharsetInfo( &
This->IMultiLanguage3_iface, Charset, pCharsetInfo );
2203 IMultiLanguage* iface,
2208 return IMultiLanguage3_IsConvertible(&
This->IMultiLanguage3_iface, src_enc, dst_enc);
2212 IMultiLanguage* iface,
2222 return IMultiLanguage3_ConvertString(&
This->IMultiLanguage3_iface,
mode, src_enc,
2223 dst_enc,
src, src_size,
dest, dest_size);
2227 IMultiLanguage* iface,
2236 return IMultiLanguage3_ConvertStringToUnicode(&
This->IMultiLanguage3_iface,
2241 IMultiLanguage* iface,
2250 return IMultiLanguage3_ConvertStringFromUnicode(&
This->IMultiLanguage3_iface,
2255 IMultiLanguage* iface)
2258 return IMultiLanguage3_ConvertStringReset(&
This->IMultiLanguage3_iface);
2262 IMultiLanguage* iface,
2267 return IMultiLanguage3_GetRfc1766FromLcid(&
This->IMultiLanguage3_iface,
lcid, pbstrRfc1766);
2271 IMultiLanguage* iface,
2276 return IMultiLanguage3_GetLcidFromRfc1766(&
This->IMultiLanguage3_iface,
locale, rfc1766);
2295 IEnumRfc1766 *iface,
2306 IEnumRfc1766_AddRef(iface);
2307 TRACE(
"Returning IID_IEnumRfc1766 %p ref = %ld\n",
This,
This->ref);
2308 *ppvObject = &
This->IEnumRfc1766_iface;
2317 IEnumRfc1766 *iface)
2324 IEnumRfc1766 *iface)
2340 IEnumRfc1766 *iface,
2341 IEnumRfc1766 **ppEnum)
2350 IEnumRfc1766 *iface,
2353 ULONG *pceltFetched)
2358 TRACE(
"%p %lu %p %p\n",
This, celt, rgelt, pceltFetched);
2360 if (!pceltFetched)
return S_FALSE;
2365 if (
This->pos + celt >
This->total)
2370 memcpy(rgelt,
This->info +
This->pos, celt *
sizeof(RFC1766INFO));
2371 *pceltFetched = celt;
2374 for (
i = 0;
i < celt;
i++)
2376 TRACE(
"#%lu: %08lx %s %s\n",
2385 IEnumRfc1766 *iface)
2396 IEnumRfc1766 *iface,
2433 if (
data->total >=
data->allocated)
2435 data->allocated *= 2;
2445 info->wszRfc1766[0] = 0;
2448 info->wszLocaleName[0] = 0;
2462 TRACE(
"%04x, %p\n", LangId, ppEnum);
2471 data.allocated = 160;
2481 TRACE(
"enumerated %ld rfc1766 structures\n",
data.total);
2498 IMultiLanguage *iface,
2499 IEnumRfc1766 **ppEnumRfc1766)
2511 IMultiLanguage* iface,
2513 PRFC1766INFO pRfc1766Info)
2517 TRACE(
"(%p, 0x%04lx, %p)\n", iface, Locale, pRfc1766Info);
2532 TRACE(
"SUBLANGID missing in 0x%04lx\n", Locale);
2537 pRfc1766Info->lcid = Locale;
2538 pRfc1766Info->wszRfc1766[0] = 0;
2539 pRfc1766Info->wszLocaleName[0] = 0;
2541 if ((!
lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2550 IMultiLanguage* iface,
2557 return IMultiLanguage3_CreateConvertCharset(&
This->IMultiLanguage3_iface, src_cp, dst_cp, prop,
convert_charset);
2591 IMultiLanguage3* iface,
2602 *
obj = &
This->IMultiLanguage_iface;
2607 *
obj = &
This->IMLangFontLink_iface;
2611 *
obj = &
This->IMLangFontLink2_iface;
2616 *
obj = &
This->IMultiLanguage3_iface;
2620 *
obj = &
This->IMLangLineBreakConsole_iface;
2629 IMultiLanguage3_AddRef(iface);
2655 IMultiLanguage3* iface,
2664 *pcCodePage =
This->total_cp;
2674 mime_cp_info->bGDICharset = csi.
ciCharset;
2688 TRACE(
"%08lx %u %u %s %s %s %s %s %s %d\n",
2689 mime_cp_info->dwFlags, mime_cp_info->uiCodePage,
2690 mime_cp_info->uiFamilyCodePage,
2697 mime_cp_info->bGDICharset);
2701 IMultiLanguage3* iface,
2704 PMIMECPINFO pCodePageInfo)
2709 TRACE(
"%p, %u, %04x, %p\n",
This, uiCodePage, LangId, pCodePageInfo);
2727 IMultiLanguage3* iface,
2729 UINT* puiFamilyCodePage)
2735 IMultiLanguage3* iface,
2738 IEnumCodePage** ppEnumCodePage)
2742 TRACE(
"%p %08lx %04x %p\n",
This, grfFlags, LangId, ppEnumCodePage);
2748 IMultiLanguage3* iface,
2750 PMIMECSETINFO pCharsetInfo)
2757 if (!pCharsetInfo)
return E_FAIL;
2803 IMultiLanguage3* iface,
2804 DWORD dwSrcEncoding,
2805 DWORD dwDstEncoding)
2811 IMultiLanguage3* iface,
2813 DWORD dwSrcEncoding,
2814 DWORD dwDstEncoding,
2825 IMultiLanguage3* iface,
2834 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
2838 IMultiLanguage3* iface,
2847 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
2851 IMultiLanguage3* iface)
2858 IMultiLanguage3* iface,
2864 TRACE(
"%p %04lx %p\n", iface,
lcid, pbstrRfc1766);
2877 IMultiLanguage3* iface,
2882 IEnumRfc1766 *rfc1766;
2886 if (!pLocale || !bstrRfc1766)
2889 hr = IMultiLanguage3_EnumRfc1766(iface, 0, &rfc1766);
2895 IEnumRfc1766_Release(rfc1766);
2900 IMultiLanguage3* iface,
2902 IEnumRfc1766** ppEnumRfc1766)
2912 IMultiLanguage3* iface,
2915 PRFC1766INFO pRfc1766Info)
2917 static LANGID last_lang = -1;
2920 TRACE(
"(%p, 0x%04lx, 0x%04x, %p)\n", iface, Locale, LangId, pRfc1766Info);
2935 TRACE(
"SUBLANGID missing in 0x%04lx\n", Locale);
2940 pRfc1766Info->lcid = Locale;
2941 pRfc1766Info->wszRfc1766[0] = 0;
2942 pRfc1766Info->wszLocaleName[0] = 0;
2945 (last_lang != LangId)) {
2946 FIXME(
"Only English names supported (requested: 0x%04x)\n", LangId);
2950 if ((!
lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2959 IMultiLanguage3* iface,
2972 return IMLangConvertCharset_Initialize(*
convert_charset, src_cp, dst_cp, prop);
2976 IMultiLanguage3* iface,
2980 DWORD dwSrcEncoding,
2981 DWORD dwDstEncoding,
2990 TRACE(
"%p %0lx8 %s %lu %lu %p %p\n",
2991 pdwMode, dwFlag,
debugstr_w(lpFallBack), dwSrcEncoding, dwDstEncoding, pstmIn, pstmOut);
2993 FIXME(
"dwFlag and lpFallBack not handled\n");
2995 hr = IStream_Stat(pstmIn, &
stat, STATFLAG_NONAME);
3024 IMultiLanguage3* iface,
3034 if (dwFlag || lpFallBack)
3035 FIXME(
"Ignoring dwFlag (0x%lx/%ld) and lpFallBack (%p)\n",
3036 dwFlag, dwFlag, lpFallBack);
3039 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
3061 IMultiLanguage3*
This,
3073 pSrcStr, (
LPINT)pcSrcSize, pDstStr, (
LPINT)pcDstSize);
3077 IMultiLanguage3* iface,
3079 DWORD dwPrefWinCodePage,
3081 DetectEncodingInfo* lpEncoding,
3089 IMultiLanguage3* iface,
3091 DWORD dwPrefWinCodePage,
3094 DetectEncodingInfo* lpEncoding,
3102 IMultiLanguage3* iface,
3106 return IMultiLanguage3_ValidateCodePageEx(iface,uiCodePage,
hwnd,0);
3110 IMultiLanguage3* iface,
3119 TRACE (
"%u, %04lx, %p, %d\n", uiCodePage,
lcid, lpWideCharStr, cchWideChar);
3136 IMultiLanguage3* iface,
3139 TRACE(
"%u\n", uiCodePage);
3142 return IMultiLanguage3_ValidateCodePageEx(iface, uiCodePage,
NULL, CPIOD_PEEK);
3146 IMultiLanguage3* iface,
3149 FIXME(
"0x%08x\n", dwSource);
3154 IMultiLanguage3* iface,
3161 if (!pnScripts)
return S_FALSE;
3163 *pnScripts =
This->total_scripts;
3168 IMultiLanguage3* iface,
3171 IEnumScript** ppEnumScript)
3181 IMultiLanguage3* iface,
3184 DWORD dwfIODControl)
3189 TRACE(
"%p %u %p %08lx\n",
This, uiCodePage,
hwnd, dwfIODControl);
3206 if (dwfIODControl != CPIOD_PEEK)
3207 FIXME(
"Request to install codepage language pack not handled\n");
3213 IMultiLanguage3 *iface,
3217 UINT *puiPreferredCodePages,
3218 UINT nPreferredCodePages,
3219 UINT *puiDetectedCodePages,
3220 UINT *pnDetectedCodePages,
3221 WCHAR *lpSpecialChar)
3226 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3227 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3230 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3233 puiDetectedCodePages[0] =
CP_UTF8;
3234 *pnDetectedCodePages = 1;
3239 IMultiLanguage3 *iface,
3242 UINT *puiPreferredCodePages,
3243 UINT nPreferredCodePages,
3244 UINT *puiDetectedCodePages,
3245 UINT *pnDetectedCodePages,
3246 WCHAR *lpSpecialChar)
3251 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3252 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3255 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3258 puiDetectedCodePages[0] =
CP_UTF8;
3259 *pnDetectedCodePages = 1;
3307 IMLangFontLink2 * iface,
3312 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid, ppvObject );
3318 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
3324 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
3343 &ch_src, 1,
buf, 2,
NULL, &used_dc);
3350 IMLangFontLink2_CodePageToCodePages(iface,
3372 if (!
src || !src_len || src_len < 0)
3375 for (
i = 0;
i < src_len;
i++)
3380 ret = IMLangFontLink2_GetCharCodePages(iface,
src[
i], &
cp);
3384 else if ((cps &
cp) != 0 &&
3385 !((priority_cp & cps) ^ (priority_cp &
cp))) cps &=
cp;
3416 TRACE(
"codepage not found\n");
3437 TRACE(
"Found Default Codepage\n");
3442 for (
i = 0;
i < 32;
i++)
3454 TRACE(
"Falling back to least significant found CodePage %u\n",
3461 TRACE(
"no codepage found\n");
3477 if (!old_font)
return E_FAIL;
3507 TRACE(
"(%p)->%p %08lx %04x %p\n",
This,
hDC, dwCodePages, chSrc, pFont);
3511 if (dwCodePages != 0)
3514 return map_font(
hDC, dwCodePages, old_font, pFont);
3519 FIXME(
"the situation where dwCodepages is set to zero is not implemented\n");
3525 HDC hDC,
UINT *puiRanges, UNICODERANGE *pUranges)
3530 TRACE(
"(%p)->%p %p %p\n",
This,
hDC, puiRanges, pUranges);
3536 GetFontUnicodeRanges(
hDC,
gs);
3537 *puiRanges =
gs->cRanges;
3541 for (
i = 0;
i <
gs->cRanges;
i++)
3543 if (
i >= *puiRanges)
break;
3544 pUranges[
i].wcFrom =
gs->ranges[
i].wcLow;
3545 pUranges[
i].wcTo =
gs->ranges[
i].wcLow +
gs->ranges[
i].cGlyphs;
3555 SCRIPTFONTINFO *pScriptFont)
3569 if (
j >= *puiFonts)
break;
3572 if (
dwFlags == SCRIPTCONTF_FIXED_FONT)
3574 else if (
dwFlags == SCRIPTCONTF_PROPORTIONAL_FONT)
3630 IMLangLineBreakConsole* iface,
3635 return IMultiLanguage3_QueryInterface( &
This->IMultiLanguage3_iface,
riid, ppvObject );
3639 IMLangLineBreakConsole* iface )
3642 return IMultiLanguage3_AddRef( &
This->IMultiLanguage3_iface );
3646 IMLangLineBreakConsole* iface )
3649 return IMultiLanguage3_Release( &
This->IMultiLanguage3_iface );
3653 IMLangLineBreakConsole* iface,
3654 IMLangString* pSrcMLStr,
3662 FIXME(
"(%p)->%p %li %li %li %li %p %p\n", iface, pSrcMLStr, lSrcPos, lSrcLen, cMinColumns, cMaxColumns, plLineLen, plSkipLen);
3667 IMLangLineBreakConsole* iface,
3669 const WCHAR* pszSrc,
3683 IMLangLineBreakConsole* iface,
3696 if (uCodePage == CP_USASCII &&
cchSrc > cMaxColumns)
3698 for (
line = cMaxColumns,
i = cMaxColumns - 1;
i >= 0;
i--)
3700 if (pszSrc[
i] ==
' ')
3702 while (
i >= 0 && pszSrc[
i] ==
' ')
3748 *
obj = &
This->IMLangConvertCharset_iface;
3749 IMLangConvertCharset_AddRef(iface);
3787 prop &= ~MLCONVCHARF_USEDEFCHAR;
3789 FIXME(
"property 0x%08lx not supported\n", prop);
3822 FIXME(
"(%p)->(%p): stub\n",
This, prop);
3830 FIXME(
"(%p)->(%p %p %p %p): stub\n",
This,
src, src_size,
dest, dest_size);
3869 TRACE(
"Creating MultiLanguage object\n");
3881 mlang->total_cp = 0;
3889 *ppObj = &
mlang->IMultiLanguage_iface;
3939 ERR(
"Failed to create global font link object.\n");
BOOL WINAPI EnumSystemLocalesEx(LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lparam, LPVOID reserved)
#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
static const WCHAR szClassName[]
static __inline const char * debugstr_an(const char *s, int n)
#define WideCharToMultiByte
#define MultiByteToWideChar
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
LCID WINAPI LocaleNameToLCID(_In_ LPCWSTR lpName, _In_ 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 CPTABLEINFO codepages[128]
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 IUnknown * font_link_global
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)
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
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 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 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)
static const MIME_CP_INFO baltic_cp[]
static HRESULT WINAPI fnIMultiLanguage_QueryInterface(IMultiLanguage *iface, REFIID riid, void **obj)
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)
static BOOL WINAPI allocate_font_link_cb(PINIT_ONCE init_once, PVOID args, PVOID *context)
static UINT ConvertSJIS2JIS(LPCSTR input, DWORD count, LPSTR output)
static const MIME_CP_INFO japanese_cp[]
static HRESULT WINAPI fnIEnumScript_Reset(IEnumScript *iface)
static HRESULT WINAPI fnIEnumCodePage_QueryInterface(IEnumCodePage *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI fnIMLangFontLink2_Release(IMLangFontLink2 *iface)
static ULONG WINAPI fnIEnumScript_Release(IEnumScript *iface)
static const MIME_CP_INFO cyrillic_cp[]
static const MIME_CP_INFO western_cp[]
static void UnlockModule(void)
HRESULT WINAPI LcidToRfc1766W(LCID lcid, LPWSTR pszRfc1766, INT nChar)
static HRESULT WINAPI fnIMLangFontLink2_MapFont(IMLangFontLink2 *This, HDC hDC, DWORD dwCodePages, WCHAR chSrc, HFONT *pFont)
static ULONG WINAPI fnIMLangLineBreakConsole_AddRef(IMLangLineBreakConsole *iface)
static ULONG WINAPI fnIEnumRfc1766_AddRef(IEnumRfc1766 *iface)
static HRESULT WINAPI fnIMultiLanguage3_CreateConvertCharset(IMultiLanguage3 *iface, UINT src_cp, UINT dst_cp, DWORD prop, IMLangConvertCharset **convert_charset)
static HRESULT WINAPI fnIMultiLanguage3_EnumCodePages(IMultiLanguage3 *iface, DWORD grfFlags, LANGID LangId, IEnumCodePage **ppEnumCodePage)
static HRESULT WINAPI fnIEnumScript_QueryInterface(IEnumScript *iface, REFIID riid, void **ppvObject)
HRESULT WINAPI GetGlobalFontLinkObject(IMLangFontLink **obj)
static UINT ConvertJIS2SJIS(LPCSTR input, DWORD count, LPSTR output)
struct tagMLang_impl MLang_impl
static HRESULT WINAPI fnIMultiLanguage3_EnumScripts(IMultiLanguage3 *iface, DWORD dwFlags, LANGID LangId, IEnumScript **ppEnumScript)
static ULONG WINAPI fnIEnumRfc1766_Release(IEnumRfc1766 *iface)
static const MIME_CP_INFO chinese_simplified_cp[]
static const MIME_CP_INFO turkish_cp[]
static HRESULT WINAPI fnIMultiLanguage3_GetLcidFromRfc1766(IMultiLanguage3 *iface, LCID *pLocale, BSTR bstrRfc1766)
static const MIME_CP_INFO greek_cp[]
static HRESULT WINAPI fnIMLangFontLink_GetFontCodePages(IMLangFontLink *iface, HDC hdc, HFONT hfont, DWORD *codepages)
static HRESULT WINAPI fnIMLangFontLink2_GetFontUnicodeRanges(IMLangFontLink2 *This, HDC hDC, UINT *puiRanges, UNICODERANGE *pUranges)
static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766FromLcid(IMultiLanguage3 *iface, LCID lcid, BSTR *pbstrRfc1766)
static HRESULT WINAPI fnIMultiLanguage_EnumRfc1766(IMultiLanguage *iface, IEnumRfc1766 **ppEnumRfc1766)
static const IMultiLanguage3Vtbl IMultiLanguage3_vtbl
static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages(IMLangFontLink2 *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
static const IEnumScriptVtbl IEnumScript_vtbl
static HRESULT WINAPI fnIMLangFontLink2_CodePageToCodePages(IMLangFontLink2 *iface, UINT codepage, DWORD *codepages)
HRESULT WINAPI Rfc1766ToLcidW(LCID *pLocale, LPCWSTR pszRfc1766)
static UINT ConvertJISJapaneseToUnicode(LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
static HRESULT WINAPI fnIEnumRfc1766_Next(IEnumRfc1766 *iface, ULONG celt, PRFC1766INFO rgelt, ULONG *pceltFetched)
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicode(IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, WCHAR *pSrcStr, UINT *pcSrcSize, CHAR *pDstStr, UINT *pcDstSize)
struct tagEnumRfc1766_impl EnumRfc1766_impl
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicodeEx(IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, CHAR *pSrcStr, UINT *pcSrcSize, WCHAR *pDstStr, UINT *pcDstSize, DWORD dwFlag, WCHAR *lpFallBack)
static const IMLangFontLinkVtbl IMLangFontLink_vtbl
static MLang_impl * impl_from_IMultiLanguage(IMultiLanguage *iface)
static HRESULT WINAPI fnIMLangFontLink_CodePagesToCodePage(IMLangFontLink *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
static HRESULT WINAPI fnIEnumRfc1766_Clone(IEnumRfc1766 *iface, IEnumRfc1766 **ppEnum)
static ULONG WINAPI MLANGCF_Release(IClassFactory *iface)
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineML(IMLangLineBreakConsole *iface, IMLangString *pSrcMLStr, LONG lSrcPos, LONG lSrcLen, LONG cMinColumns, LONG cMaxColumns, LONG *plLineLen, LONG *plSkipLen)
static HRESULT WINAPI MLangConvertCharset_DoConversionFromUnicode(IMLangConvertCharset *iface, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
static HRESULT WINAPI MLANGCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
static HRESULT WINAPI MLANGCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
static HRESULT WINAPI fnIMultiLanguage_ConvertStringReset(IMultiLanguage *iface)
static ULONG WINAPI MLANGCF_AddRef(IClassFactory *iface)
static INT CALLBACK map_font_enum_proc(const LOGFONTW *lf, const TEXTMETRICW *ntm, DWORD type, LPARAM lParam)
static ULONG WINAPI MLangConvertCharset_AddRef(IMLangConvertCharset *iface)
static HRESULT WINAPI MLangConvertCharset_Initialize(IMLangConvertCharset *iface, UINT src_cp, UINT dst_cp, DWORD prop)
static HRESULT clear_font_cache(void)
static HRESULT WINAPI fnIMultiLanguage_ConvertString(IMultiLanguage *iface, DWORD *mode, DWORD src_enc, DWORD dst_enc, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
static ULONG WINAPI MLangConvertCharset_Release(IMLangConvertCharset *iface)
static ULONG WINAPI fnIMLangLineBreakConsole_Release(IMLangLineBreakConsole *iface)
static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj)
static HRESULT WINAPI fnIMLangFontLink2_ReleaseFont(IMLangFontLink2 *This, HFONT hFont)
static HRESULT WINAPI fnIMLangFontLink_GetStrCodePages(IMLangFontLink *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
static const MIME_CP_INFO unicode_cp[]
static const MIME_CP_INFO korean_cp[]
static HRESULT WINAPI fnIEnumCodePage_Skip(IEnumCodePage *iface, ULONG celt)
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineA(IMLangLineBreakConsole *iface, LCID locale, UINT uCodePage, const CHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
static HRESULT WINAPI fnIMultiLanguage3_DetectCodepageInIStream(IMultiLanguage3 *iface, DWORD dwFlag, DWORD dwPrefWinCodePage, IStream *pstmIn, DetectEncodingInfo *lpEncoding, INT *pnScores)
static void jis2sjis(unsigned char *p1, unsigned char *p2)
static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum)
static HRESULT WINAPI MLangConvertCharset_GetDestinationCodePage(IMLangConvertCharset *iface, UINT *dst_cp)
static HRESULT WINAPI fnIMultiLanguage3_GetCodePageInfo(IMultiLanguage3 *iface, UINT uiCodePage, LANGID LangId, PMIMECPINFO pCodePageInfo)
static HRESULT WINAPI fnIMLangFontLink2_GetScriptFontInfo(IMLangFontLink2 *This, SCRIPT_ID sid, DWORD dwFlags, UINT *puiFonts, SCRIPTFONTINFO *pScriptFont)
static HRESULT lcid_to_rfc1766A(LCID lcid, LPSTR rfc1766, INT len)
static ULONG WINAPI fnIMultiLanguage3_AddRef(IMultiLanguage3 *iface)
HRESULT WINAPI DllCanUnloadNow(void)
static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766Info(IMultiLanguage3 *iface, LCID Locale, LANGID LangId, PRFC1766INFO pRfc1766Info)
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
static void LockModule(void)
static const MIME_CP_INFO vietnamese_cp[]
static INIT_ONCE font_link_global_init_once
static HRESULT WINAPI fnIMultiLanguage3_GetCharsetInfo(IMultiLanguage3 *iface, BSTR Charset, PMIMECSETINFO pCharsetInfo)
static HRESULT WINAPI fnIEnumScript_Clone(IEnumScript *iface, IEnumScript **ppEnum)
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicode(IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, CHAR *pSrcStr, UINT *pcSrcSize, WCHAR *pDstStr, UINT *pcDstSize)
static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfCodePageInfo(IMultiLanguage3 *iface, UINT *pcCodePage)
static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePageEx(IMultiLanguage3 *iface, UINT uiCodePage, HWND hwnd, DWORD dwfIODControl)
static ULONG WINAPI fnIMultiLanguage_Release(IMultiLanguage *iface)
static const IMultiLanguageVtbl IMultiLanguage_vtbl
static HRESULT WINAPI fnIEnumScript_Skip(IEnumScript *iface, ULONG celt)
static const MIME_CP_INFO hebrew_cp[]
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
static HRESULT WINAPI fnIMLangFontLink_QueryInterface(IMLangFontLink *iface, REFIID riid, void **ppvObject)
static void sjis2jis(unsigned char *p1, unsigned char *p2)
static HRESULT WINAPI fnIMLangFontLink_ReleaseFont(IMLangFontLink *iface, HFONT hFont)
static HRESULT WINAPI fnIMLangFontLink2_GetFontCodePages(IMLangFontLink2 *iface, HDC hdc, HFONT hfont, DWORD *codepages)
struct tagEnumScript_impl EnumScript_impl
static HRESULT WINAPI fnIMultiLanguage3_GetFamilyCodePage(IMultiLanguage3 *iface, UINT uiCodePage, UINT *puiFamilyCodePage)
static HRESULT WINAPI fnIMultiLanguage_EnumCodePages(IMultiLanguage *iface, DWORD grfFlags, IEnumCodePage **ppEnumCodePage)
static HRESULT WINAPI fnIEnumRfc1766_Reset(IEnumRfc1766 *iface)
static const IMLangLineBreakConsoleVtbl IMLangLineBreakConsole_vtbl
static ULONG WINAPI fnIMLangFontLink_AddRef(IMLangFontLink *iface)
static HRESULT WINAPI fnIMultiLanguage3_IsCodePageInstallable(IMultiLanguage3 *iface, UINT uiCodePage)
static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePageInIStream(IMultiLanguage3 *iface, DWORD dwFlags, IStream *pStrIn, UINT *puiPreferredCodePages, UINT nPreferredCodePages, UINT *puiDetectedCodePages, UINT *pnDetectedCodePages, WCHAR *lpSpecialChar)
static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePage(IMultiLanguage3 *iface, DWORD dwFlags, LPCWSTR lpWideCharStr, UINT cchWideChar, UINT *puiPreferredCodePages, UINT nPreferredCodePages, UINT *puiDetectedCodePages, UINT *pnDetectedCodePages, WCHAR *lpSpecialChar)
static ULONG WINAPI fnIMultiLanguage3_Release(IMultiLanguage3 *iface)
static const MIME_CP_INFO central_european_cp[]
static HRESULT WINAPI MLangConvertCharset_GetSourceCodePage(IMLangConvertCharset *iface, UINT *src_cp)
static HRESULT WINAPI fnIEnumCodePage_Reset(IEnumCodePage *iface)
static BOOL CALLBACK enum_locales_proc(LPWSTR locale, DWORD flags, LPARAM lparam)
static HRESULT WINAPI MLangConvertCharset_DoConversionToUnicode(IMLangConvertCharset *iface, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
static EnumScript_impl * impl_from_IEnumScript(IEnumScript *iface)
static ULONG WINAPI fnIMultiLanguage_AddRef(IMultiLanguage *iface)
static IMultiLanguage2 * mlang
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define WC_NO_BEST_FIT_CHARS
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static DWORD LPDWORD LPCSTR DWORD srclen
static UINT UINT * out_count
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define LOCALE_CUSTOM_UNSPECIFIED
#define LOCALE_USER_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
WCHAR lfFaceName[LF_FACESIZE]
const WCHAR * body_charset
const WCHAR * header_charset
const WCHAR * description
const WCHAR * web_charset
LIST_ENTRY ProcessLocksList
IMLangConvertCharset IMLangConvertCharset_iface
IClassFactory IClassFactory_iface
const MIME_CP_INFO * mime_cp_info
const WCHAR * proportional_font
const WCHAR * description
HRESULT(* pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj)
IEnumCodePage IEnumCodePage_iface
IEnumRfc1766 IEnumRfc1766_iface
IEnumScript IEnumScript_iface
IMLangFontLink2 IMLangFontLink2_iface
IMLangLineBreakConsole IMLangLineBreakConsole_iface
IMLangFontLink IMLangFontLink_iface
IMultiLanguage3 IMultiLanguage3_iface
IMultiLanguage IMultiLanguage_iface
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static RFC1766TOLCIDA Rfc1766ToLcidA
static LCIDTORFC1766A LcidToRfc1766A
static CONVERTINETMULTIBYTETOUNICODE ConvertINetMultiByteToUnicode
static ISCONVERTINETSTRINGAVAILABLE IsConvertINetStringAvailable
static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte
static CONVERTINETSTRING ConvertINetString
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define INIT_ONCE_STATIC_INIT
#define CLASS_E_NOAGGREGATION
#define CLASS_E_CLASSNOTAVAILABLE
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI GetTextCharsetInfo(_In_ HDC, _Out_opt_ LPFONTSIGNATURE, _In_ DWORD)
int WINAPI EnumFontFamiliesExW(_In_ HDC, _In_ PLOGFONTW, _In_ FONTENUMPROCW, _In_ LPARAM, _In_ DWORD)
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
BOOL WINAPI TranslateCharsetInfo(_Inout_ PDWORD, _Out_ LPCHARSETINFO, _In_ DWORD)
#define LOCALE_SENGLANGUAGE
#define LOCALE_SISO639LANGNAME
#define LOCALE_SISO3166CTRYNAME
_In_ DWORD _In_ int cchSrc