diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2012-03-30 14:23:36 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-10 12:49:34 +0200 |
commit | ef4783d2978ec5edf1b90ef5a13467c6c9ee3df6 (patch) | |
tree | 94a5ec1ae57db8aadf7a1a3a5c3ab4a957b8c98d /src/gui/text/qfontdatabase.cpp | |
parent | a159ca80d73f07d617d6edd9b3e59bda25449a1c (diff) |
Make it possible to enable non-scalable font scaling
Windows native font engine supports scaling of non-scalalble fonts, so
make it possible to do so.
Added two functions to QPlatformFontDatabase: fontsAlwaysScalable() and
standardSizes(), and made fontsAlwaysScalable() to return true for
Windows native font database.
Windows Freetype font engine doesn't seem to support scaling of
non-scalable fonts, so didn't enable it in there.
Added implementation of standardSizes() for Mac OS.
Task-number: QTBUG-24970
Change-Id: I41c9356ede8a37b7c61db94340dbeb5b629f34b9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Diffstat (limited to 'src/gui/text/qfontdatabase.cpp')
-rw-r--r-- | src/gui/text/qfontdatabase.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 468d029cf2..a1af856992 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -735,12 +735,13 @@ static void initFontDef(const QtFontDesc &desc, const QFontDef &request, QFontDe fontDef->family += QLatin1Char(']'); } - if (desc.style->smoothScalable) + if (desc.style->smoothScalable + || QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable() + || (desc.style->bitmapScalable && (request.styleStrategy & QFont::PreferMatch))) { fontDef->pixelSize = request.pixelSize; - else if ((desc.style->bitmapScalable && (request.styleStrategy & QFont::PreferMatch))) - fontDef->pixelSize = request.pixelSize; - else + } else { fontDef->pixelSize = desc.size->pixelSize; + } fontDef->styleHint = request.styleHint; fontDef->styleStrategy = request.styleStrategy; @@ -1534,6 +1535,9 @@ bool QFontDatabase::isScalable(const QString &family, QList<int> QFontDatabase::pointSizes(const QString &family, const QString &styleName) { + if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) + return standardSizes(); + bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1634,6 +1638,9 @@ QFont QFontDatabase::font(const QString &family, const QString &style, QList<int> QFontDatabase::smoothSizes(const QString &family, const QString &styleName) { + if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) + return standardSizes(); + bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1689,12 +1696,7 @@ QList<int> QFontDatabase::smoothSizes(const QString &family, */ QList<int> QFontDatabase::standardSizes() { - QList<int> ret; - static const unsigned short standard[] = - { 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72, 0 }; - const unsigned short *sizes = standard; - while (*sizes) ret << *sizes++; - return ret; + return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->standardSizes(); } |