Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-76084

QPainter ignores font weight for certain fonts

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P3: Somewhat important P3: Somewhat important
    • None
    • 5.12.3
    • None
    • Gentoo Linux, KDE
    • Linux/X11

      When rendering text with different weights using the Source Code Pro font on Gentoo Linux, all text looks the same. On Windows and Ubuntu Linux everything is fine.

      Here is a simple demo:

      #include <QApplication>
      #include <QWidget>
      #include <QPainter>
      
      class Widget : public QWidget
      {
      protected:
          void paintEvent(QPaintEvent *)
          {
              const auto weights = {
                  QFont::Thin,
                  QFont::ExtraLight,
                  QFont::Light,
                  QFont::Normal,
                  QFont::Medium,
                  QFont::DemiBold,
                  QFont::Bold,
                  QFont::ExtraBold,
                  QFont::Black
              };
      
              QPainter p(this);
              p.fillRect(rect(), Qt::white);
              p.setPen(Qt::black);
      
              int y = 30;
              for (const auto weight : weights) {
                  QFont f("Source Code Pro", 14, weight);
                  Q_ASSERT(f.weight() == weight);
      
                  p.setFont(f);
                  p.drawText(5, y, QString("Qt Framework (%1)").arg(weight));
                  y += p.fontMetrics().height();
              }
          }
      };
      
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
      
          Widget w;
          w.setMinimumSize(200, 300);
          w.show();
      
          return a.exec();
      }
      
      

      Additional info:

      ~> fc-match monospace
      SourceCodePro-Regular.ttf: "Source Code Pro" "Regular"
      ~> fc-match monospace:bold
      SourceCodePro-Bold.ttf: "Source Code Pro" "Bold"
      ~> fc-list 'Source Code Pro'
      /usr/share/fonts/source-code-pro/SourceCodePro-BoldIt.ttf: Source Code Pro:style=Bold Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-Light.ttf: Source Code Pro,Source Code Pro Light:style=Light,Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-ExtraLightIt.ttf: Source Code Pro,Source Code Pro ExtraLight:style=ExtraLight Italic,Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-Bold.ttf: Source Code Pro:style=Bold
      /usr/share/fonts/source-code-pro/SourceCodePro-ExtraLight.ttf: Source Code Pro,Source Code Pro ExtraLight:style=ExtraLight,Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-Black.ttf: Source Code Pro,Source Code Pro Black:style=Black,Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-Semibold.ttf: Source Code Pro,Source Code Pro Semibold:style=Semibold,Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-LightIt.ttf: Source Code Pro,Source Code Pro Light:style=Light Italic,Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-Medium.ttf: Source Code Pro,Source Code Pro Medium:style=Medium,Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-It.ttf: Source Code Pro:style=Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-Regular.ttf: Source Code Pro:style=Regular
      /usr/share/fonts/source-code-pro/SourceCodePro-MediumIt.ttf: Source Code Pro,Source Code Pro Medium:style=Medium Italic,Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-SemiboldIt.ttf: Source Code Pro,Source Code Pro Semibold:style=Semibold Italic,Italic
      /usr/share/fonts/source-code-pro/SourceCodePro-BlackIt.ttf: Source Code Pro,Source Code Pro Black:style=Black Italic,Italic
      ~> eselect fontconfig list | grep \*
      Available fontconfig .conf files (* is enabled):
        [5]   10-hinting-slight.conf *
        [18]  30-metric-aliases.conf *
        [19]  40-nonlatin.conf *
        [20]  45-generic.conf *
        [21]  45-latin.conf *
        [22]  49-sansserif.conf *
        [23]  50-user.conf *
        [24]  51-local.conf *
        [28]  60-generic.conf *
        [29]  60-latin.conf *
        [32]  65-nonlatin.conf *
        [37]  70-no-bitmaps.conf *
      

        1. fira_mono_font.png
          fira_mono_font.png
          39 kB
        2. gentoo.png
          gentoo.png
          26 kB
        3. ubuntu.png
          ubuntu.png
          68 kB
        4. win10.png
          win10.png
          33 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            vgt Eirik Aavitsland
            razrfalcon Evgeniy
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes