python écriture Comment puis-je trouver le chemin d'accès complet à une police à partir de son nom d'affichage sur un Mac?




trouver une police à partir d une image (4)

Je n'ai pas été capable de trouver quoi que ce soit qui le fasse directement. Je pense que vous devrez parcourir les différents dossiers de polices sur le système: /System/Library/Fonts , /Library/Fonts , et il peut y avoir probablement un répertoire utilisateur ~/Library/Fonts .

J'utilise l'API javascript de Photoshop pour trouver les polices dans un PSD donné.

Étant donné un nom de police renvoyé par l'API, je souhaite trouver le fichier de police physique réel correspondant au nom de la police sur le disque.

Tout cela se passe dans un programme python fonctionnant sous OSX, donc je suppose que je suis à la recherche d'un des logiciels suivants:

  • Quelques javascript Photoshop
  • Une fonction Python
  • Une API OSX que je peux appeler depuis python

Il doit y avoir une méthode dans Cocoa pour obtenir une liste de polices, alors vous devrez utiliser les liaisons PyObjC pour l'appeler.

Selon ce dont vous avez besoin, vous pourriez probablement utiliser quelque chose comme ce qui suit.

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

Malheureusement, la seule API qui n'est pas obsolète se trouve dans la structure ApplicationServices, qui ne possède pas de fichier de support de pont et n'est donc pas disponible dans le pont. Si vous souhaitez utiliser ctypes, vous pouvez utiliser ATSFontGetFileReference après avoir recherché ATSFontRef.

Cocoa n'a aucun support natif, au moins à partir de 10.5, pour obtenir l'emplacement d'une police.


ouvrir un terminal (Applications-> Utilitaires-> Terminal) et tapez ceci dans:

locate InsertFontHere

Cela va cracher chaque fichier qui a le nom que vous voulez.

Attention: il peut y avoir beaucoup à parcourir.





photoshop