无法从`SAP-icons.ttf`字体加载特定图标

时间:2017-09-05 09:49:21

标签: ios objective-c

我正在尝试从自定义字体显示SAP图标(请参阅附件的链接)。我已经为项目添加了自定义字体SAP-icons.ttf(它包含在bundle中并正确加载,双重检查),但我无法加载正确的符号。

我使用的代码段如下:

获取字体的路径。它存储在特定的包中。使用CGDataProvider获取参考。

NSString *fontPath = [[NSBundle my_currentBundle]     pathForResource:@"SAP-icons" ofType:@"ttf"];

CGDataProviderRef provider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
CGFontRef fontRef = CGFontCreateWithDataProvider(provider);
CFErrorRef error = nil;
if (! CTFontManagerRegisterGraphicsFont(fontRef, &error)) {
    CFStringRef errorDescription = CFErrorCopyDescription(error);
    NSLog(@"Failed to load font: %@", errorDescription);
    CFRelease(errorDescription);
}

获取字体名称并创建UIFont对象。

NSString *fontName = (NSString *)CFBridgingRelease(CGFontCopyPostScriptName(fontRef));
UIFont *font = [UIFont fontWithName:fontName size:20];

CFRelease(fontRef);
CFRelease(provider);

对于所需的图标,我在网站中找到了&#xe202引用的unicode,其中包含以下链接: https://sapui5.hana.ondemand.com/iconExplorer.html#/?tab=grid&search=info&icon=message-information

如果此&#xe202 unicode值不正确,我应该使用哪个? 我无法在Mac上预览已安装的SAP-icons个字体字符 - 所有字体都是question marks

char *iconUnicodeStr = "&#xe202";
NSString *infoIconString = [NSString stringWithCString: iconUnicode encoding:(NSUnicodeStringEncoding)];

应用特定字体,设置文字。结果 - 错误的符号。

[self.button.titleLabel setFont:font];
[self.button.titleLabel setTitle:infoIconString];

提前感谢您提供任何帮助和建议,我该怎么做!

2 个答案:

答案 0 :(得分:1)

而不是

char *iconUnicodeStr = "U+xe202";
label.text = [NSString stringWithCString:iconUnicodeStr encoding:(NSUnicodeStringEncoding)];

使用

label.text = [NSString stringWithFormat:@"%C", (unichar)0xe202];

不要忘记设置标签的字体

label.font = myCustomFont;

答案 1 :(得分:0)

我确定问题在于字体名称。

$content = $request->getContent();

在AppDelegate didFinish上运行上面的代码并确保使用正确的字体名称。

从上面的代码中搜索NSLog中的SAP_icons。如果您没有找到正确的名称。

在上面的日志中搜索SAP,这将为您提供正确的名称。