diff options
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 8 | ||||
-rw-r--r-- | src/gui/text/qfontengine_ft_p.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 4545645dc6..7b4925a9c8 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1437,6 +1437,14 @@ void QFontEngineFT::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_me unlockFace(); } +bool QFontEngineFT::supportsTransformation(const QTransform &transform) const +{ + // The freetype engine falls back to QFontEngine for tranformed glyphs, + // which uses fast-tranform and produces very ugly results, so we claim + // to support just translations. + return transform.type() <= QTransform::TxTranslate; +} + static inline unsigned int getChar(const QChar *str, int &i, const int len) { uint ucs4 = str[i].unicode(); diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index e09fa6f94f..bd4c855b91 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -233,6 +233,8 @@ private: virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics); + virtual bool supportsTransformation(const QTransform &transform) const; + virtual bool canRender(const QChar *string, int len); virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, |