CoreText未加载自定义字体

时间:2012-08-02 20:31:46

标签: ios core-text core-foundation

我有两个自定义的.ttf和.otf字体。我试图使用以下代码行在CoreText中加载它们:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

控制台打印:

  

Arial Hebrew
  ArialHebrew粗体
  ArialHebrew光强
  ArialHebrew
  
  的宋体
  宋体粗体
  宋体
  
  的佐治亚
   佐治亚BOLDITALIC
   格鲁吉亚粗体
   格鲁吉亚斜体
   佐治亚

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

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

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

注意:此处fontName = @"Calibri-Bold"没有扩展名。

答案 1 :(得分:-1)

如果自定义字体适用于UILabel,那么它应该可以在CoreText中工作

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

创建字体后,需要在NSAttributedString的attributes-dictionary中将其设置为值kCTFontAttributeName的fontRef。它对我有用。