--- src/gui/painting/qpaintengine_x11.cpp.sav 2009-12-05 11:34:37.000000000 +0100 +++ src/gui/painting/qpaintengine_x11.cpp.sav 2010-01-03 22:20:14.300572192 +0100 @@ -2297,6 +2297,7 @@ static QPainterPath path_for_glyphs(cons path.setFillRule(Qt::WindingFill); ft->lockFace(); int i = 0; + const QFixed offs = QFixed::fromReal(aliasedCoordinateDelta); while (i < glyphs.size()) { QFontEngineFT::Glyph *glyph = ft->loadGlyph(glyphs[i], QFontEngineFT::Format_Mono); // #### fix case where we don't get a glyph @@ -2306,15 +2307,15 @@ static QPainterPath path_for_glyphs(cons Q_ASSERT(glyph->format == QFontEngineFT::Format_Mono); int n = 0; int h = glyph->height; - int xp = qRound(positions[i].x); - int yp = qRound(positions[i].y); + int xp = qRound(positions[i].x + offs); + int yp = qRound(positions[i].y + offs); xp += glyph->x; yp += -glyph->y + glyph->height; int pitch = ((glyph->width + 31) & ~31) >> 3; uchar *src = glyph->data; - while (h--) { + for (;h > 0;h--) { for (int x = 0; x < glyph->width; ++x) { bool set = src[x >> 3] & (0x80 >> (x & 7)); if (set) { @@ -2349,7 +2350,7 @@ void QX11PaintEngine::drawFreetype(const return; } - const bool xrenderPath = (X11->use_xrender + const bool xrenderPath = (X11->use_xrender && !ft->isBitmapFont() && !(d->pdev->devType() == QInternal::Pixmap && static_cast(d->pdev)->data->pixelType() == QPixmapData::BitmapType));