2010-02-12 86 views
2

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

现在雪豹和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?

回答

5

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

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

+0

xxd是关键。希望我更了解我的命令。您还必须为xxd添加-p选项才能正确处理输入。仍然有加载字体的问题,但来自Rublof.ttf的十六进制转储与资源分支匹配。 – dmertl 2010-02-12 22:09:55

+1

'/ rsrc'在10.7中停止工作,但是'/ .. namedfork/rsrc'仍然在10.8.4中工作。 – user495470 2013-09-04 08:42:36

2

资源派生转换成数据叉不会做你所需要的 - 它仍然是资源派生的格式,所以没有什么”将能够使用它。为了达到跨平台的格式,你需要一个像fondu这样的转换器。它将挖掘旧式Mac字体手提箱,并将.ff和.otf文件,POST资源(PostScript字体)转换为.pbf文件以及NFNT和FONT资源(位图字体),将sfnt资源(TrueType & OpenType字体)到.bdf文件中。

顺便说一句,从SourceForge下载部分的Mac OS/X包给我一个错误,当我安装它,但似乎无论如何安装成功。

+0

谢谢,我会给你一个镜头。 – dmertl 2010-02-15 19:55:46