Answers:
如前所述,字体渲染特别是提示需要极值。
为了理解这一点,让我们首先来看一下在常规像素网格中自动绘制带有极值作为锚点(绿色)的字形¹时发生的大致情况:为了使字体看起来清晰美观,垂直和水平笔划应完全落入像素网格中。任意放置的字形通常将不满足此条件,因此渲染器将使它稍稍变形到该末端,即通过移动极值,因为它们定义了垂直和水平笔触:
此过程需要渲染器进行猜测,因此设计人员可以定义一堆东西(标记的茎,蓝色值),以帮助渲染器完成此过程。请注意,这只是第一步,之后还有很多事情要做,我们不需要关心这个问题。
现在,让我们首先假设我们不仅使用极值定义了字形,还使用了它们之间的一些对角锚。然后,当移动极值时,这些锚点将必须逐渐移动,这又需要猜测,但是与移动极值不同,由于情况的复杂性,字体设计者无法为此提供很多帮助。因此,移动这些多余的锚是相当大的误差来源,尤其是在锚靠近极值的情况下。
最后,我们可以回到问题并考虑如果在极值点上未定义任何锚点会发生什么情况。在这种情况下,渲染器必须在移动极值和所有其他锚点之前自动确定极值(可以轻松地做到这一点)。由于对于许多类型的字体,您自然会选择最接近锚点的位置,因此,由于上述原因,这可能带来猜测错误的风险。
概括一下以上内容:无论如何,Extrema在渲染时都起着至关重要的作用,因此,最好在它们之上构建字形,这样渲染器就不必猜测了。
来自专利US 7068276 B2 –提示字体的方法和系统:
下文所述的算法方法尝试使用诸如轮廓方向和极值等特征来匹配明显的曲线上的结。
轮廓线必须具有正确的方向,否则会影响到蓝色区域的捕捉。形成(准确)形状的点越少越好。但是,用H / V杆提示的曲线应该在极点处有指向,否则它们不会被捕捉。如果这样的观点是“隐含的”,那将是毫无意义的。
¹子像素提示
并没有太大区别²这是一个广泛的简化,因为带有提示的字形放置更加复杂;但是这个例子就足够了
使用贝塞尔曲线时,“极值点”是首选方法的三个原因如下。实际上,特别是在处理字母时,我已经将其描述为必不可少的:
由于这些原因,许多字体软件设计程序都具有用于突出显示和固定不位于最大值和最小值(极值)的点的工具。
说了这么多,我一直在努力将自己的观点设定在极致上,但从未成功过,但是我不认为自己是Bezier Ninja!