conner 发表于 2002-10-22 00:44:52

Fontconfig 及 Xft 2.0 版发布记

Fontconfig.org

作者:Keith Packard (www.xfree86.org)翻译:Connermo (www.linuxfans.org)

Fontconfig是用来设定和配置访问字体的函数库。

关于 Fontconfig

Fontconfig 有以下几个功能:
[*]当拷贝字体的时候,能自动发现新的字体,解决普遍存在的设置问题。

[*]拥有字体替换功能,当所需字体不存的时候,可以换成恰当的替换字体。

[*]可以识别覆盖特定语言所需的一套字体。

[*]因为使用XML为基础的配置文件,所以它内含图形界面配置工具。(虽然我们直觉告诉我们它不是很重要)。

[*]在你安装的所有字体中,可以有效而快速地查找所需的字体,哪怕你装了上千种,同时,内存的使用也是最小化的。

[*]同X的渲染延伸模组和Freetype一起,在屏幕上实现具有高质量,反锯齿和子像素的文字。
Fontconfig 不负责的工作:
[*]不渲染字体(这些交给Freetype和其他渲染系统)

[*]不依赖于X windows 系统,使得只使用打印机的程序和fontconfig没有依赖关系。

关于Xft

xft 目前的版本(2.0) 为X程序提供了一个客户端的应用程序接口(API) 。它使用fontconfig选择字体,然后用X 协议渲染。可能的话,Xft会使用X的硬件渲染延伸模组来加速字体绘制。当渲染延伸模组不可用的时候,Xft使用X核心协议来渲染客户端的字形。这为所有的X服务器提供了完全兼容的客户端支持。


使用核心协议绘制反锯齿文字需要获得目标端的像素(服务器端),合成字形,然后再将它们送回去(服务器端)。当客户端和服务器端有延迟的时候,就会造成一个性能问题。用核心协议绘制非反锯齿文字的时候,就可以将字形直接从客户端送到服务器。这就可以消除任何的延迟反应并且是渲染速度只和带宽有关。精心选择的协议可以让带宽随着字形像素的大小线性变化。所以就算有相对较大的字形的时候,性能也是可以接受的。

当在网络上使用过时的X服务器(没有硬件渲染支持)时,禁用反锯齿功能会提高字体的渲染速度,使得应用程序就算在完全依赖客户端字体的时候也可以运行的比较畅顺。


多变的Xft

有三个差别很大的函数库叫Xft。和XFree86 4.02发表的原来的1.0 xft函数库包含了一个独立的配置方式,使用XftConfig文件。Xft当渲染延伸模组不存在的时候,使用X的核心字体代替客户端字体。这是为了让编写的程序使用一个共同的API并且可以运行在所有的X服务器上。

早期应用Xft1.0的时候,它不同与其他X风格的字体配置方式被充分证明是一个不好的想法。

KDE和pango最后都拿了部分的xft来设置字体。KDE拿了Xft分解代码的建立了一个图形界面的Xft配置工具。Pango则拿了几乎所有的Xft代码,用来让XftConfig文件可以在Xft和FreeType2后端之间共享。Fontconfig最终被设计出来解决这两个问题。

Xft 1.0的另外一个问题就是当服务器没有渲染延伸模组的时候就会使用X核心字体。这意味着当使用高级Xft API时,应用程序不能够依靠客户端字体。显然这个设计是有缺陷的,因为这时客户端需要提供的信息比反锯齿字形还要多很多。

Xft 1.0 API详细充分的抽象化设置使一个二进制兼容版本,并且用调用Fontconfig函数库的方法取代了XftConfig设置文件的Xft 1.1得以开发。不幸的是,Xft 1.0 API没有有效的封装渲染细节,也就不可能在服务器端没有渲染延伸模组的时候提供客户端字体。这意味着Xft1.1 共享字体设置,但在没有渲染器的服务器上并不十分可用。

Xft 2.0封装了几乎所有的底层系统细节,使得开发者可以在任何X环境下放心的使用它的API来访问客户端字体。

2.0 发布

Fontconfig现在发布的是2.0。没错,这是第一次发布这个函数库,命名为1.0应该没有什么问题,但原来有一个早一点的XFree86使用的版本叫"Xft", 有一个1.0的版本,而且因为fontconfig现在和第二个版本的Xft一起发布,所以感觉上不如将这一堆都标为2.0

取得2.0正式版,点击这里。

相关的资料

这里有一些关于fontconfig的东西

GTK+

目前的GTK+和Pango CVS使用Fontconfig 和xft2. 请从gnome.org获取。

Mozilla

这个目录存放了最新的支持Fontconfig和Xft2的Mozilla编译版本。从某种角度,这个会被官方的Mozilla版取代。

Qt 3

这个目录存放了一个让Qt3使用Fontconfig和Xft2而不是Xft1的补丁。Trolltech正忙着将这个支持包括进下一个Qt的发布版本。

Web字体
这里有微软的web字体。

相关站点

XFree86

Fontconfig 被包括在XFree86的发行版里, 并且共享XFree86的CVS库。

Freetype

Freetype是一个免费的,高质量可移植的字体引擎,被Xft用来生成字体。尽管Fontconfig在应用程序上并不表现出任何Freetype的相关性,但它确实在内部使用Freetype从字体文件获得信息。


附注:

Fontconifg 目前共享XFree86的CVS库,如果要使用CVS,请查看xfree86.org的网页。

关于Fontconfig的问题和意见可以发表到[email protected]邮件列表。

这个包包括一个Xfontconfig和Xft源代码tarball,和最新版Xft1和Xrender一起。Fontconfig 和 Xft可以用通常的"./configure && make && make install" 的步骤编译,Xrender和Xft1则用"xmkmf -a && make && make install"。xmkmf对fontconfig和Xft应该也能可以使用。

当用./configure时,你大概需要设置路径到通常的值,在大多数的系统上,最好用"./configure --sysconfig=etc --prefix=/usr/X11R6"

请在pub目录里查找不同版本fcpackage的tar文件,每个版本列出了编译时的年-月-日-小时.分。

pk 发表于 2003-5-10 12:01:27

不错!

herezt 发表于 2006-11-8 16:11:34

web字体包解压了全都是exe,怎么用呀?

zzy8051 发表于 2008-11-12 19:16:22

问一下xft 与fontconfig的关系?8O
页: [1]
查看完整版本: Fontconfig 及 Xft 2.0 版发布记