去年,我不得不转换 OS 9 左右的旧 Mac 字体,供某人在 PC 上使用。我发现当时字体数据存储在扩展属性com.apple.ResourceFork中。实际文件大小将在终端中显示为 0。我可以通过简单地使用 xattr -p com.apple.ResourceFork font > font.ttf 打印出该扩展属性的值来解决这个问题。

现在,有了 Snow Leopard 和 HFS+ 文件压缩,一切都发生了变化。如果您现在尝试打印旧式扩展属性,您将只能获得十六进制而不是值。除非使用 -x 选项指定,否则新的扩展属性将不显示任何十六进制。这是一个例子:

xattr -l com.apple.FinderInfo Rublof
Rublof: com.apple.ResourceFork:
00000000  00 00 01 00 00 00 9E 50 00 00 9D 50 00 00 00 32  |.......P...P...2|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
...
Rublof: com.apple.quarantine: 0000;4b75ae02;Mail;39396996-3C5C-48F5-8BDD-775EB40CAD9C|com.apple.mail

在 ResourceFork 上运行 xattr -p 将输出十六进制,在隔离区运行它会得到 ASCII。显然苹果改变了他们处理扩展属性的方式,也许他们忘记了那些仍然保留 OS 9 字体的人。

我在这里遗漏了什么,还是我只是编写一个脚本将十六进制转换为 ASCII?

有帮助吗?

解决方案

您还可以通过在文件名后附加“/rsrc”或“/..namedfork/rsrc”来访问资源分支。尝试 cp Rublof/rsrc Rublof.ttf. 。也就是说,资源分叉已被弃用,而扩展属性则不然。“/..namedfork”机制可能会从未来的版本中消失。如果发生这种情况,您可以尝试 xxd 转换回二进制:

xattr -p com.apple.ResourceFork Rublof | xxd -r > Rublof.ttf

其他提示

将资源分叉转换为数据分叉不会满足您的需要 - 它仍然是资源分叉格式,因此没有任何东西可以使用它。要将其转换为跨平台格式,您需要一个转换器,例如 火锅. 。它将挖掘旧式 Mac 字体手提箱,并将 sfnt 资源(TrueType 和 OpenType 字体)提取到 .ttf 和 .otf 文件,将 POST 资源(PostScript 字体)提取到 .pbf 文件,以及 NFNT 和 FONT 资源(位图字体)到 .bdf 文件中。

顺便说一句,来自 SourceForge 下载部分的 Mac OS/X 软件包在安装时出现错误,但似乎安装成功。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top