【问题标题】:Custom fonts on iOS app - working in Simulator but not iPadiOS 应用程序上的自定义字体 - 在模拟器中工作,而不是在 iPad 上工作
【发布时间】:2011-07-23 10:36:44
【问题描述】:

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

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

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

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

【问题讨论】:

  • iPad 运行的是什么版本的 iOS?我依稀记得一些关于嵌入 truetype 字体的事情,它在旧 iOS 版本中无法正常工作。
  • 4.2.1.我知道它们在 3.2 之前不起作用,但最终会出现一些大写错误 -_- 不过谢谢!
  • 是的,但我的意思是我记得在早期版本 (> 3.2) 中,iOS 处理 TTF 字体和 OTF 字体的方式有些不同。太好了,您的问题已经通过区分大小写的东西解决了。

标签: objective-c ipad fonts


【解决方案1】:

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

【讨论】:

  • 你。是。天才。那正是我没有做的(ttf而不是TTF)。现在它起作用了。非常感谢!
  • 这里有同样的问题。谢谢。
  • 尝试了各种方法,但这是我的问题。谢谢!
【解决方案2】:

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

希望,它可以帮助某人。

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

只需从 Finder 中打开 FontBook,然后从 File->Add Fonts 选择您要添加到应用程序中的字体,稍加处理后,FontBook 将显示列出的字体并带有正确的名称,请使用FontBook 忽略您已导入或添加到 plist 的实际 ttf 文件名.. 它应该可以工作..

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,但在 iphonc 的解决方案上稍作改动就解决了。区分大小写与文件扩展名直接相关。问题与我的字体文件有关:Choc.TTF

    1. 我不得不在 xCode 4.1 中删除对文件的引用
    2. 将文件重命名为 Choc.ttf(注意文件扩展名小写)
    3. 将引用重新添加到 xCode 中
    4. 对设备执行清理并重新构建

    结论(在我的特殊情况下)

    区分大小写不仅适用于文件名,还适用于文件扩展名(即 iOS 设备似乎只允许小写)。

    【讨论】:

      【解决方案4】:

      我的答案与其他人不同。我遇到了一个问题,因为字体都是一个单词和小写“compassnormal.ttf”,并且文件中的名称是 Compass。所以,我的代码是:

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

      捆绑资源说: compassnormal.ttf

      ~info.plist 说: compassnormal.ttf

      在我更改实际文件名以匹配它在字体册中的正式名称之前,这些都不起作用。

      1. 从 Bundle Resources 和 ~info.plist 中删除了所有引用;
      2. 为 Bundle Resources 添加了具有更新名称的字体;
      3. 用新名称更新了 plist;
      4. 在模拟器和设备上进行了测试,瞧!

      【讨论】:

      • 太好了,你救了我这一天。谢谢:)
      【解决方案5】:

      我还遇到了包含破折号 (-) 字符的字体问题。从字体名称中删除该字符并尝试使用它。

      所以你命名为 Gotham-Black.ttf 的字体应该命名为 GothamBlack.ttf

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          这个真实姓名大多与文件名相距甚远。只需在 Mac 字体实用程序中打开 rtf。在标题中,您会看到字体系列!!!只有家人!!!如果你现在使用

          NSArray *fontNames = [UIFont fontNamesForFamilyName:@"MyFontNameFamily"];
          NSLog(@"%@", fontNames);
          

          在您的代码中,您会在控制台中获得真实的真实姓名;-)

          但在 plist 条目中,您仍然需要(区分大小写)文件名!!!

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-15
              • 1970-01-01
              • 1970-01-01
              • 2014-02-13
              • 2015-08-14
              • 2012-11-27
              • 1970-01-01
              相关资源
              最近更新 更多