Подстановка шрифтов при отображении EMF-файла
От: VitKoff  
Дата: 26.10.17 07:58
Оценка:
Здравствуйте, есть проблема с подстановкой шрифтов при использовании японских иероглифов. Есть EMF-файл, который содержит текст с японскими иероглифами и английскими буквами. Функция PlayEnhMetafile() отображает их корректно. EMF-файл содержит записи EMREXTCREATEFONTINDIRECTW, которые содержат информацию об используемом шрифте. В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация). Поэтому я использую функцию IMLangFontLink2::MapFont(), которая выбирает оптимальный шрифт для нужного языка на основе заданного шрифта. В нашем случае эта функция выбирает шрифт MS PGothic вместо Arial для японских иероглифов. Проблема в том, что MS PGothic шире, чем Arial, в следствие чего текст наезжает друг на друга. Если открыть этот файл в Paint, то непонятно какой шрифт он использует для отображения японских символов. При чем текст не наезжает друг на друга. Точно такой же результат можно добиться при помощи функции PlayEnhMetafile(). У меня существует подозрение, что Paint использует функцию PlayEnhMetafile() для конвертации EMF-файла в растр, но неизвестно как он подбирает шрифт. Есть ли у вас какие-либо мысли как подобрать нужный шрифт, который бы поддерживал японские символы, но при этом сохранил нужную ширину текста? Заранее спасибо.
Re: Подстановка шрифтов при отображении EMF-файла
От: wildwind Россия  
Дата: 26.10.17 08:31
Оценка:
Здравствуйте, VitKoff, Вы писали:

VK>В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).


Может быть, нужно просто установить поддержку японского языка?
Re[2]: Подстановка шрифтов при отображении EMF-файла
От: VitKoff  
Дата: 30.10.17 05:58
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, VitKoff, Вы писали:


VK>>В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).


W>Может быть, нужно просто установить поддержку японского языка?


Что вы имеете в виду? Установить японскую локаль в систему?
Re: Подстановка шрифтов при отображении EMF-файла
От: Alexander G Украина  
Дата: 30.10.17 12:12
Оценка: 2 (1)
Здравствуйте, VitKoff, Вы писали:

VK>Точно такой же результат можно добиться при помощи функции PlayEnhMetafile().


А интересно, если сделать PlayEnhMetafile в другой метафайл, какой там шрифт будет?
Русский военный корабль идёт ко дну!
Re[3]: Подстановка шрифтов при отображении EMF-файла
От: wildwind Россия  
Дата: 30.10.17 14:19
Оценка:
Здравствуйте, VitKoff, Вы писали:

VK>Что вы имеете в виду? Установить японскую локаль в систему?


В Win7 это называется "язык интерфейса".
Re[2]: Подстановка шрифтов при отображении EMF-файла
От: VitKoff  
Дата: 31.10.17 05:28
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, VitKoff, Вы писали:


VK>>Точно такой же результат можно добиться при помощи функции PlayEnhMetafile().


AG>А интересно, если сделать PlayEnhMetafile в другой метафайл, какой там шрифт будет?


Шрифт будет такой же как в исходном метафайле, в этом и заключается проблема, чтобы узнать каким образом в WINAPI происходит замена шрифтов, если нет в системе такого как в исходном метафайле с поддержкой японских иероглифов.
Re[4]: Подстановка шрифтов при отображении EMF-файла
От: VitKoff  
Дата: 31.10.17 06:51
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, VitKoff, Вы писали:


VK>>Что вы имеете в виду? Установить японскую локаль в систему?


W>В Win7 это называется "язык интерфейса".


Попробовал установить японский язык интерфейса, но безрезультатно.
Re: Подстановка шрифтов при отображении EMF-файла
От: Mr.Delphist  
Дата: 31.10.17 11:58
Оценка:
Здравствуйте, VitKoff, Вы писали:

VK>Есть EMF-файл, который содержит текст с японскими иероглифами и английскими буквами. Функция PlayEnhMetafile() отображает их корректно. EMF-файл содержит записи EMREXTCREATEFONTINDIRECTW, которые содержат информацию об используемом шрифте. В нашем случае для всех строк используется шрифт Arial, но он не поддерживает японские иероглифы(по крайней мере тот, что установлен на моей системе Windows 8.1 x64 для одного языка — русская локализация).


А если мэпить шрифт в это или нечто подобное?
https://ru.wikipedia.org/wiki/Arial_Unicode_MS

Arial Unicode MS — шрифт класса нео-гротеск типа OpenType, основанный на Arial. Он содержит 51180 знаков и покрывает большой диапазон Unicode 2.1. Шрифт разработала компания Agfa Monotype по заказу фирмы Microsoft. Шрифт поставляется вместе с Microsoft Office.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.