2010-04-24 10 views

Répondre

10

Il semble que CTFontManagerCreateFontDescriptorsFromURL est le remplacement du texte de base.

+2

Et il fait pour [code plus court que la route de base Graphics] (https: //gist.github. com/1696100). –

18

Vous pouvez obtenir un CTFontRef à partir d'un fichier de police en passant par un CGFontRef:

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

Cela ne fonctionne pas sous Snow Leopard (confirmé par Apple) et vous devez utiliser 'ATSFontActivateFromMemory()' sur cette version d'OS X uniquement. – trojanfoe

+0

Impossible de confirmer cela. Cela fonctionne bien sur Snow Leopard. – 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

cela a fonctionné pour moi, merci! – MiMo