首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JUCE中嵌入字体

在JUCE中嵌入字体
EN

Stack Overflow用户
提问于 2017-05-12 09:25:21
回答 1查看 1.7K关注 0票数 13

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

我在我的应用程序中嵌入字体有点困难(完全忘记在应用程序发布之前花时间在上面,现在我的应用程序没有在用户系统上显示我的字体--这是可以理解的)。

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

我到目前为止所做的事:

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

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

代码语言:javascript
复制
#include "../JuceLibraryCode/JuceHeader.h"

class EmbeddedFonts
{
private:
    Font calistoMT;

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

代码语言:javascript
复制
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组件类4的标题中做了一个实例,尝试将此字体传递给标签字体:

代码语言:javascript
复制
genericLabelName->setFont(embeddedFont.getCalistoMT());

我不知道接下来该怎么做。另外,在我让嵌入式字体工作之后,我应该对projucer组件中的字体字段做什么具体的操作吗?我应该把它设置成相同的字体吗?我之所以这样问,是因为从技术上讲,我将在构造函数中设置两次字体(一次来自GUI组件选项下拉菜单,一次来自手工编码嵌入式字体)。

我试了几天了,现在还是有麻烦。谢谢你的帮助。这是我在发布下一个应用程序更新之前最不需要做的事情,所以任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 05:12:07

因为看起来您在JUCE端做的事情是正确的,所以我相信您要加载的字体文件没有与它相关的名称。我将尝试以下几点:

  • 在将Typeface传递给Font构造函数之前,检查从createSystemTypefaceFor调用返回的Font的名称。我认为它应该有一个getName()或类似的电话来获得它的名字。如果这个名称是空的(考虑到您的断言,我希望它是空的),那么就是您的问题了。
  • 您可能需要尝试下载一个TTF文件查看器,该查看器可以为您提供有关您要加载的文件的一些信息。它还可以指示您正在读取的字体中是否有名称。如果它的元数据中确实有一个名称,这可能表示JUCE库中有一个bug。
  • 您可以尝试加载不同的字体或不同的字体,这些字体或字体在元数据中具有正确的名称(因为您已经使用某种查看器或工具进行了检查),并查看为它们创建的字体是否设置了名称,如果有的话,尝试从其中一个字体创建一个Font,并查看它是否成功。

如果加载的字体确实有一个名称集,那么这个理论就会被移出窗口,但是我仍然会尝试第三步,看看你是否总是在每个字体上都会出现这个错误,或者它是否仅限于一个字体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43934074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档