summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qtextdocument.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-06 01:00:08 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2020-01-06 07:20:18 +0000
commit3a010f72b81d530df96bfb04e0dd2f13a527cc18 (patch)
tree76bcc3439bf0efccc6b354f648817bcf455409f0 /src/gui/text/qtextdocument.cpp
parent1f87fb359fdff14e42662384a9c8a0bcb3837671 (diff)
parent2c3eaa7b87219d24facfe81a5b22cb218324f1ae (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts: src/corelib/kernel/qvariant.h Change-Id: I8f3873e74b9795ac889e7c7ec5de2619bca92160
Diffstat (limited to 'src/gui/text/qtextdocument.cpp')
-rw-r--r--src/gui/text/qtextdocument.cpp39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index f2caedc25f..fb75954d9c 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -2297,6 +2297,17 @@ QTextHtmlExporter::QTextHtmlExporter(const QTextDocument *_doc)
defaultCharFormat.clearProperty(QTextFormat::TextUnderlineStyle);
}
+static QStringList resolvedFontFamilies(const QTextCharFormat &format)
+{
+ QStringList fontFamilies = format.fontFamilies().toStringList();
+ const QString mainFontFamily = format.fontFamily();
+ if (!mainFontFamily.isEmpty() && !fontFamilies.startsWith(mainFontFamily)) {
+ fontFamilies.removeAll(mainFontFamily);
+ fontFamilies.prepend(mainFontFamily);
+ }
+ return fontFamilies;
+}
+
/*!
Returns the document in HTML format. The conversion may not be
perfect, especially for complex documents, due to the limitations
@@ -2325,11 +2336,7 @@ QString QTextHtmlExporter::toHtml(const QByteArray &encoding, ExportMode mode)
if (mode == ExportEntireDocument) {
html += QLatin1String(" style=\"");
- QStringList fontFamilies = defaultCharFormat.fontFamilies().toStringList();
- if (!fontFamilies.isEmpty())
- emitFontFamily(fontFamilies);
- else
- emitFontFamily(defaultCharFormat.fontFamily());
+ emitFontFamily(resolvedFontFamilies(defaultCharFormat));
if (defaultCharFormat.hasProperty(QTextFormat::FontPointSize)) {
html += QLatin1String(" font-size:");
@@ -2391,14 +2398,10 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
bool attributesEmitted = false;
{
- const QStringList families = format.fontFamilies().toStringList();
- const QString family = format.fontFamily();
- if (!families.isEmpty() && families != defaultCharFormat.fontFamilies().toStringList()) {
+ const QStringList families = resolvedFontFamilies(format);
+ if (!families.isEmpty() && families != resolvedFontFamilies(defaultCharFormat)) {
emitFontFamily(families);
attributesEmitted = true;
- } else if (!family.isEmpty() && family != defaultCharFormat.fontFamily()) {
- emitFontFamily(family);
- attributesEmitted = true;
}
}
@@ -2661,20 +2664,6 @@ void QTextHtmlExporter::emitPageBreakPolicy(QTextFormat::PageBreakFlags policy)
html += QLatin1String(" page-break-after:always;");
}
-void QTextHtmlExporter::emitFontFamily(const QString &family)
-{
- html += QLatin1String(" font-family:");
-
- QLatin1String quote("\'");
- if (family.contains(QLatin1Char('\'')))
- quote = QLatin1String("&quot;");
-
- html += quote;
- html += family.toHtmlEscaped();
- html += quote;
- html += QLatin1Char(';');
-}
-
void QTextHtmlExporter::emitFontFamily(const QStringList &families)
{
html += QLatin1String(" font-family:");