diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/text/qfontengine_p.h | 5 | ||||
-rw-r--r-- | src/gui/text/qtextlayout.cpp | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 5f779e155a..e9a8d6f607 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -434,6 +434,11 @@ public: QFontEngine *engine(int at) const {Q_ASSERT(at < engines.size()); return engines.at(at); } + inline void ensureEngineAt(int at) + { + if (at >= engines.size() || engines.at(at) == 0) + loadEngine(at); + } protected: friend class QPSPrintEnginePrivate; diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 8c5e63da54..d253c02052 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -2305,6 +2305,7 @@ QList<QGlyphRun> QTextLine::glyphRuns(int from, int length) const continue; QGlyphLayout subLayout = glyphLayout.mid(start, end - start); + multiFontEngine->ensureEngineAt(which); glyphRuns.append(glyphRunWithInfo(multiFontEngine->engine(which), subLayout, pos, flags, x, width)); for (int i = 0; i < subLayout.numGlyphs; i++) { @@ -2317,6 +2318,7 @@ QList<QGlyphRun> QTextLine::glyphRuns(int from, int length) const } QGlyphLayout subLayout = glyphLayout.mid(start, end - start); + multiFontEngine->ensureEngineAt(which); QGlyphRun glyphRun = glyphRunWithInfo(multiFontEngine->engine(which), subLayout, pos, flags, x, width); if (!glyphRun.isEmpty()) |