排版技术前沿:Harfbuzz,Boxes and Glue (2022/07/27)
Harfbuzz的新版本
Harfbuzz项目,三天前发布了5.0.0版本,从代码层面上打破了64k的glyph数目限制。不过,暂未发现有这样的字体。
64k限制,对于汉字之外的大部分语言,都足够大。但是对汉字确可能太小了。所以在可见的未来,这种突破在实践上的应用,说不定比Variable Font还要小。
我看了一下Harfbuzz的历来就不靠谱的一些扩展计划,他们甚至想把shaping逻辑以及wasm放到OTF之中。
呵,这年代重新发明AAT很爽吧?但是真有设计师或者字体厂商团队支持就有鬼了。现有的OTF简单到不行,都还有一堆人理解不能,要是搞这么复杂,肯定像AAT那样暴死。
Apple的AAT以及SIL的Graphite,是传统上被称作smart font的技术。从技术品味上来说,是很好。但是从实践角度上说,几乎就是灾难。
可以这么说,如果想要完整理解这两种smart font,编译原理上的东西大概要学一两次,还得把前后端的基础习题做一做。做完之后就会发现,smart font中存储的东西,基本就是某种特定编译器的后端输出(虚拟机,字节码)。
此外,这些smart font的技术,基本就那几个工具链。从现实的角度上看Apple的工具链烂得要死(他们甚至已经放弃了更新),SIL提供的工具链根本就是个编程语言。在设计师和很多字体厂商眼里,这就是见了鬼的东西。
OTF也不是完全很简单的东西,但是它在layout角度上,可以做到设计师能感知到的细粒度。比如,他们想控制某一组字符在什么情况下该变成什么样子(这就是OTF中的lookup概念)。

Boxes and Glue
最近几天,TUG 2022年会开完了。

其中一个值得讨论的是Patrick Gundlach的Boxes and glue: TeX algorithms reimplemented。
熟悉LuaTeX的人应该对Patrick Gundlach这个名字会有一点印象:他开发了一些LuaTeX的包,比如lua-visual-debug。
Boxes and Glue是一个用Go实现的,类TeX算法的一个排版软件。这个软件的归属方speedata,是一家提供排版解决方案的公司。
这个软件的核心其实就是Knuth和Plass做的那个经典的TeX算法。其他部分,就是属于工业界用什么就用什么,比如不支持8位字体技术,不支持DVI;只支持OpenType和PDF。
考虑到我最近对PDF的负面态度,过多的对于PDF的批判我就不展开了。不过,他们肯定会面临很多细琐的问题。
这里我需要做一些Knuth算法的注解。一般而言,从读文献到写出能工作的代码,对于计算机专业的学生大概需要一个月左右的时间。想要打发时间的,可以读一读算法的原始文件。难度倒是不太难。不过,原始文档中没有提CJK怎么处理,这个文献可以找pTeX的。
其实这种软件,越多越好。从我的认识角度上看,我更愿意做从移动端到PC端的那种跨平台的。这算是一种技术普适的价值观了。不过嘛,这对很多程序员来说,似乎要求过高了。

本来我还想聊一聊TeX Live中的HINT的,受限于篇幅,有时间再讲。