2010-04-24 14 views
13

ओएसएक्स 10.6 से पहले, एटीएसफ़ॉन्टएक्टिवेटफ्रॉमफाइल स्पेसिफिकेशन/एटीएसफ़ॉन्टएक्टिवेटफ्रॉमफाइल रिफरेंस उपलब्ध था और फ़ाइल से फ़ॉन्ट लोड करने के लिए इस्तेमाल किया जा सकता था। मुझे कोर टेक्स्ट में कुछ भी नहीं मिल रहा है।कोर टेक्स्ट का उपयोग कर फ़ाइल से आप फ़ॉन्ट (टीटीएफ) कैसे लोड कर सकते हैं?

उत्तर

10

ऐसा लगता है कि CTFontManagerCreateFontDescriptorsFromURL कोर टेक्स्ट प्रतिस्थापन है।

+2

और वो [कोर ग्राफिक्स मार्ग की तुलना में कम कोड] (https के लिए बनाता है: //gist.github। com/1,696,100)। –

18

आप एक CGFontRef के माध्यम से जा रहा द्वारा एक फ़ॉन्ट फ़ाइल से एक CTFontRef प्राप्त कर सकते हैं:

CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/path/to/font"), kCFURLPOSIXPathStyle, false); 
CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(url); 
CGFontRef theCGFont = CGFontCreateWithDataProvider(dataProvider); 
CTFontRef theCTFont = CTFontCreateWithGraphicsFont(theCGFont); 
CFRelease(theCGFont); 
CFRelease(dataProvider); 
CFRelease(url); 

// do something with the CTFontRef here 

CFRelease(theCTFont); 
+0

यह हिम तेंदुए (ऐप्पल द्वारा पुष्टि) के तहत काम नहीं करता है और आपको केवल ओएस एक्स के उस संस्करण पर 'एटीएसफ़ॉन्टएक्टिवेट्रोम मेमरी()' का उपयोग करने की आवश्यकता है। – trojanfoe

+0

इसकी पुष्टि नहीं कर सकता। यह हिम तेंदुए पर ठीक काम करता है। – Andreas

4
NSURL *fontURL = [[NSBundle mainBundle] URLForResource:@"Crystal" withExtension:@"ttf"]; 
    assert(fontURL); 
    CFErrorRef error = NULL; 
    if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error)) 
    { 
     CFShow(error); 
     abort(); 
    } 
+1

यह मेरे लिए काम किया, धन्यवाद! – MiMo

संबंधित मुद्दे