diff options
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 18 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 2 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 8d6f415fba..9c28c9fa63 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -491,8 +491,22 @@ void QFontconfigDatabase::populateFontDatabase() fontFile->fileName = QLatin1String((const char *)file_value); fontFile->indexValue = indexValue; - if (isSymbolFont(fontFile)) - writingSystems.setSupported(QFontDatabase::Other); + if (!writingSystems.supported(QFontDatabase::Symbol)) { + // Symbol encoding used to encode various crap in the 32..255 character + // code range, which belongs to Latin character code range. + // Symbol fonts usually don't have any other code ranges support. + bool mightBeSymbolFont = true; + for (int j = 2; j < QFontDatabase::WritingSystemsCount; ++j) { + if (writingSystems.supported(QFontDatabase::WritingSystem(j))) { + mightBeSymbolFont = false; + break; + } + } + if (mightBeSymbolFont && isSymbolFont(fontFile)) { + writingSystems.setSupported(QFontDatabase::Latin, false); + writingSystems.setSupported(QFontDatabase::Symbol); + } + } QFont::Style style = (slant_value == FC_SLANT_ITALIC) ? QFont::StyleItalic diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 3e553acd0a..8d1c4ed064 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -189,6 +189,8 @@ void QCoreTextFontEngine::init() avgCharWidth = QFixed::fromReal(width * fontDef.pixelSize / emSize); } else avgCharWidth = QFontEngine::averageCharWidth(); + + cache_cost = (CTFontGetAscent(ctfont) + CTFontGetDescent(ctfont)) * avgCharWidth.toInt() * 2000; } bool QCoreTextFontEngine::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, |