Tipo di carattere personalizzato in un’applicazione Cocoa

So che è possibile personalizzare i font utilizzando Interface Builder e selezione di un carattere. Tuttavia, sono curioso di sapere se posso utilizzare un tipo di carattere personalizzato che non è incluso di default sui sistemi. C’è un modo per includere un tipo di carattere personalizzato la mia domanda?

  • Questo non è un duplicato, questo è per Mac, come chiaramente descritto nel mio tag. Si prega di leggere con più attenzione.
  • Oh, my bad. Ci scusiamo per questo.
  • Va bene. 🙂
  • Credo sarebbe meglio possibile duplicare: stackoverflow.com/questions/2444717/embed-font-in-a-mac-bundle – non è possibile cambiare il mio voto ora, però :/
  • Che sembra perfetto. Non avevo visto che anche se l’ho cercato. 🙂 Su un lato nota, sarebbe legali anche per me cercare di incorporare Calibri nella mia applicazione?
  • È improbabile, essendo un tipo di carattere MS. Si dovrebbe controllare il contratto di licenza.

 

4 Replies
  1. 46

    Mentre il manuale di carattere procedura di attivazione è un’opzione, si può anche considerare la ATSApplicationFontsPath Info.plist chiave:

    Informazioni Elenco Delle Proprietà Chiave Di Riferimento:

    ATSApplicationFontsPath (String – Mac
    OS X) identifica la posizione di un
    font file o di una directory dei font in
    bundle Resources directory. Se
    presente, Mac OS X attiva il font
    nel percorso specificato per l’uso con il
    applicazione in bundle. I font sono
    attivata solo per il bundle
    applicazione e non per il sistema
    un intero. Il percorso è di per sé dovrebbe essere
    specificato come un parente directory
    il bundle directory di Risorse. Per
    esempio, se una directory dei font è stato
    il percorso
    /Applications/MyApp.app/Contents/Resources/Stuff/MyFonts/,
    si dovrebbe specificare la stringa
    Stuff/MyFonts/ per il valore di questo
    chiave.”

    Mi piacerebbe essere sicuri di controllare due volte, ma credo che questa funzionalità è stata aggiunta in OS X 10.5.x (che è il codice inviato da Jinhyung Parco obiettivi).

    • Sì, oppure è possibile utilizzare Testo principale che è stato introdotto in Snow Leopard, credo.
    • Questa soluzione è la strada giusta da percorrere. Grazie per segnalarlo.
    • Questo è molto più facile. Grazie
    • Ancora attuale, una buona risposta.
    • Non so perché non mi segna come risposta di prima, ma ci si va. 🙂
    • Potrebbe, per favore, mi aiuti per lo stesso problema, la mia domanda

  2. 3

    Ecco un esempio per il Mac App personalizzata caricamento del carattere.

    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;
        }
    }
    • Non si può semplicemente chiamare [NSFont fontWithName:@"fontname"]?
    • Ho letto la discussione su cocoadev.com/index.pl?UsingCustomFontsInYourCocoaApplications. Dopo il caricamento del font, è possibile utilizzare [NSFont fontWithName:@””]. Ho appena controllato nel mio Mac OS X applicazione che si sta lavorando.
    • Strano che tu non trovi nulla in Xcode aiuto o ADC durante la ricerca per ATSFontActivateFromFileReference – il bisogno di andare a “ATS/ATSFont.h” sul vostro disco rigido per qualsiasi info..
    • fatto … basta usare un goto nel codice @[email protected]!?!?
    • ATSFontActivateFromFileReference = Privi Di Documenti = App Store Rifiuto
    • diversi anni di ritardo, ma non privi di documenti a tutti: developer.apple.com/legacy/library/documentation/Carbon/…

  3. 3

    ATSApplicationFontsPath usi [NSBundle mainbundle] cammino percorso di base, così non funziona quando la cartella di Risorse non si trova (ad esempio per le app plugin).

    Nella mia Cacao plugin ho bisogno di caricare i font personalizzati utilizzando 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);
    }

    Crediti: https://github.com/OneSadCookie/Extendaword/blob/master/Extendaword/main.m

    • Buona risposta, bisogno di questo per il mio screensaver, plist valori non ci lavoro.
  4. -6

    Sono riuscito a fare questo usando cocos2d (CCLabelBMFont) e gerone strumento. È necessario creare il carattere utilizzando i gerone, e dare questo tipo di carattere per il CCLabelBMFont oggetto.

    • La mia domanda è la Mac, non su iPhone.

Lascia un commento