Я извлекаю установленные шрифты пользователя и фильтрую их, чтобы извлечь указанные 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"]