【发布时间】:2013-10-04 07:52:30
【问题描述】:
我一直在用 FreeType 渲染文本。特别是非ASCII字符让我头疼。经过一些试验和错误后,我设法渲染了一些文本,但我的变音符号没有显示:
std::string text = "Hauptmenü";
for(std::string::iterator it = text.begin(); it != text.end(); ++it) {
std::cout << *it;
FT_Face face = loadFace(faceName);
FT_Set_Pixel_Sizes(face, 0, fontSize);
if(FT_Load_Char(face, *it, FT_LOAD_DEFAULT)) {
std::cout << "Could not load character '" << character << "'" << std::endl;
}
FT_Get_Glyph(face->glyph, &glyph);
FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);
//render the glyphs to screen and so on
}
加载字体、获取字形等基本可以正常工作,但 'ü' 没有渲染。这是我的输出的样子:
显示除“ü”以外的所有字符!
这最终出现在我的控制台中,所以我猜我对字符串的迭代一定有问题,因为“ü”被分成两个字符。我为最后两个字符获得的字形位图的宽度和高度均为 0。
我该如何解决这个问题?
【问题讨论】: