6.10 安装字体

对于基于Xlib编写的程序,一般简单的字符使用X中的内置字体就可以应付了。X的内置字体在libXfont中:

6.10 安装字体 - 图1

其中file_6x13中记录的就是简单的点阵字体,又称位图字体,显然这个内置的点阵字体是把每一个字符都分成6×23个点,然后用每个点的虚实来表示字符的轮廓。

这也是为什么前面在没有安装字体的情况下,使用Xlib编写的例子可以显示字符的原因。但是既然有内置的字体,那为什么使用GTK的程序不能显示字符呢?原因是GTK程序的字体是在客户端绘制的,客户端绘制完成后,将字形位图传给X服务器。而GTK中并没有像libXfont那样内置了字体,所以如果系统中没有安装字体,当然应用就找不到字体了。因此,我们需要安装字体。

字体的安装非常简单,直接把字体文件复制到相关的目录下即可。但是安装在哪个目录下呢?前面我们已经看到,Linux使用Fontconfig寻找字体,因此这个问题要问Fontconfig。没错,Fontconfig在其配置文件中明确指明了其寻找字体文件的目录:

6.10 安装字体 - 图2

6.10 安装字体 - 图3

这里,我们使用文泉驿字体,并将其安装到vita系统的/usr/share/fonts目录下,命令如下:

6.10 安装字体 - 图4

安装完字体后,再次执行gtk_hello,就会发现字符不再是一个一个的“方框”了,如图6-30所示。

6.10 安装字体 - 图5

图 6-30 安装字体后的GTK程序

而且,可以在vita系统的/var/cache/fontconfig目录下看到类似如下的Fontconfig用于快速搜索字体的缓存文件:

6.10 安装字体 - 图6

至此,基础的图形环境已经安装完毕,可以运行基本的具有图形界面的程序了。但是我们也看到,这个图形环境是个裸环境,没有任务条、没有桌面背景。应用程序的窗口也是个裸窗口,没有标题栏、没有边框,不能最大化和最小化、不能关闭,也不能移动,甚至当启动多个应用时,我们也没有办法在多个应用间切换等。这些问题,我们留给下一章。