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

用METAFONT做字体的一些感受(2022/06/14)

2022-06-14 17:09 作者:clerk_ma  | 我要投稿

最近在做的一个字体项目里面用了METAPOST画图。这东西的核心算法和METAFONT是一样的,区别只在于METAPOST出的是矢量图,且去掉了一些输出字体相关的代码。

使用METAPOST的感觉就是,这东西上来直接学会非常难受。但是如果用过字体编辑软件,就会发现METAPOST非常好用。这个好用,虽然大部分是逻辑上的,但是在琢磨透了之后,会发现逻辑想象和最后等视觉呈现,差异不大。这在LaTeX中都很难做到。

字体的数字化呈现,最早是点阵(bitmap)。后来随着PostScript和TrueType的出现,变成了矢量描述形式的。

但是,套用一下编译原理的术语体系,设计层面的东西,属于前端,PostScript/TrueType属于中端,bitmap属于后端。

而METAFONT体系的东西,属于前端和中端的复合体。

前几年,OpenType更新specification,把AAT中的Variable Font加进去了。当时有几篇英语的文章就提了METAFONT几次。中文的文章,也亦步亦趋地翻译过来。

但是呢,在互联网上写博客的,说这俩都没说明白。

当然,我在这也说不明白,因为这俩东西的细节,需要写50张以上的A4纸。我能说的只是感觉和一些体会。

感觉的第一个,就是Variable Font不是什么复杂的技术,就是图形学中常见的插值算法。这些个算法可以通过METAFONT定义宏来模拟出来。

更重要的区别,也是本质的区别,就是METAFONT可以定义pen结构,这是一种凸多边形的描述结构。这个pen可以沿着贝塞尔曲线移动,进而填充出包络(envelop)。这个包络相当于现在的字体中填充了的contour的概念。

第三点,就是METAFONT中的向量和标量运算功能十分丰富。虽然,我依然不太满意,写了一些新函数(中间使用了maxima运算)。这一点就导致了,在设计字形的时候,向量运算非常重要。这些运算功能,也不完全是声明式的,能用等式推导出来。这个特性在设计字形的时候,可以聚焦于局部的特征。

第四点,就是METAPOST中存在贝塞尔曲线的自动推导。这个算法,形象一点,就像吹气球一样,把轮廓填充得很圆滑。不过,这个算法是半自动的,比如说可以通过角度控制(毕竟对于设计师来说,具体的参数点对他们来说属于无意义的)。当然,直接丢控制点进去也可以出曲线。这个算法的推导,需要做一些练习才能理解。

虽然在TeX社区里面,METAFONT的用户并不多,甚至METAPOST是定义为画图的,但是这个东西确实很重要。学习起来难度是不小,但是还是可以学,学起来大有好处。学不起来,那就很可能是方法和场景不匹配。


用METAFONT做字体的一些感受(2022/06/14)的评论 (共 条)

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