首页 文章

字体未在iOS上加载但在Android中加载正常

提问于
浏览
2

我目前正在从qrc文件加载两种字体 . 其中一个是.ttf,另一个是.otf . 当我在Android上测试我的构建时,它们加载并正常工作(尽管加载时间相当长......)

但是,当我在我的iPhone和/或模拟器上测试它时,根本没有任何字体加载 . 他们似乎只是默认回Arial或其他东西 . 此外,只有.otf文件在Windows上正常工作 . .ttf文件默认返回Arial,字符偏移2个字符(因此单词“ok”将为“qm”)

这到底是怎么回事?字体位于:“qrc:/fnt/res/fnt/MuseoSans_500.otf”“qrc:/fnt/res/fnt/museo100-regular.ttf”

我正在使用它来加载字体:

FontLoader {
    id: museosans500
    source: "qrc:/fnt/res/fnt/MuseoSans_500.otf"
}

FontLoader {
    id: museo100
    source: "qrc:/fnt/res/fnt/museo100-regular.ttf"
}

访问字体时,我将font.family设置为museosans500.name和museo100.name . 就像我说的,他们在Android上运行良好 . 但是它既不适用于iOS,也只适用于其中一种适用于Windows .

我正在使用Qt Creator 3.4.0和Qt 5.4.1 .

任何帮助深表感谢!

1 回答

  • 1

    所以我没有为Windows解决它,但这是iOS和Android的应用程序 . 基本上我通过main.cpp加载字体,而不是:

    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        // Load custom fonts
        if(QFontDatabase::addApplicationFont(QStringLiteral(":/fnt/res/fnt/MuseoSans_500.otf")) == -1)
            qDebug() << "Failed to load font Museo Sans 500";
        if(QFontDatabase::addApplicationFont(QStringLiteral(":/fnt/res/fnt/museo100-regular.ttf")) == -1)
            qDebug() << "Failed to load font Museo 100";
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/res/qml/LoadScreen.qml")));
    
        return app.exec();
    }
    

    最初这实际上并没有奏效 . 但那是因为我将font.family设置为“Museo Sans 500”和“Museo 100”,因为当我要求提供完整的可用字体系列列表时,Windows将在控制台中打印 .

    当我打印出Android,Mac和iOS中的字体系列列表时,我实际上分别得到了“Museo Sans”和“Museo” . 将font.family更改为这些字符串工作正常 .

    不幸的是我还没有找到适用于Windows的解决方案,但就像我说的那样对我来说无关紧要 .

相关问题