在mac包中嵌入字体

RW.*_*RW. 38 xcode fonts cocoa objective-c 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];
Run Code Online (Sandbox Code Playgroud)

Rob*_*ger 82

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

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

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

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

<key>ATSApplicationFontsPath</key>
<string>Fonts</string>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 对于xCode 5,您必须选择目标,从菜单栏选择编辑器 - >添加构建阶段 - >添加复制文件构建阶段以添加构建阶段. (2认同)

zne*_*eak 2

有些人成功地使用了碳魔法。你应该尝试一下。

上面的例子中提到的这一点ATSFontActivateFromFileSpecification在 Leopard 中已被弃用。显然,替换直接使用 FSRef,这更好。

  • 该替代品是“ATSFontActivateFromFileReference”。然而,整个 API (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) 在 Snow Leopard 中已被弃用,取而代之的是 Core Text。替换的替代品是`CTFontManagerCreateFontDescriptorsFromURL`: http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL 这也更容易使用,因为 Core Text 类与 AppKit 对应类之间是免费桥接的。 (3认同)