Вопрос по fonts, python, c, macos – Список установленных шрифтов OS X / C

4

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

Ваш Ответ

5   ответов
13

поэтому этот код будет работать без установки чего-либо):

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

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

0

используя Objective-C и Cocoa. Метод, который вы ищетеNSFontManager's availableFonts.

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

3

но в 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, если ты хочешь.

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

4

System Fonts:

ls -R /System/Library/Fonts | grep ttf

User Fonts:

ls -R ~/Library/Fonts | grep ttf

Mac OS X Default fonts:

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);
}
Есть также шрифты OpenType (otf) в дополнение к TrueType (ttf).
Я знаю. Я полагал, что он это уже знал.
Это не единственное место, где вы можете найти шрифты: там также/System/Library/Fonts а также~/Library/Fonts...
обновлено с другими местоположениями шрифта
Кроме того, это не означает, что некоторые шрифты могут быть установлены, но отключены и, таким образом, недоступны для системы. Использование FontManager дает вам шрифты, которые доступны, т.е. включены.
1

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

Он сказалprogrammaticallyпоэтому я предполагаю, что он хочет написать программу для этого.

Похожие вопросы