5

我是一名印刷师,使用许多文件名不正确或不完整的字体。我在 Mac 上,一直在使用HazelAppleScriptAutomator工作流程,试图自动重命名这些文件*。我需要一个脚本来用字体ttf的. 我知道可以检索我需要的 PostScript 名称值的工具(/ 、等),但缺乏为我的目的编写脚本的编程知识。我只设法设置了一个可以在添加任何匹配某些参数的文件时运行脚本的监视目录。woffwoff2postscriptNamefc-scanfontconfigTTX

*为了澄清,我说的是仅更改文件名,而不是存储在字体中的实际名称。如果可能的话,我也对任何兼容语言的脚本或脚本工作流程持开放态度,例如这篇文章引用了通过.osascript

我咨询过
的 StackExchange 帖子:如何从 OTF 或 TTF 文件中获取字体名称?
如何在 OS X 中获取 TTF 字体的 PostScript 名称?
如何更改字体名称?
在 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)。 谢谢大家!截屏

4

1 回答 1

5

既然您在问题中提到了 Automator,我想我会尝试解决这个问题,同时使用它来重命名文件,以及标准的 Mac bash 来获取字体名称。希望它胜过学习一门完整的编程语言。

我不知道你的工作流程是什么,所以我会把任何偏差留给你,但这里有一种方法可以选择字体文件,然后从服务中,将文件重命名为字体的 postscript 名称……基于 Apple 的元数据,特别是“com_apple_ats_name_postscript” . 这是在字体文件上使用“mdls”从终端检索的数据之一。要关注 postscript 名称,请 grep name_postscript 的输出。为简单起见,我将排除所选文件的路径。

字体名称获取

所以……运行这个命令……

mdls GenBkBasBI.ttf | grep -A1 name_postscript

... 生成此输出,其中包含 FontBook 的 Postscript 名称。grep 中的“A1”返回找到的行和之后的第一行,即包含实际字体名称的行。

com_apple_ats_name_postscript  = (
    "GentiumBookBasic-BoldItalic"

用更多的 bash (tr, tail) 来清理它……</p>

tr -d \  | tail -n 1 | tr -d \"

按顺序,这些去除空格、除最后一行之外的所有行和引号。所以对于第一个 'tr' 实例,反斜杠后有一个额外的空格。

在一行中,它看起来像这样……</p>

mdls GenBkBasBI.ttf | grep -A1 name_postscript | tr -d \  | tail -n 1 | tr -d \" 

…并产生这个…</p>

GentiumBookBasic-BoldItalic

现在,这里是包含上述 bash 命令的工作流程。我从这个问题的答案中得到了变量使用的想法……

Apple Automator “来自图像的新 PDF” 保持相同的文件名

自动化工作流程

自动化工作流程截图

在顶部; 服务在“Finder”中接收选定的“文件或文件夹”。

  1. 获取选定的 Finder 项目

这(或获取指定......)是为了允许测试。通过将其用作服务来避免它。

  1. 设置变量(文件)的值

这是为了记住要重命名的文件

  1. 运行外壳脚本

这是我们使用 bash 的地方。$f 是选定/指定的文件。无论出于何种原因,我都在运行“zsh”。您可以将其设置为您正在运行的任何内容,大概是“bash”。

  1. 设置变量值(文本)

将 bash 输出分配给一个变量。这将由新文件名的最后一个操作使用。

  1. 获取变量(文件)的值

调用指定/选定的文件以重命名。

  1. 重命名 Finder 项目:命名单个项目

我将其设置为“仅基本名称”,因此它将单独保留扩展名。在此处输入操作 4 中的“文本”变量。

于 2017-06-04T22:31:47.067 回答