summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qtexthtmlparser.cpp11
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp24
2 files changed, 34 insertions, 1 deletions
diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp
index 895232e4c7..929db40e5d 100644
--- a/src/gui/text/qtexthtmlparser.cpp
+++ b/src/gui/text/qtexthtmlparser.cpp
@@ -1505,7 +1505,16 @@ void QTextHtmlParser::applyAttributes(const QStringList &attributes)
n -= 3;
node->charFormat.setProperty(QTextFormat::FontSizeAdjustment, n);
} else if (key == QLatin1String("face")) {
- node->charFormat.setFontFamily(value);
+ if (value.contains(QLatin1Char(','))) {
+ const QStringList values = value.split(QLatin1Char(','));
+ QStringList families;
+ for (const QString &family : values)
+ families << family.trimmed();
+ node->charFormat.setFontFamilies(families);
+ node->charFormat.setFontFamily(families.at(0));
+ } else {
+ node->charFormat.setFontFamily(value);
+ }
} else if (key == QLatin1String("color")) {
QColor c; c.setNamedColor(value);
if (!c.isValid())
diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
index e4ee778f64..591fafc7fb 100644
--- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
@@ -188,6 +188,9 @@ private slots:
void lineHeightType();
void cssLineHeightMultiplier();
+
+ void fontTagFace();
+
private:
void backgroundImage_checkExpectedHtml(const QTextDocument &doc);
void buildRegExpData();
@@ -3498,5 +3501,26 @@ void tst_QTextDocument::cssLineHeightMultiplier()
}
}
+void tst_QTextDocument::fontTagFace()
+{
+ {
+ QTextDocument td;
+ td.setHtml("<html><body><font face='Times'>Foobar</font></body></html>");
+ QTextFragment fragment = td.begin().begin().fragment();
+ QTextCharFormat format = fragment.charFormat();
+ QCOMPARE(format.fontFamily(), QLatin1String("Times"));
+ }
+
+ {
+ QTextDocument td;
+ td.setHtml("<html><body><font face='Times, serif'>Foobar</font></body></html>");
+ QTextFragment fragment = td.begin().begin().fragment();
+ QTextCharFormat format = fragment.charFormat();
+ QCOMPARE(format.fontFamily(), QLatin1String("Times"));
+ QStringList expectedFamilies = { QLatin1String("Times"), QLatin1String("serif") };
+ QCOMPARE(format.fontFamilies().toStringList(), expectedFamilies);
+ }
+}
+
QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc"