字体未在 iOS 上加载但在 Android 上加载正常
Fonts not loading on iOS but load fine in Android
我目前正在从 qrc 文件中加载两种字体。其中一个是 .ttf,另一个是 .otf。当我在 Android 上测试我的构建时,它们加载并工作正常(尽管加载时间相当长..)
然而,当我在我的 iPhone and/or 模拟器上测试它时,none 的字体完全加载。他们似乎只是默认回到 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。
非常感谢任何帮助!
所以我没有解决 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 的解决方案,但正如我所说,这对我来说并不重要。
我目前正在从 qrc 文件中加载两种字体。其中一个是 .ttf,另一个是 .otf。当我在 Android 上测试我的构建时,它们加载并工作正常(尽管加载时间相当长..)
然而,当我在我的 iPhone and/or 模拟器上测试它时,none 的字体完全加载。他们似乎只是默认回到 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。
非常感谢任何帮助!
所以我没有解决 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 的解决方案,但正如我所说,这对我来说并不重要。