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
+3 -1
View File
@@ -17,6 +17,8 @@
*/
#include "terminaldata.h"
#include "../utils/qetutils.h"
#include <QGraphicsObject>
#include <QDebug>
@@ -115,7 +117,7 @@ QDomElement TerminalData::toXml(QDomDocument &xml_document) const
xml_element.setAttribute("show_name", "true");
xml_element.setAttribute("label_x", QString::number(m_label_pos.x()));
xml_element.setAttribute("label_y", QString::number(m_label_pos.y()));
xml_element.setAttribute("label_font", m_label_font.toString());
xml_element.setAttribute("label_font", QETUtils::fontToString(m_label_font));
xml_element.setAttribute("label_rotation", QString::number(m_label_rotation));
xml_element.setAttribute("label_halign", static_cast<int>(m_label_halignment));
xml_element.setAttribute("label_valign", static_cast<int>(m_label_valignment));