gpt4 book ai didi

fonts - 在 JUCE 中嵌入字体

转载 作者:行者123 更新时间:2023-12-01 19:35:07 26 4
gpt4 key购买 nike

我正在寻找在 JUCE 中嵌入字体的简单分步解决方案。

我在应用程序中嵌入字体时遇到了一些麻烦(完全忘记在应用程序发布之前投入时间,现在我的应用程序没有在用户系统上显示我的字体 - 这是可以理解的)。

我已经搜索并关注了有关该主题的所有帖子,但仍然遇到问题。我希望将嵌入字体添加到我的应用程序中已存在的标签中,这些标签是我们通过 ProJucer GUI 组件创建和布局的。

到目前为止我做了什么:

1) 将字体添加到我的 ProJucer session 中,以便将其添加到 BinaryData

2)创建了一个名为“EmbeddedFont:”的类

#include "../JuceLibraryCode/JuceHeader.h"

class EmbeddedFonts
{
private:
Font calistoMT;

public:
EmbeddedFonts();
Font& getCalistoMT();
};

EmbeddedFonts::EmbeddedFonts()
{
// in the line below is where I'm getting the assertion error: jassert (typefaceName.isNotEmpty());
calistoMT = Font(Typeface::createSystemTypefaceFor(BinaryData::Calisto_MT,
BinaryData::Calisto_MTSize));
}

Font& EmbeddedFonts::getCalistoMT()
{
return calistoMT;
}

3) 在我的 GUI 组件类的 header 中创建了一个实例4)尝试将此字体传递给标签字体:

genericLabelName->setFont(embeddedFont.getCalistoMT());

不太确定从这里该做什么。另外,在我让嵌入字体工作后,我应该对 projucer GUI 组件中的字体字段做一些具体的事情吗?我应该将其设置为相同的字体吗?我之所以这么问,是因为从技术上讲,我将在构造函数中设置字体两次(一次来自 GUI 组件选项下拉菜单,一次来自手动编码嵌入字体)。

我已经尝试了几天,但仍然遇到问题。谢谢你的帮助。这是我在发布下一个应用程序更新之前需要做的最后一件事,因此非常感谢任何帮助。

最佳答案

由于看起来您在 JUCE 方面的操作正确,因此我相信您尝试加载的字体文件没有与之关联的名称。我会尝试以下操作:

  • 在将Typeface 的名称传递给Font 构造函数之前,请检查从createSystemTypefaceFor 调用返回的Typeface 的名称。我相信它应该有一个 getName() 或类似的调用来获取它的名称。如果该名称为空(根据您的断言,我希望它是空的),那么您就有问题了。

  • 您可能想尝试下载 TTF 文件查看器,它可以为您提供有关您尝试加载的文件的一些信息。它还可以指示您正在阅读的字体是否有名称无论是否。如果它的元数据中确实有名称,则可能表明 JUCE 库中存在错误。

  • 您可以尝试加载不同的字体或您知道在元数据中具有正确名称的不同字体(因为您已经使用某种查看器或工具进行了检查),并查看是否为它们创建了字体已设置名称,如果是这样,请尝试从其中一种字体创建 Font 并查看是否成功。

如果加载的字体实际上确实设置了名称,那么这种理论就不再适用了,但我仍然会尝试第三步,看看您是否总是在每种字体上都会遇到此错误,或者它是否仅限于唯一的那个。

关于fonts - 在 JUCE 中嵌入字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43934074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com