我知道您可以使用Interface Builder自定義字體並選擇字體。但是,我很好奇,如果我可以使用系統上默認不包含的自定義字體。有沒有辦法在我的應用程序中包含自定義字體?Cocoa應用程序中的自定義字體
回答
雖然手動字體激活過程是一種選擇,你也可以考慮ATSApplicationFontsPath
的Info.plist鍵:
Information Property List Key Reference:
「
ATSApplicationFontsPath
(String
- 蘋果 OS X)標識 字體文件或 軟件包的Resources
目錄中的字體目錄的位置。如果 nt,Mac OS X激活指定路徑的字體 ,供 捆綁應用程序使用。字體爲 ,僅適用於捆綁的 應用程序,而不適用於整個系統爲 。路徑本身應該是 ,其指定爲相關目錄 該資源的資源目錄。對於 例如,如果字體的目錄是 在路徑/Applications/MyApp.app/Contents/Resources/Stuff/MyFonts/
, 應指定字符串Stuff/MyFonts/
這 鍵的值。」
我一定要仔細檢查,但我相信這個功能是在OS X 10.5.x(Jinhyung Park發佈的代碼)中添加的。
是啊,或者你我相信可以使用Snow Leopard中引入的Core Text。 – 2011-03-12 21:16:12
該解決方案是正確的選擇。感謝您指出。 – 2011-09-15 09:45:25
這很容易。謝謝 – drudru 2012-01-06 08:57:25
我設法使用cocos2d(CCLabelBMFont)和hiero工具來做到這一點。您將需要使用hiero創建字體,並將該字體賦予CCLabelBMFont對象。
我的問題是關於** Mac **,而不是iPhone。 – 2011-03-12 16:08:18
這裏是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;
}
}
難道你不能只調用'[NSFont fontWithName:@「fontname」]'? – 2011-03-12 16:17:25
我在http://cocoadev.com/index.pl?UsingCustomFontsInYourCocoaApplications上閱讀討論。加載字體後,可以使用[NSFont fontWithName:@「」]。我剛剛檢查了我的Mac OS X應用程序,它正在工作。 – 2011-03-12 16:24:29
有趣的是,在搜索ATSFontActivateFromFileReference時無法在Xcode幫助或ADC中找到任何內容 - 需要轉至硬盤上的「ATS/ATSFont.h」以獲取任何信息。 – Jay 2012-01-13 17:05:34
ATSApplicationFontsPath使用[NSBundle mainbundle]路徑作爲基本路徑,所以當資源文件夾不在時它不工作那裏(例如對於應用程序插件)
在我的可可插件,我需要使用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);
}
現金https://github.com/OneSadCookie/Extendaword/blob/master/Extendaword/main.m
好的答案,需要這個爲我的屏幕保護程序,plist值不會在那裏工作。 – 2016-08-10 07:40:13
- 1. Cocoa應用程序中的自定義記錄視圖
- 2. iOS應用程序中的自定義字體的粗體字體樣式
- 3. 通用應用程序中的自定義字體
- 4. 應用程序中的自定義字體
- 5. tvOS TVML應用程序中的自定義字體
- 6. Objective-C應用程序中的自定義字體
- 7. WP7 Silverlight應用程序中的自定義字體
- 8. 在rails 5應用程序和Heroku中的自定義字體
- 9. uiwebview中的自定義字體,但不是應用程序包中的自定義字體
- 10. 不能在IOS應用程序中使用自定義字體
- 11. 如何在android應用程序中使用自定義字體?
- 12. 不能在iPhone應用程序中使用自定義字體
- 13. 如何在RShiny應用程序中使用自定義字體
- 14. 如何在iphone應用程序中使用自定義字體
- 15. 在Swing應用程序中使用自定義字體
- 16. 將自定義字體應用於整個Android應用程序?
- 17. 如何爲整個應用程序應用自定義字體?
- 18. 在.NET應用程序中嵌入/部署自定義字體
- 19. 如何將自定義字體集成到應用程序中?
- 20. 在android應用程序中設置自定義字體
- 21. 自定義字體不適用於我的iOS應用程序
- 22. 使用自定義字體崩潰我的應用程序
- 23. 應用中的自定義字體
- 24. 按鈕和ActionBar忽略應用程序中定義的自定義字體
- 25. IOS:我的應用程序內的字體自定義
- 26. 設置完成的應用程序的自定義字體
- 27. Rails應用程序未加載的自定義字體
- 28. 整個應用程序的Android單個自定義字體
- 29. 向我的iPhone應用程序添加自定義字體
- 30. 自定義字體wingding不工作在我的應用程序
@poke:這是不是一個重複的,這是** **的Mac,如明確列出我的標籤。請仔細閱讀。 – 2011-03-12 16:01:00
哦,我的壞。對不起。 – poke 2011-03-12 16:07:18
@poke:沒關係。 :) – 2011-03-12 16:07:51