有人知道是否可以将freetype作为Windows上的文本渲染器而不是本机上构建QT5?我尝试用-QT -Freetype编译QT5,但仍然得到不良文字。我必须做其他事情吗?
查看Deadwarlock提出的解决方案时,我研究了QT源代码,并意识到当d->m_options & QWindowsIntegration::FontDatabaseFreeType
是true
时,创建并使用Qwindowsfontdatabaseft。经过一番谷歌搜索后,我发现打开此选项已正式记录在QT中。可以通过创建文件qt.conf
来打开该选项。该文件必须位于包含应用程序可执行文件的目录中,并且必须包含以下内容:
[Platforms]
WindowsArguments = fontengine=freetype
执行此操作后,我在不重新编译QT的情况下进行了freetype渲染。
qt with freetype-老实说,这是一个很大的痛苦。因为即使您打开它。输出字形看起来不会像裸露的壁炉一样正确,它们会做出一些更改。但是,与默认实现相比,它们看起来更好。我只知道一种做到这一点的方法(非常糟糕的建议,也许不是合法的,请不要这样做)。
查找文件:%qt-src% qtbase src plugins platforms windows 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下创建。我不记得确切地需要在其他某些地方添加更改。上次我做这件事是很久以前的家庭项目。但是现在您知道以哪种方式挖掘。
P.S.如果找到另一个解决方案,请在这里写信。谢谢。