Как я могу получить абсолютный путь к файлу шрифта, указав имя шрифта PostScript? - PullRequest
0 голосов
/ 23 марта 2020

Я извлекаю установленные шрифты пользователя и фильтрую их, чтобы извлечь указанные c шрифты, соответствующие переданному параметру. Моя функция возвращает массив с именами PostScript соответствующих шрифтов. Мне было интересно, как я могу получить доступ к полному пути к файлу шрифта на диске, зная только имя PostScript.

Собственное приложение FontBook способно показать мне местоположение файла шрифта на диске, но мне не повезло воспроизвести это поведение с классом NSFontManager. Там нет метода или я что-то упустил? Итак, как я могу получить путь к файлу?

Я также попытался l oop над каталогом системных шрифтов и проверить, содержит ли имя файла мою строку поиска, но я думаю, что это недостаточно пуленепробиваемо. Например, могут быть ситуации, когда шрифт не находится в стандартной папке Library/Fonts, поскольку некоторые пользователи могут использовать инструмент управления шрифтами, например FontExplorer, или имя файла просто по какой-то причине не включает имя шрифта.

Любая помощь приветствуется!

func searchForFont(searchString: String) -> [String] {
        let fonts = NSFontManager.shared.availableFonts
        var foundFonts = [String]()
        for font in fonts.enumerated() {
            if font.element.contains(searchString) {
                foundFonts.append(font.element)
            }
        }
        return foundFonts
    }

searchForFont(searchString: "OpenSans")
// -> ["OpenSans-Bold", "OpenSans-BoldItalic"]
...