aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHatem ElKharashy <hatem.elkharashy@qt.io>2026-07-21 09:56:27 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2026-08-28 10:55:06 +0000
commit255542d9c2f13999ae31806533601caf47fa336a (patch)
treed3342614134fbb200afb531d6ce58de3bbe8aab9
parentbe8bb67b783e73935351ca60a1e3420433424652 (diff)
VectorImage: Modify the visitor to avoid compilation errors
Change how QSvgFontEngine works with QSvgFont after the refactor in Qt SVG module. Change-Id: I196bb11ba0d3c9e783ce0fc00b7d3168889ba079 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit cbdacc91486bbaad2b66669ed7cd69020f68e1ab) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quickvectorimage/generator/qsvgvisitorimpl.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/quickvectorimage/generator/qsvgvisitorimpl.cpp b/src/quickvectorimage/generator/qsvgvisitorimpl.cpp
index c3a89b8200..ce14d3dc1b 100644
--- a/src/quickvectorimage/generator/qsvgvisitorimpl.cpp
+++ b/src/quickvectorimage/generator/qsvgvisitorimpl.cpp
@@ -605,7 +605,7 @@ namespace {
class QSvgFontEngine : public QFontEngine
{
public:
- QSvgFontEngine(const QSvgFont *font, qreal size);
+ QSvgFontEngine(const QString &family, const QSvgFont *font, qreal size);
QFontEngine *cloneWithSize(qreal size) const override;
@@ -637,14 +637,16 @@ namespace {
private:
const QSvgFont *m_font;
+ QString m_family;
};
- QSvgFontEngine::QSvgFontEngine(const QSvgFont *font, qreal size)
+ QSvgFontEngine::QSvgFontEngine(const QString &family, const QSvgFont *font, qreal size)
: QFontEngine(Proxy)
, m_font(font)
+ , m_family(family)
{
fontDef.pixelSize = size;
- fontDef.families = QStringList(m_font->m_familyName);
+ fontDef.families = QStringList(family);
}
QFixed QSvgFontEngine::emSquareSize() const
@@ -734,7 +736,7 @@ namespace {
QFontEngine *QSvgFontEngine::cloneWithSize(qreal size) const
{
- QSvgFontEngine *otherEngine = new QSvgFontEngine(m_font, size);
+ QSvgFontEngine *otherEngine = new QSvgFontEngine(m_family, m_font, size);
return otherEngine;
}
@@ -800,17 +802,26 @@ void QSvgVisitorImpl::visitTextNode(const QSvgText *node)
const bool isTextArea = node->type() == QSvgNode::Textarea;
QString text;
- const QSvgFont *svgFont = m_styleResolver->states().svgFont;
bool needsRichText = false;
bool preserveWhiteSpace = node->whitespaceMode() == QSvgText::Preserve;
const QGradient *mainGradient = m_styleResolver->currentFillGradient();
+
+ auto *fontStyle = static_cast<QSvgFontStyle *>(node->styleProperty(QSvgStyleProperty::Font));
+ QSvgFont *svgFont = nullptr;
+ QString svgFontFamily;
+ if (fontStyle) {
+ svgFontFamily = fontStyle->qfont().family();
+ svgFont = node->document()->svgFont(svgFontFamily);
+ }
+
QFontEngine *fontEngine = nullptr;
if (svgFont != nullptr) {
- fontEngine = new QSvgFontEngine(svgFont, m_styleResolver->painter().font().pointSize());
+ fontEngine = new QSvgFontEngine(svgFontFamily, svgFont, m_styleResolver->painter().font().pointSize());
fontEngine->ref.ref();
}
+
#if QT_CONFIG(texthtmlparser)
bool needsPathNode = mainGradient != nullptr
|| svgFont != nullptr
@@ -976,7 +987,7 @@ void QSvgVisitorImpl::visitTextNode(const QSvgText *node)
// first)
QFont blockFont = block.charFormat().font();
if (svgFont != nullptr
- && blockFont.family() == svgFont->m_familyName) {
+ && blockFont.family() == svgFontFamily) {
QRawFont rawFont;
QRawFontPrivate *rawFontD = QRawFontPrivate::get(rawFont);
rawFontD->setFontEngine(fontEngine->cloneWithSize(blockFont.pixelSize()));