在Cocos2d中使用自定义字体

20

如何在我的Cocos2d iPhone应用程序中使用自定义TTF字体?


我已经做了所有的事情,但只能在模拟器上运行,无法在设备上运行!我该如何让它在设备上运行? - user559322
我发布了一个问答,解决了在cocos2d中使用自定义字体时出现的大多数问题。如果您在将自定义字体添加到项目中遇到困难,请查看它。(https://dev59.com/sGUq5IYBdhLWcg3waP3r) - RLH
3个回答

54

我搜寻了一段时间,并决定发布问题和答案,以便帮助想要实现此功能的人。

解决方案非常简单。

  1. 找到你想要的字体并下载它们。 这个网站有大量免费字体可供选择。

  2. 将字体文件添加到你的项目中。 alt text

  3. 使用下面的数组示例将字体名称添加到 info.plist 文件中。

  4. 查找字体的名称;双击字体文件并使用窗口标题显示的字体名称。在此示例中,它是“Action Man”

alt text

按照通常的方式使用字体名称:

CCLabel* myLabel = [CCLabel labelWithString:@"Some Text" fontName:@"Action Man" fontSize:18];
将以下内容添加到您的 info.plist 文件中:

将以下内容添加到您的 info.plist 文件中:

<key>UIAppFonts</key>
<array>
    <string>Action Man Bold.ttf</string>
    <string>AdineKirnberg-S.ttf</string>
</array>

1
为什么要将这个作为Cocos2D QA?UIAppFonts在任何iOS版本大于等于3.2.2的老应用程序中都是以相同的方式工作的。 - Joseph Tura
我想补充一下,这种方法也适用于 .ttc :) - magorich

18
在Cocos2D中,您可以将字体文件与资源一起包含,然后在fontName:中仅提供文件名即可。例如:
CCLabelTTF *label = [CCLabelTTF labelWithString:@"whatever" fontName:@"FONTNAME.ttf" fontSize:18];

这通常比Hanaan发布的方法更容易。

您应该使用与文件名相同的大小写。

如果您只在Cocos2D中使用它,则无需将字体添加到info.plist中。

如果像Confused一样,您发现字体在模拟器上正常工作但在设备上不起作用,则可能是文件名大小写错误。 iPhone区分大小写,模拟器则不区分。


7
在cocos2d 2.0中不是这种情况,CCLabelTTF仅使用UIFont来解析其所需的字体。这需要将TTF添加到Info.plist中。 - bshirley
@bshirley,我也在cocos2d 2.0中遇到了相同的问题,请告诉我在plist中应该添加ttf字体文件的名称。 - Guru
1
@Raj - 答案已经在上面给出。将TTF添加到项目中作为资源。将字体文件添加到info.plist,键UIAppFonts是一个带有字符串值的数组(即“FooBar.ttf”)。确保在代码中使用FONT NAME而不是文件名。在Mac OS中选择并检查字体以获取实际的字体名称,该名称被编码在文件中。(可能是“Foo Bar BOLD”) - bshirley
@bshirley,不起作用先生。这是我的ttf文件http://is.gd/9DHOpe和plist http://is.gd/DTaTfz以及代码CCLabelTTF *gameOverLabel = [CCLabelTTF labelWithString:@“GAME OVER” fontName:@“Game Over Regular” fontSize:fntSize]; - Guru
游戏结束.ttf是否作为项目资源包含在内?不知道你的问题。我会在调试器中追踪cocos2d代码,看看是否能帮助你解决问题。 - bshirley

0

由于这些答案已经过时,我相信我的问题/答案将会帮助所有人。

导入字体到cocos2dx iOS

这是针对iOS和Android平台的字体导入,只需一行代码即可实现!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接