python - Wie kann ich den vollständigen Pfad zu einer Schriftart anhand ihres Anzeigenamens auf einem Mac finden?

Translate

Ich verwende die Javascript-API von Photoshop, um die Schriftarten in einer bestimmten PSD zu finden.

Angesichts eines von der API zurückgegebenen Schriftnamens möchte ich die tatsächliche physische Schriftdatei finden, der der Schriftname auf der Disc entspricht.

Dies alles geschieht in einem Python-Programm, das unter OSX ausgeführt wird. Ich suche also nach einem der folgenden Beispiele:

  • Einige Photoshop-Javascript
  • Eine Python-Funktion
  • Eine OSX-API, die ich von Python aus aufrufen kann
This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Leider befindet sich die einzige API, die nicht veraltet ist, im ApplicationServices-Framework, das keine Bridge-Unterstützungsdatei enthält 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 zumindest ab 10.5 keine native Unterstützung, um den Speicherort einer Schriftart zu ermitteln.

Quelle
Translate

Öffnen Sie ein Terminal (Anwendungen-> Dienstprogramme-> Terminal) und geben Sie Folgendes ein:

locate InsertFontHere

Dadurch wird jede Datei ausgespuckt, die den gewünschten Namen hat.

Warnung: Möglicherweise gibt es viel zu durchwaten.

Quelle
dbr
Translate

Es muss eine Methode in Cocoa geben, um eine Liste von Schriftarten zu erhalten. Dann müssten Sie die PyObjC-Bindungen verwenden, um sie aufzurufen.

Je nachdem, wofür Sie sie benötigen, können Sie wahrscheinlich nur Folgendes verwenden:

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
Quelle
Translate

Ich konnte nichts finden, was dies direkt tut. Ich denke, Sie müssen die verschiedenen Schriftartenordner auf dem System durchlaufen:/System/Library/Fonts, /Library/Fonts, und es kann wahrscheinlich auch ein Verzeichnis auf Benutzerebene geben~/Library/Fonts.

Quelle