在iOS应用程序中安装特定字体时遇到问题 - 不兼容的TTF?

时间:2013-04-05 01:55:11

标签: ios xcode fonts true-type-fonts

我的代码仓库中有一些字体文件,用于字体Nubian和Nubian-Alt。它们是许可和付费的,需要使用它们。但是我无法在iOS中使用这种字体,即使字体在Finder中预览好并且被识别为Truetype字体,我也无法使用Font Book打开字体。

Finder's view of the "bad" font

我首先尝试将Nubian-Medium添加到iOS应用程序中 - 使用应用程序Info.plist中的“应用程序提供的字体”键。该字体未出现在使用以下内容生成的列表中:

 for (NSString *familyName in [UIFont familyNames]) {
   for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
     NSLog(@"%@", fontName);
   }
 }

我查看了Target的“Copy Bundle Resources”构建阶段,看到该字体已添加到列表中。

我尝试添加我在另一个应用程序中使用的另一种字体“chess-merida-unicode.ttf”,以检查我是否正确添加了字体 - 我将其复制到应用程序并将其添加到由提供的字体数组中应用程序看到它出现在“复制包资源”列表中,使用上面的代码片段报告它可用。

接下来,我看一下OS X中的字体 - 双击打开Font Book,但不打开或添加字体。当我尝试将所有Nubian字体拖入Font Book作为新集合时,它报告了所有文件的问题,特别是在字体文件中包含的表中。

Font Problems displayed by Font Book

选择所有字体然后选择继续没有做任何事情。

我下载了一个名为Font Agent Pro的第三方应用的试用版,但它也无法加载这些字体。

我发现了一个名为fonts.com的粗略网站,并下载了另一个Nubian-Medium(“ufonts.com_nubian-medium_1_.ttf”) - Xcode能够识别该文件。

我检查了这些文件的权限,并确保它们是rw for all,没有变化。

此时您会怀疑文件已损坏或损坏,但它们正在网页上使用(也是项目的一部分),并且工作正常。我还可以采取哪些其他措施?如何将这些文件添加到iOS项目中?如果某些类型的TTF无法在iOS项目中使用,我该如何检查这些是否是那种?

2 个答案:

答案 0 :(得分:4)

第1步:从http://www.fontpalace.com/font-download/Nubian-Thin/

下载Nubian字体

第2步:在项目中添加字体.ttf文件

步骤3:使用应用程序注册字体,在Fonts provided by application文件中设置info.plist键,有关详细信息,请参阅ScreenShot。

步骤4:创建标签并为其指定字体,如下所示

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
[lbl setText:@"I am Nubian-Thin"];
[lbl setFont:[UIFont fontWithName:@"Nubian-Thin" size:26.0f]];

[self.view addSubview:lbl];

See The Screenshot for more reference

答案 1 :(得分:2)

答案似乎是这些字体是"web" fonts。鉴于TTF文件看起来就像一个“桌面”字体,我不知道如何区分。学习如何做到这一点就是问题的目的。

实际上,从某人的硬盘驱动器中挖掘出一个旧存档会发现另一个存在TTF字体的存档。这些字体仍然有8.3个文件名,并且都是作为自己的字体系列的成员创建的(因此Nubian-Medium和Nubian-MediumItalic没有任何关联)。我将它们重命名,然后通过RoboFonts的试用来运行它们以纠正家庭关系。这导致了努比亚家族的TTF。然后发现了一个奇怪的问题,用这种字体创建的UILabel在帧的顶部附带了一个1像素的水平规则。再次完成这个过程,但选择生成OTF输出就没有了。

字体很容易,除非它们没有,那么它们真的很难。