渲染引擎绘制OTF字体需要支持哪些基础图元?
OTF字体渲染所需新增基础图元说明
要支持OTF格式字体的完整渲染,你仅需要新增两类矢量图元的描边、填充支持即可,无需额外扩展其他底层能力:
- 二次贝塞尔曲线
- 三次贝塞尔曲线
原理说明
OTF字体的矢量轮廓分为两类实现逻辑,对应上面两类图元需求:
- 基于TrueType轮廓的OTF文件:所有字符的字形轮廓完全由直线段、二次贝塞尔曲线拼接构成,你现有已经支持直线段渲染,补全二次贝塞尔的渲染能力即可完整覆盖这类字体的渲染需求。
- 基于PostScript(CFF/Type 1)轮廓的OTF文件:所有字符的字形轮廓完全由直线段、三次贝塞尔曲线拼接构成,补全三次贝塞尔的渲染能力即可完整覆盖这类字体的渲染需求。
现有能力复用方案
你当前已支持的三角形填充能力可以直接复用在字形填充场景:
通用实现方案是先将贝塞尔曲线构成的闭合字形轮廓做三角化(Tessellation)处理,拆分出大量无重叠的三角形后,直接调用你现有已实现的三角形渲染逻辑即可,不需要单独开发曲线填充相关的新能力。
如果不想做三角化处理,也可以用扫描线算法配合你已有的线段绘制能力实现填充,不过三角化方案的性能、兼容性表现更优。
内容的提问来源于stack exchange,提问作者OKEE
相关产品推荐
相关产品推荐

