如何将自定义字体添加到我的应用程序? [复制]
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 在字体册中查看它以上是关于如何将自定义字体添加到我的应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义字体系列添加到 react-reader npm