LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1551|回复: 14

乱开 LCD sub-pixel 子像素对中文字的恶果,有图可鉴

[复制链接]
发表于 2006-7-28 13:43:30 | 显示全部楼层 |阅读模式
以下讨论针对 LCD 屏,CRT 免进,显示原理不同。
附件一关 sub-pixel
附件二开 sub-pixel
附件三为 测试 html, 数字代表 pixel size,测试字体为 xp 下的 simsun.tcc, 且不开启内嵌点阵的 anti-alias(即 12,13,14,15,16,18 px),其它 px 开启 anti-alias。

下载图片后,放大既得看到效果。
关 sub-pixel,字体边缘色调一致。
开 sub-pixel,字体边缘出现花花绿绿的色彩,这就是滥用 sub-pixel 的恶果,而点阵字体不受 sub-pixel 技术的影响,故显示正常。

结论,sub-pixel 技术对英文字体比较有效,而对中文,日文等复杂的亚洲字体,反而适得其反,故建议亚洲字体关闭 sub-pixel。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-7-28 14:40:47 | 显示全部楼层
怎样开关sub-pixel?:ask
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-28 14:53:35 | 显示全部楼层
参考我的, 一般我会放到 local.conf 文件,你也可以放到 ~/.fonts.conf 里。
前提是你全局开了 sub-pixel
$ vi /etc/fonts/local.conf
  1. ......
  2. <!-- 使用内嵌的点阵字体部分 -->
  3.         <match target="font" >
  4.                 <edit name="embeddedbitmap" mode="assign" >
  5.                         <bool>true</bool>
  6.                 </edit>
  7.         </match>
  8. <!-- simsun.ttc 的全局设置,关 sub-pixel,开 AA -->
  9.         <match target="font" >
  10.                 <test qual="any" name="family" compare="eq" >
  11.                         <string>SimSun</string>
  12.                         <string>NSimSun</string>
  13.                 </test>
  14.                 <edit name="rgba" mode="assign" >
  15.                         <const>none</const>
  16.                 </edit>
  17.                 <edit name="antialias" mode="assign" >
  18.                         <bool>true</bool>
  19.                 </edit>
  20.         </match>
  21. <!--simsun.tcc 内嵌点阵 px = 12, 13, 14 ,15, 16 关 AA -->
  22.         <match target="font" >
  23.                 <test qual="any" name="family" compare="eq" >
  24.                         <string>SimSun</string>
  25.                         <string>NSimSun</string>
  26.                 </test>
  27.                 <test name="pixelsize" compare="more_eq" >
  28.                         <double>12</double>
  29.                 </test>
  30.                 <test name="pixelsize" compare="less" >
  31.                         <double>16.5</double>
  32.                 </test>
  33.                 <edit name="antialias" mode="assign" >
  34.                         <bool>false</bool>
  35.                 </edit>
  36.         </match>
  37. <!-- simsun.tcc 内嵌点阵 px = 18 关 AA -->
  38.         <match target="font" >
  39.                 <test qual="any" name="family" compare="eq" >
  40.                         <string>SimSun</string>
  41.                         <string>NSimSun</string>
  42.                 </test>
  43.                 <test name="pixelsize" compare="more_eq" >
  44.                         <double>18</double>
  45.                 </test>
  46.                 <test name="pixelsize" compare="less" >
  47.                         <double>18.5</double>
  48.                 </test>
  49.                 <edit name="antialias" mode="assign" >
  50.                         <bool>false</bool>
  51.                 </edit>
  52.         </match>
  53. ......
  54. </fontconfig>
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-7-28 15:55:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-28 18:28:52 | 显示全部楼层
那个补丁试过,上次我还贴过,只是换了种算法,效果不是非常理想,也就是放大了看,把一种效果换成另外一种效果。
而且最主要的是上面补丁链接中引用的有关子像素原理链接,明确说明子像素对中文等复杂字型毫无作用,很可能是反作用,只对英文等简单字型起作用,所以上面补丁和我讲的一点关系没有。
原理链接:
http://www.grc.com/cttech.htm
回复 支持 反对

使用道具 举报

发表于 2006-7-28 18:54:56 | 显示全部楼层
好一点是一点,至少没那么严重了。。。懒得贴图了

再就是开subpixel之后英文字体漂亮多了。

实际网页里面,大号非粗体的simsun非常少,所以并不是很大的问题。
回复 支持 反对

使用道具 举报

发表于 2006-7-30 11:59:24 | 显示全部楼层
用了你的代码,我的firefox好有这个问题。

[PHP]
$ cat ~/.fonts.conf
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

<!-- 使用内嵌的点阵字体部分 -->
        <match target="font" >
                <edit name="embeddedbitmap" mode="assign" >
                        <bool>true</bool>
                </edit>
        </match>

<!-- simsun.ttc 的全局设置,关 sub-pixel,开 AA -->
        <match target="font" >
                <test qual="any" name="family" compare="eq" >
                        <string>SimSun</string>
                        <string>NSimSun</string>
                </test>
                <edit name="rgba" mode="assign" >
                        <const>none</const>
                </edit>
                <edit name="antialias" mode="assign" >
                        <bool>true</bool>
                </edit>
        </match>

<!--simsun.tcc 内嵌点阵 px = 12, 13, 14 ,15, 16 关 AA -->
        <match target="font" >
                <test qual="any" name="family" compare="eq" >
                        <string>SimSun</string>
                        <string>NSimSun</string>
                </test>
                <test name="pixelsize" compare="more_eq" >
                        <double>12</double>
                </test>
                <test name="pixelsize" compare="less" >
                        <double>16.5</double>
                </test>
                <edit name="antialias" mode="assign" >
                        <bool>false</bool>
                </edit>
        </match>

<!-- simsun.tcc 内嵌点阵 px = 18 关 AA -->
        <match target="font" >
                <test qual="any" name="family" compare="eq" >
                        <string>SimSun</string>
                        <string>NSimSun</string>
                </test>
                <test name="pixelsize" compare="more_eq" >
                        <double>18</double>
                </test>
                <test name="pixelsize" compare="less" >
                        <double>18.5</double>
                </test>
                <edit name="antialias" mode="assign" >
                        <bool>false</bool>
                </edit>
        </match>
</fontconfig>

[/PHP]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-30 16:56:03 | 显示全部楼层
楼上的兄弟,你浏览器中的字体用的是黑体啊!好像是微软雅黑或华文细黑之类的(它们都不带点阵),标题栏用的才是点阵宋体。
所以你要针对自己字体设置子像素,不要直接把我的貼过来,我只是拿 simsun 举了个例子。
看图片,黑体字体边缘花花绿绿的,估计是受了子像素的影响。
回复 支持 反对

使用道具 举报

发表于 2006-7-30 18:01:40 | 显示全部楼层
好像字体首选项里面可以全局性的关闭次像素微调的吧。反正我是关了。英文字体用的Bitstream Vera Sans,还成。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-30 18:14:07 | 显示全部楼层
可以全局设置,也可以针对某个字体开关子像素,子像素原理对某些英文字体是有帮助的,如果有耐心,可以一个个调试,比较方便的方法是用 firefox,可以比较快的看到效果,而不需要退出 X。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表