在mac包中嵌入字体

时间:2010-03-15 02:17:10

标签: objective-c cocoa xcode fonts nsview

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

我的代码......

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];

2 个答案:

答案 0 :(得分:82)

是的,你可以。您应该为目标添加Copy Files构建阶段(右键单击目标,然后选择添加>新构建阶段>新建复制文件构建阶段)。

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

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

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

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

然后,您可以通过调用[NSFont fontWithName:@"yourFontName"]将应用中的字体用作内置系统字体。

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

答案 1 :(得分:2)

Some people had success使用Carbon魔法。你应该尝试一下。

关于上面的示例,在{Leopard}中已弃用ATSFontActivateFromFileSpecification。显然,替代品直接使用FSRef,这甚至更好。