2010-03-15 13 views
37

Tengo un programa que estoy escribiendo. Quiero usar una fuente elegante. ¿Puedo insertar mi fuente en mi paquete y usarlo desde allí?Incrustar fuente en un paquete Mac

Mi código ...

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

¡Gracias por publicar esta pregunta! Estaba tratando de descubrir cómo hacer esto, y la respuesta de Rob Keniger funcionó a las mil maravillas. Realmente debería marcar su respuesta como la respuesta aceptada. –

Respuesta

2

Some people had success uso de la magia de carbono. Deberías probarlo.

Dicho esto sobre el ejemplo anterior, ATSFontActivateFromFileSpecification estaba en desuso en Leopard. Aparentemente, el reemplazo usa un FSRef directamente, lo cual es aún mejor.

+3

Ese reemplazo es 'ATSFontActivateFromFileReference'. Sin embargo, toda la API (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) ha quedado obsoleta en Snow Leopard, a favor de Core Text. El reemplazo del reemplazo es 'CTFontManagerCreateFontDescriptorsFromURL': http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL Eso también es más fácil para usar, porque las clases de Texto principal están libres de puente con sus contrapartes de AppKit. –

81

Sí, puedes. Debe agregar una fase de compilación Copy Files a su objetivo (haga clic con el botón derecho en su destino, luego elija Agregar> Nueva fase de compilación> Nueva copia de la fase de compilación de archivos).

Establezca el destino de la fase de compilación Copiar archivos en Recursos con una ruta de Fonts. Esto se asegurará de que la fuente se copie en una carpeta llamada Fonts en su paquete de aplicaciones.

Agregue su archivo de fuente a la nueva fase de compilación arrastrando el archivo de fuente a la fase de compilación.

A continuación, deberá añadir el ATSApplicationFontsPath key a su archivo Info.plist, con el nombre de la carpeta que contiene su fuente como su valor:

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

A continuación, puede utilizar la fuente en su aplicación como si se tratara de una fuente incorporada del sistema llamando al [NSFont fontWithName:@"yourFontName"].

Por supuesto, debe asegurarse de tener permiso para distribuir la fuente antes de hacer esto.

+2

Para xCode 5 tiene que seleccionar su destino, desde la barra de menú seleccione Editor-> Agregar Fase de compilación-> Agregar copia de la fase de compilación de archivos para agregar una fase de compilación. –

+0

¿Podría ayudarme por el mismo problema, [mi pregunta] (http://stackoverflow.com/questions/25279279/unable-to-add-a-custom-font-in-mac-app-osx-10-9 -xcode5) –

+0

@Rob: Esto funciona muy bien. Gracias por eso. Pero, ¿y si el usuario no ha instalado la fuente en su Mac? Medios podemos verificar desde la aplicación si la fuente está instalada en mac o no. Si no, ¿podemos instalarlo programáticamente desde la aplicación cocoa mac? – Manthan

Cuestiones relacionadas