AppleScript - список всех шрифтов - PullRequest
8 голосов
/ 12 августа 2011

Я пытался сделать это в течение достаточно долгого времени, и не нашел эффективного способа сделать это. В настоящее время я пытаюсь перечислить все известные мне шрифты следующим образом:

set the font_list to {"Arial","Comic Sans MS","Arial Black",...}

Но для написания всех шрифтов требуется навсегда , и я знаю, что на Mac есть тонны шрифтов. Есть ли более эффективный способ получить все шрифты в системе, написать кучу вещей в текстовом документе, а затем установить шрифт каждой последовательной строки для следующего шрифта (т.е. шрифт строки 1 - это шрифт 1, шрифт строки 2 такое шрифт 2 и т. д.)?

Ответы [ 3 ]

3 голосов
/ 13 августа 2011
 tell application "Font Book" to name of font families

set l to {"Regular", "Roman", "Book", "Plain", "55 Roman", "R"}
set found to {}
tell application "Font Book"
    repeat with x in typefaces
        if l contains style name of x then set end of found to name of x
    end repeat
end tell
found
2 голосов
/ 28 марта 2013

Существует команда unix, которую вы можете использовать: system_profiler.Тип данных «SPFontsDataType» даст вам только шрифты из системного профиля.-Xml представит данные в формате XML.

system_profiler -xml SPFontsDataType > ~/Desktop/myfonts.plist

Вы можете записать их в память или в файл и проанализировать их для любых целей.

1 голос
/ 12 августа 2011

Вы правы в том, что в Mac OS X есть тонны шрифтов. Эти шрифты распределяются через четыре или более папок, в зависимости от установки программного обеспечения и количества учетных записей пользователей на вашем компьютере.

+ 1 к вашему вопросу, поскольку я пытался сделать то же самое, поэтому я написал небольшой сценарий, который выполняет эту работу. Он извлекает шрифты из четырех / пяти разных мест, пишет в текстовом документе, а затем изменяет шрифты. Однако, когда вы запустите его, ваша система может начать отставать (как моя сделала несколько минут назад). Но отставание того стоит! Вот скрипт:

--"get all the fonts on the system"

display dialog "WARNING" & return & return & "This script may cause your computer to lag. Are you sure you want to proceed with the font sampler?" with icon caution
set the font_folders to {"/Users/" & the short user name of (system info) & "/Library/Fonts/", "/Library/Fonts/", "/Network/Library/Fonts/", "/System/Library/Fonts/", "/System Folder/Fonts/"}
set these_fonts to {}
repeat with this_font_folder in the font_folders
    try
        tell application "Finder" to set the end of these_fonts to every item of ((this_font_folder as POSIX file) as alias)
    end try
end repeat

--"write a bunch of stuff in a text document"

tell application "TextEdit"
    activate
    set zoomed of the front window to true
    set the name of the front window to "Font Sampler"
end tell
repeat with this_font in these_fonts
    tell application "Finder" to set this_font to the name of this_font
    tell application "TextEdit" to set the text of document 1 to the text of document 1 & this_font & ":    The quick brown fox jumps over the lazy dog." & return
end repeat

--"set the font of each consecutive line to the next font (i.e. Line 1's font is Font 1, Line 2's font is Font 2, etc.)"

repeat with i from 1 to the count of these_fonts
    tell application "Finder" to set this_font to the name of item i of these_fonts
    tell application "TextEdit" to tell paragraph i of the text of document 1 to set the font to this_font
end repeat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...