Здравствуйте, есть проблема с подстановкой шрифтов при использовании японских иероглифов. Есть EMF-файл, который содержит текст с японскими иероглифами и английскими буквами. Функция PlayEnhMetafile() отображает их корректно. EMF-файл содержит записи EMREXTCREATEFONTINDIRECTW, которые содержат информацию об используемом шрифте. В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация). Поэтому я использую функцию IMLangFontLink2::MapFont(), которая выбирает оптимальный шрифт для нужного языка на основе заданного шрифта. В нашем случае эта функция выбирает шрифт MS PGothic вместо Arial для японских иероглифов. Проблема в том, что MS PGothic шире, чем Arial, в следствие чего текст наезжает друг на друга. Если открыть этот файл в Paint, то непонятно какой шрифт он использует для отображения японских символов. При чем текст не наезжает друг на друга. Точно такой же результат можно добиться при помощи функции PlayEnhMetafile(). У меня существует подозрение, что Paint использует функцию PlayEnhMetafile() для конвертации EMF-файла в растр, но неизвестно как он подбирает шрифт. Есть ли у вас какие-либо мысли как подобрать нужный шрифт, который бы поддерживал японские символы, но при этом сохранил нужную ширину текста? Заранее спасибо.
Здравствуйте, VitKoff, Вы писали:
VK>В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).
Может быть, нужно просто установить поддержку японского языка?
Re[2]: Подстановка шрифтов при отображении EMF-файла
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, VitKoff, Вы писали:
VK>>В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).
W>Может быть, нужно просто установить поддержку японского языка?
Что вы имеете в виду? Установить японскую локаль в систему?
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, VitKoff, Вы писали:
VK>>Точно такой же результат можно добиться при помощи функции PlayEnhMetafile().
AG>А интересно, если сделать PlayEnhMetafile в другой метафайл, какой там шрифт будет?
Шрифт будет такой же как в исходном метафайле, в этом и заключается проблема, чтобы узнать каким образом в WINAPI происходит замена шрифтов, если нет в системе такого как в исходном метафайле с поддержкой японских иероглифов.
Re[4]: Подстановка шрифтов при отображении EMF-файла
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, VitKoff, Вы писали:
VK>>Что вы имеете в виду? Установить японскую локаль в систему?
W>В Win7 это называется "язык интерфейса".
Попробовал установить японский язык интерфейса, но безрезультатно.
Здравствуйте, VitKoff, Вы писали:
VK>Есть EMF-файл, который содержит текст с японскими иероглифами и английскими буквами. Функция PlayEnhMetafile() отображает их корректно. EMF-файл содержит записи EMREXTCREATEFONTINDIRECTW, которые содержат информацию об используемом шрифте. В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).
Arial Unicode MS — шрифт класса нео-гротеск типа OpenType, основанный на Arial. Он содержит 51180 знаков и покрывает большой диапазон Unicode 2.1. Шрифт разработала компания Agfa Monotype по заказу фирмы Microsoft. Шрифт поставляется вместе с Microsoft Office.