我试图以编程方式获得C或Python中已安装的字体列表。 我需要能够做到这一点在OS X上,没有人知道如何?
Answer 1:
用Python PyObjC安装(这是Mac OS X 10.5以上版本的情况下,所以这个代码将无需安装任何工作):
import Cocoa
manager = Cocoa.NSFontManager.sharedFontManager()
font_families = list(manager.availableFontFamilies())
(基于HTW的答案)
Answer 2:
不完全是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];
您可以从Python中通过访问Cocoa框架PyObjC ,如果你想要的。
在C,我觉得你可以做与ATSUI库碳类似的东西,但我不完全知道如何做到这一点,因为我还没有在字体碳工作过。 然而,从浏览ATSUI文档,我建议寻找到ATSUGetFontIDs
和ATSUGetIndFontName
功能。 下面是该链接ATSUI文档以获取更多信息。
Answer 3:
为什么不使用终端?
系统字体:
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);
}
Answer 4:
你想编写一个程序来做到这一点,或者你想用一个程序来做到这一点? 有迹象表明,列出字体的许多程序,使用xlsfonts想到的。
Answer 5:
你可以使用Objective-C和Cocoa可用字体的数组。 你正在寻找的方法是NSFontManager
的availableFonts
。
我不相信这是确定系统字体使用纯C.什么但是一种标准的方式,您可以自由搭配C和Objective-C,所以它真的不应该是很难用这种方法做你倒是想。
文章来源: List of installed fonts OS X / C