2010-03-15 5 views
37

Ho un programma che sto scrivendo. Voglio usare un font di fantasia. Posso semplicemente incorporare il mio carattere nel mio pacchetto e usarlo da lì.Carattere incorporato in un pacchetto mac

Il mio codice ...

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

Grazie per aver postato questa domanda! Stavo cercando di capire come farlo, e la risposta di Rob Keniger ha funzionato come un incantesimo. Dovresti davvero segnare la sua risposta come risposta accettata. –

risposta

2

Some people had success usando la magia di carbonio. Dovresti provarlo.

Detto questo nell'esempio sopra, ATSFontActivateFromFileSpecification è stato dichiarato obsoleto in Leopard. Apparentemente la sostituzione utilizza direttamente un FSRef, che è ancora meglio.

+3

Tale sostituzione è "ATSFontActivateFromFileReference". Tuttavia, l'intera API (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) è stata deprecata in Snow Leopard, a favore di Core Text. La sostituzione per la sostituzione è 'CTFontManagerCreateFontDescriptorsFromURL': http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL Anche questo è più facile da usare, perché le classi di Core Text non sono pedonabili con le loro controparti AppKit. –

81

Sì, è possibile. È necessario aggiungere una fase di costruzione Copy Files alla destinazione (fare clic con il pulsante destro del mouse sulla destinazione, quindi scegliere Aggiungi> Nuova fase di creazione> Nuova fase di creazione dei file di copia).

Impostare la destinazione della fase di copia dei file di copia su Risorse con un percorso di Fonts. Ciò assicurerà che il carattere sia copiato in una cartella denominata Fonts nel pacchetto di applicazioni.

Aggiungi il tuo file di font alla nuova fase di creazione trascinando il file di font nella fase di compilazione.

È quindi necessario aggiungere il ATSApplicationFontsPath key al file Info.plist, con il nome della cartella contenente il tipo di carattere come il suo valore:

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

È quindi possibile utilizzare il tipo di carattere nella vostra applicazione, come se si trattasse di un font di sistema integrato chiamando lo [NSFont fontWithName:@"yourFontName"].

Ovviamente, è necessario assicurarsi di disporre dell'autorizzazione per distribuire il carattere prima di eseguire questa operazione.

+2

Per xCode 5 devi selezionare il tuo obiettivo, dalla barra dei menu seleziona Editor-> Aggiungi fase di costruzione-> Aggiungi copia file di fase di costruzione per aggiungere una fase di costruzione. –

+0

Potrebbe aiutarmi per lo stesso problema, [la mia domanda] (http://stackoverflow.com/questions/25279279/unable-to-add-a-custom-font-in-mac-app-osx-10-9 -xcode5) –

+0

@Rob: funziona molto bene. Grazie per quello. Ma cosa succede se l'utente non ha installato il carattere sul suo Mac? Mediante possiamo controllare dall'app se il font è installato su Mac o no. Se no, allora possiamo installarlo programmaticamente dall'applicazione cocoa mac? – Manthan

Problemi correlati