Snow Leopard 在字体方面的变化

1. 字体反锯齿选项不再允许选择 hinting 的程度 (以前可以选择 Medium, Light, etc.),现在似乎默认就是 Medium,不能改,很奇怪 (我个人习惯用 Light 的)。

System Preferences -> Appearance

2. 原来 Mac OS 独有的 dfont 字体格式被抛弃了,改用 [ttc](http://en.wikipedia.org/wiki/True_Type_Font#TrueType_Collection) (TrueType Collection) 格式替代。

uncia:~ jjgod$ ls /Library/Fonts/*.ttc
/Library/Fonts/AmericanTypewriter.ttc /Library/Fonts/GillSans.ttc
/Library/Fonts/Baskerville.ttc /Library/Fonts/HelveticaCY.ttc
/Library/Fonts/Chalkboard.ttc /Library/Fonts/Hoefler Text.ttc
/Library/Fonts/Cochin.ttc /Library/Fonts/MarkerFelt.ttc
/Library/Fonts/Copperplate.ttc /Library/Fonts/Optima.ttc
/Library/Fonts/Didot.ttc /Library/Fonts/Papyrus.ttc
/Library/Fonts/Futura.ttc /Library/Fonts/STHeiti Medium.ttc

uncia:~ jjgod$ ls /System/Library/Fonts/*.ttc
/System/Library/Fonts/Courier.ttc /System/Library/Fonts/Menlo.ttc
/System/Library/Fonts/Helvetica.ttc /System/Library/Fonts/STHeiti Light.ttc
/System/Library/Fonts/HelveticaNeue.ttc /System/Library/Fonts/Times.ttc
/System/Library/Fonts/LucidaGrande.ttc

3. iPhone OS 中使用的混合简繁中日韩语言版本的 (华文) 黑体出现在 Snow Leopard 中,一个 `/System/Library/Fonts/STHeiti Light.ttc` 文件对应了 Heiti SC, Heiti TC, Heiti J 和 Heiti K 这四套字体。

Heiti Fonts

4. 新增修改自 [Bitstream Vera Sans Mono](http://www.bitstream.com/font_rendering/products/dev_fonts/vera.html) 的新等宽字体 Menlo (这个名字大概是来自 [Menlo Park](http://is.gd/nDN8)),提供 Regular, Italic, Bold, Bold Italic 四种风格。

Menlo Regular

Menlo Regular Info

因为授权比较自由,这个字体恐怕是软件发行者最受欢迎的等宽字体,之前 [Panic Coda](http://www.panic.com/coda/), [BBEdit](http://www.barebones.com/products/bbedit/) 和 [MacVim](http://code.google.com/p/macvim/) 都提供了各自的修改版本。

用来修正错误编码的文件名的 Safari 插件

我之前[讨论过](/2008/02/17/cocoa-nsstring-decoding-error/)一次这种文件名的错误编码,为了在浏览器下载时的不必手工修正这个问题,这里提供一个 Safari 的 SIMBL 插件: SafariURLFix。

使用步骤如下:

1. 如果没装过,先[安装 SIMBL](http://www.culater.net/software/SIMBL/SIMBL.php);

2. 下载 [SafariURLFix.zip](http://jjgod.org/program/SafariURLFix.zip),解压后,放到 `~/Library/Application Support/SIMBL/Plugins` 目录 (如果没这个目录就自己创建);

3. 在 Terminal 中输入:

`defaults write com.apple.Safari JJURLsToFix -dict newsmth.net GBK`

其中 newsmth.net 为你希望应用修正的网站域名。也可以打开 `~/Library/Preferences/com.apple.Safari.plist` 文件自己编辑 `JJURLsToFix` 这个 Dictionary,自行添加新的,见附图。Edit Safari Preferences Manually

4. 重新启动 Safari,尝试下载[这样](http://att.newsmth.net/att.php?p.719.275418.308.png)的文件,看看文件名是否被正确纠正了。

如果还有什么问题,欢迎在下面提出。

用 AppleScript 来辅助 Pages 排版

[Pages](http://www.apple.com/iwork/pages/) 的混合语言排版功能一直为人诟病 (实际上 Pages 的多语言支持也一直很弱,甚至比不上 TextEdit),比如像组合字体 (combined font) 这样在排版软件中很常见的功能也迟迟没有提供,所以经常有人说用 Pages 排版中英文混合的文章是一种折磨。

昨天看到 Apple 版上的一篇文章,便想起来试试 Page ’09 新增的 AppleScript 功能,其实用到的功能在之前的 Pages 版本中应该也有,不过我手头没有更早的版本,所以无法试验了。可以点这里看[完整的脚本](http://att.newsmth.net/att.php?s.719.285617.1216.py),其实核心代码非常短:

from appscript import *
pages = app(id=”com.apple.iWork.Pages”)

for doc in pages.documents():
words = doc.words()
i = 0

for word in words:
i += 1
if isch(word[0][0]):
doc.words[i].font_name.set(“SimSun”)

这个脚本没有直接用 AppleScript,而是通过第三方提供的 [py-appscript](http://appscript.sourceforge.net/) 接口来调用 (它的语法比 [ScriptingBridge](http://www.apple.com/applescript/features/scriptingbridge.html) 要友好很多),作用是,扫描所有 Pages 打开的文档,把所有的汉字的字体设为 SimSun,因为仅仅作为一个示例,所以没有加任何参数。

使用方法是,先[安装 py-appscript](http://appscript.sourceforge.net/py-appscript/install.html),然后打开 Pages,随便输入一段中文和英文混杂的文字,比如刚才的“在50ml的PBS缓冲中加入15mg的HCl使得最终pH为5”这句,一开始加入时因为默认字体是 Helvetica,所以英文字母和数字都用了 Helvetica,汉字则使用了 Helvetica 的默认 Fallback, 也就是 STXihei,如下图所示。

before

然后运行:

python format-pages.py

这时候切换回 Pages 就能看到效果,如下图所示。

after

其实这个脚本还可以做很多其他的变化,比如加入界面来选择字体、只是转换当前选中的部分等等等等,至少了解一点 AppleScript 的调用方式就可以尝试,这里不赘述了。

目前的照片 geotagging workflow

1. 打开 GPS Logger (我用的是 HOLUX M-241)
2. 等有信号之后,开始记录和拍照
3. 回来用 [HoudahGPS](http://www.houdah.com/houdahGPS), 通过蓝牙把轨迹数据导入为 gpx 格式文件
4. 用 Lightroom 把照片导入
5. 用 [GPSPhotoLinker](http://www.earlyinnovations.com/gpsphotolinker/) 载入轨迹 gpx 文件和导入的照片,批量写入地理信息
6. 在 Lightroom 中选 Metadata -> Read Metadata from Files 批量重新读取写入的地理信息

有没有更简化的方法?

CoreAVC 与 CorePlayer

CorePlayer Pro for OS X

昨天碰巧翻到一个叫 [CoreAVC for Linux](http://code.google.com/p/coreavc-for-linux) 的项目,其实应该之前很早就听说过,因为这个项目在去年五月份的时候曾经被 Google Code 停止提供服务,因为“[DMCA complaint](http://en.wikipedia.org/wiki/CoreAVC#The_CoreAVC-For-Linux_DMCA_complaint)”,但现在又恢复了,不过可能 patch 更新得不够及时,不一定能够用在 svn HEAD 的 mplayer 上。

CoreAVC for Linux 到底是个怎么样的项目呢?众所周知的是,CoreAVC 是目前公认软解 H.264 效率最高的解码器,在 Windows 平台有提供,价格是 $15 (不过大部分 Windows 用户都用破解版本的)。开发这个解码器的公司还把它移植到了 Palm, Symbian, Windows CE 等平台上,是移动平台中最有名的一个通用播放器,叫 CorePlayer。

从去年二月开始,CorePlayer 被移植到了 Windows 和 Mac OS X 平台上,但官方没有提供给 Mac OS X 平台的 CoreAVC (假如有的话,应该是 Perian, Flip4Mac 那样作为 QuickTime 插件的形式,但不知道这个公司出于什么考虑,并没有像 Windows 平台那样提供)。而 Linux 平台下也没有提供公开销售的版本。所以 CoreAVC for Linux 就是为了能在 Linux 平台下使用这个解码器而产生的。

虽然细节比较复杂,我现在也不大了然,但原理也不难理解,修改 mplayer 的 DirectShow 支持代码,类似调用 RealMedia 的 DirectShow 插件那样来调用 CoreAVC 的 DirectShow 插件。开发者说有[两种修改方法](http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation):

1. 使用一个外部程序 dshowserver 来提供服务,修改 mplayer 使之能够支持 dshowserver,这种方法能够适用于 x86_64 和 ia32
2. 直接修改 mplayer 的 Win32 dshow 代码使之支持 CoreAVC,只适用于 ia32

作者说第一种是推荐的方法,但不能用于 Windows 和 Mac。而第二种完全没有提到具体步骤,也没见到具体的 patch。

正巧看到 [CorePlayer Pro for OS X](http://www.mobihand.com/product.asp?id=16794),虽然没提供试用版本,但好在也不算贵 ($17),就买了一个试试。下面是一点结论:

No AC3 support in CorePlayer OS X

1. 最大的问题是音频解码支持很弱,不支持 AC3 解码,不支持 DTS 解码,而且发布之后一年内始终没得到解决,开发者很有点言而无信,一开始在去年二月说“数周内”能解决,到 12 月还没提供,又改说我们可能要依赖平台提供的功能实现 (Windows 下用 DirectShow, Mac 下用 Core Audio),这也没问题,可这都二月了,还没解决。感觉相比移动平台,这个公司并不怎么注重桌面平台的支持。

2. 界面很土,非要做跨平台的界面,结果用起来非常不方便,更不用说完全不 Mac 化了。

3. 解码 H.264 的效率确实比其他任何 Mac 平台的解码器都要好,手头一个 1080p 的 Fight Club 的 BDRe, 用 Plex 时的 CPU 占用率在 120% ~ 150% 左右,用 CorePlayer 时占用率在 75% ~ 80% 左右。

4. 不支持外挂字幕,而且短期内不打算支持。

总的说来,我觉得他们最大的决策错误就是不提供单独的 CoreAVC,非要自己做播放器,结果给自己带来了过重的开发负担,比如界面、音频编码器这些,如果只提供一个 QuickTime 插件,就压根不需要他们操心了。H.264 的解码效率是好,但也没有好到超过一个数量级的程度,在 Snow Leopard 和新一代 Mac 提供了显卡硬解码支持的背景下,就更难让人看好这个产品的前景了。