Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CoreText未加载自定义字体_Ios_Core Text_Core Foundation - Fatal编程技术网

Ios CoreText未加载自定义字体

Ios CoreText未加载自定义字体,ios,core-text,core-foundation,Ios,Core Text,Core Foundation,我有两种自定义的.ttf和.otf字体。我尝试使用以下代码行将它们加载到CoreText中: CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL); 令人沮丧的是,它可以与“美国打字机”等已安装字体一起使用。但更令人困惑的是,我发现我安装的自定义字体可以与UILabel一起使用fontWithName如果自定义字体可以与UILabel一起使用,那么它应该可以在CoreText中作为 font

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

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

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

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

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

创建字体后,需要在NSAttributedString的属性化字典中将其设置为值kCTFontAttributeName的fontRef。它适合我。

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

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

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

Arial希伯来语
阿里亚赫布鲁黑体
阿里亚尔韦伯灯
阿里亚尔赫布鲁

Calibri
Calibri Bold
Calibri

格鲁吉亚
格鲁吉亚黑体字
格鲁吉亚黑体字
乔治亚斜体
格鲁吉亚

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

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

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

注意:此处
fontName=@“Calibri Bold”
没有扩展名