1

我有两种自定义 .ttf 和 .otf 字体。我正在尝试使用这行代码将它们加载到 CoreText 中:

CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL);

令人沮丧的是,它适用于已安装的字体,如“美国打字机”。但更令人困惑的是,我发现我安装的自定义字体可以与 UILabels 一起使用fontWithName

4

2 回答 2

1

要在 iOS 中使用自定义字体,只需将字体拖放到项目中即可。在 Info.plist 中使用“应用程序提供的字体”键提及带有扩展名的字体名称数组。然后使用以下代码打印所有字体系列名称:

for (NSString* family in [UIFont familyNames])
{
  DebugLog(@"FONT FAMILY: %@", family);

  for (NSString *name in [UIFont fontNamesForFamilyName: family])
  {
    DebugLog(@"  %@", name);
  }
}

控制台打印:

Arial 希伯来语
ArialHebrew-Bold
ArialHebrew-Light
ArialHebrew

Calibri
Calibri-Bold
Calibri

Georgia
Georgia-BoldItalic
Georgia-Bold
Georgia-Italic
Georgia

然后从控制台,您将获得实际的字体名称(如上)。使用以下代码创建字体 -

在核心文本中:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);

在 UIKit 中: UIFont *font = [UIFont fontWithName:fontName size:10];

注意:这里fontName = @"Calibri-Bold"没有扩展。

于 2016-02-04T10:11:01.230 回答
-1

如果自定义字体与 UILabel 一起使用,那么它应该能够在 CoreText 中作为

fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);

创建字体后,您需要将其设置为 NSAttributedString 属性字典中值 kCTFontAttributeName 的 fontRef。这个对我有用。

于 2012-08-22T02:07:18.223 回答