Как найти полный путь к шрифту по его отображаемому имени на Mac? - PullRequest
38 голосов
/ 02 августа 2008

Я использую javascript API для Photoshop, чтобы найти шрифты в данном PSD.

Учитывая имя шрифта, возвращенное API, я хочу найти фактический физический файл шрифта, которому соответствует имя шрифта на диске.

Это все происходит в программе на Python, работающей на OSX, поэтому я думаю, что я ищу одну из:

  • Некоторые фотошоп javascript
  • Функция Python
  • OSX API, который я могу вызвать из python

Ответы [ 4 ]

19 голосов
/ 06 августа 2008

К сожалению, единственный API, который не является устаревшим, находится в платформе ApplicationServices, которая не имеет файла поддержки моста и, следовательно, недоступна в мосте. Если вы хотите использовать ctypes, вы можете использовать ATSFontGetFileReference после поиска ATSFontRef.

Какао не имеет встроенной поддержки, по крайней мере на 10.5, для определения местоположения шрифта.

8 голосов
/ 02 августа 2008

откройте терминал (Приложения-> Утилиты-> Терминал) и введите:

locate InsertFontHere

Это будет выплевывать каждый файл с именем, которое вы хотите.

Предупреждение: может быть много, чтобы пробраться.

6 голосов
/ 12 октября 2008

В Какао должен быть метод для получения списка шрифтов, тогда вам придется использовать привязки 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
6 голосов
/ 02 августа 2008

Я не смог найти ничего, что делает это напрямую. Я думаю, вам придется перебирать различные папки шрифтов в системе: /System/Library/Fonts, /Library/Fonts, и, вероятно, также может быть каталог уровня пользователя ~/Library/Fonts.

...