Details
-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
6.8.0, 6.8.1, 6.8.0.1, 6.8.0.2
-
None
-
Windows 10 with pyside 6.8.1 (includ 6.8 6.8.01)
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()```