AppleScript - 列出所有字体

8

我一直在尝试做这件事,但一直没找到高效的方法。目前我尝试以以下方式列出我知道的所有字体:

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

但是写下所有字体需要花费很长时间,我知道Mac上有大量的字体。是否有更有效的方法来获取系统上的所有字体、在文本文档中写入一堆东西,然后将每个连续行的字体设置为下一个字体(例如,第1行的字体是字体1,第2行的字体是字体2,依此类推)?

3个回答

3
 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

+1 因为尽管看起来很惊讶,但我直到现在才听说过 Font Book!:P - fireshadow52

2

有一个Unix命令可以使用:system_profiler。"SPFontsDataType"数据类型将只提供系统配置文件中的字体。 "-xml"将以XML格式呈现数据。

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

你可以将其保存在内存或文件中,并解析它以满足你所需的任何目的。

另一个种子外壳命令的完美方式是:“mdls /path/to/font”,它将列出所有字体属性。 - Orwellophile

1

你说得对,Mac OS X 拥有大量字体。这些字体分布在四个或更多文件夹中,具体取决于软件安装和计算机上用户帐户的数量。

+1 对你的问题,因为我一直在尝试做同样的事情,所以我编写了一个小脚本来完成这项工作。它从四五个不同的位置提取字体,写入文本文档,然后更改字体。但是,当你运行它时,你的系统可能会开始滞后(就像我几分钟前的那样)。但是这种滞后是值得的!以下是脚本:

--“获取系统上的所有字体”
显示对话框 "警告" & 返回 & 返回 & "此脚本可能导致计算机卡顿。您确定要继续进行字体取样器吗?",带有警告图标 设置字体文件夹为{"/Users/"和(system info)中用户短名称的"/Library/Fonts/", "/Library/Fonts/", "/Network/Library/Fonts/", "/System/Library/Fonts/", "/System Folder/Fonts/"} 设置这些字体为空列表{} 重复处理字体文件夹中的每一个字体文件夹 尝试 告诉应用程序"Finder"将这些字体的结尾添加到((POSIX文件夹作为别名)this_font_folder的每个项目)中 end try end repeat
--“在文本文档中写入一大堆东西”
告诉应用程序"TextEdit" 激活 设置前窗口的变焦为真 设置前窗口的名称为"字体取样器" end tell 重复处理these_fonts中的每一个字体 告诉应用程序"Finder"设置这个字体的名称为这个字体 告诉应用程序"TextEdit"将文档1的文本设置为文档1的文本& this_font&": 快速的棕色狐狸跳过了懒惰的狗。"&返回 end repeat
--“将每一行连续的字体设置为下一个字体(即第1行的字体是字体1,第2行的字体是字体2,以此类推)”
重复处理这些字体的计数从1到these_fonts 告诉应用程序"Finder"设置这个字体的名称为these_fonts的第i项 告诉应用程序"TextEdit"告诉文档1的第i段设置字体为这个字体 end repeat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接