jjgod / blog Random notes & thoughts by Jiang Jiang.

Typography

iPad 上新闻类软件的字体选用

上次在 twitter 上和 Typeisbeautiful 的 Rex 提到这件事情,最近刚收到 iPad,就来分析一下。 iPad 上的新闻类软件非常多,多到 app store 上有个 News 分类专门给这类软件,但良莠不齐也是自然的,但从字体选用看,我认为做得最有诚意的还是三个传统媒体:New York Times 的 NYT Editors’ Choice, WSJ 的 The Wall Street Journal 和 Financial Times 的 Financial Times iPad Edition。它们共同的特点是,为了优化阅读体验,都使用了专门订制的字体,随 app 一起提供,几乎完美地保持了纸面版本的字体风格。

阅读器的进度显示与估计

对电子书阅读器来说,提示当前阅读进度是一项很自然的功能,习惯用电脑的人都常看到进度条 (progress bar) 和滚动条 (scroll bar),如右图是 Textus 中使用的右侧滚动条。 然而在实际实现中,进度计算是一件伤脑筋的事情,比如 Textus 的实现其实很简单:在打开文件时读入整个文件,然后整个交给 Core Text 去排版,将排版后的结果分解为行 (CTLineRef) 记录下来,并将所有行总的高度设置为整个文本视图的高度,这样,每当滚动视图 (NSScrollView) 移动到某个位置时,重绘函数 (-drawRect:) 被调用到,我们根据该位置来判断应该绘制从第几行到第几行的内容,再调用 Core Text 把这些行画出来。 这么做看似很简单直接,结果也很容易保证正确,带来的问题是,每次用户修改设置 (比如调整字体大小、窗口尺寸) 时,就得把整个文件重新排版一遍,即使此时我们只需要看到当前一页的内容。为什么这种方法这么低效,我还一直使用它呢?因为这个实现严格依赖滚动视图给出的位置来判断当前阅读进度,所以总的高度估计必须非常精确,不然随便滚动一下就可能出现错位,而一次算给出整个高度的方法最准确,不容易出错。

TeX Live 2009 的 LaTeX 中文支持

最近刚发布的 TeX Live 2009 是对中文支持有较大改进的一个版本,这里简单介绍一下。 首先,一如 2007, 2008 版本,TeX Live 2009 有中文版本的安装使用指南,强烈建议在提问前把相关章节好好看看,这份指南主要叙述的是和中文无关的一些通用的问题。 然后 TeX Live 2009 的中文支持主要分为两部分,基于 XeTeX 的,和基于传统 CJK 宏包的。(我这里只讨论 LaTeX 的,如果你希望尝试 ConTeXt 和 luatex,可以参考 Li Yanrui 的 blog,他有很详细的介绍。) 基于 XeTeX 的方案 这是我们推荐的方案,又可分为高层与低层两种,分别适用于不同需求的用户。 首先,安装所需的宏包: sudo tlmgr install xecjk ctex 高层的方案是使用 ctex 宏包自带的文档类,例如原来用 article 文档类的就改用 ctexart 文档类,原来用 book 文档类的就改用 ctexbook 文档类,这样绝大部分你会遇到的中文问题,比如字体设置、hyperref 的调用、章节标题的设置等等,都自动为你解决了。详情可以看 ctex 宏包的文档。下面是一个小例子: \documentclass{ctexart} [...]

闲聊文本渲染技术的近期发展

在今年 7 月的 GUADEC 上 Behdad Esfahbod 做了一个题为 State of Text Rendering 的讲座,系统地综述了当前文本渲染技术的现状,顺带强调主要由他开发的 harfbuzz-ng 是未来发展的方向,4 个月过去了,最近文本渲染技术有了什么发展呢?这里谈谈我的一些印象和见解。 首先,harfbuzz-ng 到底想做成什么样子?我们知道底层的字体格式支持,开放的有 FreeType 一枝独秀,各平台私有的有 Win32 的 GDI font, Mac OS X 有 ATS 和 CGFont,上层的文本布局排版引擎,现在各家自有一套到两套:Windows 的 DirectWrite 和 Uniscribe;Mac OS X 有 Core Text 和 ATSUI,有 NSLayoutManager;GTK+ 有 pango,都是比较成熟的接口了,那 harfbuzz-ng 是要取代他们吗? 不是,也完全说不通,毕竟 pango 就是 Behdad Esfahbod 自己维护的,没理由拆自己的台。但是开放的 pango 等平台一直缺失的部分是 [...]

Text Layout with Core Text (slides)

I did a talk in Cocoaheads Beijing yesterday on the topic “Text Layout with Core Text”, and here is my slides (4 MB, pdf). I may write a more detailed article on Core Text typesetting later, stay tuned.

← Before After →