Macos 雪豹中的旧Mac扩展属性

Macos 雪豹中的旧Mac扩展属性,macos,fonts,xattr,Macos,Fonts,Xattr,去年,我不得不从操作系统9左右转换旧的Mac字体,以便有人在PC上使用。我发现,当时字体数据存储在扩展属性com.apple.ResourceFork中。实际文件大小将在终端中显示为0。我可以通过使用xattr-pcom.apple.ResourceFork font>font.ttf简单地打印出扩展属性的值来解决这个问题 现在,随着雪豹和HFS+文件压缩,情况发生了变化。如果您现在尝试打印出一个旧式的扩展属性,您将只得到十六进制而不是值。除非使用-x选项指定,否则新的扩展属性不带任何十六进制。

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

现在,随着雪豹和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。显然,苹果改变了他们处理扩展属性的方式,也许他们忘记了仍然保留OS9字体的人


这里是否缺少任何东西,或者我只是编写一个脚本来将十六进制转换为ASCII?

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


xattr-pcom.apple.ResourceFork Rublof | xxd-r>Rublof.ttf

将资源叉转换为数据叉无法满足您的需要--它仍然是资源叉格式,因此没有任何东西能够使用它。要将其转换为跨平台格式,您需要一个类似的转换器。它将挖掘老式的Mac字体手提箱,将sfnt资源(TrueType和OpenType字体)提取到.ttf和.otf文件中,将POST资源(PostScript字体)提取到.pbf文件中,将NFNT和字体资源(位图字体)提取到.bdf文件中


顺便说一句,SourceForge下载部分的Mac OS/X软件包在我安装时给了我一个错误,但似乎还是成功安装了。

xxd是关键。但愿我更了解我的命令。您还必须为xxd添加-p选项,以使其正确处理输入。加载字体时仍然存在问题,但Rublof.ttf中的十六进制转储与资源分叉匹配。
/rsrc
在10.7中停止工作,但
/…namedfork/rsrc
在10.8.4中仍然有效。