2012年6月8日星期五

从苹果 OS X Lion 安装包中提取字体

你应该听说过 OS X 中的字体很漂亮(因为乔布斯当年就是学过书法的,后来发明了电脑字体),想弄到手,又不知道怎么办。下面这个教程教你如何提取安装包中的字体,包括大名鼎鼎的黑体-简和 Hiragino Sans GB(又叫冬青黑体简体中文)。

在失败了 n 次之后,我——一个 Linux 老手和 Mac 新手,终于成功提取了 OS X Lion 中的字体。

如果有运行的 OS X 系统,直接拷贝 /Library/Fonts/System/Library/Fonts 出来就行了。

下面我说的是你没有一个正常工作的 OS X 系统(你知道在非苹果机中装苹果系统的难度的)。

要求:够用的内存和至少 12G 空闲的硬盘(用来解压文件)、运行的类 Linux 系统(虽然 Windows 系统也可以做,但是会有三个困难,下面详说)、7-Zip 压缩软件、dmg2img 转换软件、足够的动手能力和耐心(因为有 14 层压缩包等着你解开呢)。

首先,你需要一枚 Install Mac OS X Lion.app 安装文件(夹),共 3.8G,可以花 $29.99 从 Mac App Store 下,也可以……此处省略……
打开 Install Mac OS X Lion.app,苹果系统要右键,选择“显示软件包内容”,Linux 和 Windows 直接打开。
找到 Contents/SharedSupport/InstallESD.dmg
是一个 Xar 压缩包,用 7-Zip 解开,里面有 InstallESD.pkg,是一个文件夹,打开,里面又有一个 InstallESD.dmg,这是一个 dmg 映像。
dmg2img 转换成 img 格式,用 7-Zip 提取第5分区,是 hfs+ 磁盘映像。
然后打开终端执行 mkdir /tmp/work; sudo mount -t hfsplus -o loop,ro /tmp/work 'disk image.hfs' (文件名根据自己解压选的文件名改);Windows 自己想办法打开 hfs+ 映像,好像有 HFSExplorer 软件,7-Zip 也可以直接解。
输入管理员密码,打开目录 /tmp/work/Packages
用 7-Zip 打开 Essential.pkg,是一个 Xar 压缩包,找到 Payload 文件,提取出来。
Payload 文件是一个 gzip 压缩文件,解开。
解开后是一个 cpio 打包文件,用 7-Zip 找到 ./Library/Fonts./System/Library/Fonts,提取出来!
字体中有一些中文、日文字体(ヒラギノ系列、华文系列、苹果俪黑、俪宋系列)文件名有乱码,自己纠正,因为这个可能在 Windows 下提取不成功,我提醒过你们了。

如果你用 Linux,提取出来的 TrueType 字体安装后就可以直接用了。(怎么安装?在 /usr/share/fonts 下面建一个文件夹,把字体全部拷贝进去,需要管理员权限;非管理员拷贝到 ~/.fonts)其实,还建议你安装 freetype-infinality 或者 fontconfig-ubuntu 补丁,完美模拟苹果字体渲染(前者需要大量配置,如果配置得当可以达到以假乱真的程度,否则根本无法阅读;而后者是傻瓜化零配置)。
但是如果你用 Windows,还需要用 fontforge 来转换一下,否则不识别。我就不讨论了,因为我不用 Windows。而且,介于 Windows 糟糕的字体渲染,再美的字体在 Windows 下也是很恶心的,建议你安装系统美化软件 MacType,改善 Windows 的字体显示。

总结一下目录结构,共 14 层,箭头表示解压或提取:
Install Mac OS X Lion.app/Contents/SharedSupport/InstallESD.dmg>InstallMacOSX.pkg/InstallESD.dmg>InstallESD.img>5.disk_image.hfs>Packages/Essential.pkg>Payload>Payload~>./Library/Fonts./System/Library/Fonts
总结一句,解压的时候如果不知道哪个是你要的文件,找占用磁盘空间最大的那个,一定对!