summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfontdatabase.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2012-03-30 14:23:36 +0300
committerQt by Nokia <qt-info@nokia.com>2012-04-10 12:49:34 +0200
commitef4783d2978ec5edf1b90ef5a13467c6c9ee3df6 (patch)
tree94a5ec1ae57db8aadf7a1a3a5c3ab4a957b8c98d /src/gui/text/qfontdatabase.cpp
parenta159ca80d73f07d617d6edd9b3e59bda25449a1c (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.cpp22
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();
}