转:
http://my.opera.com/linuxsir/blog/show.dml/389529
1)
问: 什么是字体(Font)?常见字体有那几种?
答:字体一般来说需要包含两个要素:字符的图像信息和字符编码到这些图像信息的映射。
字体的主要功能是将字符的编码转换为一个图片用以显示在屏幕或者用户界面上。从编码到字符的映射有很多中情况:多个编码映射为一个图像:(比如fi),一个编码映射到多个图像,但最常见的还是一个编码一个图像。
常见的字体有两大类,一类称为位图字体(或者点阵字体),这类字体一般需要用一个二值(0-1)矩阵来表示一个符号,0-1矩阵信息将在屏幕上转换为黑白图像,这样的字体包括bdf,pcf,fnt,hbf等格式;第二类称为矢量字体(outline font),这类字体中每一个符号是通过数学曲线来描述的,字体中包含了符号边界上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些数学曲线,然后进行一定的数学运算来进行渲染。这类字体的好处是字体可以无限放大而不产生锯齿,使用于高质量的打印和屏幕显示。矢量字体主要包括Type1和True -Type等几类,其中
Type1和True-Type比较可以从如下[链接]查看,简言之,True-Type使用了二次B样条,而Type1使用了三次B样条曲线来描述符号边界,因而TrueType数学相对简单,易于hinting。
2)
问:为什么我在term中使用wqy点阵字体,英文很难看,没有办法对齐?
答:英文字体有两大类,一类叫等宽字体,所有字母数字宽度相同;一类叫非等宽字体,字母数字宽度不同(比如i和m两个字母)。文泉驿点阵宋体中的英文是非等宽的,而一般term中使用的英文字体要求是等宽的,这样就造成了显示上的问题。我们的建议是:在字体选择对话框中选择一个合适的等宽英文字体,如果系统上正确安装了wqy字体,那么term在显示中文时会自动使用wqy点阵字体来显示。
3)/usr/share/fonts/X11/misc/fonts.dir:
wenquanyi_12pt.pcf -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-p-80-iso10646-1
4)
linux字体文件 fonts.dir分析
a)fonts.dir的第一行一般是告诉Xwindows一共有多少行字体信息,从第二行开始起就是正式的字体设置信息了,一般分两部分,第一部分为参数部分
5)
/etc/X11/xorg.conf中定义的字体路径是为core X fonts系统使用的。查看命令:xlsfonts
/etc/fonts/fonts.con是fontconfig字体配置文件,刷新字体缓存:sudo fc-cache -f 查看命令:fc-list
a)gtk1的程序是不支持fontconfig的,xorg.conf定义后还要进行"注册"gtk1才找到,在fontpath里生成两个文件fonts.dir fonts.scale,就是一个"索引"。生成工具有mkfontdir,mkfontscale,ttmkfdir等等。
gtk1程序有xmms,gimp.....
b)gtk2和qt程序使用fontconfig。xorg.conf、fonts.dir、font.scale就没有用了
d)字体大类
i)serif:在字的笔画开始及結束的地方有额外的装饰,而且笔画的粗细会因直橫的不同而有不同
ii)Sans Serif:沒有这些额外的装饰,笔画粗细大致差不多
iii)Monospace:等宽字体
e) <alias>
<family>SomeFont</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>SimSun</family>
</prefer>
<accept>
<family>Times</family>
<family>AR PL New Sung</family>
</accept>
<default>
<family>FreeSerif</family>
</default>
</alias>
当程序要求SomeFont字体时,fontconfig依序查找,先找prefer中的字体,再找SomeFont本身,然后找accept中的字体,最后找default中的字体。
f)fc-match monospace
wenquanyi_10pt.pcf: "WenQuanYi Bitmap Song" "Regular"