排版技術(shù)前沿:Harfbuzz,Boxes and Glue (2022/07/27)
Harfbuzz的新版本
Harfbuzz項(xiàng)目,三天前發(fā)布了5.0.0版本,從代碼層面上打破了64k的glyph數(shù)目限制。不過,暫未發(fā)現(xiàn)有這樣的字體。
64k限制,對(duì)于漢字之外的大部分語言,都足夠大。但是對(duì)漢字確可能太小了。所以在可見的未來,這種突破在實(shí)踐上的應(yīng)用,說不定比Variable Font還要小。
我看了一下Harfbuzz的歷來就不靠譜的一些擴(kuò)展計(jì)劃,他們甚至想把shaping邏輯以及wasm放到OTF之中。
呵,這年代重新發(fā)明AAT很爽吧?但是真有設(shè)計(jì)師或者字體廠商團(tuán)隊(duì)支持就有鬼了。現(xiàn)有的OTF簡單到不行,都還有一堆人理解不能,要是搞這么復(fù)雜,肯定像AAT那樣暴死。
Apple的AAT以及SIL的Graphite,是傳統(tǒng)上被稱作smart font的技術(shù)。從技術(shù)品味上來說,是很好。但是從實(shí)踐角度上說,幾乎就是災(zāi)難。
可以這么說,如果想要完整理解這兩種smart font,編譯原理上的東西大概要學(xué)一兩次,還得把前后端的基礎(chǔ)習(xí)題做一做。做完之后就會(huì)發(fā)現(xiàn),smart font中存儲(chǔ)的東西,基本就是某種特定編譯器的后端輸出(虛擬機(jī),字節(jié)碼)。
此外,這些smart font的技術(shù),基本就那幾個(gè)工具鏈。從現(xiàn)實(shí)的角度上看Apple的工具鏈爛得要死(他們甚至已經(jīng)放棄了更新),SIL提供的工具鏈根本就是個(gè)編程語言。在設(shè)計(jì)師和很多字體廠商眼里,這就是見了鬼的東西。
OTF也不是完全很簡單的東西,但是它在layout角度上,可以做到設(shè)計(jì)師能感知到的細(xì)粒度。比如,他們想控制某一組字符在什么情況下該變成什么樣子(這就是OTF中的lookup概念)。

Boxes and Glue
最近幾天,TUG 2022年會(huì)開完了。

其中一個(gè)值得討論的是Patrick Gundlach的Boxes and glue: TeX algorithms reimplemented。
熟悉LuaTeX的人應(yīng)該對(duì)Patrick Gundlach這個(gè)名字會(huì)有一點(diǎn)印象:他開發(fā)了一些LuaTeX的包,比如lua-visual-debug。
Boxes and Glue是一個(gè)用Go實(shí)現(xiàn)的,類TeX算法的一個(gè)排版軟件。這個(gè)軟件的歸屬方speedata,是一家提供排版解決方案的公司。
這個(gè)軟件的核心其實(shí)就是Knuth和Plass做的那個(gè)經(jīng)典的TeX算法。其他部分,就是屬于工業(yè)界用什么就用什么,比如不支持8位字體技術(shù),不支持DVI;只支持OpenType和PDF。
考慮到我最近對(duì)PDF的負(fù)面態(tài)度,過多的對(duì)于PDF的批判我就不展開了。不過,他們肯定會(huì)面臨很多細(xì)瑣的問題。
這里我需要做一些Knuth算法的注解。一般而言,從讀文獻(xiàn)到寫出能工作的代碼,對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生大概需要一個(gè)月左右的時(shí)間。想要打發(fā)時(shí)間的,可以讀一讀算法的原始文件。難度倒是不太難。不過,原始文檔中沒有提CJK怎么處理,這個(gè)文獻(xiàn)可以找pTeX的。
其實(shí)這種軟件,越多越好。從我的認(rèn)識(shí)角度上看,我更愿意做從移動(dòng)端到PC端的那種跨平臺(tái)的。這算是一種技術(shù)普適的價(jià)值觀了。不過嘛,這對(duì)很多程序員來說,似乎要求過高了。

本來我還想聊一聊TeX Live中的HINT的,受限于篇幅,有時(shí)間再講。