我正在尝试以编程方式获取C或Python中已安装字体的列表。我需要能够在OS X上执行此操作,有人知道如何操作吗?
答案 0 :(得分:13)
安装了PyObjC的Python(适用于Mac OS X 10.5+的情况,因此无需安装任何内容即可使用此代码):
import Cocoa
manager = Cocoa.NSFontManager.sharedFontManager()
font_families = list(manager.availableFontFamilies())
(根据htw的回答)
答案 1 :(得分:4)
不完全是C,但在Objective-C中,您可以通过Cocoa框架轻松获取已安装字体的列表:
// This returns an array of NSStrings that gives you each font installed on the system
NSArray *fonts = [[NSFontManager sharedFontManager] availableFontFamilies];
// Does the same as the above, but includes each available font style (e.g. you get
// Verdana, "Verdana-Bold", "Verdana-BoldItalic", and "Verdana-Italic" for Verdana).
NSArray *fonts = [[NSFontManager sharedFontManager] availableFonts];
如果需要,您可以通过PyObjC从Python访问Cocoa框架。
在C中,我认为你可以在Carbon中使用ATSUI库做类似的事情,虽然我不完全确定如何做到这一点,因为我之前没有使用过Carbon中的字体。不过,通过浏览ATSUI文档,我建议您查看ATSUGetFontIDs
和ATSUGetIndFontName
函数。以下是ATSUI documentation的链接以获取更多信息。
答案 2 :(得分:4)
为什么不使用终端?
系统字体:
ls -R /System/Library/Fonts | grep ttf
用户字体:
ls -R ~/Library/Fonts | grep ttf
Mac OS X默认字体:
ls -R /Library/Fonts | grep ttf
如果您需要在C程序中运行它:
void main()
{
printf("System fonts: ");
execl("/bin/ls","ls -R /System/Library/Fonts | grep ttf", "-l",0);
printf("Mac OS X Default fonts: ");
execl("/bin/ls","ls -R /Library/Fonts | grep ttf", "-l",0);
printf("User fonts: ");
execl("/bin/ls","ls -R ~/Library/Fonts | grep ttf", "-l",0);
}
答案 3 :(得分:1)
你想编写程序吗?或者你想使用程序来做吗?有许多程序可以列出字体,xlsfonts可以想到。
答案 4 :(得分:0)
您可以使用Objective-C和Cocoa获取可用字体数组。您要查找的方法是NSFontManager
's availableFonts
。
我不相信有一种标准的方法来确定使用纯C的系统字体是什么。但是,你可以自由地混合C和Objective-C,所以它真的不应该很难使用这个方法来做你想做的事。