当前位置 : 主页 > 网络安全 > 测试自动化 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-19
我是一名印刷师,使用许多文件名不正确或不完整的字体.我在Mac上并且一直在使用 Hazel, AppleScript和 Automator工作流程,试图自动重命名这些文件*.我需要一个脚本用字体的postscriptName替换
我是一名印刷师,使用许多文件名不正确或不完整的字体.我在Mac上并且一直在使用 Hazel, AppleScript和 Automator工作流程,试图自动重命名这些文件*.我需要一个脚本用字体的postscriptName替换Finder中ttf,woff或woff2文件的现有文件名.我知道可以检索我需要的PostScript名称值的工具(fc-scan / fontconfig,TTX等),但缺乏为我的目的编写脚本的编程知识.我只设法设置一个可以在添加任何匹配某些参数的文件时运行脚本的监视目录.

*为了澄清,我说的只是更改文件名,而不是存储在字体中的实际名称.如果可能的话,我也可以使用任何兼容语言或脚本工作流程的脚本,例如: this post引用通过osascript在Apple脚本中嵌入AppleScript.

StackExchange帖子我咨询过:
How to get Fontname from OTF or TTF File?
How to get PostScript name of TTF font in OS X?
How to Change Name of Font?
Automate Renaming Files in 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).

谢谢大家!

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

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

字体名称Aquisition

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

mdls GenBkBasBI.ttf | grep -A1 name_postscript

…生成此输出,其中包含FontBook的Postscript名称. grep中的’A1’返回找到的行和后面的第一行,它是包含实际字体名称的行.

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 “New PDF from Images” maintaining same filename

Automator工作流程

Automator Workflow screenshot

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

>获取选定的Finder项目

这个(或Get Specified …)允许测试.使用它作为服务可以避免这种情况.

>设置变量值(文件)

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

>运行Shell脚本

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

>设置变量值(文本)

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

>获取变量值(文件)

调用要重命名的指定/选定文件.

>重命名Finder项目:名称单项

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

网友评论