将自定义字体设置为粗体

4

我已经成功地将自定义字体添加到我的项目中,并通过以下代码行等方式使其正常工作:

 [sideScoreLabel setFont:[UIFont fontWithName:@"Caveman" size:34]];

然而我希望这个自定义字体是加粗的。我已经做了研究,所有人都似乎在说要在字体名称后面添加“-Bold”或“-BoldMT”,使它看起来像下面这样:

 [sideScoreLabel setFont:[UIFont fontWithName:@"Caveman-Bold" size:34]];

当我运行我的项目时,似乎没有工作。有人知道我做错了什么吗?也许我使用的字体与加粗不兼容?
谢谢!

2
很多时候,特殊字体实际上有一个名为name-Bold的单独字体。快速谷歌搜索Caveman字体揭示了这可能在这里也是真的。自定义字体并不像标准字体(例如Times New Roman),其中粗体是可以应用的选项。您需要像添加Caveman字体一样添加Caveman-Bold字体。 - BobbyScon
3个回答

8

我已经成功地将自定义字体添加到我的项目中,并且通过执行以下代码行和其他操作,它可以正常工作:

伙计,你在你的iOS包中添加了一个自定义字体

如果你想要这个字体的粗体版本,你需要提供一个,系统不会为你完成。


如何生成粗体 TTF 文件? - OMGPOP

7

当您提到字体无法加粗时,您已经走在了正确的道路上。您可以使用以下代码验证所有可用字体并将其输出到控制台,然后查找您需要的字体。

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
  NSArray *fontNames;
  NSInteger indFamily, indFont;
  for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
  {
      NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
      fontNames = [[NSArray alloc] initWithArray:
          [UIFont fontNamesForFamilyName:
          [familyNames objectAtIndex:indFamily]]];
      for (indFont=0; indFont<[fontNames count]; ++indFont)
      {
          NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
      }
      [fontNames release];
  }
  [familyNames release];

谢谢。它似乎不在字体列表中。然而,当我在我的Mac上单击.TTF文件时,它会向我显示两套字母表,一种是粗体,一种是普通体。这是否仍意味着无法完成?谢谢。 - Alex G
我想添加Arial字体,包括常规和粗体,但一直无法成功。但是通过您的代码,我检查了名称,发现它应该是ArialMT而不是Arial,以及Arial-BoldMT而不是Arial-Bold。这对我很有帮助。 - Heena
所显示的这些名称并非必需的。您应该使用PostScript名称,这可能与此脚本显示的字体名称不同。 - Alex Christodoulou
非常好的答案,我可以看到我的实际添加的字体名称,并且可以准确地在“FontWithName”方法中使用。 - BhushanVU
你也可以通过“手动”方式来实现,使用 NSLog(@"%@", [UIFont familyNames]);NSLog(@"%@", [UIFont fontNamesForFamilyName:@"SomeFont"]); 来获取你想要的字体族可用字体名称。 - Niklas Berglund

4
  1. Spotlight 中找到 "Font Book"
  2. 打开它并在字体列表中找到您的字体
  3. 正如您所看到的,任何字体都有几个名称。在您的代码中,您应该始终使用您的字体的 PostScript 名称。有时PostScript名称与您的字体文件名不相似。

唯一能够百分之百支持自定义字体家族及其变体的方法,感谢。 - Alex Christodoulou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接