Linux 下 美化字体
一学即懂!
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 下 美化字体相关推荐
- Linux下添加字体(QT可用)
Linux下面的字体(特别是一些嵌入式设备)不像windows下那么丰富,不过也可以自己手动添加.主要就是.ttf文件的搬运工~下面就来说说如何在Linux下添加字体吧! 1.首先在windo ...
- linux 字体 命令,Linux下的字体
Linux下的字体 /* Layout-provided Styles */ h1.title { font-size: x-large; margin-bottom: 1ex; text-align ...
- linux查看使用的字体大小,查看linux下的字体
查看linux下的字体 2018-12-07 查看所有字体: fc-list 查看中文字体 fc-list :lang=zh 用fc-list找出语言为zh的字体文件,可见系统里中文字体少的可怜.知道 ...
- linux 下的字体引擎
linux下主要使用xtt freetype xfs xft这四种字体引擎,以下是这四种字体引擎的区别, xtt, freetype, xfs, xft等的区别 X Window是所谓client-s ...
- Linux下默认字体是什么,linux默认字体是什么
呵呵,都没看出差异,难道我眼睛有问题?字体不同?楼主考眼力吧?###### 引用来自#2楼"xyz555"的帖子 呵呵,都没看出差异,难道我眼睛有问题?字体不同?楼主考眼力吧? 不 ...
- linux安装中文字库 italic,在 Linux 下安装字体
Most of computer fonts people using are TrueTpye fonts. TrueType fonts end with .ttf, which stand fo ...
- linux php lt,PHP GD 库在 Linux 下使用字体
现在一般的 PHP 主机都支持 GD 库和 FreeType/TrueType,普通的画字符串的函数 imagestring 只能指定字体大小,不能指定字体名称.像 imagettftext 这样的函 ...
- Linux 下安装字体
今天装上了李师兄下载的徐静蕾的字体,感觉不错,用它写了自己的名字然后放到QQ上作自己的图片. 将 xujinglei.ttf 拷贝到 /usr/share/fonts/chinese/True Typ ...
- linux 下中文字体的支持
用linux 安装后,中文字体无法显示,安装之! 上网那个搜索了一下,发现有好几种方法,其中之一就是直接拷贝字体文件到/usr/share/fonts 文件夹下即可. 看这里:http://www.b ...
最新文章
- Java8 的 Stream 流式操作之王者归来
- abstract class 和 interface 区别
- Avalonia跨平台入门第十三篇之Expander控件
- java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized
- 龙神契约为什么显示服务器错误,龙神契约连服BOSS玩法介绍
- 信奥中的数学:斯特林数、卡特兰数
- centos7安装ssh服务
- php 反射类 解析注释,php反射获取类和方法中的注释
- imgaug: 一个很有用的图像数据增强库
- 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
- 哨兵2号L1C数据下载及预处理
- 看图计算机械加工工时,急求机械加工工艺编制和工时定额制定与核算软件!!!...
- iOS微信安装包瘦身
- java控制台进度_java进度条:控制台输出百分比示例代码
- 【金三银四】MySQL优化面试题(2021最新版)
- mfp服务器控制中心,固网1008MFP驱动
- php 自定义字段erp,在SuiteCRM中创建自定义字段类型
- python爬虫论文总结与展望怎么写_论文总结与展望怎么写?
- 使用ShareX+sm.ms实现截图后自动上传图片至图床
- 快速删除node_modules目录的方法:指令rimraf
热门文章
- 【Python扩展阅读EasyGui 学习文档【超详细中文版】】
- 【数学基础知识】证明三角形的中线交于一点
- 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
- oracle ora 3136,一次ORA-3136的处置
- 宝塔 cpanel_cPanel / WHM许可更改
- Codeup(云效)手把手教部署SpringCloud项目到私有主机
- Kubernetes中RBAC实战一 servicecount 10月2日实验笔记
- 每天学一点flash(78) flash cs5.5 加载 jpeg-xr 格式
- kali2021安装GVM(openVAS)
- WebRTC技术详解