diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-05 08:58:48 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-05 08:58:48 +0200 |
commit | 69ef0481fc22ec3f0d7fa220a47a27fecf76a710 (patch) | |
tree | f6d96cc257fcb27e12151f079c583251df4c4720 /src/gui/text | |
parent | dbfd7f304c4d91096e104ec2383d92a37502d836 (diff) | |
parent | 91a2c8630b2204831566ab8e523c747f9d8ec927 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
Change-Id: I6f3878b204464313aa2f9d988d3b35121d4d9867
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 51b1418bc3..75e30b9552 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1827,7 +1827,7 @@ glyph_metrics_t QFontEngineFT::alphaMapBoundingBox(glyph_t glyph, QFixed subPixe static inline QImage alphaMapFromGlyphData(QFontEngineFT::Glyph *glyph, QFontEngine::GlyphFormat glyphFormat) { - if (glyph == Q_NULLPTR) + if (glyph == Q_NULLPTR || glyph->height == 0 || glyph->width == 0) return QImage(); QImage::Format format = QImage::Format_Invalid; @@ -1875,11 +1875,15 @@ QImage *QFontEngineFT::lockedAlphaMapForGlyph(glyph_t glyphIndex, QFixed subPixe currentlyLockedAlphaMap = alphaMapFromGlyphData(glyph, neededFormat); + const bool glyphHasGeometry = glyph != Q_NULLPTR && glyph->height != 0 && glyph->width != 0; if (!cacheEnabled && glyph != &emptyGlyph) { currentlyLockedAlphaMap = currentlyLockedAlphaMap.copy(); delete glyph; } + if (!glyphHasGeometry) + return Q_NULLPTR; + if (currentlyLockedAlphaMap.isNull()) return QFontEngine::lockedAlphaMapForGlyph(glyphIndex, subPixelPosition, neededFormat, t, offset); |