在Windows上使用FreeType和Qt5

有谁知道是否可以用FreeType作为Windows上的文本渲染器来构buildQt5而不是本地渲染器? 我试着用-qt-freetype编译Qt5,但是我仍然弄坏了文本。 我还需要做点什么吗?

Solutions Collecting From Web of "在Windows上使用FreeType和Qt5"

在研究由DeadWarlock提出的解决方案时,我研究了Qt源代码,并意识到当d->m_options & QWindowsIntegration::FontDatabaseFreeTypetrue时,将创建并使用d->m_options & QWindowsIntegration::FontDatabaseFreeType 。 经过一番谷歌搜索,我发现把这个选项打开, 在Qt中正式记录 。 该选项可以通过创建文件qt.conf来打开。 该文件必须位于包含应用程序可执行文件的目录中,并且必须包含以下内容:

 [Platforms] WindowsArguments = fontengine=freetype 

这样做后,我得到了freetype渲染,而不重新编译的Qt。

Qt与freetype – 老实说,这是一个很大的痛苦的屁股。 因为即使你打开它。 输出字形看起来不像裸露的freetype那样正确,他们做了一些改变。 但是,与默认实现相比,它们看起来更好。 我知道只有一个方法来做到这一点(非常糟糕的建议,也许不合法,请不要这样做)。

查找文件:%qt-src%\ qtbase \ src \ plugins \ platforms \ windows \ qwindowsintegration.cpp。 这里需要修改的文件的一部分代码:

 QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const { if (!d->m_fontDatabase) { #ifdef QT_NO_FREETYPE d->m_fontDatabase = new QWindowsFontDatabase(); #else // QT_NO_FREETYPE if (d->m_options & QWindowsIntegration::FontDatabaseFreeType) { d->m_fontDatabase = new QWindowsFontDatabaseFT; } else if (d->m_options & QWindowsIntegration::FontDatabaseNative){ d->m_fontDatabase = new QWindowsFontDatabase; } else { #ifndef Q_OS_WINCE d->m_fontDatabase = new QWindowsFontDatabase; #else if (isQMLApplication()) { if (QWindowsContext::verboseIntegration) { qDebug() << "QML application detected, using FreeType rendering"; } d->m_fontDatabase = new QWindowsFontDatabaseFT; } else d->m_fontDatabase = new QWindowsFontDatabase; #endif } #endif // QT_NO_FREETYPE } return d->m_fontDatabase; } 

我给你一个提示 – QWindowsFontDatabaseFT永远不会在Windows下创建。 我不记得可能需要在其他地方添加更改。 上次我做这个的时候很久以前在我的家庭项目中。 但现在你知道在哪个方面需要挖掘。
PS如果找到另一种解决方案,请写在这里。 谢谢。