2010-02-12 87 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