diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
commit | 9bd032355163d92cda5e7e59ecd21214b131f187 (patch) | |
tree | 002fa12558505683143c7eb08949a3d225bf0712 /src/gui/text | |
parent | d037d25c3d5236623371cf051aaf6a9e59792ba7 (diff) | |
parent | 41673c45dde2eb95ee21dd918235218399f2be2c (diff) |
Merge remote-tracking branch 'origin/master' into api_changes
Conflicts:
configure
src/corelib/io/qurl.cpp
src/gui/kernel/qwindow.cpp
src/tools/moc/generator.cpp
src/widgets/kernel/qwidget_qpa.cpp
src/widgets/styles/qstyle.h
src/widgets/widgets/qtabbar.cpp
tests/auto/corelib/codecs/utf8/tst_utf8.cpp
Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfont_qpa.cpp | 35 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase.cpp | 22 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase.h | 5 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase_qpa.cpp | 6 | ||||
-rw-r--r-- | src/gui/text/qplatformfontdatabase_qpa.cpp | 29 | ||||
-rw-r--r-- | src/gui/text/qplatformfontdatabase_qpa.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextengine.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextformat.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtexthtmlparser.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextoption.cpp | 4 | ||||
-rw-r--r-- | src/gui/text/qtextoption.h | 4 |
11 files changed, 59 insertions, 54 deletions
diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp index 6576f237c4..b73b03025b 100644 --- a/src/gui/text/qfont_qpa.cpp +++ b/src/gui/text/qfont_qpa.cpp @@ -75,35 +75,12 @@ void QFont::setRawName(const QString &) QString QFont::defaultFamily() const { - QString familyName; - switch(d->request.styleHint) { - case QFont::SansSerif: - familyName = QString::fromLatin1("sans-serif"); - break; - case QFont::Serif: - familyName = QString::fromLatin1("serif"); - break; - case QFont::TypeWriter: - case QFont::Monospace: - familyName = QString::fromLatin1("monospace"); - break; - case QFont::Cursive: - familyName = QString::fromLatin1("cursive"); - break; - case QFont::Fantasy: - familyName = QString::fromLatin1("fantasy"); - break; - case QFont::Decorative: - familyName = QString::fromLatin1("decorative"); - break; - case QFont::System: - default: - familyName = QString(); - break; - } - - return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(familyName); - + QPlatformFontDatabase *fontDB = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); + const QStringList fallbacks = fontDB->fallbacksForFamily(QString(), QFont::StyleNormal + , QFont::StyleHint(d->request.styleHint), QUnicodeTables::Common); + if (!fallbacks.isEmpty()) + return fallbacks.first(); + return QString(); } QString QFont::lastResortFamily() const 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(); } diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index b30f7da48d..f0830f2a41 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -46,8 +46,6 @@ #include <QtCore/qstring.h> #include <QtGui/qfont.h> -class tst_QFont; - QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -162,9 +160,6 @@ private: friend class QFontEngineMultiXLFD; friend class QFontEngineMultiQWS; friend class QFontEngineMultiQPA; -#ifdef QT_BUILD_INTERNAL - friend class ::tst_QFont; -#endif QFontDatabasePrivate *d; }; diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 0014efc450..c2a3aa9722 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -161,9 +161,12 @@ QFontEngine *loadSingleEngine(int script, Q_UNUSED(foundry); Q_ASSERT(size); + QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); int pixelSize = size->pixelSize; - if (!pixelSize || (style->smoothScalable && pixelSize == SMOOTH_SCALABLE)) + if (!pixelSize || (style->smoothScalable && pixelSize == SMOOTH_SCALABLE) + || pfdb->fontsAlwaysScalable()) { pixelSize = request.pixelSize; + } QFontDef def = request; def.pixelSize = pixelSize; @@ -171,7 +174,6 @@ QFontEngine *loadSingleEngine(int script, QFontCache::Key key(def,script); QFontEngine *engine = QFontCache::instance()->findEngine(key); if (!engine) { - QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); engine = pfdb->fontEngine(def,QUnicodeTables::Script(script),size->handle); if (engine) { QFontCache::Key key(def,script); diff --git a/src/gui/text/qplatformfontdatabase_qpa.cpp b/src/gui/text/qplatformfontdatabase_qpa.cpp index 6af0398f00..f6d82802f7 100644 --- a/src/gui/text/qplatformfontdatabase_qpa.cpp +++ b/src/gui/text/qplatformfontdatabase_qpa.cpp @@ -385,6 +385,35 @@ QString QPlatformFontDatabase::resolveFontFamilyAlias(const QString &family) con } /*! + Return true if all fonts are considered scalable when using this font database. + Defaults to false. + + \since 5.0 + */ + +bool QPlatformFontDatabase::fontsAlwaysScalable() const +{ + return false; +} + +/*! + Return list of standard font sizes when using this font database. + + \since 5.0 + */ + + QList<int> QPlatformFontDatabase::standardSizes() const +{ + 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 }; + ret.reserve(int(sizeof(standard) / sizeof(standard[0]))); + const unsigned short *sizes = standard; + while (*sizes) ret << *sizes++; + return ret; +} + +/*! \class QPlatformFontDatabase \brief The QPlatformFontDatabase class makes it possible to customize how fonts are discovered and how they are rendered diff --git a/src/gui/text/qplatformfontdatabase_qpa.h b/src/gui/text/qplatformfontdatabase_qpa.h index 3810b75dbf..9fe3b0380d 100644 --- a/src/gui/text/qplatformfontdatabase_qpa.h +++ b/src/gui/text/qplatformfontdatabase_qpa.h @@ -102,6 +102,8 @@ public: virtual QFont defaultFont() const; virtual QString resolveFontFamilyAlias(const QString &family) const; + virtual bool fontsAlwaysScalable() const; + virtual QList<int> standardSizes() const; //callback static void registerQPF2Font(const QByteArray &dataArray, void *handle); diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index c5c6b2e621..793ea4aa9e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -2185,7 +2185,7 @@ int QTextEngine::formatIndex(const QScriptItem *si) const int pos = si->position; if (specialData && si->position >= specialData->preeditPosition) { if (si->position < specialData->preeditPosition + specialData->preeditText.length()) - pos = qMax(specialData->preeditPosition - 1, 0); + pos = qMax(qMin(block.length(), specialData->preeditPosition) - 1, 0); else pos -= specialData->preeditText.length(); } diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp index a7e68a41c2..9a38b1f0b2 100644 --- a/src/gui/text/qtextformat.cpp +++ b/src/gui/text/qtextformat.cpp @@ -3010,7 +3010,6 @@ QTextImageFormat::QTextImageFormat(const QTextFormat &fmt) */ -// ### Qt5 qreal replace with a QTextLength /*! \fn qreal QTextImageFormat::width() const @@ -3029,7 +3028,6 @@ QTextImageFormat::QTextImageFormat(const QTextFormat &fmt) */ -// ### Qt5 qreal replace with a QTextLength /*! \fn qreal QTextImageFormat::height() const diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp index da08c4e468..7005fca902 100644 --- a/src/gui/text/qtexthtmlparser.cpp +++ b/src/gui/text/qtexthtmlparser.cpp @@ -1051,7 +1051,7 @@ void QTextHtmlParserNode::initializeProperties(const QTextHtmlParserNode *parent && !attributes.at(i + 1).isEmpty()) { hasHref = true; charFormat.setUnderlineStyle(QTextCharFormat::SingleUnderline); - charFormat.setForeground(Qt::blue); // ### Qt5: QApplication::palette().link()); + charFormat.setForeground(Qt::blue); } } diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp index b3b4c90d79..25760de0dc 100644 --- a/src/gui/text/qtextoption.cpp +++ b/src/gui/text/qtextoption.cpp @@ -145,7 +145,7 @@ QTextOption &QTextOption::operator=(const QTextOption &o) \sa tabArray(), setTabStop(), setTabs() */ -void QTextOption::setTabArray(QList<qreal> tabStops) // Qt5: const ref +void QTextOption::setTabArray(const QList<qreal> &tabStops) { if (!d) d = new QTextOptionPrivate; @@ -165,7 +165,7 @@ void QTextOption::setTabArray(QList<qreal> tabStops) // Qt5: const ref \sa tabStops() */ -void QTextOption::setTabs(QList<QTextOption::Tab> tabStops) // Qt5: const ref +void QTextOption::setTabs(const QList<QTextOption::Tab> &tabStops) { if (!d) d = new QTextOptionPrivate; diff --git a/src/gui/text/qtextoption.h b/src/gui/text/qtextoption.h index 96a0cdda9b..44dc79e255 100644 --- a/src/gui/text/qtextoption.h +++ b/src/gui/text/qtextoption.h @@ -122,10 +122,10 @@ public: inline void setTabStop(qreal tabStop); inline qreal tabStop() const { return tab; } - void setTabArray(QList<qreal> tabStops); + void setTabArray(const QList<qreal> &tabStops); QList<qreal> tabArray() const; - void setTabs(QList<Tab> tabStops); + void setTabs(const QList<Tab> &tabStops); QList<Tab> tabs() const; void setUseDesignMetrics(bool b) { design = b; } |