Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512292
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: LINUX

2010-01-04 13:30:32

摘自《开源世界旅行手册》作者:Kardinal

freetype 渲染引擎

作为 Xorg 服务器的一个模块,freetype 的功能包括读取 Truetype 字体信息,如大小、分辨率、编码等,并以之为依据渲染字体 – freetype2.x 相对于 freetype1.x 增加了抗锯齿等功能 ( /etc/X11/xorg.conf 的 Module 字段中,可以选择字体渲染模块 )

freetype 只负责渲染字体。而查找字体,则可以由 X服务器、X客户端 或者 字体服务器来 完成。找到字体后,使用 freetype 引擎进行渲染

X核心字体

    X服务器根据X客户端的请求(字符编码),查找字体并进行渲染,然后显示

Xft字体

    X客户端自行查找字体并进行渲染,X服务器只负责显示。由于 Xft字体 的渲染在客户端完成,所以它可以动态的加载,而不需要随同X服务器一同启动

字体服务器

    当客户端请求字体时,X服务器将请求转发到字体服务器,由字体服务器查找字体,并使用 freetype 引擎渲染,将结果传回X服务器,X服务器进行显示

X核心字体

/etc/X11/xorg.conf 中可以配置X核心字体的搜索路径

Section “Files”
FontPath “/usr/X11R6/lib/X11/fonts/misc/”
FontPath “/usr/X11R6/lib/X11/fonts/Type1/”
FontPath “/usr/X11R6/lib/X11/fonts/Speedo/”
FontPath “/usr/X11R6/lib/X11/fonts/100dpi/”
FontPath “/usr/X11R6/lib/X11/fonts/75dpi/”
EndSection

  • 当X客户端向X服务器请求显示文字的时候,X服务器会按上面列表的先后顺序查找字体。显示中文时,如果第一个路径中的字体不包含中文,则查找下面的路径,直到发现中文字体
  • 请将您偏好的字体放在靠前的位置

要使安装的字体能够作为X核心字体使用,将字体的安装路径添加到上面的列表中,使用 mkfontscale 、 mkfontdir 扫瞄文件夹中的字体,并生成索引,就可以了(建议使用 ttmkfdir 生成 fonts.scale ,将其复制为 fonts.dir )

字体的选择及显示风格,可以修改 GTK1 的配置文件,或者在Xresources文件中对程序单独进行定义

事实上,在我们的日常应用中,X核心字体环境并不常见,使用 GTK1 图形库的程序、某些类型的终端……

XFT字体

Xft字体相关选项在 /etc/fonts/fonts.conf 文件中配置

/usr/share/X11/fonts
/usr/share/fonts
/usr/local/share/fonts
~/.fonts

可以使用 fc-cache 命令,递归扫瞄上面目录中的字体(包括子文件夹中的字体),建立字体缓存

多数支持 GTK2 或者 Qt 图形库的X客户端能够使用 Xft字体 渲染技术

安装字体,只要将字体拷贝到以上任意目录, fc-cache -fv 刷新字体缓存即可 (选项: -f 强制刷新; -v 显示过程)

使用命令 fc-list 列出所有可用字体。字体的选择及显示风格,可以修改 GTK2 或者 Qt 的配置文件,建议使用图形界面配置

相关知识:

X Window是所谓client-server结构,这里的server管显示(输出)、键盘和鼠标(输入)部分,而client则是你正在用的程序,比如编辑器。Server收集键盘和鼠标的输入,送到编辑器这一client,编辑器经过处理后,回过来再让server去显示一些字到屏幕上,来回折腾。

怎样显示一个字呢?

一个字实际上就是一个小图,如果小图上的点非黑即白,就称为黑白点阵;如果小图上的点可以有不同的亮度甚至颜色,则称为AA点阵。每个字,也就是每个小图都有固定的编号,编辑器(client)可以只告诉server某个编号,server根据该编号去找出对应的小图,这种方案就是所谓的server side font,如FreeType,X-TrueType等backend就属此类;如果编辑器自己去找小图,干脆把小图送给server去显示,这种方案就是所谓client side font,Xft属这一类。

  server side font
    FreeType backend: 即XF86Config中的freetype模块
    X-TrueType backend: 即XF86Config中的xtt模块
  client side font
    Xft: 设置文件是fonts.conf

还有一类,xfs,跟server side font一样,client把字编码传给server,但server并不直接从字库中读出对应该编码的小图,而是把编码再传给另外
的所谓font server,由font server去字库找出对应的图,返回给X server去显示,姑且将这种方式称为font server font:

  font server font
    xfs: 设置文件是X11/fs/config

不管是哪一类,最终都要去字库文件读出对应编码的小图,至少对TrueType格式的字库文件而言,xtt也好,freetype也好,Xft也好,几乎都用到了FreeType这一字库engine,虽然xtt没人继续改进,还是用FreeType 1,别人都改用FreeType 2了。正因为大家都用FreeType字库engine,使得xtt,freetype,Xft这些名字容易弄混,让人头大。解决的办法很简单:不要再去管什么xtt,不要再去管什么freetype,不要再去管什么xfs:只要弄清Xft就够了。

阅读(1244) | 评论(0) | 转发(0) |
0

上一篇:I18N简介

下一篇:ssh远程连接与Xwindow

给主人留下些什么吧!~~