Сведения о вопросе

Martincow

16:03, 1st July, 2020

Теги

python   macos   fonts   photoshop    

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

Просмотров: 447   Ответов: 4

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

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

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

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



  Сведения об ответе

lool

18:03, 1st July, 2020

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

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


  Сведения об ответе

SILA

18:03, 1st July, 2020

откройте файл terminal (приложения- > утилиты - >Terminal) и введите это в поле:

locate InsertFontHere

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

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


  Сведения об ответе

appple

18:03, 1st July, 2020

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


  Сведения об ответе

appple

18:03, 1st July, 2020

В 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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться