使用QT5上的Windows上的freetype



有人知道是否可以将freetype作为Windows上的文本渲染器而不是本机上构建QT5?我尝试用-QT -Freetype编译QT5,但仍然得到不良文字。我必须做其他事情吗?

查看Deadwarlock提出的解决方案时,我研究了QT源代码,并意识到当d->m_options & QWindowsIntegration::FontDatabaseFreeTypetrue时,创建并使用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.如果找到另一个解决方案,请在这里写信。谢谢。

相关内容

  • 没有找到相关文章

最新更新