使用不在iPhone上的字体

时间:2009-06-14 17:21:17

标签: iphone objective-c cocoa-touch fonts

我想使用一些不属于iPhone OS的字体。我见过使用非标准字体的游戏。我可以安装字体,在Photoshop中为每个字体创建图像,然后在iPhone应用程序中使用这些图像。但是,我认为这不是一个实用的方法。如果需要调整颜色或色调(因为背景)或大小,我将不得不重新设计我正在使用的每种字体。有更好的方法吗?

我读了这个Can I embed a custom font in an iPhone application?并下载了开源字体标签应用。但是,当我尝试使用特定字体时,它大部分时间都会崩溃。关于使用带有fontWithName:size的UIFont的最后评论,这当然不起作用。你的字体变量是零。列出所有可用字体显示原因 - 列表中没有任何自定义字体。

我也读过How do I include a font with my iPhone application?,这绝对不行。与上述链接中的最后一条评论相同。

4 个答案:

答案 0 :(得分:7)

正确答案是使用FontLabel,可以在GitHub上找到。 http://github.com/zynga/FontLabel

我在几个真实世界的项目中使用过该代码,这绝对是太棒了。

<强>更新

从iOS 3.2(仅适用于iPad)开始iPhone上的iOS 4,您可以在应用程序包中打包TTF字体。使用UIAppFonts键将它们输入Info.plist后。

这里有三步说明: http://kgriff.posterous.com/45359635

答案 1 :(得分:3)

解决方案是在info.plist文件中添加一个新属性“应用程序提供的字体”。

然后,您可以像普通的UIFont一样使用自定义字体。

答案 2 :(得分:2)

实际上这很容易。

您将ttf包含在应用包中。您可以将Fonts provided by application / UIAppFonts密钥添加到您的应用程序中,这是您包含的字体(包括扩展名)的文件名数组,例如:

enter image description here

您可以使用UIFont轻松使用字体:

self.label.font = [UIFont fontWithName:@"Wingdings" size:23.0f];

这适用于3.2版的所有iOS版本,包括iOS 4上的iPhone。

答案 3 :(得分:0)

这可能不是一个直接的答案,但似乎将来,您可以将自定义字体作为应用程序的一部分包含在内:

  

UIAppFonts(Array - iPhone OS)指定应通过常规机制提供的任何应用程序提供的字体。数组中的每个项都是一个字符串,其中包含位于应用程序包中的字体文件的名称(包括文件扩展名)。系统会加载指定的字体,并在运行该应用程序时使其可供应用程序使用。

不幸的是,这仅适用于iPhone OS 3.2,这是iPad特定版本。在将来的iPhone OS版本中,这个功能似乎很有可能。

链接:http://developer.apple.com/iPhone/library/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW18

(这是我在Apple网站上找到的唯一公开文件)