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

Roboto "medium" font isn't matched correctly on OSX

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.9.2
    • 5.9.0
    • GUI: Font handling
    • None
    • macOS
    • a26a3cfbc7cd5c87afeda63eb324a2ba2a4c8192

    Description

      We are using the Roboto font in our application and everything worked fine in 5.8.  After switching to 5.9 all elements set to medium weight (500) render as normal weight on OSX, other platforms still render correctly.  It seems to be an issue with the font matching algorithm, as shown by this snippet:

       

      void setApplicationFont()
      {
      	QStringList fonts;
      	fonts << "Roboto-Bold.ttf" << "Roboto-Italic.ttf" << "Roboto-BoldItalic.ttf" << "Roboto-Regular.ttf"
      		<< "Roboto-Light.ttf" << "Roboto-LightItalic.ttf" << "Roboto-Thin.ttf" << "Roboto-ThinItalic.ttf"
      		<< "Roboto-Medium.ttf" << "Roboto-MediumItalic.ttf" << "Roboto-Black.ttf" << "Roboto-BlackItalic.ttf"
      		<< "RobotoMono-Bold.ttf" << "RobotoMono-Italic.ttf" << "RobotoMono-BoldItalic.ttf" << "RobotoMono-Regular.ttf"
      		<< "RobotoMono-Light.ttf" << "RobotoMono-LightItalic.ttf" << "RobotoMono-Thin.ttf" << "RobotoMono-ThinItalic.ttf"
      		<< "RobotoMono-Medium.ttf" << "RobotoMono-MediumItalic.ttf";
      	int ret;
      	for (int i = 0; i < fonts.size(); i++)
      	{
      		ret = QFontDatabase::addApplicationFont(":fonts/" + fonts.at(i));
      		qDebug() << "Added " << fonts.at(i) << ": " << QString::number(ret);
      	}
      	setFont(QFont("Roboto"));
      	QFontDatabase db;
      	QStringList styles = db.styles("Roboto");
      	for (int i = 0; i < styles.size(); i++)
      	{
      		qDebug() << "Found Roboto style " << styles.at(i);
      	}
      	QFont robotoMedium("Roboto",18,QFont::Medium);
      	QFont robotoNormal("Roboto",18,QFont::Normal);
      	QFont robotoBlack("Roboto",18,QFont::Black);
      	QString medium = robotoMedium.exactMatch() ? "yes" : "no";
      	QString normal = robotoNormal.exactMatch() ? "yes" : "no";
      	QString black = robotoBlack.exactMatch() ? "yes" : "no";
      	qDebug() << "Roboto medium: " << medium;
      	qDebug() << "Roboto normal: " << normal;
      	qDebug() << "Roboto black: " << black;
      
      
      }
      

       

      Which produces the following output:

      Added "Roboto-Bold.ttf" : "0"
      Added "Roboto-Italic.ttf" : "1"
      Added "Roboto-BoldItalic.ttf" : "2"
      Added "Roboto-Regular.ttf" : "3"
      Added "Roboto-Light.ttf" : "4"
      Added "Roboto-LightItalic.ttf" : "5"
      Added "Roboto-Thin.ttf" : "6"
      Added "Roboto-ThinItalic.ttf" : "7"
      Added "Roboto-Medium.ttf" : "8"
      Added "Roboto-MediumItalic.ttf" : "9"
      Added "Roboto-Black.ttf" : "10"
      Added "Roboto-BlackItalic.ttf" : "11"
      Added "RobotoMono-Bold.ttf" : "12"
      Added "RobotoMono-Italic.ttf" : "13"
      Added "RobotoMono-BoldItalic.ttf" : "14"
      Added "RobotoMono-Regular.ttf" : "15"
      Added "RobotoMono-Light.ttf" : "16"
      Added "RobotoMono-LightItalic.ttf" : "17"
      Added "RobotoMono-Thin.ttf" : "18"
      Added "RobotoMono-ThinItalic.ttf" : "19"
      Added "RobotoMono-Medium.ttf" : "20"
      Added "RobotoMono-MediumItalic.ttf" : "21"
      Found Roboto style "Bold"
      Found Roboto style "Italic"
      Found Roboto style "Bold Italic"
      Found Roboto style "Regular"
      Found Roboto style "Light"
      Found Roboto style "Light Italic"
      Found Roboto style "Thin"
      Found Roboto style "Thin Italic"
      Found Roboto style "Medium"
      Found Roboto style "Medium Italic"
      Found Roboto style "Black"
      Found Roboto style "Black Italic"
      Roboto medium: "no"
      Roboto normal: "yes"
      Roboto black: "yes"

      So the medium font is getting loaded and even shows up as an available style, but it is not matched by the corresponding QFont instance.  It's possible to work around this by adding the font under a different family (I set it to "RobotoMedium") and updating the stylesheet to use this font instead of setting the weight, but this doesn't address the underlying issue.

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            esabraha Eskil Abrahamsen Blomfeldt
            pcc_evan Evan Yandell
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes