Output all font families in HTML output
Fix our generation of font-family CSS so it contains the full list of families. Change-Id: I37d5efa64faeb4b6aeb7e2c5d6a54ff07febe9cc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
parent
bc8f871784
commit
64033c3592
|
|
@ -2299,7 +2299,11 @@ QString QTextHtmlExporter::toHtml(const QByteArray &encoding, ExportMode mode)
|
|||
if (mode == ExportEntireDocument) {
|
||||
html += QLatin1String(" style=\"");
|
||||
|
||||
emitFontFamily(defaultCharFormat.fontFamily());
|
||||
QStringList fontFamilies = defaultCharFormat.fontFamilies().toStringList();
|
||||
if (!fontFamilies.isEmpty())
|
||||
emitFontFamily(fontFamilies);
|
||||
else
|
||||
emitFontFamily(defaultCharFormat.fontFamily());
|
||||
|
||||
if (defaultCharFormat.hasProperty(QTextFormat::FontPointSize)) {
|
||||
html += QLatin1String(" font-size:");
|
||||
|
|
@ -2361,8 +2365,12 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
|
|||
bool attributesEmitted = false;
|
||||
|
||||
{
|
||||
const QStringList families = format.fontFamilies().toStringList();
|
||||
const QString family = format.fontFamily();
|
||||
if (!family.isEmpty() && family != defaultCharFormat.fontFamily()) {
|
||||
if (!families.isEmpty() && families != defaultCharFormat.fontFamilies().toStringList()) {
|
||||
emitFontFamily(families);
|
||||
attributesEmitted = true;
|
||||
} else if (!family.isEmpty() && family != defaultCharFormat.fontFamily()) {
|
||||
emitFontFamily(family);
|
||||
attributesEmitted = true;
|
||||
}
|
||||
|
|
@ -2639,6 +2647,27 @@ void QTextHtmlExporter::emitFontFamily(const QString &family)
|
|||
html += QLatin1Char(';');
|
||||
}
|
||||
|
||||
void QTextHtmlExporter::emitFontFamily(const QStringList &families)
|
||||
{
|
||||
html += QLatin1String(" font-family:");
|
||||
|
||||
bool first = true;
|
||||
for (const QString &family : families) {
|
||||
QLatin1String quote("\'");
|
||||
if (family.contains(QLatin1Char('\'')))
|
||||
quote = QLatin1String(""");
|
||||
|
||||
if (!first)
|
||||
html += QLatin1String(",");
|
||||
else
|
||||
first = false;
|
||||
html += quote;
|
||||
html += family.toHtmlEscaped();
|
||||
html += quote;
|
||||
}
|
||||
html += QLatin1Char(';');
|
||||
}
|
||||
|
||||
void QTextHtmlExporter::emitMargins(const QString &top, const QString &bottom, const QString &left, const QString &right)
|
||||
{
|
||||
html += QLatin1String(" margin-top:");
|
||||
|
|
|
|||
|
|
@ -396,6 +396,7 @@ private:
|
|||
void emitPageBreakPolicy(QTextFormat::PageBreakFlags policy);
|
||||
|
||||
void emitFontFamily(const QString &family);
|
||||
void emitFontFamily(const QStringList &families);
|
||||
|
||||
void emitBackgroundAttribute(const QTextFormat &format);
|
||||
QString findUrlForImage(const QTextDocument *doc, qint64 cacheKey, bool isPixmap);
|
||||
|
|
|
|||
|
|
@ -861,6 +861,18 @@ void tst_QTextDocument::toHtml_data()
|
|||
<< QString("<p DEFAULTBLOCKSTYLE><span style=\" font-family:'Foo"s Family';\">Blah</span></p>");
|
||||
}
|
||||
|
||||
{
|
||||
CREATE_DOC_AND_CURSOR();
|
||||
|
||||
QTextCharFormat fmt;
|
||||
fmt.setFontFamily("Times");
|
||||
fmt.setFontFamilies(QStringList{ "Times", "serif" });
|
||||
cursor.insertText("Blah", fmt);
|
||||
|
||||
QTest::newRow("font-family-with-fallback") << QTextDocumentFragment(&doc)
|
||||
<< QString("<p DEFAULTBLOCKSTYLE><span style=\" font-family:'Times','serif';\">Blah</span></p>");
|
||||
}
|
||||
|
||||
{
|
||||
CREATE_DOC_AND_CURSOR();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue