Uploaded image for project: 'Qt for Python'
  1. Qt for Python
  2. PYSIDE-2950

The quality of font rendering has dropped dramatically since version 6.8

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • Not Evaluated
    • None
    • 6.8.0, 6.8.1, 6.8.0.1, 6.8.0.2
    • PySide
    • None
    • Windows 10 with pyside 6.8.1 (includ 6.8 6.8.01)
    • Windows

    Description

      After the update, I found that my interface fonts began to appear jagged and blurred. After careful comparison, I found that the font rendering quality has declined significantly since version 6.8.

       

      See the attached comparison pictures, with the corresponding Qt version in the title. You can quickly switch back and forth and see a very obvious decline.

       

      The font used is HarmonyOS Sans SC(https://fontmeme.com/fonts/harmonyos-sans-sc-font/), but you can replicate this with any font.

       

      Added YaHei font sample, you can see a more obvious drop in rendering quality, and this font is Microsoft's default East Asian font

       

      ```
      from PySide6.QtCore import Qt
      from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget

      CONTENT_EN = "Qt empowers productivity across the entire product development lifecycle"
      CONTENT_CN = "Qt 赋能整个产品开发生命周期的生产力"
      CONTENT_JP = "Qt は製品開発ライフサイクル全体にわたって生産性を高めます"

      class CaptionLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 12px; font-weight: Regular")

      class BodyLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 12px; font-weight: Regular")

      class BodyStrongLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 14px; font-weight: Bold")

      class SubTitleLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 20px; font-weight: Bold")

      class TitleLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 28px; font-weight: Bold")

      class TitleLargeLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 40px; font-weight: Bold")

      class DisplayLabel(QLabel):
          def {}init{}(self, text: str, parent: QWidget | None = None) -> None:
              super().{}init{}(text, parent)
              self.setStyleSheet("font-family: HarmonyOS Sans SC; font-size: 68px; font-weight: Bold")

      class Win(QWidget):
          def {}init{}(self, parent: QWidget | None = None) -> None:
              super().{}init{}(parent)
              self.setWindowTitle("Qt 6.8.1 Font Rendering")
              # instant widget
              self.captionLabel = CaptionLabel(CONTENT_EN, self)
              self.captionLabelCN = CaptionLabel(CONTENT_CN, self)
              self.captionLabelJP = CaptionLabel(CONTENT_JP, self)
              self.bodyLabel = BodyLabel(CONTENT_EN, self)
              self.bodyLabelCN = BodyLabel(CONTENT_CN, self)
              self.bodyLabelJP = BodyLabel(CONTENT_JP, self)
              self.bodyStrongLabel = BodyStrongLabel(CONTENT_EN, self)
              self.bodyStrongLabelCN = BodyStrongLabel(CONTENT_CN, self)
              self.bodyStrongLabelJP = BodyStrongLabel(CONTENT_JP, self)
              self.subTitleLabel = SubTitleLabel(CONTENT_EN, self)
              self.subTitleLabelCN = SubTitleLabel(CONTENT_CN, self)
              self.subTitleLabelJP = SubTitleLabel(CONTENT_JP, self)
              self.titleLabel = TitleLabel(CONTENT_EN, self)
              self.titleLabelCN = TitleLabel(CONTENT_CN, self)
              self.titleLabelJP = TitleLabel(CONTENT_JP, self)
              self.titleLargeLabel = TitleLargeLabel(CONTENT_EN, self)
              self.titleLargeLabelCN = TitleLargeLabel(CONTENT_CN, self)
              self.titleLargeLabelJP = TitleLargeLabel(CONTENT_JP, self)
              self.displayLabel = DisplayLabel(CONTENT_EN, self)
              self.displayLabelCN = DisplayLabel(CONTENT_CN, self)
              self.displayLabelJP = DisplayLabel(CONTENT_JP, self)
              # instant layout
              self.mainLayout = QVBoxLayout(self)
              self.mainLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
              self.mainLayout.addWidget(self.captionLabel)
              self.mainLayout.addWidget(self.captionLabelCN)
              self.mainLayout.addWidget(self.captionLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.bodyLabel)
              self.mainLayout.addWidget(self.bodyLabelCN)
              self.mainLayout.addWidget(self.bodyLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.bodyStrongLabel)
              self.mainLayout.addWidget(self.bodyStrongLabelCN)
              self.mainLayout.addWidget(self.bodyStrongLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.subTitleLabel)
              self.mainLayout.addWidget(self.subTitleLabelCN)
              self.mainLayout.addWidget(self.subTitleLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.titleLabel)
              self.mainLayout.addWidget(self.titleLabelCN)
              self.mainLayout.addWidget(self.titleLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.titleLargeLabel)
              self.mainLayout.addWidget(self.titleLargeLabelCN)
              self.mainLayout.addWidget(self.titleLargeLabelJP)
              self.mainLayout.addSpacing(20)
              self.mainLayout.addWidget(self.displayLabel)
              self.mainLayout.addWidget(self.displayLabelCN)
              self.mainLayout.addWidget(self.displayLabelJP)

      if {}name{} == "{}main{}":
          app = QApplication()
          win = Win()
          win.show()
          app.exec()```

      Attachments

        1. 6.8.1-Yahei.png
          176 kB
          rainzee wang
        2. 6.8.1.png
          170 kB
          rainzee wang
        3. 6.7.3-Yahei.png
          193 kB
          rainzee wang
        4. 6.7.3.png
          196 kB
          rainzee wang
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            crmaurei Cristian Maureira-Fredes
            rainzee rainzee wang
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes