
Είμαι με τη χρήση του API javascript του Photoshop για να βρείτε τις γραμματοσειρές σε μια δεδομένη PSD.


Λαμβάνοντας υπόψη ένα όνομα γραμματοσειράς επέστρεψε από το API, θέλω να βρω την πραγματική φυσικό αρχείο της γραμματοσειράς που το όνομα της γραμματοσειράς αντιστοιχεί στο δίσκο.


Όλα αυτά συμβαίνουν σε ένα πρόγραμμα Python που εκτελείται σε OSX οπότε υποθέτω Ψάχνω για ένα από:


* Μερικά Photoshop javascript
* Μια λειτουργία Python
* Μια OSX API που μπορώ να καλέσω από πύθωνα

 
Πώς μπορώ να βρω την πλήρη διαδρομή σε μια γραμματοσειρά από το εμφανιζόμενο όνομα του σε έναν υπολογιστή Mac;
==============================================================================================================



Δυστυχώς, το μόνο API που δεν έχει καταργηθεί βρίσκεται στο πλαίσιο ApplicationServices, η οποία δεν έχει ένα αρχείο υποστήριξης γέφυρα, και ως εκ τούτου δεν είναι διαθέσιμο στη γέφυρα. Αν θέλουν να χρησιμοποιήσουν ctypes, μπορείτε να χρησιμοποιήσετε ATSFontGetFileReference μετά αναζητώντας τον ATSFontRef.


Κακάο δεν έχει καμία εγγενή υποστήριξη, τουλάχιστον ως 10,5, για να πάρει τη θέση ενός γραμματοσειράς.

 

ανοίξει ένα τερματικό (Εφαρμογές> Utilities-> Τερματικό) και πληκτρολογήστε αυτό:



```
locate InsertFontHere

```

Αυτό θα φτύσει κάθε αρχείο που έχει το όνομα που θέλετε.


Προσοχή: μπορεί να υπάρχουν πολλά να εντρυφήσω μέσω.

 

Εγώ δεν μπόρεσα να βρω κάτι που το κάνει αυτό άμεσα. Νομίζω ότι θα πρέπει να επαναλαμβάνεται σε διάφορους φακέλους γραμματοσειράς για το σύστημα: `/System/Library/Fonts`, `/Library/Fonts`και μπορεί πιθανώς να υπάρχει ένας κατάλογος σε επίπεδο χρήστη, καθώς και `~/Library/Fonts`.

 

Πρέπει να υπάρχει μια μέθοδος με κακάο για να πάρετε μια λίστα με τις γραμματοσειρές, τότε θα πρέπει να χρησιμοποιήσετε τις συνδέσεις PyObjC να το ονομάσουμε ..


Ανάλογα με το τι θα τα χρειαστείτε για, θα μπορούσατε ίσως απλά να χρησιμοποιήσετε κάτι σαν το παρακάτω ..



```
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

```
 