Пытаюсь сделать просмотр шрифта. Рендерится фритайпом2, отображается в QImage. Однако не получается: после сохранения QImage'а картинка оказывается цветная, вместо градаций серого, в каком виде, собственно, её и отдает фритайп. Вот код, которым я это пытаюсь сделать:
C++ (Qt)
QPreviewWidget::QPreviewWidget(QWidget* parent) :
QWidget(parent),
str("Small brown fox jumping over the lazy dog"),
size(24)
{
int e;
e = FT_Init_FreeType(&library);
e = FT_New_Face( library, "arial.ttf", 0, &face );
e = FT_Set_Char_Size( face, size << 6, size << 6, 96, 96 );
e = FT_Set_Pixel_Sizes( face, size, size );
Render();
}
void QPreviewWidget::Render()
{
int e;
for(int i = 0; i < str.length(); ++i)
{
e = FT_Load_Char(face, str[i].toAscii(), FT_LOAD_RENDER);
if( e )
continue;
int wdt = face->glyph->bitmap.width;
int hgt = face->glyph->bitmap.rows;
int ptc = face->glyph->bitmap.pitch;
uchar* buffer = face->glyph->bitmap.buffer;
QImage img(buffer, wdt, hgt, ptc, QImage::Format_Indexed8);
bool valid = !img.isNull(); //Ok, it is true
bool gray = img.allGray(); //Ok, it is true
bool grayscale = img.isGrayscale(); //Ok, it is true
img.save("qweqwe.bmp", "BMP", 100); //WTF???? Picture is colorful!!
}
}
Как правильно отрендерить строчку текста фритайпом и загнать её всю в QImage?
PS: Использовать QT-шные возможности нельзя, она не умеет Type1, ни виндовые, ни маковские, а FT2 - умеет.