2009-07-11 6 views

Répondre

12

Python avec PyObjC installé (ce qui est le cas pour Mac OS X 10.5+, de sorte que ce code fonctionne sans avoir à installer quoi que ce soit):

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

(basé sur la réponse de HTW)

1

Voulez-vous écrire un programme pour le faire, ou voulez-vous utiliser un programme pour le faire? Il y a beaucoup de programmes qui listent les polices, xlsfonts me vient à l'esprit.

+0

il a dit * * programme, donc je suppose qu'il veut écrire un programme pour le faire. – hbw

3

Pas exactement C, mais en Objective-C, vous pouvez facilement obtenir une liste des polices installées via le framework 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]; 

Vous pouvez accéder au framework Cocoa de Python via PyObjC, si vous voulez. En C, je pense que vous pouvez faire quelque chose de similaire dans Carbon avec la bibliothèque ATSUI, bien que je ne sois pas tout à fait sûr de la façon de le faire, puisque je n'ai jamais travaillé avec des polices dans Carbon. Néanmoins, de la navigation sur les documents ATSUI, je recommande de regarder dans les ATSUGetFontIDs et les fonctions ATSUGetIndFontName. Voici un lien vers le ATSUI documentation pour plus d'informations.

0

Vous pouvez obtenir un tableau de polices disponibles en utilisant Objective-C et Cocoa. La méthode que vous cherchez est NSFontManager's availableFonts. Je ne crois pas qu'il existe un moyen standard pour déterminer ce que les polices système utilisent pur C. Cependant, vous pouvez mélanger librement C et Objective-C, il ne devrait donc pas être difficile d'utiliser cette méthode faire ce que vous voulez.

4

Pourquoi ne pas utiliser le terminal?

Fonts système:

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

polices utilisateur:

ls -R ~/Library/Fonts | grep ttf 

Mac OS X Polices par défaut:

ls -R /Library/Fonts | grep ttf 

Si vous avez besoin de l'exécuter dans votre programme 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); 
} 
+0

Ce n'est pas le seul endroit où vous pouvez trouver des polices: il y a aussi '/ System/Library/Fonts' et' ~/Library/Fonts' ... – hbw

+0

Je sais. Je pensais qu'il le savait déjà. –

+0

mis à jour avec d'autres emplacements de police –

Questions connexes