2010-03-15 6 views
37

J'ai un programme que j'écris. Je veux utiliser une police de fantaisie. Puis-je simplement intégrer ma police dans mon bundle et l'utiliser à partir de là?Intégrer la police dans un paquet mac

Mon 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

Merci d'avoir posté cette question! J'essayais de comprendre comment faire, et la réponse de Rob Keniger a fonctionné comme un charme. Vous devriez vraiment marquer sa réponse comme la réponse acceptée. –

Répondre

2

Some people had success en utilisant la magie de carbone. Tu devrais l'essayer. Ceci étant dit à propos de l'exemple ci-dessus, ATSFontActivateFromFileSpecification a été déprécié dans Leopard. Apparemment, le remplacement utilise un FSRef directement, ce qui est encore mieux.

+3

Ce remplacement étant 'ATSFontActivateFromFileReference'. Cependant, cette API complète (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) a été abandonnée dans Snow Leopard, en faveur de Core Text. Le remplacement du remplacement est 'CTFontManagerCreateFontDescriptorsFromURL': http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL C'est aussi plus facile à utiliser, car les classes de texte principal sont connectées gratuitement à leurs homologues AppKit. –

81

Oui, vous pouvez. Vous devez ajouter une phase de construction Copy Files à votre cible (cliquez avec le bouton droit sur votre cible, puis choisissez Ajouter> Nouvelle phase de construction> Nouvelle phase de génération de fichiers de copie).

Définissez la destination de la phase de génération Copier les fichiers sur Ressources avec un chemin de Fonts. Cela s'assurera que la police est copiée dans un dossier nommé Fonts dans votre ensemble d'applications.

Ajoutez votre fichier de police à la nouvelle phase de construction en faisant glisser le fichier de police sur la phase de construction.

Vous devez ensuite ajouter le ATSApplicationFontsPath key à votre fichier Info.plist, avec le nom du dossier contenant votre police comme valeur:

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

Vous pouvez ensuite utiliser la police dans votre application comme si elle était un police intégrée du système en appelant [NSFont fontWithName:@"yourFontName"].

Bien sûr, vous devez vous assurer que vous avez l'autorisation de distribuer la police avant de procéder.

+2

Pour xCode 5, vous devez sélectionner votre cible. Dans la barre de menus, sélectionnez Editeur-> Ajouter une phase de construction-> Ajouter une copie de la phase de construction des fichiers afin d'ajouter une phase de construction. –

+0

Pourriez-vous s'il vous plaît m'aider pour le même problème, [ma question] (http://stackoverflow.com/questions/25279279/unable-to-add-a-custom-font-in-mac-app-osx-10-9 -xcode5) –

+0

@Rob: Cela fonctionne très bien. Merci pour ça. Mais que faire si l'utilisateur n'a pas installé la police sur son mac? Moyens pouvons-nous vérifier à partir de l'application si la police est installée sur Mac ou non. Si non, alors pouvons-nous l'installer par programmation à partir de l'application cacao mac? – Manthan

Questions connexes