如何在Cocos2D iOS项目中添加字体并将其与CCLabelTTF一起使用?

我需要在我的Cocos2D项目中使用自定义字体。 我尝试了一些技巧,但Cocos2D不断报道:

无法加载字体XXX.ttf

为什么我不能使用Cocos2D使用我的自定义字体?


附加信息

这是一个问题+答案的post。 这是一个让我整个早上都撞在墙上的问题。 在阅读了众多网站的众多解决方案后,我发现所有可用解决方案的合并都是解决此问题的必要条件。

对于某些人来说,进一步困扰的问题是,您有时可以让您的应用程序在模拟器中完美地工作,但它无法在您的iOS设备上运行! 此外,我还读过几个用户遇到相反问题但设备工作正常而不是模拟器的情况。 我没有遇到后一个问题,但我相信遵循这些说明将有助于解决这个问题。

如果您遇到此问题,请自行解决,我错过了一步,请发表评论。 我会更新我的post以包含任何其他详细信息。

以下是在项目中添加字体时应遵循的必要步骤。

  1. 将新的自定义字体安装到Font Book中。 我假设你知道如何做到这一点,我将把这一步的进一步解释留给谷歌。

  2. 接下来,在Font Book中,找到刚安装的字体。 选择字体,然后单击“字体簿”工具栏上的“ 信息”按钮。

    在此处输入图像描述

  3. 记下PostScript name属性。 这必须是应用程序中字体文件的名称(不包括字体文件扩展名)。

    注意:我读过一些用户在使用名称包含空格的自定义字体时遇到问题。 我不确定这只是用户的错误,因为我不确定PostScript名称是否甚至可以包含空格。 无论如何,如果您的PostScript名称包含空格,您仍可能无法访问您的字体。

    如果这是您的问题,您可能想看看是否可以获得一个工具,可以让您更改字体的PostScript名称属性。 在将文件添加到XCode项目之前,您需要执行此操作。 否则,我认为您的自定义字体将在模拟器中运行,但不会在您的iOS设备上运行。

  4. 打开您的XCode项目,将您的字体从Finder拖放到项目资源文件夹中。 在单击“添加文件”屏幕上的“完成”按钮之前,请务必选中复选框以将字体复制到目标组的文件夹。

    在此处输入图像描述

  5. 将字体添加到资源文件夹后。 validation字体的名称是否与步骤3中提到的PostScript名称相同。 名称还必须包含任何特殊字符,如连字符或下划线。

    如果您的字体的名称与PostScript名称不同(不包括文件扩展名),则您将无法从iOS设备访问此字体,因此请重命名项目中的文件。 在我的示例字体的情况下,我需要将NES.ttf重命名为Nintendo-NES-Font.ttf

  6. 接下来,打开项目的info.plist文件。 在plist designer屏幕中,右键单击plist的第一行,然后选择Add Row 。 这将打开一个关键选择框。 选择“应用程序提供的字体”数组选项。

    在此处输入图像描述

  7. plist中的新数组将自动添加一个空的“Item 0”。 将字符串属性设置为字体文件的名称。 在我的示例中,属性值应为Nintendo-NES-Font.ttf

  8. 接下来,转到XCode项目的Build Phases屏幕。 从此处,validation您的字体文件是否位于“ 复制包资源”组列表中。 如果不是,请在项目目录中添加该文件。

而已! 您的字体现在在您的项目中,可以由CClabelTTF标签使用。 请记住,在创建标签时,请按PostScript名称指定字体。 您不必包含“.tt​​f”文件扩展名。 下面的示例代码显示了如何使用自定义字体创建标签。

 CCLabelTTF* label = [CCLabelTTF labelWithString:@"Your label text here." fontName:@"Nintendo-NES-Font" fontSize:16]; 

将标签作为子项添加到图层中,它将使用您的自定义字体显示!

而且,这是我们的结果:

在此处输入图像描述

Interesting Posts