A quick test on KDE Neon (a YABU) shows it appears to be a problem with
all Mono fonts being treated as fixed width when monospaced != fixed
width. Fixed width fonts have a cpi not point size measurement. By
historical definition the only way to get "bold" was to print the same
character twice in the same space on paper. (If I remember correctly,
phosphorus terminals increased the voltage to make the character brighter.)
Here is a quick and dirty I used to try several other Mono fonts on my
system, all with the same result. The font name is a constant string at
the top of mainwindow.cpp so it can quickly be changed and tested.
When run with "Ubuntu Mono" only one name shows up in list.
05:42:40: Debugging starts Font: "Ubuntu Mono" 05:42:47: Debugging has
finished
Just Ubuntu shows
05:43:27: Debugging starts Font: "Ubuntu" Font: "Ubuntu Condensed" Font:
"Ubuntu Light" Font: "Ubuntu Mono" 05:43:36: Debugging has finished
If someone has Ubuntu 16 & 18 installed somewhere with the pre-packaged
Qt it would be interesting to see if this is "new feature" or just newly
discovered.
===
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11 # The following define makes your compiler emit warnings
if you use # any Qt feature that has been marked deprecated (the exact
warnings # depend on your compiler). Please consult the documentation of
the # deprecated API in order to know how to port your code away from
it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail
to compile if it uses deprecated APIs. # In order to do so, uncomment
the following line. # You can also select to disable deprecated APIs
only up to a certain version of Qt. #DEFINES +=
QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs
deprecated before Qt 6.0.0 SOURCES += \ main.cpp \
mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \
mainwindow.ui # Default rules for deployment. qnx: target.path =
/tmp/$${TARGET}/bin else: unix:!android: target.path =
/opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
===
#include "mainwindow.h" #include <QApplication> int main(int argc, char
*argv[]) { QApplication a(argc, argv); MainWindow w;
w.show(); return a.exec(); }
=====
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFont>
#include <QFontDatabase> #include <QDebug> static QString fontName =
"Ubuntu Mono"; MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent) , ui(new Ui::MainWindow) {
ui->setupUi(this); listFonts(); QFont font(fontName, 14,
QFont::Normal); ui->label->setFont(font);
ui->label->setText("Text with normal weight"); QFont font2(fontName,
14, QFont::Bold); ui->label_2->setFont(font2);
ui->label_2->setText("Text with bold weight"); QFont font3(fontName,
14, QFont::Bold, true); ui->label_3->setFont(font3);
ui->label_3->setText("Text with bold italic"); QFont font4(fontName,
14, QFont::Normal, true); ui->label_4->setFont(font4);
ui->label_4->setText("Text with normal italic"); }
MainWindow::~MainWindow() { delete ui; } void
MainWindow::listFonts() { QFontDatabase fontDb; QStringList
fontFamilies = fontDb.families(); for (QString family :
fontFamilies) { if (family.contains(fontName)) {
qDebug() << "Font: " << family; } } }
===
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow>
QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE
class MainWindow : public QMainWindow { Q_OBJECT public:
MainWindow(QWidget *parent = nullptr); ~MainWindow(); private:
void listFonts(); Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
===
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0">
<class>MainWindow</class> <widget class="QMainWindow"
name="MainWindow"> <property name="geometry"> <rect> <x>0</x>
<y>0</y> <width>800</width> <height>600</height> </rect>
</property> <property name="windowTitle">
<string>MainWindow</string> </property> <widget class="QWidget"
name="centralwidget"> <widget class="QLabel" name="label">
<property name="geometry"> <rect> <x>40</x> <y>40</y>
<width>201</width> <height>16</height> </rect>
</property> <property name="text"> <string>TextLabel</string>
</property> </widget> <widget class="QLabel" name="label_2">
<property name="geometry"> <rect> <x>40</x>
<y>90</y> <width>211</width> <height>16</height>
</rect> </property> <property name="text">
<string>TextLabel</string> </property> </widget> <widget
class="QLabel" name="label_3"> <property name="geometry">
<rect> <x>40</x> <y>150</y> <width>211</width>
<height>16</height> </rect> </property> <property
name="text"> <string>TextLabel</string> </property>
</widget> <widget class="QLabel" name="label_4"> <property
name="geometry"> <rect> <x>40</x> <y>220</y>
<width>201</width> <height>16</height> </rect>
</property> <property name="text"> <string>TextLabel</string>
</property> </widget> </widget> <widget class="QMenuBar"
name="menubar"> <property name="geometry"> <rect> <x>0</x>
<y>0</y> <width>800</width> <height>28</height>
</rect> </property> </widget> <widget class="QStatusBar"
name="statusbar"/> </widget> <resources/> <connections/> </ui>
On 1/4/20 5:00 AM, Benjamin TERRIER wrote:
Hi,
I have an issue on a computer running KUbuntu 19.10.
Basically the issue is that Qt does not handle properly the font weights.
For instance for "Ubuntu Mono" I have the Regular and Bold fonts installed
and they are properly registered in fontconfig:
fc-match "Ubuntu Mono"
UbuntuMono-R.ttf: "Ubuntu Mono" "Regular"
fc-match "Ubuntu Mono:Bold"
UbuntuMono-B.ttf: "Ubuntu Mono" "Bold"
However, Qt applications fail to change the weight. Be it in my own
software or in Qt Creator, be it using Qt official packages or Ubuntu
provided packages, with widgets or Qt Quick: the font always appears as
"Regular". Using `QFontInfo::styleName()`, I can
confirm that it is always the "Regular" variant that is used.
When trying with the "Ubuntu" family (instead of "Ubuntu Mono") for which I
have all variations installed (Light, Thin, Regular, ...),
I am only able to have Regular and Bold texts.
I have tried on other computers (Windows, KDE Neon and Ubuntu 18.04) and
for all of them it is working fine.
Also when using Kate I am able to use Ubuntu Mono in bold.
So I am wondering what can be causing this kind of issue?
Could it be some incompatibility between Qt official packages and the
latest Ubuntu? Bu then using the distro packages should solve the problem.
Or could it be a system configuration issue? But then Kate and fc-match
shouldn't work either.
--
Roland Hughes, President
Logikal Solutions
(630)-205-1593
http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
http://www.logikalblog.com
http://www.interestingauthors.com/blog
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest