一学即懂!

linux下主要有两套字体系统,X11核心字体系统和xft字体系统。其中,应用越来越广泛的是xft字体系统。gtk2、qt等都采用xft方式进行 字体渲染。xft本身并没有配置的功能,需要借助另外一个库fontconfig来对xft进行配置。这篇文章简单介绍了使用fontconfig进行字 体美化的过程,希望对最近装linux的同学有所帮助。请确保安装了fontconfig库。在debian下可以简单地使用apt-get install fontconfig来安装。

首先简单介绍一下fontconfig工作的原理。当应用程序需要显示文字时,会向fontconfig发送字体样板(pattern),其中包含部分需 要显示的字体信息,例如字体名称,风格,字号等等。fontconfig收到pattern后,按照配置文件中的内容对pattern进行修改,以实现一 些控制功能。接着,fontconfig按照某种算法从系统目前安装的字体中挑选出最接近pattern的一个,并根据这个字体的相关信息将 pattern中的信息完善,返回给应用程序。应用程序根据收到的详细字体信息选择具体的渲染程序(例如freetype)进行显示和渲染,我们才能看到 具体的字体效果。
简单了解了原理,我们就可以开始对字体进行美化了。
第一步是准备可用的字体,没有具体的字体文件,fontconfig自然是巧妇难为无米之炊了。最方便的方法就是从windows中提取字体来用,它们都 在C:/windows/Fonts目录下。比较好看的有宋体(simsun),Tahoma(tahoma),Consolas(consola)等。 我们就以这三个字体作为例子进行美化吧。
如果你是使用kde桌面环境,可以在控制中心里添加字体,非常方便。也可以通过修改配置文件的方法添加,这就需要我们了解fontconfig的配置文件 格式。默认情况下主配置文件是/etc/fonts/fonts.conf,但这个文件在升级时很容易被替换,因此我们在/etc/fonts下建立文本 文件local.conf来保存本地设置。可以用一般的文本编辑器如vim等编辑它。
fontconfig的配置文件为xml格式。基本框架为:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
...
</fontconfig>

其中,我们的配置内容就写在...处。记住最后必须有</fontconfig>标签!
现在在...的地方开始写具体的配置代码。首先填写自己的字体路径:

<!--
在以下目录寻找字体
-->
<dir>/usr/share/winfonts</dir>

/usr/share/winfonts是字体文件保存的位置。当然使用其他的路径也是可以的,fontconfig会自动寻找你指定的目录下的字体文件,并生成字体信息。
接下把一些不常见或者不通用的字体进行重新命名,以正确显示它们:

<!--
把mono重命名为monospace
-->
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign">
<string>monospace</string>
</edit>
</match>

<!--
把sans serif重命名为sans-serif
-->
<match target="pattern">
<test qual="any" name="family">
<string>sans serif</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match>

<!--
把sans重命名为sans-serif
-->
<match target="pattern">
<test qual="any" name="family">
<string>sans</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match>

<!--
对于其他字体,用sans-serif对名称赋值
-->
<match target="pattern">
<test qual="all" name="family" compare="not_eq">
<string>sans-serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>monospace</string>
</test>
<edit name="family" mode="append_last" binding="strong">
<string>sans-serif</string>
</edit>
</match>

这一步相当于把所有字体分成三大类:有衬线(serif)、无衬线(sans-serif)和等宽(monospace)。下面分别指定各类所使用的实际字体以及显示时的优先顺序:

<!--
Serif faces
-->
<alias>
<family>SimSun</family>
<default><family>serif</family></default>
</alias>

<!--
Sans-serif faces
-->
<alias>
<family>Tahoma</family>
<family>SimSun</family>
<default><family>sans-serif</family></default>
</alias>
<!--
Monospace faces
-->
<alias>
<family>Consolas</family>
<family>SimSun</family>
<default><family>monospace</family></default>
</alias>

<!--
这段决定各字体的优先顺序。例如这里,当选择monospace字体时,
优先使用consolas字体显示,若不能正常显示则使用宋体
-->
<alias>
<family>serif</family>
<prefer>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Tahoma</family>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Consolas</family>
<family>SimSun</family>
</prefer>
</alias>

到此时我们的字体美化基本完成了。但为了更好的显示效果,我们还要把反锯齿功能打开。在kde控制中心中的字体选项里可以很容易得打开所有字体的反锯齿 (Anti-Aliased)。也可以在配置文件最后(但在</fontconfig>标签前)加入这么一段:

<!--
为所有字体打开AA
-->
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>

然而,我们知道宋体在某些字号下不需要反锯齿就已经很漂亮,而打开AA后反而发虚。为了解决这个问题,我们要对某些字号的宋体关闭反锯齿:

<!--
为12-16点大小的宋体关闭AA
-->
<match target="font">
<test name="family" qual="any">
<string>SimSun</string>
<string>NSimSun</string>
<string>宋体</string>
<string>新宋体</string>
</test>
<test name="pixelsize" compare="more_eq">
<double>12</double>
</test>
<test name="pixelsize" compare="less_eq">
<double>16</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>

至此,基本的字体美化就完成了。把界面字体改为sans-serif字体,控制台以及需要使用等宽字体的地方使用monospace,在qterm等地方可以使用宋体

Linux 下 美化字体相关推荐

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

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

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

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

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

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

  4. linux 下的字体引擎

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

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

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

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

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

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

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

  8. Linux 下安装字体

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

  9. linux 下中文字体的支持

    用linux 安装后,中文字体无法显示,安装之! 上网那个搜索了一下,发现有好几种方法,其中之一就是直接拷贝字体文件到/usr/share/fonts 文件夹下即可. 看这里:http://www.b ...

最新文章

  1. Java8 的 Stream 流式操作之王者归来
  2. abstract class 和 interface 区别
  3. Avalonia跨平台入门第十三篇之Expander控件
  4. java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized
  5. 龙神契约为什么显示服务器错误,龙神契约连服BOSS玩法介绍
  6. 信奥中的数学:斯特林数、卡特兰数
  7. centos7安装ssh服务
  8. php 反射类 解析注释,php反射获取类和方法中的注释
  9. imgaug: 一个很有用的图像数据增强库
  10. 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
  11. 哨兵2号L1C数据下载及预处理
  12. 看图计算机械加工工时,急求机械加工工艺编制和工时定额制定与核算软件!!!...
  13. iOS微信安装包瘦身
  14. java控制台进度_java进度条:控制台输出百分比示例代码
  15. 【金三银四】MySQL优化面试题(2021最新版)
  16. mfp服务器控制中心,固网1008MFP驱动
  17. php 自定义字段erp,在SuiteCRM中创建自定义字段类型
  18. python爬虫论文总结与展望怎么写_论文总结与展望怎么写?
  19. 使用ShareX+sm.ms实现截图后自动上传图片至图床
  20. 快速删除node_modules目录的方法:指令rimraf

热门文章

  1. 【Python扩展阅读EasyGui 学习文档【超详细中文版】】
  2. 【数学基础知识】证明三角形的中线交于一点
  3. 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
  4. oracle ora 3136,一次ORA-3136的处置
  5. 宝塔 cpanel_cPanel / WHM许可更改
  6. Codeup(云效)手把手教部署SpringCloud项目到私有主机
  7. Kubernetes中RBAC实战一 servicecount 10月2日实验笔记
  8. 每天学一点flash(78) flash cs5.5 加载 jpeg-xr 格式
  9. kali2021安装GVM(openVAS)
  10. WebRTC技术详解