#include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { static constexpr int FONTSIZE = 36; // in points // *** ADJUST TO YOUR FONT PATH *** static const QString fontpath(QStringLiteral("C:/QtBugReport/FontSelectionIncorrect/Fonts/")); static const QString testtext(QStringLiteral("The quick brown fox jumps over the lazy dog. 1234567890")); // font engine // NO PROBLEM WITH DEFAULT/NATIVE FONT ENGINE (UNDER WINDOWS 10) qputenv("QT_QPA_PLATFORM","windows:fontengine=freetype"); // PROBLEM // qputenv("QT_QPA_PLATFORM","windows:fontengine=gdi"); // PROBLEM QApplication app(argc,argv); // add application fonts const int fontid1 = QFontDatabase::addApplicationFont(fontpath + "NotoSans-Regular.ttf"), fontid2 = QFontDatabase::addApplicationFont(fontpath + "NotoSansCJK-Regular.ttc"); if(fontid1==-1 || fontid2==-1) { QMessageBox::critical(nullptr,QStringLiteral("ERROR"),QStringLiteral("Can't add fonts")); return 1; } // PROBLEM GOES AWAY IF LINE BELOW IS NOT EXECUTED QFont::insertSubstitution(QStringLiteral("Noto Sans"),QStringLiteral("Noto Sans CJK JP")); // regular without explicit hinting preference QFont f1(QStringLiteral("Noto Sans"),FONTSIZE); QLabel *l1 = new QLabel(testtext); l1->setFont(f1); // regular with explicit hinting preference QFont f2(QStringLiteral("Noto Sans"),FONTSIZE); f2.setHintingPreference(QFont::PreferFullHinting); // PROBLEM IF SET AND FONT ENGINE IS "freetype" or "gdi" QLabel *l2 = new QLabel(testtext); l2->setFont(f2); // main widget QWidget widget; QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(l1); layout->addWidget(l2); widget.setLayout(layout); widget.show(); return QApplication::exec(); }