--- ../qwindowsfontdatabase.cpp Thu Jun 19 13:08:08 2014 +++ src\plugins\platforms\windows\qwindowsfontdatabase.cpp Sun Aug 17 15:04:48 2014 @@ -973,6 +973,34 @@ return 1; } +static int QT_WIN_CALLBACK storeFontSame(ENUMLOGFONTEX* f, NEWTEXTMETRICEX *textmetric, + int type, LPARAM namesSetIn) +{ + typedef QSet StringSet; + + const QString familyName = QString::fromWCharArray(f->elfLogFont.lfFaceName); + const uchar charSet = f->elfLogFont.lfCharSet; +/// + HDC dummy = GetDC(0); + LOGFONT lf; + lf.lfCharSet = DEFAULT_CHARSET; + if (familyName.size() >= LF_FACESIZE) { + qWarning("%s: Unable to enumerate family '%s'.", + __FUNCTION__, qPrintable(familyName)); + return 1; + } + wmemcpy(lf.lfFaceName, reinterpret_cast(familyName.utf16()), + familyName.size() + 1); + lf.lfPitchAndFamily = 0; + EnumFontFamiliesEx(dummy, &lf, (FONTENUMPROC)storeFont, + (LPARAM)namesSetIn, 0); + ReleaseDC(0, dummy); +/// + + // keep on enumerating + return 1; +} + void QWindowsFontDatabase::populateFontDatabase() { m_families.clear(); @@ -1008,7 +1036,7 @@ wmemcpy(lf.lfFaceName, reinterpret_cast(family.utf16()), family.size() + 1); lf.lfPitchAndFamily = 0; - EnumFontFamiliesEx(dummy, &lf, (FONTENUMPROC)storeFont, + EnumFontFamiliesEx(dummy, &lf, (FONTENUMPROC)storeFontSame, (LPARAM)&m_families, 0); ReleaseDC(0, dummy); }