免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1110 | 回复: 0
打印 上一主题 下一主题

浅出Freebsd的Fontconfig [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-02 16:14 |只看该作者 |倒序浏览

浅出 Fontconfig

类Unix系统桌面环境关于字体的底层支持,目前的桌面应用程序主要是通过Fontconfig,Freetype2+Xft来组合实现字库的匹配、读取和渲染,最终显示在屏幕上。大致的功能模块划分是:

l         Fontconfig主要的功能是根据应用程序对字体的要求,在字库数据库中尽量匹配一种字体。
l         Freetype2 主要的功能是对字库进行操作,根据要求提供具体要显示文字的数据信息,它也提供一些字体的渲染,但是在这种集成解决方案中,只需要它的主要功能。
l         Xft 是X11 server提供的一套函数库,主要是用来对需要现实的文字进行最终的绘制处理,包括对TTF等字体美化,渲染。

最终文字的绘制是由具体的桌面环境库来提供的,这不在本文讨论范围之内。

随着这三个模块的各自的发展,分工协作,使得目前X应用程序文字显示支持越来越成熟。在这三个模块当中,对汉字显示来说,我觉得了解Fontconfig的运作机制非常重要,因为Fontconfig决定着字库的选择,而这对于最终在屏幕上显示什么样的汉字尤为重要。

一、Fontconfig按照主页上的介绍,主要是由两个模块构成:

1、  配置模块:主要的作用根据fonts.conf文件的内容,建立匹配规则
2、  匹配模块:把应用程序传递过来的“字体样板”,与fonts.conf文件中约定的匹配规则进行匹配运算,根据系统安装的字体,找到一种最匹配的字体,并把字体的名字,各种属性传递给后续的“字库操作”。

二、Fontconfig提供了一些工具程序和若干fonts.conf 配置文件来实现用户级的操作和
定制匹配规则。

(一)在FreeBSD系统中,与用户级配置有关的有如下几个文件:

1、~/.fonts.conf   
      
这个文件是针对用户的字体匹配规则文件,作用范围是所在home的用户,这个文件提供了当前用户的字体配置信息,与之相关的是“字体安装目录”,系统默认的目录是“ ~/.fonts ”,对用户来说,只要把需要的字体文件拷贝到这个目录中,就可以在系统中使用了,关于安装字库的配置由Fontconfig自动完成。具体的原理简单的说,就是Fontconfig每隔30秒,会对定义的字体安装目录进行一次扫描,自动地分析字库,并把字库纳入到系统安装字库当中。

2、/usr/X11R6/etc/fonts 目录下的几个文件

/usr/X11R6/etc/fonts/fonts.conf / fonts.conf.default

这两个文件安装时,内容一样,而且建议用户不要对其进行更改,如果要对Fontsconfig的运行环境进行更改的话,比如修改“字库存放目录”,“字体缓存刷新时间”等等,建议修改fonts.conf。

/usr/X11R6/etc/fonts/fonts.dtd

这是xml的fonts.conf 匹配规则的数据类型定义文件,提供可操作字体属性的定义。

/usr/X11R6/etc/fonts/conf.d 目录

其中包含一些对字体具体操作的配置文件,可以包含在fonts.conf 文件中。

(二)工具程序(fc-cache,fc-list,fc-match)

1、fc-cache

用途:建立指定字体目录的字体信息缓存,生成 .fonts.cache-1这样的文件

用法:fc-cache [-fsvV?] 目录名

    -f,--force                   强制进行目录扫描,建立缓存文件
    -s,--system-only        只扫描系统定义的字库目录
    -v,--verbose              显示程序运行状态信息
    -V,--Version             显示版本
    -?,--help                    显示帮助

2、fc-list

用途:显示系统安装字库的列表,字体名称格式是 字体名-尺寸大小:属性[=值]

3、fc-match

用途:显示目前系统字体匹配情况,带—help参数可以获取帮助,也可以查看man手册。

三、Fontconfig的运行原理:

X应用程序打开文件——〉提取文件中的,或者是应用程序定义的字体属性,形成字体样板——〉传递给Fontconfig进行处理——〉Fontconfig根据自定义的fonts.conf中定义的匹配规则,对传递过来的字体样板进行分析、处理——〉填补fonts.conf中没有定义的属性匹配——〉形成标准化的字体样板——〉返回给X应用程序。

返回给X应用程序的字体样板已经包括具体的字体,以及字体信息,以及一些字体的渲染选项,X应用程序根据这个样板,提取相应的字库文件,进行后续的操作。

一个简单的例子:系统中安装了微软的宋体字库,在浏览器中没有确切要求使用这个字体时,访问一个中文网页,也可以正常显示中文汉字。从原理上可以认为,Fontconfi参与了字体的选择,当打开的网页中包含有GB编码信息时,Fontsconfig根据匹配规则,自动选择了中文字库来进行显示。

知道了以上的Fontconfig的运作原理,就可以很容易理解Fontconfig中fonts.conf所定义的匹配规则了。Fonts.conf文件无非是定义怎样根据应用程序的要求匹配一个字体,可以定义匹配模式,也可以针对某个字体进行匹配,用“Test”标签来查找匹配属性,用“Edit”标签进行修改,甚至可以定义是否进行微调和液晶屏显示优化等等。

具体细节参见“Fontconfig使用手册”







本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12258/showart_194289.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP