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

StackOverflow https://stackoverflow.com/questions/469

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

Решение

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

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

Другие советы

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

locate InsertFontHere

При этом будет выдан каждый файл с нужным вам именем.

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

В 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top