• ClearType通俗解释


    在解决了IE9字体模糊的问题后,我又继续研究了一下Windows的字体渲染方式,还动手编写了一个程序,这里做一个总结。

    Windows的字体渲染类型有五种:

    • SingleBitPerPixel
    • SingleBitPerPixelGridFit
    • AntiAlias
    • AntiAliasGridFit
    • ClearTypeGridFit

    它们之间的差别如何呢?我写了个程序,大家可以通过这个链接下载到,运行一下就看到效果了。

    https://files.cnblogs.com/guogangj/DrawTextDemo.zip

    “+”和“-”可调整字体大小,右键呼出菜单可以改变字体名称和字体颜色,显示效果如下:

    当然了,这张图是我用放大镜放大后的结果,这样更加明显一些嘛。

    其中的System Default在我的系统中其实是“Single Bit Per Pixel Grid Fit”,大家可以看到是一样的显示效果,黑色的字体也就用黑色来显示(RGB(0,0,0)),而不会插值,当然了,“Single Bit Per Pixel”这种方式也是不会插值的,这两者的不同之处在于Grid Fit是经过网格校正的,所以显示出来的字体更加工整,大家可以看看“宋体”字,在12点大小的显示效果是最棒的。

    Anti Alias也就是抗锯齿了,实际渲染出来的结果会被插值,黑色的字体可能会被插入灰色的像素;Anti Alias Grid Fit是Anti Alias的加强版,经过网格校正,显示效果更好。

    而Clear Type跟上面的插值就不一样了,大家可以看到黑色的字可能会被插入浅蓝色,土黄色等像素。

    需要声明一下的是我个人相当反对“插值”,因为这样会让字体显示变得模糊,不锐利,这对我的眼睛来说简直是折磨……所以到目前为止,我都是想尽一切办法把这种模糊的字体去掉的,但这个很难,因为很多软件在渲染字体的时候都直接指定了如ClearType这种插值渲染模式,而不是使用系统默认,所以你即便关掉了全局的ClearType效果,还是会看到大量“模糊”的字体。

    但有些人却认为ClearType在自己的显示器上显示得很好,这是为什么呢?

    经过初步分析,我认为:一般来说,显示器DPI越高,Clear Type的显示效果越好。这里暂时就不岔开了,关于DPI的详细内容请参考我以前的博文:

    http://www.cppblog.com/guogangj/archive/2010/06/03/117096.html

    我这里给出一张图,png的,以100%的方式显示这张图,如果你看到第二根柱子里的颜色是很均匀的灰度渐变色,那么估计ClearType能够在你的显示器上有很不错的效果;反之,如果你看到的是很明显的蓝红黄三种渐变色,那么估计ClearType在你的显示器上显示效果很糟糕:

  • 相关阅读:
    希望多年以后的自己不再如此迷茫
    【转载】撒旦(Satan 4.2)勒索病毒最新变种加解密分析
    java单例模式
    关于double/float 两种基本类型精度丢失的总结
    关于ecplise中一些很实用的技巧
    安装SQL Server和卸载SQL Server步骤
    我进入部门的第一周
    mysql数据库在Linux和windows下免安装实现以及框架开发碰到的问题
    jenkins发布docker到mesos
    u盘作为git仓库,完成不同地方的代码同步
  • 原文地址:https://www.cnblogs.com/guogangj/p/2373489.html
Copyright © 2020-2023  润新知