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 参数和 LOGFONTlfQuality 成员接受 CLEARTYPE_QUALITY 标志。 使用此标志创建的字体光栅化将使用 ClearType 光栅器。 此标志对以前版本的操作系统没有影响。