QFontDatabase :: addApplicationFont适用于嵌入式Linux,但不适用于Linux Ubuntu

时间:2015-10-22 17:17:54

标签: linux qt ubuntu fonts

我有一个用Qt 4.8开发的应用程序,用于Embedded Linux Arm和Linux Ubuntu。它使用我需要安装的一组特定字体才能运行,我使用QFontDatabase::addApplicationFont。当我为嵌入式Linux编译时,一切正常,但是当我为Linux Ubuntu编写时,我得到了-1并且没有加载字体。

我试图在网上找到问题的解决方案,但我找不到任何帮助。通过更新Qt 4.6到4.7(没有使用)或安装fontconfig已经解决了类似的问题。此外,我在Qt助手中找不到任何有用的东西,并检查了.ttf文件的路径。

任何帮助将不胜感激。

以下是我使用的代码:

QFontDatabase::removeAllApplicationFonts();

QDir fontDir(DEFAULT_FONTS_PATH);
QStringList fontFileList = fontDir.entryList(QStringList("*.ttf"), QDir::Files | QDir::NoDotDot | QDir::NoDot);

mDebugS(QString("Found %1 fonts on folder theme/fonts").arg(fontFileList.size()));

//
qint32 fontId;

foreach (const QString& filename, fontFileList)
{
    fontId = QFontDatabase::addApplicationFont(DEFAULT_FONTS_PATH "/" + filename);

    if (Q_UNLIKELY(fontId == -1))
    {
        const QString strTemp = QString("Unable to install font %1").arg(filename);

        mLog(strTemp);
        mDebugS(strTemp);
    }
    else
        applicationFontsIdList.append(fontId);
}

mDebugS(QString::number(applicationFontsIdList.size()) + " fonts are installed");

1 个答案:

答案 0 :(得分:0)

我对Qt(适用于嵌入式)4.8.6有相同的问题。要解决字体问题,您需要让Qt在为非嵌入式环境构建时启用对fontconfig工具的支持。可以在文档(Qt for X11 Requirements)中找到信息

您需要在系统上安装fontconfig开发人员软件包:

sudo apt-get install libfontconfig1-dev

在从源代码构建Qt之前,您需要在配置步骤中指定以下选项:

-fontconfig

使用此版本的Qt构建我的应用程序时,addApplicationFont可以正常工作,并且一切看起来都很不错。