如何将自定义字体添加到我的应用程序? [复制]

Posted

技术标签:

【中文标题】如何将自定义字体添加到我的应用程序? [复制]【英文标题】:How do I add a custom font to my app? [duplicate] 【发布时间】:2013-07-30 22:36:50 【问题描述】:

编辑:我想通了!答案贴在下面。感谢 JSD!

我一定遗漏了一些东西,因为我认为这是一个相当简单的过程。我已经将字体复制到我的项目文件夹中。我正在尝试使用此代码在表格单元格上的 UILabel 中使用字体:

UILabel *cellTitle = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 40)];
cellTitle.font = [UIFont fontWithName:@"Source Sans Pro Black" size:50];
[cell.contentView addSubview:cellTitle];

它似乎不起作用。文本出现但不使用自定义字体。我错过了什么?

编辑:显然如果我改用这段代码

cellTitle.font = [UIFont fontWithName:@"Source Sans Pro" size:50];

这可行,但它只使用我的 pList 文件数组中的最后一个字体,这只是字体的常规版本。以前有人遇到过这个问题吗?

这些代码都不起作用:

cellTitle.font = [UIFont fontWithName:@"Source Sans Pro Bold" size:50];
cellTitle.font = [UIFont fontWithName:@"Source Sans Pro Regular" size:50];

这是我字体册中的字体:

PList 文件:

【问题讨论】:

这没有什么区别,您应该始终将所有重要假设包含在您的问题中。 我可能错了,但字体不一定是.ttf 您绝对可以在一个应用程序中拥有两种自定义字体。你可以试试 ttf 字体,看看是否有帮助?我找不到任何使用 otf 文件的地方。 ***.com/questions/1371407/… 你是说[UIFont fontWithName:"SourceSansPro-Black" size:12][UIFont fontWithName:@"SourceSansPro-Regular" size:12] 最终在屏幕上看起来一样吗?请注意,名称必须与我显示的完全一致,不能有空格和连字符。 你必须使用你想要的字体的“后记名称”。您可以在 Font Book 中的字体上使用“获取信息”来查看它。 【参考方案1】:

确保将字体名称添加到 info.plist 文件中

【讨论】:

是的,我也明白了。该字体是一个家族的一部分,但我只在我的应用程序中使用黑色样式。 如果您将文件复制到项目中,然后将字体名称正确添加到 plist 中,它应该可以工作。我就是这样做的,它对我有用。确保 plist 中的字体名称与您的字体文件名完全匹配。 这很奇怪,我必须从名称中删除“黑色”,但我只得到了 plist 数组中的最后一个字体。如果我重新排列我的数组,它只使用最后一个字体。我不能用他们各自的名字来称呼字体。【参考方案2】:

将字体添加到您的项目中。然后,在您的 info.plist 文件中,添加一个名为 Fonts provided by application 的部分作为数组类型,并且每种字体都列在自己的行中... Item0、Item1 等。

当你在代码中加载字体时,你会像往常一样加载它: [myUILabel setFont:[UIFont fontWithName:@"MyFontname" size:14]];。通常您将使用 postscript 名称,可以使用 Mac 上的 FontBook 应用程序找到该名称。

【讨论】:

【参考方案3】:

根据我对自定义字体的使用,您的 plist 字体名称应与字体在字体册中的显示方式相匹配,这也应与 fontWithName 方法匹配。在你的情况下,我希望在这两个地方都能看到Source Sans Pro Black,特别是你的plist中的Source Sans Pro Black.otf和你的代码中的cellTitle.font = [UIFont fontWithName:@"Source Sans Pro Black" size:50];

【讨论】:

是的,我不能只用字体家族名称来称呼任何字体,这太疯狂了。问题是最终显示任何字体是我的 plist 中数组中的最后一个条目。我难住了。我猜这一定是这个特定字体或其他东西的问题。 您的最新一期是按照字体还是按照plist中的放置?我的意思是如果你在你的 plist 上最后放置一个不同的字体,它会代替常规版本工作吗? 是的。如果我将粗体字体移动到列表的最后一个。这就是我得到的。让黑色字体工作的唯一方法是将其移动到列表的最后一个。那是行不通的,因为我最终需要这三个。我想知道是否必须将字体导出为另一种格式或其他格式。 我还建议确保您的捆绑资源中有该字体,但看起来您已经掌握了它。 FWIW 您需要在所有这些中使用的名称是 SourceSansPro-【参考方案4】:

我刚刚开始工作!!!感谢 JSD 引导我朝着正确的方向前进。显然,问题在于 XCode 如何重命名同一家族中的字体变体。

使用 Font Book 名称不起作用!!!

您实际上必须查看 Xcode 如何命名字体。为此,您必须运行日志命令:

NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Source Sans Pro"]);

给了我这个:

此代码有效:

cellTitle.font = [UIFont fontWithName:@"SourceSansPro-Black" size:50];

【讨论】:

您需要使用字体的 PostScript 名称。您可以使用 Get Info 在字体册中查看它

以上是关于如何将自定义字体添加到我的应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

向 Rails 4 添加自定义字体的官方方式?

如何将自定义字体系列添加到 react-reader npm

将自定义 UIView 添加到 TableViewCell

如何将自定义表情符号上传到我的不和谐机器人

如何将自定义字体应用于 TTTAttributedLabel

无法将自定义字体添加到应用程序