39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
|
--- src/gui/painting/qpaintengine_x11.cpp.sav 2009-12-05 11:34:37.000000000 +0100
|
||
|
+++ src/gui/painting/qpaintengine_x11.cpp 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<const QPixmap *>(d->pdev)->data->pixelType() == QPixmapData::BitmapType));
|
||
|
|