Как я могу найти полный путь к шрифту по его отображаемому имени на компьютере Mac?

#python #macos #fonts #photoshop

Вопрос:

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

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

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

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

Ответ №1:

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

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

Ответ №2:

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

 locate InsertFontHere
 

Это выведет каждый файл с нужным вам именем.

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

Ответ №3:

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

Ответ №4:

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