Переименуйте файл ttf/woff/woff2 в имя шрифта PostScript с помощью скрипта
Я типограф, работающий со многими шрифтами, которые имеют неправильные или неполные имена файлов. Я использую Mac и использую рабочие процессы Hazel, AppleScript и Automator, пытаясь автоматизировать переименование этих файлов *. Мне требуется скрипт для замены существующего имени файла ttf
, woff
, или же woff2
файлы в Finder со шрифтом postscriptName
, Я знаю об инструментах (fc-scan
/fontconfig
, TTX
и т. д.), которые могут получить требуемые значения имен PostScript, но при этом не хватает навыков программирования для написания сценария для моих целей. Мне удалось настроить только наблюдаемый каталог, который может запускать скрипт, когда добавляются файлы, соответствующие определенным параметрам.
* Чтобы уточнить, я говорю об изменении только имени файла, а не фактических имен, хранящихся в шрифте. Также я открыт для сценария любого совместимого языка или рабочего процесса сценариев, если это возможно, например, этот пост ссылается на встраивание AppleScript в сценарии Shell через osascript
,
Сообщения StackExchange, с которыми я посоветовался:
Как получить имя шрифта из файла OTF или TTF?
Как получить PostScript имя шрифта TTF в OS X?
Как изменить имя шрифта?
Автоматизировать переименование файлов в macOS
Другие:
https://github.com/dtinth/JXA-Cookbook/wiki/Using-JavaScript-for-Automation
https://github.com/fonttools/fonttools
https://github.com/devongovett/fontkit
https://www.npmjs.com/package/rename-js
https://opentype.js.org/font-inspector.html
http://www.fontgeek.net/blog/?p=343
https://www.lantean.co/osx-renaming-fonts-for-free
Изменить: Добавлено следующее по запросу.
1) Снимок экрана довольно типичного веб-шрифта, показывающий, как поля формы для семейства шрифтов и имен стилей часто являются неполными, пустыми или содержат недопустимые символы.
2) Файл woff изображен (также как base64). Спасибо всем заранее!
1 ответ
Поскольку вы упомянули Automator в своем вопросе, я подумал, что попробую решить эту проблему, используя это для переименования файла, наряду со стандартным Mac bash для получения имени шрифта. Надеюсь, это лучше, чем изучение целого языка программирования.
Я не знаю, каков ваш рабочий процесс, поэтому я оставлю вам любые отклонения, но вот метод, чтобы выбрать файл шрифта и из Служб переименовать файл в имя постскрипта шрифта… на основе метаданных Apple, в частности, "com_apple_ats_name_postscript", Это одна из частей данных, полученных с помощью "mdls" из терминала в файле шрифта. Чтобы сосредоточиться на имени постскриптума, grep вывод для name_postscript. Для простоты здесь я исключу путь к выбранному файлу.
Название шрифта Aquisition
Итак... выполнение этой команды...
mdls GenBkBasBI.ttf | grep -A1 name_postscript
... генерирует этот вывод, который содержит имя Postscript FontBook. 'A1' в grep возвращает найденную строку и первую строку после, которая содержит фактическое имя шрифта.
com_apple_ats_name_postscript = (
"GentiumBookBasic-BoldItalic"
Очистите это с еще немного bash (tr, tail)...
tr -d \ | tail -n 1 | tr -d \"
По порядку эти пробелы, все строки, кроме последней, и кавычки. Так что для первого экземпляра 'tr' после обратной косой черты есть дополнительный пробел.
В одной строке это выглядит так...
mdls GenBkBasBI.ttf | grep -A1 name_postscript | tr -d \ | tail -n 1 | tr -d \"
... и производит это...
GentiumBookBasic-BoldItalic
Теперь вот рабочий процесс, который включает вышеупомянутую команду bash. Я получил идею об использовании переменных из ответа на этот вопрос...
Apple Automator "Новый PDF из изображений" с тем же именем файла
Automator Workflow
Скриншот рабочего процесса Automator
На вершине; Сервис получает выбранные "файлы или папки" в "Finder".
- Получить выбранные элементы Finder
Это (или Получить Указано...), чтобы разрешить тестирование. Это устраняется при использовании этого в качестве Сервиса.
- Установить значение переменной (файла)
Это чтобы запомнить какой файл вы хотите переименовать
- Запустить Shell Script
Здесь мы используем вещи bash. $ F - выбранный / указанный файл. Я бегу 'Zsh' по любой причине. Вы можете установить его на то, что вы используете, предположительно, "bash".
- Установить значение переменной (текст)
Назначьте вывод bash переменной. Это будет использоваться последним действием для нового имени файла.
- Получить значение переменной (файл)
Вызвать указанный / выбранный файл для переименования.
- Переименовать элементы поиска: Имя одного элемента
У меня установлено значение "Только базовое имя", поэтому расширение будет оставлено в покое. Введите переменную "Текст" из действия 4 здесь.