Sé que puede personalizar fuentes mediante el uso de Interface Builder y seleccionando una fuente. Sin embargo, tengo curiosidad si puedo usar una fuente personalizada que no está incluida por defecto en los sistemas. ¿Hay alguna manera de incluir una fuente personalizada en mi aplicación?Fuente personalizada en una aplicación Cocoa
Respuesta
Si bien el procedimiento de activación manual de la fuente es una opción, también puede considerar la tecla ATSApplicationFontsPath
Info.plist:
Information Property List Key Reference:
"
ATSApplicationFontsPath
(String
- Mac OS X ) identifica la ubicación de un archivo de fuente o un directorio de fuentes en el directorio del paqueteResources
. Si prese nt, Mac OS X activa las fuentes en la ruta especificada para usar con la aplicación empaquetada . Las fuentes son activadas solo para la aplicación incluida y no para el sistema como en su conjunto. La ruta en sí debe ser especificada como un directorio relativo de el directorio de Recursos del paquete. Para ejemplo, si un directorio de las fuentes era en la ruta/Applications/MyApp.app/Contents/Resources/Stuff/MyFonts/
, debe especificar la cadenaStuff/MyFonts/
para el valor de esta clave ."
estaría seguro de volver a verificar, pero creo que esta funcionalidad se agregó en OS X 10.5.x (que el código publicado por Jinhyung Park apunta).
Sí o usted puede usar Core Text que se introdujo en Snow Leopard, creo. –
Esta solución es el camino correcto a seguir. Gracias por mencionarlo. –
Esto es mucho más fácil. Gracias – drudru
He logrado hacer esto usando cocos2d (CCLabelBMFont) y herramienta hiero. Tendrá que crear la fuente usando el hiero, y darle esta fuente al objeto CCLabelBMFont.
Mi pregunta es sobre ** Mac **, no sobre el iPhone. –
Este es el ejemplo de la carga personalizada de fuentes de la aplicación Mac.
NSString *fontFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/fonts"];
fontsURL = [NSURL fileURLWithPath:fontFilePath];
if(fontsURL != nil)
{
OSStatus status;
FSRef fsRef;
CFURLGetFSRef((CFURLRef)fontsURL, &fsRef);
status = ATSFontActivateFromFileReference(&fsRef, kATSFontContextLocal, kATSFontFormatUnspecified,
NULL, kATSOptionFlagsDefault, NULL);
if (status != noErr)
{
errorMessage = @"Failed to acivate fonts!";
goto error;
}
}
¿No puedes simplemente llamar '[NSFont fontWithName: @" fontname "]'? –
Leo el debate en http://cocoadev.com/index.pl?UsingCustomFontsInYourCocoaAplications. Después de cargar sus fuentes, puede usar [NSFont fontWithName: @ ""]. Acabo de comprobar en mi aplicación Mac OS X que está funcionando. –
Es curioso que no encuentre nada en la ayuda de Xcode ni en ADC cuando busca ATSFontActivateFromFileReference; necesita ir a "ATS/ATSFont.h" en su disco duro para obtener información .. – Jay
ATSApplicationFontsPath utiliza la ruta [NSBundle mainbundle] como ruta base, por lo que no funciona cuando la carpeta Resources no está ubicada allí (por ejemplo, para los complementos de aplicaciones).
En mi plugin de cacao que tienen que cargar fuentes personalizadas utilizando CTFontManagerRegisterFontsForURL
#import <Cocoa/Cocoa.h>
static void FGDActivateFont(NSString *fontName)
{
// Can't make ATSApplicationFontsPath in Info.plist work for plugins (non-standard Resources path)
NSArray *availableFonts = [[NSFontManager sharedFontManager] availableFonts];
if (![availableFonts containsObject:fontName]) {
NSURL *fontURL = [[FGDRapidCart bundle] URLForResource:fontName withExtension:@"ttf" subdirectory:@"Fonts"];
assert(fontURL);
CFErrorRef error = NULL;
if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error))
{
CFShow(error);
}
}
}
int main(int argc, char *argv[])
{
@autoreleasepool
{
FGDActivateFont(@“FontAwesome”);
}
return NSApplicationMain(argc, (const char **)argv);
}
Créditos: https://github.com/OneSadCookie/Extendaword/blob/master/Extendaword/main.m
Buena respuesta, necesitaba esto para mi protector de pantalla, los valores de plist no funcionarían allí. –
- 1. ¿Cómo implemento una lista personalizada en Cocoa?
- 2. ¿Puedo incrustar una fuente personalizada en una aplicación de Android?
- 3. Fuente personalizada en Android
- 4. ¿Cómo agregar una fuente personalizada a la aplicación Rails?
- 5. Android - Cómo establecer una fuente personalizada para la aplicación entera
- 6. Fuente personalizada en ckeditor
- 7. ¿Cómo configurar una fuente personalizada en emacs?
- 8. Agregue una fuente personalizada en Qt
- 9. WPF - Agregar fuente personalizada
- 10. fuente personalizada en android ListView
- 11. Incrustar/desplegar fuente personalizada en la aplicación .NET
- 12. Cómo crear y mostrar una hoja personalizada en Cocoa?
- 13. Cómo incorporar WebSockets en una aplicación Cocoa
- 14. Obtención de HTML fuente desde una WebView en Cocoa
- 15. Cómo utilizar una fuente personalizada con WebView
- 16. Mi fuente personalizada no muestra
- 17. Cómo instalar una fuente personalizada en el dispositivo Android
- 18. Cocoa Touch: Crear y agregar una vista personalizada
- 19. Delegado de aplicación - Cocoa
- 20. Aplicación Cocoa sin MainMenu.xib
- 21. Cómo agregar ayuda a una aplicación Cocoa
- 22. Uso de fuente personalizada en UIWebView
- 23. Fuente personalizada en ios no funciona
- 24. Abrir una URL no estándar en una aplicación Cocoa
- 25. fuente personalizada para textview en ArrayAdapter
- 26. ¿Cómo usar una fuente personalizada en Android xml?
- 27. Agregar una fuente personalizada a Theme en Android
- 28. Cómo instalo una fuente personalizada en un sitio HTML
- 29. Uso de una fuente personalizada (ttf) en CSS
- 30. android establece una fuente personalizada para una pintura
@poke: Esto no es un duplicado, esto es para Mac ** **, como claramente se indica en mis etiquetas. Por favor, lea más atentamente. –
Oh, mi mal. Lo siento por eso. – poke
@poke: Está bien. :) –