我有两种自定义 .ttf 和 .otf 字体。我正在尝试使用这行代码将它们加载到 CoreText 中:
CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL);
令人沮丧的是,它适用于已安装的字体,如“美国打字机”。但更令人困惑的是,我发现我安装的自定义字体可以与 UILabels 一起使用fontWithName
我有两种自定义 .ttf 和 .otf 字体。我正在尝试使用这行代码将它们加载到 CoreText 中:
CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL);
令人沮丧的是,它适用于已安装的字体,如“美国打字机”。但更令人困惑的是,我发现我安装的自定义字体可以与 UILabels 一起使用fontWithName
要在 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"
没有扩展。
如果自定义字体与 UILabel 一起使用,那么它应该能够在 CoreText 中作为
fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);
创建字体后,您需要将其设置为 NSAttributedString 属性字典中值 kCTFontAttributeName 的 fontRef。这个对我有用。