Write font descriptions in the stable Qt 5 10/11-field format

QFont::toString() is not stable across Qt versions: Qt 6.11 switched to
a 19-field format carrying OpenType weights, which QFont::fromString()
of Qt 5.x and Qt <= 6.10 rejects, leaving a broken font. Projects saved
by a Qt 6.11+ build were therefore unreadable by older builds.

Add QETUtils::fontToString() composing the legacy 10/11-field
description (weight mapped back to the legacy scale with the same
closest-match table Qt uses when parsing) and use it at every site that
stores a font description in a project, element, table config or
settings file. Every Qt version from 5.15 through 6.12-beta parses this
form correctly, so files stay readable by every QET build in
circulation.

See issue #553.
This commit is contained in:
Dieter Mayer
2026-07-30 21:45:23 +02:00
parent 120ca08209
commit 5da1fe5fc8
11 changed files with 77 additions and 11 deletions
+2 -1
View File
@@ -18,6 +18,7 @@
#include "qetxml.h"
#include "NameList/nameslist.h"
#include "utils/qetutils.h"
#include <QDir>
#include <QFont>
@@ -477,7 +478,7 @@ QDomElement QETXML::modelHeaderDataToXml(
else if (role == Qt::FontRole)
{
auto font = variant.value<QFont>();
text_node.setData(font.toString());
text_node.setData(QETUtils::fontToString(font));
}
else if (role == Qt::TextAlignmentRole)
{