Windows: Use common code paths for default font families.

Factor out function to determine the font family for a style
hint and use that for the FreeType font database as well.

Task-number: QTBUG-39961
Change-Id: Ic5ec0928c7994b61e4d2b10d829826658b1aa1d5
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
bb10
Friedemann Kleint 2014-07-25 11:25:18 +02:00
parent fd331a5b3a
commit da6aac0950
3 changed files with 27 additions and 53 deletions

View File

@ -1613,40 +1613,36 @@ QStringList QWindowsFontDatabase::extraTryFontsForFamily(const QString &family)
return result;
}
QString QWindowsFontDatabase::familyForStyleHint(QFont::StyleHint styleHint)
{
switch (styleHint) {
case QFont::Times:
return QStringLiteral("Times New Roman");
case QFont::Courier:
return QStringLiteral("Courier New");
case QFont::Monospace:
return QStringLiteral("Courier New");
case QFont::Cursive:
return QStringLiteral("Comic Sans MS");
case QFont::Fantasy:
return QStringLiteral("Impact");
case QFont::Decorative:
return QStringLiteral("Old English");
case QFont::Helvetica:
return QStringLiteral("Arial");
case QFont::System:
default:
break;
}
return QStringLiteral("MS Shell Dlg 2");
}
QStringList QWindowsFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const
{
QStringList result = QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script);
if (!result.isEmpty())
return result;
switch (styleHint) {
case QFont::Times:
result << QString::fromLatin1("Times New Roman");
break;
case QFont::Courier:
result << QString::fromLatin1("Courier New");
break;
case QFont::Monospace:
result << QString::fromLatin1("Courier New");
break;
case QFont::Cursive:
result << QString::fromLatin1("Comic Sans MS");
break;
case QFont::Fantasy:
result << QString::fromLatin1("Impact");
break;
case QFont::Decorative:
result << QString::fromLatin1("Old English");
break;
case QFont::Helvetica:
result << QString::fromLatin1("Arial");
break;
case QFont::System:
default:
result << QString::fromLatin1("MS Shell Dlg 2");
break;
}
result.append(QWindowsFontDatabase::familyForStyleHint(styleHint));
result.append(QWindowsFontDatabase::extraTryFontsForFamily(family));
qCDebug(lcQpaFonts) << __FUNCTION__ << family << style << styleHint

View File

@ -104,6 +104,7 @@ public:
static LOGFONT fontDefToLOGFONT(const QFontDef &fontDef);
static QStringList extraTryFontsForFamily(const QString &family);
static QString familyForStyleHint(QFont::StyleHint styleHint);
private:
void populate(const QString &family = QString());

View File

@ -442,30 +442,7 @@ QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString &family, QF
if (!result.isEmpty())
return result;
switch (styleHint) {
case QFont::Times:
result << QString::fromLatin1("Times New Roman");
break;
case QFont::Courier:
result << QString::fromLatin1("Courier New");
break;
case QFont::Monospace:
result << QString::fromLatin1("Courier New");
break;
case QFont::Cursive:
result << QString::fromLatin1("Comic Sans MS");
break;
case QFont::Fantasy:
result << QString::fromLatin1("Impact");
break;
case QFont::Decorative:
result << QString::fromLatin1("Old English");
break;
case QFont::Helvetica:
case QFont::System:
default:
result << QString::fromLatin1("Arial");
}
result.append(QWindowsFontDatabase::familyForStyleHint(styleHint));
#ifdef Q_OS_WINCE
QSettings settings(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\FontLink\\SystemLink"), QSettings::NativeFormat);