需要帮助才能使用GDI +显示日语文本,而无需在Windows XP中安装东亚语言包

时间:2009-03-10 07:22:45

标签: c++ windows winapi unicode gdi+

我正在编写日语测验程序,我不想要求人们为Windows XP安装东亚语言包。我正在使用GDI +来绘制文本。我尝试下载一个免费的Unicode字体并使用它来绘制文本。我在我的电脑上测试了它(安装了东亚包)并且使用下载的字体正确地显示了日文字符,但是在没有语言包的另一台计算机上它没有用。

我正在寻找有关如何使这项工作的建议。该程序非常简单,仅使用Win32 API,GDI +和STL以C ++编写。如果可能的话,我想坚持这些库。我确实有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) ;

3 个答案:

答案 0 :(得分:1)

解决方案相当容易。由于您不想发送字体,并且不能指望任何可用字体,因此您必须提供要使用的所有字符的图像。我建议使用PNG,因为JPEG是针对照片(许多小渐变)

答案 1 :(得分:1)

我错了。如果您的字体包含日文字符,即使未安装东亚语言包,它也能在Windows XP中正确显示。

如果您安装了东亚语言包,并且您的字体不支持日文字符,Windows将从它认为与您最接近的字体匹配的两种字体之一中选择。这让我觉得我使用的字体包含日文字符,因为当我在字体和系统字体之间切换时,它会改变字符的绘制方式。

Microsoft可以免费安装名为Meiryo Collection Version 5.00的日语字体。此外还有page列出更多日文字体,列出的字体唯一的问题是许可证不明确。

答案 2 :(得分:0)

还有一种名为Lucida Sans Unicode的字体可能有助于缓解问题。