iOS应用程序上的自定义字体 - 在模拟器中工作但不在iPad上工作

时间:2011-03-26 10:39:49

标签: objective-c ipad fonts

在这里遇到一个奇怪的问题。我正在为我的学校项目(非商业)开发游戏,我正在使用自定义字体Black Chancery(在GNU GPL下免费)。我按照多个来源的说明进行操作,其中包括:

  • 将字体添加到项目(TTF)。
  • 修改app-Info.plist以向其添加字体(“应用程序提供的字体”)。
  • 需要字体时使用[UIFont fontWithName:@"BlackChancery" size:30]

我可以在模拟器中显示字体,但是当我将其加载到iPad时,会使用默认的系统字体。我很确定字体本身没有问题,因为它在模拟器中显示,我使用FontForge打开字体而没有任何警告(从This Question开始)。

非常感谢任何帮助。谢谢! :)

8 个答案:

答案 0 :(得分:39)

我只能猜测你没有发布plist的内容或bundle的目录列表,但很多情况下“资源在模拟器上工作但在设备上没有”是由操作系统引起的X文件系统通常配置为不区分大小写,而设备上的文件系统区分大小写。例如,如果您的文件名为“BlackChancery.TTF”并且您的plist将其称为“BlackChancery.ttf”,则它将在模拟器上找到,但不会在设备上找到。

答案 1 :(得分:11)

我遇到字体无法识别的问题,我通过检查获取信息选项的字体文件信息来检查字体的正确名称来修复它。在我的情况下,文件名是 xyzfont.ttf ,但实际上信息中的 XyzFont.TTF ,我更换了它并且它有效。

希望,这有助于某人。

另一种方式 我找到了另一种找到正确名称的方法,就是在FontBook中安装字体..

只需从Finder打开FontBook,然后从文件中选择用户 - >添加字体选择要添加到应用程序中的字体,经过少量处理后,FontBook将显示使用正确名称列出的字体,使用名称FontBook忽略你导入的实际ttf文件名,或添加到plist ..它应该工作..

答案 2 :(得分:3)

我遇到了同样的问题,这个问题在iphonc的解决方案上略有不同。区分大小写与文件扩展名直接相关。该问题与我的名为 Choc.TTF

的字体文件有关
  1. 我必须删除对xCode 4.1
  2. 中文件的引用
  3. 将文件重命名为 Choc.ttf (注意小写文件扩展名)
  4. 将引用添加回xCode
  5. 执行清洁并重新构建设备
  6. 结论(在我的特定情况下)

    区分大小写不仅适用于文件名,也适用于文件扩展名(即iOS设备似乎只能容忍小写)。

答案 3 :(得分:2)

我的答案与其他所有人的不同。我有一个问题,因为字体是一个单词和小写“compassnormal.ttf”,文件中的名称是指南针。所以,我的代码是:

[UIFont fontWithName:@"Compass" size:24]]

Bundle Resource说: compassnormal.ttf

~info.plist说: compassnormal.ttf

在我更改实际文件名以匹配fontbook中的官方名称之前,这些都没有用。

  1. 删除了Bundle Resources和~info.plist;
  2. 的所有引用
  3. 将更新名称的字体添加到Bundle Resources;
  4. 使用新名称更新了plist;
  5. 在模拟器和设备上测试,Voila!

答案 4 :(得分:0)

我也遇到了包含短划线( - )字符的字体的问题。从字体名称中删除该字符并尝试使用它。

因此,名为Gotham-Black.ttf的字体应命名为GothamBlack.ttf

答案 5 :(得分:0)

同时检查您的字体是否为零字节。我遇到了同样的问题,事实证明我的字体文件在某个阶段已经清空了。可能在XCode和AppCode中重新排列它们时。

答案 6 :(得分:0)

你必须在[UIFont fontWithName:@“...方法中使用真实的字体名称!不是ttf文件名!!!

这个真实姓名大部分都远离文件名。只需在Mac字体实用程序中打开rtf即可。在标题中你看到字体系列!只有家人!如果你现在使用

NSArray *fontNames = [UIFont fontNamesForFamilyName:@"MyFontNameFamily"];
NSLog(@"%@", fontNames);
在您的代码中,您可以在控制台中获得真实的真实姓名; - )

但是在plist条目中你还需要(区分大小写)文件名!!!

答案 7 :(得分:0)

我在Xcode 6上遇到了同样的问题。我的文件名是我的Font.ttf ,它不起作用。当我将其重命名为 My Font.TTF 时,我设法使其有效,只需将文件扩展名更改为大写。