diff options
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 20 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/fontconfig.pri | 1 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 5 |
3 files changed, 6 insertions, 20 deletions
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 6845c67463..074724941f 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1485,11 +1485,6 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs return false; } -#if !defined(QT_NO_FONTCONFIG) - extern QMutex *qt_fontdatabase_mutex(); - QMutex *mtx = 0; -#endif - bool mirrored = flags & QTextEngine::RightToLeft; int glyph_pos = 0; if (freetype->symbol_map) { @@ -1500,11 +1495,6 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs if ( !glyphs->glyphs[glyph_pos] ) { glyph_t glyph; #if !defined(QT_NO_FONTCONFIG) - if (!mtx) { - mtx = qt_fontdatabase_mutex(); - mtx->lock(); - } - if (freetype->charset != 0 && FcCharSetHasChar(freetype->charset, uc)) { #else if (false) { @@ -1535,11 +1525,6 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs glyphs->glyphs[glyph_pos] = uc < QFreetypeFace::cmapCacheSize ? freetype->cmapCache[uc] : 0; if (!glyphs->glyphs[glyph_pos]) { #if !defined(QT_NO_FONTCONFIG) - if (!mtx) { - mtx = qt_fontdatabase_mutex(); - mtx->lock(); - } - if (freetype->charset == 0 || FcCharSetHasChar(freetype->charset, uc)) #endif { @@ -1561,11 +1546,6 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs *nglyphs = glyph_pos; glyphs->numGlyphs = glyph_pos; -#if !defined(QT_NO_FONTCONFIG) - if (mtx) - mtx->unlock(); -#endif - if (flags & QTextEngine::GlyphIndicesOnly) return true; diff --git a/src/platformsupport/fontdatabases/fontconfig/fontconfig.pri b/src/platformsupport/fontdatabases/fontconfig/fontconfig.pri index 2efcb4d4dc..7ea1c64e33 100644 --- a/src/platformsupport/fontdatabases/fontconfig/fontconfig.pri +++ b/src/platformsupport/fontdatabases/fontconfig/fontconfig.pri @@ -1,2 +1,3 @@ HEADERS += $$PWD/qfontconfigdatabase_p.h SOURCES += $$PWD/qfontconfigdatabase.cpp +DEFINES -= QT_NO_FONTCONFIG diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 3c37be209e..575fbb9af9 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -503,6 +503,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables:: FcResult result; FcPattern *match = FcFontMatch(0, pattern, &result); + FcCharSet *charset; if (match) { QFontEngineFT::HintStyle default_hint_style; @@ -549,6 +550,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables:: } else format = QFontEngineFT::Format_Mono; + FcPatternGetCharSet(match, FC_CHARSET, 0, &charset); FcPatternDestroy(match); } else format = antialias ? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono; @@ -571,6 +573,9 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables:: } } + if (engine && engine->freetype && !engine->freetype->charset) + engine->freetype->charset = FcCharSetCopy(charset); + return engine; } |