Fix rounding error when drawing scaled text on OS X
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Tue, 4 Sep 2012 14:18:45 +0000 (16:18 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 10 Sep 2012 09:00:39 +0000 (11:00 +0200)
This especially affected the print preview dialog, where certain
characters would be grossly mispositioned.

Task-number: QTBUG-27131
Change-Id: I385474a6f609a8f4291988206c7e63a0747673dd
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm

index 92eaebb..6003ccb 100644 (file)
@@ -440,12 +440,12 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
     glyph_metrics_t br = boundingBox(glyph);
 
     if (m.isScaling()) {
-        QFixed hscale = QFixed::fromReal(m.m11());
-        QFixed vscale = QFixed::fromReal(m.m22());
-        br.width  *= hscale;
-        br.height *= vscale;
-        br.x      *= hscale;
-        br.y      *= vscale;
+        qreal hscale = m.m11();
+        qreal vscale = m.m22();
+        br.width  = QFixed::fromReal(br.width.toReal() * hscale);
+        br.height = QFixed::fromReal(br.height.toReal() * vscale);
+        br.x      = QFixed::fromReal(br.x.toReal() * hscale);
+        br.y      = QFixed::fromReal(br.y.toReal() * vscale);
     }
 
     QImage im(qRound(br.width)+2, qRound(br.height)+2, QImage::Format_RGB32);