转载:http://blog.csdn.net/wesleyluo/article/details/7470362

linux下主要使用xtt freetype xfs xft这四种字体引擎,以下是这四种字体引擎的区别,
xtt, freetype, xfs, xft等的区别
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就够了。

X字库设置必读: Juliusz Chroboczek的Fonts in XFree86
  http://www.xfree86.org/~dawes/4.3.0/fonts.html

理论知识
freetype分两个主要阶段的版本:1.x和2.x。Freetype 是开源字体渲染引擎,并不只为X设计。它的功能就是读取Truetype字体信息,如大小、分辨率、编码等,然后渲染成所需的位图数据输出。2.x与1.x 相比最大的差别就是加入了抗锯齿功能。
其中freetype和xtt是X的内部模块,都是使用freetype1来渲染字体。
xfs以服务的形式出现,也可以作为X的内部模块,使用freetype2来渲染字体。
xft也属于一个外部服务程序,以动态链接的形式提供,也就是说在需要的时候才被加载,同时也只有xft支持antialias。xft使用FontConfig来自定义和选择字体。
freetype、xtt和xfs可在X下用xlsfonts列出当前可用的X核心字体,xft可用fc-list列举当前可用字体。
这么多引擎到底用哪个好呢?freetype推荐使用2.x版本,所以如果当你使用的程序不支持xft的时候最好使用xfs。而对于中文的支持其实xtt的效果最好,因为对于小字体用函数描述法算出来的中文字体效果不能让人满意,所以很多中文字体公司就在Truetype字体里嵌入了位图字体。这些位图字体需要用特殊的方式读出来,所有的引擎中就只有xtt能做到这一点。但xtt有个问题就是速度太慢,反正我使用debian时使用xtt的时候使用 SimSun字体很慢的,但愿是我的配置有问题吧。当然了,能使用xft的时候一定要使用xft哦,xft显示出来的字体确实很漂亮,尤其是使用 Microsoft的Tahoma字体效果特别明显,你可以用fvwm配置着试一下,使用X核心字体-microsoft-tahoma-medium- r-normal--12-*-*-*-*-*-iso8859-1,然后再使用FontConfig来渲染试下xft:Tahoma:Medium: Size=12:encoding=iso8859-1,看看效果就知道了,gtk2和kde目前都采用xft来显示字体。

配置
freetype 和xtt的配置很简单,只要在/etc/X11/XF86Config-4(XFree86)或/etc/X11/xorg.conf(xorg)文件中加入FontPath 您的字体目录然后加载相应的引擎模块即可,注意的一点是freetype和xtt都是用freetype1来渲染字体不能同时使用的,只能加载其中一个模块。添加新字体时只需要在你新加的字体目录中创建fonts.dir和fonts.scale文件即可,创建方法可使用mkfontdir和 mkfontscale或者ttmkfdir,据说mkfontdir和mkfontscale创建的fonts.dir和fonts.scale有问题,但我使用时好象没遇到过问题,如果不行的话就用ttmkfdir创建fonts.scale然后再复制一个fonts.scale为 fonts.dir,具体操作可以看看man pages,进入你新建的字体目录下执行mkfontdir和mkfontscale或者执行ttmkfdir && cp fonts.scale fonts.dir即可。(注:如果你不知道将FontPath和LoadModule加在什么地方的话就别用X了哈)
xfs 的配置大同小异,xfs的配置文件为/etc/X11/fs/config。如果需要添加字体也需要创建fonts.dir和fonts.scale,创建方法同上,注意这儿字体目录不是添加在/etc/X11/XF86Config-4或/etc/X11/xorg.conf,而是将字体目录添加到 /etc/X11/fs/config中的catalogue那一行中,然后重启xfs服务/etc/init.d/xfs restart,不过你要注意在你的/etc/X11/XF86Config-4或/etc/X11/xorg.conf中是否加过了FontPath "Unix/:7100",如果没有的话自己手动加上吧。
xft的配置稍微麻烦一些,配置文件为/etc/fonts/fonts.conf,有点累了,看看我的另外一篇文章“ ”吧。添加新字体的话执行一下fc-cache -fv 你的新字体目录即可。
添加了新字体后,如果是xft可以用fc-list看看你新添加的字体应该已经列出来了(这个程序是基于console的,你在控制台就可以检查),如果是使用freetype、xtt或xfs的话你需要进入X然后执行xlsfonts检查是否列出了你新加的字体。

使用
用fvwm来检验效果是最好的了,你可以打开~/.fvwm/.fvwm2rc也可以在fvwm下打开fvwm的console模块进行试验,举个例子可以简单地加一个中文的菜单条目,然后配置菜单的样式。
如果只试验freetype你可以编辑你的XF86Config-4或xorg.conf加载freetype,注释掉FontPath "unix/:7100",如果只试验xtt也是编辑它但不同的是加载xtt而不是freetype(如果有LoadModule freetype请注释掉),如果只试验xfs的话就只留下FontPath "unix/:7100"同时去掉加载freetype或xtt的行。
对于freetype、xtt或xfs的使用都是一样的,设置fvwm的菜单样式可以这样设置MenuStyle * Font "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,-misc-simsun-medium -r-normal--12-*-*-*-*-*-gbk-0,-*-"(对于iso8859-1字符集的文字使用helvetica字体显示,对于 gbk-0字符集的文字使用simsun显示,其它的自动查找吧)。
如果你要在fvwm中使用xft的话不用修改XF86Config- 4或xorg.conf,直接这样设置fvwm的菜单样式MenuStyle * Font "xft:Tahoma:Medium:Size=12:encoding=iso8859-1",如果要显示中文则这样设置MenuStyle * Font "StringEncoding=gbk-0:xft:SimSun:Medium:Size=12:encoding=iso10646-1",使用 xft实现刚才的功能(中英文使用不同的字体显示)我一直没找到方法,如果你知道的话一定记得告诉我,在此谢过了。

linux 下的字体引擎(xtt freetype xfs xft)相关推荐

  1. linux 下的字体引擎

    linux下主要使用xtt freetype xfs xft这四种字体引擎,以下是这四种字体引擎的区别, xtt, freetype, xfs, xft等的区别 X Window是所谓client-s ...

  2. Linux下添加字体(QT可用)

      Linux下面的字体(特别是一些嵌入式设备)不像windows下那么丰富,不过也可以自己手动添加.主要就是.ttf文件的搬运工~下面就来说说如何在Linux下添加字体吧!   1.首先在windo ...

  3. linux 字体 命令,Linux下的字体

    Linux下的字体 /* Layout-provided Styles */ h1.title { font-size: x-large; margin-bottom: 1ex; text-align ...

  4. linux查看使用的字体大小,查看linux下的字体

    查看linux下的字体 2018-12-07 查看所有字体: fc-list 查看中文字体 fc-list :lang=zh 用fc-list找出语言为zh的字体文件,可见系统里中文字体少的可怜.知道 ...

  5. Linux 下 美化字体

    一学即懂! linux下主要有两套字体系统,X11核心字体系统和xft字体系统.其中,应用越来越广泛的是xft字体系统.gtk2.qt等都采用xft方式进行 字体渲染.xft本身并没有配置的功能,需要 ...

  6. linux php lt,PHP GD 库在 Linux 下使用字体

    现在一般的 PHP 主机都支持 GD 库和 FreeType/TrueType,普通的画字符串的函数 imagestring 只能指定字体大小,不能指定字体名称.像 imagettftext 这样的函 ...

  7. Linux下默认字体是什么,linux默认字体是什么

    呵呵,都没看出差异,难道我眼睛有问题?字体不同?楼主考眼力吧?###### 引用来自#2楼"xyz555"的帖子 呵呵,都没看出差异,难道我眼睛有问题?字体不同?楼主考眼力吧? 不 ...

  8. linux安装中文字库 italic,在 Linux 下安装字体

    Most of computer fonts people using are TrueTpye fonts. TrueType fonts end with .ttf, which stand fo ...

  9. Linux 下安装字体

    今天装上了李师兄下载的徐静蕾的字体,感觉不错,用它写了自己的名字然后放到QQ上作自己的图片. 将 xujinglei.ttf 拷贝到 /usr/share/fonts/chinese/True Typ ...

  10. qt char*转int_Qt在Linux下绘制文字原理-使用FreeType来绘制字形

    原文链接 Qt源码那些事儿-Qt绘制文字原理_使用FreeType来绘制字形​www.cryfeifei.cn 前言 Qt在Linux绘制字体是使用的FreeType. FreeType是一个用C语言 ...

最新文章

  1. MIC4680-5.0YM-TR详细资料
  2. LibSvm python 调试实验
  3. 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机
  4. 博士申请 | 美国布兰迪斯大学张初旭教授招收机器学习方向全奖博士生
  5. 2019年度年中回顾总结_我的2019年回顾和我的2020年目标(包括数量和收入)
  6. 过年不回家,压岁钱、份子钱省下来了吗?
  7. HTTP的⼏种请求⽅法及⽤途小谈(面试)
  8. 今后几个月的IT读书计划
  9. mac下如何把本地项目上传到Github
  10. 云计算机根据部署,华为云计算FusionCompute环境部署实验之使用批量部署工具安装...
  11. 某医院门诊预约系统/医院预约挂号系统
  12. 如何基于EasyCVR视频技术实现智慧移动执法?
  13. 电脑程序在计算机丢失怎么办,电脑中dll文件丢失怎么恢复?计算机中丢失dll文件修复方法...
  14. 【解决 ipad做电脑副屏镜像的问题】
  15. 浅谈微信营销的价值与优势
  16. 预告 | 10月北京,工信部人才交流中心5G行业应用系列培训全面开启
  17. jQuery判断元素是否显示与隐藏
  18. mysql中floa类型数据和mysql命令
  19. 计算机科学与技术师范ppt,计科学院开展科普课件PPT评比会议
  20. 计算机考研雷区,注意!这5个考研雷区不要踩!_考研吧

热门文章

  1. 用低代码+BPM赋能知识文档管理系统
  2. 靠谱,这个低代码平台贼好用
  3. 思维导图之----javascript正则表达式知识树
  4. 阿里云服务器好吗?老司机谈谈阿里云服务器的使用感受
  5. BarTender制作圆形标签的方法
  6. 第七周 项目2 - 建立链队算法库
  7. 去中介化的租房EOS DAPP,实现租客与房东互赢
  8. single-precision operand implicitly
  9. 三菱FX2N:PC与PLC建立通讯的几种方式(SC-09通讯电缆+FX2N-485-BD通讯板)
  10. 以 ARM 开发板 和 Arduino UNO 开发板通过串口通信为例,思考嵌入式设备之间通过串口通信的问题总结