用 AppleScript 来辅助 Pages 排版

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

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

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 接口来调用 (它的语法比 ScriptingBridge 要友好很多),作用是,扫描所有 Pages 打开的文档,把所有的汉字的字体设为 SimSun,因为仅仅作为一个示例,所以没有加任何参数。

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

before

然后运行:

python format-pages.py

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

after

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