我知道您可以使用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. iOS應用程序中的自定義字體的粗體字體樣式
- 2. WP7 Silverlight應用程序中的自定義字體
- 3. 應用程序中的自定義字體
- 4. 在rails 5應用程序和Heroku中的自定義字體
- 5. 如何在iphone應用程序中使用自定義字體
- 6. 如何在RShiny應用程序中使用自定義字體
- 7. 在Swing應用程序中使用自定義字體
- 8. 在.NET應用程序中嵌入/部署自定義字體
- 9. 在android應用程序中設置自定義字體
- 10. Rails應用程序未加載的自定義字體
- 11. Android應用程序的自定義字體
- 12. 在Cocoa應用程序中使用(缺少)字體
- 13. 將自定義字體添加到應用程序
- 14. android自定義字體使應用程序崩潰
- 15. 如何爲黑莓應用程序創建自定義字體
- 16. 如何將自定義字體添加到iPhone應用程序?
- 17. UWP應用程序自定義字體不工作
- 18. 自定義字體android應用程序設備
- 19. Cocoa中的自定義NSPredicate
- 20. 在Cocoa應用程序中設置自定義選項卡順序
- 21. 來自Cocoa的應用程序
- 22. lightswitch應用程序中的自定義窗體身份驗證
- 23. 自定義字體在我的應用程序中不起作用?
- 24. 在WebView中爲我的Android應用程序使用自定義(unicode)字體
- 25. 爲什麼我的自定義字體未應用於所有應用程序?
- 26. 如何在Cocoa中自定義NSTextField外觀(字體,字體大小)?
- 27. 通過Android中的應用程序類的TextView自定義字體
- 28. IOS - 無法在我的應用程序中添加自定義字體
- 29. 如何管理web應用程序中的自定義字體(system.drawing)
- 30. 如何將自定義字體添加到我的iOS應用程序中?
@poke:這是不是一個重複的,這是** **的Mac,如明確列出我的標籤。請仔細閱讀。 – 2011-03-12 16:01:00
哦,我的壞。對不起。 – poke 2011-03-12 16:07:18
@poke:沒關係。 :) – 2011-03-12 16:07:51