ClearType 抗锯齿
Microsoft ClearType 抗锯齿是一种平滑方法,可提高字体显示分辨率,而传统抗锯齿。 它显著提高了具有数字接口的彩色液晶显示器的可读性,例如笔记本电脑和高质量平板台式机显示器。 CRT 屏幕上的可读性也得到了一些改进。
但是,ClearType 依赖于 LCD 条纹的方向和顺序。 目前,ClearType 仅针对具有有序 RGB 的垂直条纹的LCD实现。 具体而言,这会影响平板电脑,其中显示器可以面向任何方向,以及那些可以从横向转换为纵向的屏幕。
允许 ClearType 抗锯齿:
- 对于 16 位、24 位和 32 位颜色, (禁用 256 种或更少颜色)
- 对于屏幕 DC 和内存 DC (不适用于打印机 DC)
- 对于具有 TrueType 轮廓的 TrueType 字体和 OpenType 字体
已禁用 ClearType 抗锯齿:
- 在终端服务器客户端下
- 对于位图字体、矢量字体、设备字体、键入 1 字体或不带 TrueType 轮廓的 Postscript OpenType 字体
- 如果字体已优化嵌入位图,则仅适用于包含嵌入位图的字体大小
若要激活 ClearType 抗锯齿,请调用 SystemParametersInfo 一次以打开字体平滑,然后再次将平滑类型设置为FE_FONTSMOOTHINGCLEARTYPE,如以下代码示例所示:
SystemParametersInfo(SPI_SETFONTSMOOTHING,
TRUE,
0,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,
0,
(PVOID)FE_FONTSMOOTHINGCLEARTYPE,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
可以通过更改 ClearType 算法中使用的对比度值来调整文本的外观。 默认值为 1,400,但可以是 1,000 到 2,200 的任何值。 根据显示设备和用户对颜色的敏感度,更高或更低的对比度值可能会提高可读性。 若要更改对比度,请使用 SPI_SETFONTSMOOTHINGCONTRAST 调用 SystemParametersInfo 。 以下代码将对比度值设置为 1,600。
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST,
0,
(PVOID)1600,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
应考虑以下应用程序兼容性的详细信息:
- 使用 ClearType 的文本呈现比使用标准抗锯齿稍微慢一些。
- 应用程序不应使用 XOR 显示所选文本。 应用程序应设置背景色并重新显示所选文本。
- 应用程序不应在透明模式下在自身顶部绘制相同的文本。 如果发生这种情况,抗锯齿边缘像素的颜色将与自身合并,而不是与背景色合并。 这会导致边缘变暗和彩色。
- 在不透明模式下,应用程序不应通过单独绘制字符来绘制文本,因为字符的边缘可能被以下字符剪裁。 出现这种情况的原因是,使用 ClearType 平滑的字符可能具有负 A 或 C 宽度,其中常规字符具有正 A 或 C 宽度。 仅保证字符的 B 宽度相同。 同样,如果平滑文本位于非平滑文本旁边,应用程序应小心谨慎。
- 如果应用程序呈现文本,然后操作位图,则应通过将 LOGFONT 结构的 lfQuality 成员设置为NONANTIALIASED_QUALITY来关闭字体平滑。 例如,游戏可能会添加位图阴影效果,或者可以缩放呈现到位图中的文本以生成 Thumbview。
- 如果用户在纵向模式下运行 (即,监视器条带化是水平) 应禁用 ClearType 抗锯齿。
CreateFont 中的 fdwQuality 参数和 LOGFONT 的 lfQuality 成员接受 CLEARTYPE_QUALITY 标志。 使用此标志创建的字体光栅化将使用 ClearType 光栅器。 此标志对以前版本的操作系统没有影响。