Нужна помощь для отображения японского текста с помощью GDI + без установки пакета восточноазиатских языков в Windows XP

Я пишу викторину по японскому языку и не хочу требовать от людей установки языкового пакета для восточноазиатских языков для Windows XP. Я использую GDI + для рисования текста. Я попытался загрузить бесплатный шрифт Unicode и использовать его для рисования текста. Я протестировал его на своем компьютере (с установленным пакетом для Восточной Азии), и он правильно отображал японские символы с использованием загруженного шрифта, но на другом компьютере без языкового пакета он не работал.

Я ищу предложения, как это сделать. Программа довольно проста и написана на C ++ с использованием только Win32 API, GDI + и STL. Если возможно, я бы хотел придерживаться только этих библиотек. У меня есть UNICODE #defined.

Код, который я в основном использую для рисования текста, вставлен ниже:

#include <gdiplus.h>
using namespace Gdiplus ;

Graphics * gi ;

PrivateFontCollection _fonts ;
_fonts.AddFontFile(fontFilename) ;
Font * currentFont = new Font(fontName, fontSize, FontStyleRegular, UnitPoint, &_fonts) ;

std::wstring text = L"Some text" ;
gi->DrawString(text.c_str(), (INT)text.size(), currentFont, rectangle, &format, &brush) ;

person Bakanekobrain    schedule 10.03.2009    source источник
comment
Ваш вызов метода c_str () превращает вашу тщательно созданную строку в японском Unicode в тарабарщину.   -  person Hans Passant    schedule 10.03.2009
comment
Нет, это не так. Не могу винить вас в этом, определение теста отсутствует. Это будет std :: wstring.   -  person MSalters    schedule 10.03.2009
comment
Извините, я постарался убрать как можно больше лишних вещей. Да, текст - это std :: wstring. Я отредактирую вопрос, чтобы включить эту информацию.   -  person Bakanekobrain    schedule 10.03.2009


Ответы (3)


Решение довольно простое. Поскольку вы не хотите отправлять шрифт и не можете рассчитывать на доступность какого-либо шрифта, вам придется отправить изображения всех символов, которые вы хотите использовать. Я предлагаю использовать PNG, так как JPEG предназначен для фотографий (много мелких градиентов)

person MSalters    schedule 10.03.2009
comment
Мне нужно иметь несколько разных размеров и цветов текста, поэтому использование предварительно обработанных символов не будет работать. - person Bakanekobrain; 10.03.2009

Я был неправ. Если у вас есть шрифт, содержащий японские символы, он будет правильно отображаться в Windows XP, даже если языковой пакет для восточноазиатских языков не установлен.

Если у вас установлен языковой пакет для восточноазиатских языков и ваш шрифт не поддерживает японские символы, Windows выберет один из двух шрифтов, который, по ее мнению, наиболее соответствует вашему шрифту. Это заставило меня подумать, что шрифты, которые я использовал, включали японские символы, поскольку это изменило способ рисования символов, когда я переключался между своим шрифтом и системным шрифтом.

У Microsoft есть бесплатная установка японского шрифта под названием Коллекция Meiryo версии 5.00. Также здесь есть страница, на которой перечислены другие японские шрифты. Единственная проблема с перечисленными шрифтами - лицензирование непонятно.

person Bakanekobrain    schedule 15.03.2009

Также существует шрифт Lucida Sans Unicode, который может помочь решить проблемы.

person soycamo    schedule 04.05.2009