summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qfontdatabase.cpp2
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp24
2 files changed, 25 insertions, 1 deletions
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 9cb9155a50..ae6250a3f5 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -783,7 +783,7 @@ QFontEngine *loadSingleEngine(int script,
if (style->key.stretch != 0 && request.stretch != 0
&& (request.styleName.isEmpty() || request.styleName != style->styleName)) {
def.stretch = (request.stretch * 100 + style->key.stretch / 2) / style->key.stretch;
- } else {
+ } else if (request.stretch == QFont::AnyStretch) {
def.stretch = 100;
}
diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
index 1fefec3129..dd3bbde871 100644
--- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
@@ -80,6 +80,8 @@ private slots:
void registerOpenTypePreferredNamesSystem();
void registerOpenTypePreferredNamesApplication();
+ void stretchRespected();
+
private:
QString m_ledFont;
QString m_testFont;
@@ -349,6 +351,28 @@ static QString testString()
return QStringLiteral("foo bar");
}
+void tst_QFontDatabase::stretchRespected()
+{
+ int italicId = QFontDatabase::addApplicationFont(m_testFontItalic);
+ QVERIFY(italicId != -1);
+
+ QVERIFY(!QFontDatabase::applicationFontFamilies(italicId).isEmpty());
+
+ QString italicFontName = QFontDatabase::applicationFontFamilies(italicId).first();
+
+ QFont italicFont = QFontDatabase::font(italicFontName,
+ QString::fromLatin1("Italic"), 14);
+ QVERIFY(italicFont.italic());
+
+ QFont italicStretchedFont = italicFont;
+ italicStretchedFont.setStretch( 400 );
+
+ QVERIFY(QFontMetricsF(italicFont).horizontalAdvance(QStringLiteral("foobar")) <
+ QFontMetricsF(italicStretchedFont).horizontalAdvance(QStringLiteral("foobar")));
+
+ QFontDatabase::removeApplicationFont(italicId);
+}
+
void tst_QFontDatabase::condensedFontWidthNoFontMerging()
{
int regularFontId = QFontDatabase::addApplicationFont(m_testFont);