尝试编写Python脚本以删除Mac OSX中的重复字体

2 投票
2 回答
704 浏览
提问于 2025-04-16 20:00

我正在尝试写一个工具,检查OSX上的字体并删除重复的字体。目前为止,我已经成功地遍历了文件夹结构,并写出了一个包含字体和路径的xml文件。不过,这样做的一个缺点是,它无法找到重复的字体,因为同一种字体可能在不同的位置安装了两次,但文件名却不同;字体系列的信息是存储在字体文件内部的。

我发现了这个链接:OS X上已安装字体的列表 / C

import Cocoa
manager = Cocoa.NSFontManager.sharedFontManager()
font_families = list(manager.availableFontFamilies()) 

这个链接使用了PyObjC来列出已安装的字体。这看起来是一个可能的解决方案,但我不是一个高级程序员,对PyObjC一无所知!我在终端里尝试过用dir(manager)dir(NSFontManager)来看看能否找到返回已安装字体文件路径的方法,但没有成功。

任何帮助都将不胜感激。

祝好

//西蒙

2 个回答

0

再次感谢大家的回复 - 我想更新一下这个内容,希望能帮到大家。我现在在研究fontTools,但承认我在找文档方面遇到了一些困难。根据开发者的页面,除了ttf字体,还有其他字体的库可以使用,但我目前还没找到合适的资料!

与此同时,我发现了这个页面,关于使用Apple字体工具,看起来能部分满足我的需求 - 也就是列出已安装的字体和它们的位置。看起来ftxinstalledfonts这个命令可以接受管道,所以理论上我可以把输出结果传给我现有的python脚本,来构建一个xml数据库。我在想我可以通过sys模块来调用ftxinstalledfonts,但不太清楚怎么获取输出结果……我会去查查python的文档,但如果没有找到,谁能花10秒给我个提示,我会非常感激。

顺便提一下,上面提到的Font Geek网站还有一些关于TTX的非常有用的信息。

祝好

//Simon

1

安装一下 fonttools 这个软件包,然后看看这篇 博客文章。里面有一个脚本,可以根据你给的第一个参数来获取字体名称,我相信你可以把它改造成适合你自己需要的样子。

撰写回答