2010-03-15 7 views
37

Ich habe ein Programm, das ich schreibe. Ich möchte eine ausgefallene Schriftart verwenden. Kann ich meine Schriftart einfach in mein Bundle einbetten und von dort aus verwenden?Schrift in ein Mac-Bündel einbetten

Mein Code ...

NSMutableAttributedString *recOf; 
recOf = [[NSMutableAttributedString alloc] initWithString:@"In Recognition of"]; 
length = [recOf length]; 
[recOf addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Edwardian Script ITC" size:50] range:NSMakeRange(0, length)]; 
[[NSColor blackColor] set]; 
p.x = (bounds.size.width/2)- (([recOf size].width)/2); 
p.y = (bounds.size.height/1.7); 
[recOf drawAtPoint:p]; 
[recOf release]; 
+2

Vielen Dank, dass Sie diese Frage senden! Ich versuchte herauszufinden, wie ich das machen sollte, und Rob Kenigers Antwort funktionierte wie ein Zauber. Sie sollten seine Antwort wirklich als die akzeptierte Antwort markieren. –

Antwort

2

Some people had success Carbon-Magie. Du solltest es ausprobieren.

Das obige Beispiel erwähnt, ATSFontActivateFromFileSpecification wurde in Leopard veraltet. Anscheinend verwendet der Ersatz einen FSRef direkt, was noch besser ist.

+3

Dieser Ersatz ist 'ATSFontActivateFromFileReference'. Die gesamte API (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) wurde jedoch in Snow Leopard zugunsten von Core Text abgelehnt. Der Ersatz für den Ersatz ist 'CTFontManagerCreateFontDescriptorsFromURL': http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL Das ist auch einfacher zu verwenden, da Core Text-Klassen mit ihren AppKit-Gegenstücken gebührenfrei überbrückt werden. –

81

Ja, Sie können. Sie sollten Ihrem Ziel eine Build-Phase Copy Files hinzufügen (klicken Sie mit der rechten Maustaste auf Ihr Ziel und wählen Sie dann Hinzufügen> Neue Build-Phase> Neue Build-Phase für Kopierdateien).

Legen Sie das Ziel für die Build-Phase Copy Files auf Resources mit einem Pfad von Fonts fest. Dadurch wird sichergestellt, dass die Schriftart in einen Ordner mit dem Namen Fonts in Ihrem Anwendungspaket kopiert wird.

Fügen Sie Ihre Schriftartdatei zur neuen Erstellungsphase hinzu, indem Sie die Schriftartdatei in die Erstellungsphase ziehen.

Sie müssen dann die ATSApplicationFontsPath key auf Ihre Info.plist Datei hinzuzufügen, mit dem Namen des Ordners Ihre Schrift als Wert enthält:

<key>ATSApplicationFontsPath</key> 
<string>Fonts</string> 

Anschließend können Sie die Schriftart in Ihrer Anwendung verwenden, als ob es sich um eine waren integrierte Systemschrift durch Aufruf [NSFont fontWithName:@"yourFontName"].

Natürlich sollten Sie sicherstellen, dass Sie die Berechtigung haben, die Schriftart zu verteilen, bevor Sie dies tun.

+2

Für xCode 5 müssen Sie Ihr Ziel auswählen, aus der Menüleiste wählen Sie Editor-> Build-Phase hinzufügen-> Add Copy Files Build Phase, um eine Build-Phase hinzuzufügen. –

+0

Könnten Sie mir bitte für das gleiche Problem helfen, [meine Frage] (http://stackoverflow.com/questions/25279279/unable-to-add-a-custom-font-in-mac-app-osx-10-9 -xcode5) –

+0

@Rob: Das funktioniert sehr gut. Dank dafür. Was aber, wenn der Benutzer die Schriftart nicht auf seinem Mac installiert hat? Mittel können wir aus der App überprüfen, ob die Schriftart auf Mac installiert ist oder nicht. Wenn nicht, können wir das dann programmatisch von der Kakaomak Anwendung installieren? – Manthan