旧版Mac在Snow Leopard中扩展了属性

时间:2010-02-12 20:05:20

标签: macos fonts xattr

去年我不得不从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将输出hex,在隔离区运行它,你得到ASCII。显然,Apple改变了他们处理扩展属性的方式,也许他们忘记了仍然保留OS 9字体的人。

我在这里缺少什么,或者我只是编写一个脚本将十六进制转换为ASCII?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

将资源分支转换为数据分叉将无法满足您的需求 - 它仍处于资源分叉格式,因此无法使用它。要将其转换为跨平台格式,您需要一个像fondu这样的转换器。它将挖掘旧式Mac字体行李箱并将sfnt资源(TrueType和OpenType字体)提取到.ttf和.otf文件,POST资源(PostScript字体)到.pbf文件,以及NFNT和FONT资源(位图字体) )到.bdf文件。

BTW,SourceForge下载部分的Mac OS / X软件包在安装时给出了一个错误,但似乎无论如何都安装成功。