Список установленных шрифтов OS X / C - PullRequest
4 голосов
/ 11 июля 2009

Я пытаюсь программно получить список установленных шрифтов в C или Python. Мне нужно быть в состоянии сделать это на OS X, кто-нибудь знает как?

Ответы [ 5 ]

13 голосов
/ 11 июля 2009

Python с установленным PyObjC (это относится к Mac OS X 10.5+, поэтому этот код будет работать без установки чего-либо):

import Cocoa
manager = Cocoa.NSFontManager.sharedFontManager()
font_families = list(manager.availableFontFamilies())

(на основании ответа htw)

4 голосов
/ 11 июля 2009

Почему бы не использовать Терминал?

Системные шрифты:

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);
}
4 голосов
/ 11 июля 2009

Не совсем 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 через PyObjC , если хотите.

В C, я думаю, вы можете сделать что-то похожее в Carbon с библиотекой ATSUI, хотя я не совсем уверен, как это сделать, поскольку раньше я не работал со шрифтами в Carbon. Тем не менее, просматривая документы ATSUI, я бы порекомендовал изучить функции ATSUGetFontIDs и ATSUGetIndFontName. Вот ссылка на документацию ATSUI для получения дополнительной информации.

1 голос
/ 11 июля 2009

Вы хотите написать программу для этого или вы хотите использовать программу для этого? Есть много программ, которые перечисляют шрифты, на ум приходит xlsfonts.

0 голосов
/ 11 июля 2009

Вы можете получить массив доступных шрифтов, используя Objective-C и Cocoa. Метод, который вы ищете: NSFontManager 's availableFonts.

Я не верю, что существует стандартный способ определить, какие системные шрифты используют чистый C. Однако вы можете свободно смешивать C и Objective-C, так что на самом деле использовать этот метод не должно быть сложно делай что хочешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...