summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp18
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm2
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,