Archive for April 2006

Why Cairo?

因为想写一个 lightweight & fast 的文本布局引擎,这两天在留意一些新的图形 API。其实有些都不算很新了,像 Anti-Grain GeometryAmanithXara

曾被誉为“Linux 图形未来希望”的 cairo 广受诟病的是它的效率,尽管从一开始 cairo 便宣称将会利用 glitz 这样的 backend 实现硬件加速的矢量图形绘制,从而达到软件绘制无法达到的效果。结果现在戏剧性的是,cairo 比所有这些用软件绘制的引擎都慢得多

所以才有人写了这么一篇 Why Cairo?,意思大概说得很清楚了,Mozilla 选用 cairo 的借口现在看来是非常苍白无力的,比如说 cairo 引以为傲的“bring vector graphics to print”有多少人需要把网页输出到 PDF/PS?如果最基本的页面渲染都做不到高效,谈何页面印刷的高效?

所以我觉得啊,rendering model 好当然不错,cross-platform 性能好也很好,但 cairo 是不是中 gnome 社群的毒太深了?什么东西都来搞个 backend,结果最后每个 backend 都半死不活的,没错,也许某天 David Reveman 搞定了 xgl 腾出手来整 glitz 了,可 David Reveman 就算搞定了 glitz,也未必能在 win32 下用啊。

… 今天测试的结果是,pango 用 cairo 作 backend,cairo 用 win32 backend,结果渲染一行字 (4 个字母),要半秒钟。嗯,没看错,就是 0.5s。

效率还是很重要的呀,虽然某位大人物说过:

预优化是万恶之源。

Layout Engine 的文档

真的是.. a mess,估计就像 pango maillist 上有的人说的,有能力使用 layout engine 的人都能够直接看 reference 写程序,没能力的都去用 GUI Toolkit 提供的 high-level API 了。

最近看的几个 layout engine 包括:Uniscribe, Graphite, PangoICU。最惨的是它们的定位和功能还不一样,有些相互之间还有牵扯。

就是这样居然还有人能把 Graphite, ICU 和 ATSUI 集成起来给 TeX 用,考虑到 TeX 还是用 WEB (Pascal 的 literate programming 版本) 语言写成的,这真是让人崇拜得五体投地的强者啊。

(看了一下强者的 biography,原来自从我出生开始就在 SIL 工作了.. 那么这样我比较不自卑一点。)

更新:看完这篇 mail,我又很高兴了 :)

Segoe UI 之争

Segoe UI

Microsoft 在 (或者将在) Windows Media Center Edition, Windows Vista 和 Office 2007 中替代 Tahoma 作为界面和菜单的默认字体的就是现在看到的这个 Segoe UI。毫无疑问,它可以和 Tahoma 区分得很清楚,取代 Tahoma 的尖刻的圆角和 Trebuche MS 有几分相似——wikipedia 上是这么说的。

然而 Linotype 公司声称它与 Linotype 的 FrutigerNext 是一模一样的。看下面的对比,真的是几乎一模一样啊 (黑色的是 60pt 的 FruitigerNext,灰色的是 56pt 的 Segoe UI):

FrutigerNext and Segoe UI comparison

Wikipedia 上还提到,Microsoft 在 2004 年尝试在欧盟将 Segoe 和 Segoe Italic 注册为原创性字体设计,Linotype 提出了抗议,在 2006 年二月,欧盟拒绝了 Microsoft 的注册请求。Microsoft 承认 Segoe 和 Frutiger 是一样的,但却声称 Linotype 在 2004 年以前没卖过 Frutiger 和 FrutigerNext (这个理由真 faint),这个说法还是被欧盟拒绝了。

那么现在究竟 Microsoft 会不会撤掉他们预先说好要在 Vista 和 Office 2007 中出现的这个字体呢?或者 Microsoft 与 Linotype 达成和解,同意给每份 Vista 的 copy 支付一个美分的授权费用?(先前 Microsoft 是在 Reader 软件中为 Frutiger Linotype 这个字体支付的授权费用。)

Frutiger Linotype and FrutigerNext

在网页上的比较可能会比较符合 Microsoft 的心思,不过我的测试是发现 Frutiger Linotype 和 Segoe UI 的效果差不多 (难道 Vista 上 ClearType 的改进又会带来变数?),但 Frutiger Linotype 的 descenders 明显一点,Segoe UI 的 ascenders 明显一点,相比起来 Segoe UI 不那么“扁”,看起来会更顺眼。

Frutiger Linotype in Firefox

Segoe UI in Firefox

引用一份 FrutigerNext 的小册子上说的:

1970 年初,当巴黎计划建设 Roissy Charles de Gaulle 机场时,他们发现机场的信号标识需要一个清晰可辨的字体。导航系统的设计落到了 Adrian Frutiger 的头上,结果是……太成功了,不仅导航系统需要这个新的字体,许多常规的书籍印刷同样需要。1977 年,这个字体以 Frutiger 的名字命名,进入了 Linotype Library。它不仅为机场信号,更为所有希望在字号较小时达到清晰可辨的字体设立了一个标准。 ……创造出一个既有吸引力又富动感的字体。经过加强的 ascenders 和 descenders 更显可读性,小写字母和数字在一行上排布得很整齐。Linotype Frutiger NEXT 在 Frutiger 的基础上,使笔画与宽度更为协调,各种粗细的版本放在一起显得更为融洽而不突兀。

从传统的字体设计角度上来说,Segoe UI 当然和 Frutiger/Next 脱不了干系,可是如果从纯技术角度上来说,我们不妨反思这样一个问题:字体的版权应当如何保护,类似 Microsoft 这样,为 ClearType 所优化的 hinting 算不算版权中的一部分呢?