我有两个自定义的.ttf和.otf字体。我试图使用以下代码行在CoreText中加载它们:
CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL);
令人沮丧的是,它适用于“美国打字机”等已安装的字体。但更令人困惑的是,我发现我安装的自定义字体适用于UILabels fontWithName
答案 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。它对我有用。