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

Reply via email to