欢迎光临散文网 会员登陆 & 注册

我对XeTeX还是很不爽啊!

2022-03-15 23:37 作者:clerk_ma  | 我要投稿

虽然我是个TeX开发者,但是这几年的TeX使用已经已经进入化境。说人话的话,那就是我经常用TeX干一些普通用户很少干的事。比如用TiKZ画图,尤其是字体数据的可视化。

过年的时候跟朋友说了一下《普林斯顿应用数学指南》的一些事。这书很有意思,我看了大半之后发觉,应用数学的大部分领域,基本上都涉及计算机。这书里面有几节对于LaTeX相关内容的描述。比如TiKZ,这东西是DSL中的DSL。

DSL中的DSL。怎么理解呢?第一层DSL,其实指的是TeX。TeX虽然图灵完备。但是很显然它不是干所有的东西都很内行。比如我很久之前大概讲过Lisp on TeX。但是,能做和特别擅长于做还是很不一样的。

之所以说TiKZ是DSL中的DSL,我转换一下说法,就是说,TiKZ用TeX的宏系统实现了一个特定领域的东西。比如说,如果我做了一个字体描述的东西,它也是个DSL。

从TiKZ的话题上折回来。为啥我还在用XeTeX呢?主要是API稳定。这个稳定,也只是部分API。比如XeTeX的Shaping API,就随着Harfbuzz的变化而变化,不算稳定的API。稳定的API指的是,XeTeX对于glyph的读取的相关API。

为什么不提LuaTeX呢?主要是我比较懒。LuaTeX虽然底层提供的API比较丰富,甚至可以通过Lua的callback来给排版流程挂钩子。但是它封装的那套fontforge的API的文档是真的很蹩脚。我虽然知道Type 1,TrueType,OpenType的细节,但是涉及glyph的东西,我懒得搞的。

我对XeTeX的不爽,主要还是在字体的查找上。

众所周知,XeTeX的字体查找,在mac上面是用的系统API,但是在Linux和win上面都是使用的fontconfig。

我们也知道,另一个众所周知,就是开源软件界有一个KISS原则,但是读经人读不懂经的时候,就麻烦了,想把经烧了。模块是可以接模块的。但是一旦出问题,可是得按模块debug的。这一点就很痛苦。

fontconfig的令人痛苦之处,它是一个开源的基础组件,但是API使用上,需要用户了解一定的字体知识。这就很麻烦了。更麻烦的地方,是它的文档其实写的不太好。这个痛苦就跟呼叫转移一样,转移到XeTeX上去了。

希望今年有时间把我想做的类似的库搞出来。

回家的这三四天,睡觉是真舒服。主要还是村里面比较安静,虽然傍晚的时候能听到村里面的狗叫鸡叫鸭叫鹅叫。空气潮湿且清新,可以晒着太阳发呆。吃得少,睡得好,心情也是好。

所以这是一个特别理想的开发环境。当然,美中不足的地方就是炕比较硬,我没有买垫子,不能久坐。所以这样看来,实际上是我在北京的生活环境影响我写代码的状态。比如,今天回到家,屋里就热的够呛,这样大的温差,出门不感冒果然得算是奇迹。


我对XeTeX还是很不爽啊!的评论 (共 条)

分享到微博请遵守国家法律