【问题标题】:Embed font in a mac bundle在 mac 包中嵌入字体
【发布时间】:2011-01-27 12:47:45
【问题描述】:

我正在编写一个程序。我想使用一种花哨的字体。我可以将我的字体嵌入到我的包中并从那里使用它。

我的代码...

NSMutableAttributedString *recOf;
recOf = [[NSMutableAttributedString alloc] initWithString:@"In Recognition of"];
length = [recOf length];
[recOf addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Edwardian Script ITC" size:50] range:NSMakeRange(0, length)];
[[NSColor blackColor] set];
p.x = (bounds.size.width/2)- (([recOf size].width)/2);
p.y = (bounds.size.height/1.7);
[recOf drawAtPoint:p];
[recOf  release];

【问题讨论】:

  • 感谢您发布这个问题!我试图弄清楚如何做到这一点,而 Rob Keniger 的回答就像一个魅力。您确实应该将他的答案标记为已接受的答案。

标签: objective-c cocoa xcode fonts nsview


【解决方案1】:

Some people had success 使用碳魔法。你应该试试看。

关于上面的例子,ATSFontActivateFromFileSpecification 在 Leopard 中已被弃用。显然替换直接使用了 FSRef,这样更好。

【讨论】:

【解决方案2】:

是的,你可以。您应该将Copy Files 构建阶段添加到您的目标(右键单击您的目标,然后选择Add > New Build Phase > New Copy Files Build Phase)。

将 Copy Files 构建阶段的目标设置为 Resources,路径为 Fonts。这将确保将字体复制到应用程序包中名为 Fonts 的文件夹中。

通过将字体文件拖到构建阶段,将字体文件添加到新的构建阶段。

然后您需要将ATSApplicationFontsPath key 添加到您的Info.plist 文件中,并将包含您的字体的文件夹的名称作为其值:

<key>ATSApplicationFontsPath</key>
<string>Fonts</string>

然后,您可以通过调用 [NSFont fontWithName:@"yourFontName"] 在您的应用中使用该字体,就像它是内置系统字体一样。

当然,在执行此操作之前,您应该确保您拥有分发字体的权限。

【讨论】:

  • 对于 xCode 5,您必须选择目标,从菜单栏中选择 Editor->Add Build Phase->Add Copy Files Build Phase 以添加构建阶段。
  • 你能帮我解决同样的问题吗,my question
  • @Rob:这很好用。感谢那。但是如果用户没有在他的 mac 上安装字体怎么办?意味着我们可以从应用程序中检查字体是否安装在 Mac 上。如果没有,那么我们可以从 cocoa mac 应用程序以编程方式安装它吗?
  • 将字体嵌入到应用程序包中的全部意义在于,您无需用户安装即可加载和使用它。当然,这意味着您只能在应用程序中使用该字体。检查系统上是否已经安装了字体会更复杂。要安装它,您可能只需要使用NSWorkspace 打开字体文件,它将在具有安装按钮的 Font Book 应用程序中打开。
猜你喜欢
  • 2011-02-28
  • 2013-03-17
  • 2023-04-04
  • 2011-05-28
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2015-02-16
相关资源
最近更新 更多