Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192157
  • 博文数量: 111
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1240
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-07 07:46
文章分类

全部博文(111)

文章存档

2015年(2)

2014年(1)

2011年(1)

2010年(7)

2009年(100)

我的朋友

分类: LINUX

2009-08-07 09:59:59


转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静

18.X Window 字体处理

X Window支持多种字体,即支持点阵字体,也支持矢量字体。最初,对字体的管理和渲染都是由X Server来做的。但是X Server管理和渲染字体有诸多不便,现在一般都由客户端的fontconfig/freetype来做这部分工作了。

服务器端字体处理

与字体相关的服务有:

* ProcOpenFont : 打开客户端指定的字体。
* ProcQueryFont: 查询的字体信息。
* ProcCloseFont : 关闭客户端指定的字体。
* ProcListFonts :枚举服务端支持的字体。
* ProcSetFontPath :设置字体搜索路径。
* ProcGetFontPath : 查询服务器上字体搜索路径。

在这里,有人可能有点疑惑:打开、查询和关闭字体都有相应的函数,为什么没有看到使用字体的函数呢。原因是这样的,字体是与GC相关联的,设置字体 是通过ChangeGC函数来实现的,在客户端的库里,提供了XSetFont函数,它对ChangeGC进行了封装,使其意义直观一点。

int
ProcChangeGC(client)
register ClientPtr client;

客户字体处理:

客户端处理字体的基本流程如下:

1. 使用Fontconfig匹配到相应的字体。
2. 使用用freetype绘制字体成glyph。
3. 使用Xrender扩展模块把字体glyph画到屏幕上。

Xft对前面两步进行了封装,用起来会方便一点。前面两步是在客户端执行的,后面一步是在服务上执行的。

相应的函数有:

* XftFontOpenName: 打开指定的字体。

* XftDrawString8: 使用指定的字体绘制文字。

阅读(370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~