使用脚本将ttf/woff/woff2文件重命名为PostScript字体名称

Mos*_*rda 5 applescript automation rename fontconfig ttx-fonttools

我是一名印刷师,使用许多文件名不正确或不完整的字体.我在Mac上并且一直在使用Hazel,AppleScriptAutomator工作流程,试图自动重命名这些文件*.我需要一个脚本来取代现有的文件名ttf,woffwoff2用字体的文件在Finder中postscriptName.我知道的工具(fc-scan/ fontconfig,TTX等),可检索的PostScript名称值我需要,但缺乏编程专有技术,为我的目的编写的脚本.我只设法设置一个可以在添加任何匹配某些参数的文件时运行脚本的监视目录.

*为了澄清,我说的只是更改文件名,而不是存储在字体中的实际名称.此外,我愿意接受任何兼容的语言或脚本如果可能的工作流程,例如一个脚本这个帖子引用嵌入的AppleScript 通过Shell脚本osascript.

StackExchange帖子我咨询过:
如何从OTF或TTF文件中获取Fontname?
如何在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)一个典型的webfont的屏幕截图,说明了字体系列和样式名称的表单字段通常是不完整,空白还是包含非法字符.
2)描绘的woff文件(也作为base64). 截图 谢谢大家!

小智 5

自从您在问题中提到Automator以来,我想我会尽力解决此问题,同时使用它来重命名文件以及标准Mac bash以获取字体名称。希望它能胜过学习完整的编程语言。

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

字体名称获取

所以...运行此命令...

mdls GenBkBasBI.ttf | grep -A1 name_postscript

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

com_apple_ats_name_postscript  = (
    "GentiumBookBasic-BoldItalic"
Run Code Online (Sandbox Code Playgroud)

用更多的打击(tr,尾巴)清理一下…

tr -d \  | tail -n 1 | tr -d \"
Run Code Online (Sandbox Code Playgroud)

按顺序,这些带状空格,除最后一行和引号外的所有行均隔开。因此,对于第一个“ tr”实例,反斜杠后会有多余的空间。

在一行中,看起来像这样……

mdls GenBkBasBI.ttf | grep -A1 name_postscript | tr -d \  | tail -n 1 | tr -d \" 
Run Code Online (Sandbox Code Playgroud)

…并产生这个…

GentiumBookBasic-BoldItalic
Run Code Online (Sandbox Code Playgroud)

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

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

自动化工作流程

Automator工作流程屏幕截图

在顶部; 服务会在“查找器”中接收选定的“文件或文件夹”。

  1. 获取选定的查找器项目

这(或获取指定的…)可以进行测试。通过将此作为服务可以避免使用。

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

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

  1. 运行Shell脚本

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

  1. 变量的设定值(文本)

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

  1. 获取变量值(文件)

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

  1. 重命名查找器项:命名单个项

我将其设置为“仅Basename”,因此它将不考虑扩展名。在此处输入操作4中的“文本”变量。