macos - Snow Leopard 中的旧 Mac 扩展属性

标签 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 将输出十六进制,在隔离区运行它会得到 ASCII。显然,Apple 改变了他们处理扩展属性的方式,也许他们忘记了仍然保留 OS 9 字体的人。

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

最佳答案

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

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

关于macos - Snow Leopard 中的旧 Mac 扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254758/

相关文章:

objective-c - 苹果操作系统 X : Get current username and home directory for current user from Directory Services

在 OSX 上运行 ./gradlew 时 JAVA_HOME 设置为无效目录

python - 我如何在我的 Mac 上为 python 安装漂亮的汤?看到错误

java - OpenJDK 11 java.lang.ClassCastException : class sun. font.CompositeFont 无法转换为类 sun.font.PhysicalFont

java - 如何将字体更改为 Xml 中定义的默认字体?

objective-c - 在终端中使用 "defaults"命令写出复杂的内容

css - 为什么Fontin字体在浏览器上很锐利,但在PDF阅读器上却很流畅?

c - 如何获取文件的扩展属性(UNIX/C)?

filesystems - 扩展属性存储在哪里?

macos - 如何使用 Python 脚本和终端命令更改 MAC OS 文件夹的图标?