ठीक है, तो यहां मैंने यह कैसे किया है। सबसे पहले जहां यह आवश्यक था:
#import <CoreText/CoreText.h>
फिर अपना NSURL सत्र कॉल करें। मेरे ग्राहक ने अमेज़ॅन के एस 3 पर एक फ़ॉन्ट अपलोड किया। तो जहां जरूरत ऐसा करते हैं:
// 1
NSString *dataUrl = @"http://client.com.s3.amazonaws.com/font/your_font_name.ttf";
NSURL *url = [NSURL URLWithString:dataUrl];
// 2
NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// 4: Handle response here
if (error == nil) {
NSLog(@"no error!");
if (data != nil) {
NSLog(@"There is data!");
[self loadFont:data];
}
} else {
NSLog(@"%@", error.localizedDescription);
}
}];
// 3
[downloadTask resume];
मेरे loadFont डेटा यहाँ है:
- (void)loadFont:(NSData *)data
{
NSData *inData = data;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if(!CTFontManagerRegisterGraphicsFont(font, &error)){
CFStringRef errorDescription = CFErrorCopyDescription(error);
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
[self fontTest];
}
तब कि अंत में fontTest यकीन है कि फॉन्ट वास्तव में नहीं है, और मेरे मामले में बनाने के लिए सिर्फ है, यह गया था ! और यह भी दिखाया गया है कि जब ऐप चलाया गया था तब यह दिखाया गया था।
- (void)fontTest
{
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++) {
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
}
यह दिलचस्प और उपयोगी है! निश्चित रूप से पसंदीदा में जोड़ें। यदि यह आपके लिए काम करता है, तो सही उत्तर के रूप में चिह्नित करें? : पी – emotality
मुझे अपने उत्तर को सही के रूप में चिह्नित करने से दो दिन पहले इंतजार करना होगा, स्टैक ओवरफ्लो मुझे बताता है;) – MScottWaller