2008-08-02 18 views
35

Ich benutze die Javascript-API von Photoshop, um die Schriftarten in einer gegebenen PSD zu finden.Wie kann ich den vollständigen Pfad zu einer Schriftart anhand des Anzeigenamens auf einem Mac finden?

Bei einem von der API zurückgegebenen Zeichensatznamen möchte ich die tatsächliche physische Schriftartdatei suchen, der der Schriftartname auf der CD entspricht.

All dies geschieht in einem Python-Programm auf OSX läuft so, denn ich glaube, ich bin auf der Suche eines von:

  • Einige Photoshop Javascript
  • Eine Python-Funktion
  • Ein OSX-API, die ich kann, rufen aus python

Antwort

19

Leider befindet sich die einzige API, die nicht veraltet ist, im ApplicationServices-Framework, das keine Bridge-Unterstützungsdatei hat und daher nicht in der Bridge verfügbar ist. Wenn Sie Ctypes verwenden möchten, können Sie ATSFontGetFileReference verwenden, nachdem Sie ATSFontRef nachgeschlagen haben.

Cocoa hat keine native Unterstützung, zumindest ab 10.5, um den Speicherort einer Schriftart zu erhalten.

7

ein Terminal öffnen (Applications-> Hilfsmittel-> Terminal) und geben Sie diese in:

locate InsertFontHere 

Dies spuckt jede Datei aus, die den gewünschten Namen hat.

Warnung: Es kann viel passieren.

5

Ich konnte nichts finden, das dies direkt tut. Ich denke, Sie müssen durch die verschiedenen Schriftarten-Ordner auf dem System durchlaufen: /System/Library/Fonts, /Library/Fonts, und es kann wahrscheinlich ein User-Level-Verzeichnis sowie ~/Library/Fonts sein.

5

Es muss eine Methode in Cocoa sein, eine Liste von Schriftarten zu bekommen, dann würden Sie die PyObjC Bindungen verwenden müssen, um es zu nennen ..

Je nachdem, was Sie brauchen, um sie für, könnte man wahrscheinlich nur etwas verwenden wie die folgenden ..

import os 
def get_font_list(): 
    fonts = [] 
    for font_path in ["/Library/Fonts", os.path.expanduser("~/Library/Fonts")]: 
     if os.path.isdir(font_path): 
      fonts.extend(
       [os.path.join(font_path, cur_font) 
       for cur_font in os.listdir(font_path) 
       ] 
      ) 
    return fonts