Improve NaviCube font matching on linux

This commit is contained in:
Adrian Insaurralde Avalos
2023-02-25 13:06:49 -03:00
committed by Uwe
parent 1366e066b4
commit 662473b11f
2 changed files with 13 additions and 9 deletions

View File

@@ -347,6 +347,17 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags f)
// accept drops on the window, get handled in dropEvent, dragEnterEvent
setAcceptDrops(true);
// setup font substitutions for NaviCube
// Helvetica usually gives good enough results on mac & linux
// in rare cases Helvetica matches a bad font on linux
// Nimbus Sans Narrow and Open Sans Condensed added as fallback
// Bahnschrift is a condensed font available on windows versions since 2017
// Arial added as fallback for older version
auto substitutions = QStringLiteral("Bahnschrift,Helvetica,Nimbus Sans Narrow,Open Sans Condensed,Arial,Sans");
auto family = QStringLiteral("FreeCAD NaviCube");
QFont::insertSubstitutions(family, substitutions.split(QLatin1Char(',')));
statusBar()->showMessage(tr("Ready"), 2001);
}

View File

@@ -325,15 +325,8 @@ void NaviCube::setBorderColor(QColor BorderColor)
QString NaviCube::getDefaultSansserifFont()
{
// Windows versions since 2017 have the 'Bahnschrift' font (a condensed
// sans serif font, optimized for readability despite being condensed),
// we first check for that.
QFont font(QStringLiteral("Bahnschrift"));
if (!font.exactMatch())
// On systems without 'Bahnschrift' we check for 'Helvetica' or its closest match
// as default sans serif font. (For Windows 7 this will e.g. result in 'Arial'.)
font = QFont(QStringLiteral("Helvetica"));
// "FreeCAD NaviCube" family susbtitutions are set in MainWindow::MainWindow
QFont font(QStringLiteral("FreeCAD NaviCube"));
font.setStyleHint(QFont::SansSerif);
// QFontInfo is required to get the actually matched font family
return QFontInfo(font).family();