Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Using stylesheets for widget sizing (based on the font sizes) produce different results different linux

Using stylesheets for widget sizing (based on the font sizes) produce different results different linux

Scheduled Pinned Locked Moved Unsolved General and Desktop
5 Posts 2 Posters 718 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alexander Sbitnev
    wrote on last edited by Alexander Sbitnev
    #1

    Hi there!
    I've probably encounter a possible bug in Qt caused by libfreetype or libfontconfig changes in latest versions.
    Or I simply do something wrong.
    This probable bug affects length calculation in stylesheets while length of object set with help of 'em' or 'ex' values.
    It is only visible on newest Linuxes like Suse Leap 15.0 or Ubuntu 18.10 (probably 18.04 also affected).
    On affected systems calculated sizes become bigger but the fonts itself looks the same size and with same intervals between text lines.
    I've produce small application with this stylesheet on MainWindow:

    QMainWindow {
      font-family:  "DejaVu Sans";
      font-size:    12px;
      min-height:   14em;
      min-width:    24em;
      max-height:   14em;
      max-width:    24em;
    }
    
    QMainWindow * {
      font-family:  "DejaVu Sans";
      font-size:    12px;
    }
    

    Inside the code I add some debug printing:

        MainWindow w;
        w.show();
    
        QFont font = w.font();
        QFontMetrics metric(font);
        qDebug() << "Font " << font << " / bounding rect size " << metric.boundingRect('M').size();
        qDebug() << "Window size " << w.size();
    

    And got next results:

    Ubuntu 16.04
    Font Font  QFont( "DejaVu Sans,-1,12,5,50,0,0,0,0,0" )  / bounding rect size  QSize(9, 9)
    Window size  QSize(336, 196)
    336/24=14 pixels per 'em'
    
    Suse Leap 15.0
    Font  QFont( "DejaVu Sans,-1,12,5,50,0,0,0,0,0,Regular" )  / bounding rect size  QSize(9, 9)
    Window size  QSize(360, 210)
    360/24=15 pixels per 'em'
    

    With increased 13px font:

    Ubuntu 16.04
    Font  QFont( "DejaVu Sans,-1,13,5,50,0,0,0,0,0" )  / bounding rect size  QSize(9, 9)
    Window size  QSize(360, 210)
    360/24=15 pixels per 'em'
    
    Suse Leap 15.0
    Font  QFont( "DejaVu Sans,-1,13,5,50,0,0,0,0,0,Regular" )  / bounding rect size  QSize(9, 9)
    Window size  QSize(408, 238)
    408/24=17 pixels per 'em'
    

    With increased 14px font:

    Ubuntu 16.04
    Font  QFont( "DejaVu Sans,-1,14,5,50,0,0,0,0,0" )  / bounding rect size  QSize(10, 10)
    Window size  QSize(384, 224)
    384/24=16 pixels per 'em'
    
    Suse Leap 15.0
    Font  QFont( "DejaVu Sans,-1,14,5,50,0,0,0,0,0,Regular" )  / bounding rect size  QSize(10, 10)
    Window size  QSize(408, 238)
    408/24=17 pixels per 'em'
    
    MacOSX Sierra
    Font  QFont( "DejaVu Sans,-1,14,5,50,0,0,0,0,0" )  / bounding rect size  QSize(9, 10)
    Window size  QSize(384, 224)
    
    Windows
    Font  QFont( "DejaVu Sans,-1,14,5,50,0,0,0,0,0" )  / bounding rect size  QSize(10, 10)
    Window size  QSize(384, 224)
    

    I've tried to statically link libfreetype or libfontconfig and it helps with the sizes on new Linux system but embeded font looks quite different in this case.
    Judging by same sizes on old linux, macosx and windows I conclude something went wrong with Qt and new versions libfreetype or libfontconfig.
    So my questions should I post a ticket into Qt JIRA?
    Is it something already known?
    Or do I missed something and done something wrong that produce such results?

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi and welcome to devnet,

      What version of Qt are you using during your tests ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • A Offline
        A Offline
        Alexander Sbitnev
        wrote on last edited by
        #3

        Before posting this issue I compile test application with Qt stock 5.11.2 for Linux.
        But initially I stuck on this problem on custom built 5.11.1.
        I will try to build with latest 5.12.0-beta4 and let you know about results.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          Alexander Sbitnev
          wrote on last edited by
          #4

          I've seen same behavior with 5.12.0-beta4. So I suppose it is likely current development branch of Qt also affected.
          I've enclosed this test application. It contain two DejaVu fonts so it not quite tiny as the code itself.
          [0_1541759152867_TestFonts.txz](Uploading 100%)

          1 Reply Last reply
          0
          • A Offline
            A Offline
            Alexander Sbitnev
            wrote on last edited by Alexander Sbitnev
            #5

            Just to be sure test application available here:
            https://drive.google.com/open?id=16igl74anxWOmiqHrJgnelkIxaMrQMvdC

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved