比如说:
- 吾现在已经给某一段文字,设置了斜体。显然,内存中已有普通字体和斜体的字体。
- 如果再给这一段文字加粗体。那么,现在的问题是:新的斜粗体,是怎样产生的?有两种可能:
- 方案一:基于斜体后加粗形成。
- 方案二:从普通字体开始,先斜体再粗体。
经过研究,FreeType是走的方案二。
那么,能不能走方案一呢?从技术角度来说,当然可以。从实现角度来说,需要考虑的问题有:
- 如何构造字体实例列表。这个看来不难。
- 如果斜体中,对应的字符图像还没有加载,怎么办?加载时,对应的斜体效果要不要保存起来?
- 字体都是先斜体再粗体,如果是先有粗体,再加斜体怎么办?
- 其他复杂情形怎么办?比如做了旋转?
经过上述问题,可以看出优化意义并不是很大。工作量不少,而且只有在某种专门的测试条件下,才能显示出优点。