2017-09-05 15 views
1

カスタムフォントからSAPアイコン(添付ファイルへのリンクを参照してください)を表示しようとしています。私はカスタムフォントSAP-icons.ttfを追加しました(バンドルに含まれ、正しく読み込まれ、ダブルチェックされています)、正しいシンボルをロードできません。「SAP-icons.ttf」フォントから特定のアイコンをロードできません

私が使用するコードスニペットは以下の通りです:

は、フォントへのパスを取得します。特定のバンドルに格納されています。 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参照ユニコードを見つけました:&#xe202 Unicode値が、私が使用する必要があります。このアイコンの正しくない場合 https://sapui5.hana.ondemand.com/iconExplorer.html#/?tab=grid&search=info&icon=message-information

? イベントプレビューが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]; 

どうすればいいですか?

+0

info.plistにも追加しましたか? –

+0

はい、.plistファイルにフォント名が追加され、正しく読み込まれました。 – Dmitry

+0

あなたは 'SAP-icons.ttf'という名前を与えており、コードに@" SAP_icons "を書いています。確信が持てない、名前**( - と_)**がある可能性があります。 –

答えて

1

代わり

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

の使用

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

そしてませんが、私は確信しているラベル

label.font = myCustomFont; 
+0

ダブルチェックで、ビルドフェーズに含まれています。 – Dmitry

+0

FontBookアプリケーションでフォントファイルを開くことはできますか?フォント名が正しいことを確認するだけです。(Command +スペースタイプのフォントブック) – joan

+0

チェックして、フォント名が正しい。 – Dmitry

0

のフォントを設定し忘れて問題がフォントにあります名。

for (NSString *familyName in [UIFont familyNames]){ 
    NSLog(@"Family name: %@", familyName); 
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { 
     NSLog(@"--Font name: %@", fontName); 
    } 
} 

上記のコードをAppDelegate didFinishで実行し、正しいフォント名を使用していることを確認してください。

上記のコードからNSLogのSAP_iconsを検索します。あなたが適切な名前を探すのを見つけなければ。

上記のログでSAPを検索すると、正しい名前が付けられます。

+0

提案していただきありがとうございますが、問題は特殊文字の読み込みに問題があります。答えを見てください。 – Dmitry

関連する問題