TrueType是一种轮廓字体,每个字符的形状样子是通过数学形式(贝赛尔曲线)精确表达,而不是一张图。

一、字形Glyph

一个字形表示一个字符的样子。比如:

  • 英文字母:a、b、c、d
  • 中文字母:啊,比,吃,地

每个字形由一些系列的点组成,每个点都有一个开关on/off-curve,意思是点是否在曲线上,两个on-curve的点表示一条直线,如果两个on-curve点中间有一个off-curve点,则表示了一个条贝赛尔曲线
点击查看【processon】
一个字符可能有多个字形Glyph组成,比如汉语拼音带了一个音调的字形。TrueType提供了一种特殊的组合字形来支持这种情况。
微信图片_20210206173149.jpg

二、轮廓

一条闭合的贝塞尔曲线就是一个轮廓,一个字符的字形可能是由多个轮廓构成。比如“C”有1个轮廓,字符“B”则有三个轮廓,空格字符没有轮廓,只占用一个宽度。
微信截图_20201001102218.png
字体厂商必须保证每个点的顺序,这个顺序决定了轮廓的方向,轮廓的方向总是由低索引值的点指向高索引值的点,它决定了哪面填充颜色。

三、字形格子Grid

构成字形的所有点都放置在一个格子上,格子的尺寸由设计者决定。
它其实就是一个二维坐标系,单位是字体单元(font-unit),每个点的范围在-16384 ~ 16383字体单元之间。
尺寸越大,字形越精细,通常是2的指数倍,在缩放时可以高效处理。
fbc8f748eeef314cbeb25a7dfe3eb1f.jpg