2016-04-16 6 views
2

Zunächst weiß ich über ATSApplicationFontsPath -Eigenschaft in Info.plist. Aber es fügt benutzerdefinierte Schriftarten nur für meine Anwendung hinzu. Und ich möchte, dass meine App beim ersten Start einige Schriftarten in OS X installiert. Das liegt daran, dass meine App Text exportiert und ich sicherstellen muss, dass der Benutzer nicht die richtige Textformatierung verliert, wenn er seine Datei in einer anderen App öffnet.OS X dev: Wie installiere ich eine neue Schriftart in das System

Ich habe dieses Verhalten in Final Draft App gesehen. Es hat benutzerdefinierte Schriftarten in seinem Ordner Ressourcen. Und seine Info.plist hat keine ATSApplicationFontsPath-Eigenschaft. Aber irgendwie nach dem ersten Start Final Draft installiert diese Schriftarten in das System und verwendet sie.

Wie ist es möglich? Ist nicht nahe dran, das zu lösen.

Antwort

1

Sie könnten die Schriftart-Dateien in ~/Library/Fonts oder mit Admin-Authentifizierung/Library/Fonts kopieren. Möglicherweise müssen Sie auch CTFontManagerRegisterFontsForURLs() mit kCTFontManagerScopeUser anrufen, um sie sofort für bereits laufende Apps verfügbar zu machen (einschließlich Ihrer App, die sie installiert).

Ich empfehle Ihnen, die Erlaubnis des Benutzers zu fragen, bevor Sie etwas "permanentes" wie dieses außerhalb Ihrer App installieren.

+0

Ich konnte meine Schriftart im gesamten System über CTFontManagerRegisterFontsForURLs registrieren. Jetzt kann jede App meine Schriften verwenden, wie ich will. Aber ich kann die Schriftart nicht nach ~/Library/Fonts kopieren. NSFileManager tell's "konnte nicht kopiert werden, weil Sie nicht berechtigt sind, auf" Fonts "zuzugreifen". Ich denke, es ist eine Einschränkung der Sandbox-Regeln. Das Mitleid. –

+0

Ja, Sie sollten erwähnen, wenn Ihre App Sandboxed ist, weil das definitionsgemäß einschränken wird, was es tun kann. Die Probleme beim Registrieren von Zeichensätzen in Ihrer App treten auf, wenn Ihre App gelöscht wird. –

+0

Ich habe versucht, meine App zu löschen. Die Schriften, die ich in der App registriert habe, sind einfach in anderen Apps verschwunden. –

Verwandte Themen