查看已安装中文字体: fc-list :lang=zh
ttf-roboto ttf-hack ttf-dejavu
noto-fonts noto-fonts-cjk noto-fonts-emoji
wqy-microhei wqy-zenhei wqy-bitmapfont ttf-symbola otf-font-awesome pango
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- 显示器使用的像素排列方式 -->
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<!-- 字体微调的程度, 可选 hintnone, hintslight (默认), hintmedium, hintfull. -->
<!-- 更高的 hinting 等级可使字体更锐利,同时也会损失更多的细节 -->
<!-- 如果显示器的 DPI 高得不像话 (>=300), 可关闭 hinting, 字体会自然对齐像素 -->
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<!-- 抗锯齿. 除非屏幕DPI奇高否则建议开启 -->
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<!-- 全局默认字体 -->
<match>
<edit mode="prepend" name="family">
<string>Noto Sans</string>
</edit>
</match>
<!-- 全局默认英文字体 -->
<match>
<test compare="contains" name="lang">
<string>en</string>
</test>
<edit mode="prepend" name="family">
<string>Bitstream Vera Sans</string>
</edit>
</match>
<!-- 全局默认中文字体 -->
<match>
<test compare="contains" name="lang">
<string>zh</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- 默认无衬线字体 -->
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string></test>
<edit name="family" mode="prepend" binding="same">
<string>DeiaVu Sans</string>
<string>Roboto</string>
</edit>
</match>
<!-- 默认衬线字体 -->
<match target="pattern">
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="same">
<string>DejaVu Serif</string>
</edit>
</match>
<!-- 默认等宽字体 -->
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="same">
<string>Hack</string>
</edit>
</match>
<!-- 字体替换 -->
<!--SimSun, Microsoft YaHei, SimHei -> WenQuanYi Micro Hei -->
<match target="pattern">
<test name="family">
<string>宋体</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>WenQuanYi Bitmap Song</string>
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>SimSun</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>WenQuanYi Bitmap Song</string>
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimSun-18030</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Bitmap Song</string>
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>Microsoft YaHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>Times New Roman</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>Georgia</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<!-- 备用字体优先顺序 -->
<alias>
<family>sans-serif</family>
<prefer>
<family>WenQuanYi Micro Hei</family>
<family>DejaVu Sans</family>
<family>Roboto</family>
<family>Noto Sans</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
<family>Noto Sans CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>Font Awesome 5 Free</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Noto Serif</family>
<family>Noto Serif CJK SC</family>
<family>Noto Serif CJK TC</family>
<family>Noto Serif CJK JP</family>
<family>Noto Serif CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>Font Awesome 5 Free</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Hack</family>
<family>DejaVu Sans Mono</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
<family>Noto Sans CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>Font Awesome 5 Free</family>
</prefer>
</alias>
</fontconfig>
xdpyinfo |grep dimensions # 分辨率和屏幕大小
xdpyinfo |grep resolution # dpi
fc-match serif-12 family autohint hinting hintstyle dpi pixelsize antialias rgba lcdfilter
fc-match georgia-12 family autohint hinting hintstyle dpi pixelsize antialias rgba lcdfilter
fc-match sans-serif-12 family autohint hinting hintstyle dpi pixelsize antialias rgba lcdfilter
fc-match verdana-12 family autohint hinting hintstyle dpi pixelsize antialias rgba lcdfilter
<!DOCTYPE html>
<html lang="zh-cn">
<h2 id="字体效果测试">字体效果测试</h2>
<p>
<font style="font-family: 宋体; font-size: 12pt">宋体12pt:这里是中文,以及标点符号“,。!?:;”This is English. </font>
<font style="font-family: 宋体; font-size: 6pt">这里是6pt。</font>
<font style="font-family: 宋体; font-size: 7pt">这里是7pt。</font>
<font style="font-family: 宋体; font-size: 8pt">这里是8pt。</font>
<font style="font-family: 宋体; font-size: 9pt">这里是9pt。</font>
<font style="font-family: 宋体; font-size: 10pt">这里是10pt。</font>
<font style="font-family: 宋体; font-size: 11pt">这里是11pt。</font><br>
<font style="font-family: 黑体; font-size: 12pt">黑体12pt:这里是中文,以及标点符号“,。!?:;”This is English. </font>
<font style="font-family: 黑体; font-size: 6pt">这里是6pt。</font>
<font style="font-family: 黑体; font-size: 7pt">这里是7pt。</font>
<font style="font-family: 黑体; font-size: 8pt">这里是8pt。</font>
<font style="font-family: 黑体; font-size: 9pt">这里是9pt。</font>
<font style="font-family: 黑体; font-size: 10pt">这里是10pt。</font>
<font style="font-family: 黑体; font-size: 11pt">这里是11pt。</font><br>
<font style="font-family: 微软雅黑; font-size: 12pt">微软雅黑12pt:这里是中文,以及标点符号“,。!?:;”This is English. </font>
<font style="font-family: 微软雅黑; font-size: 6pt">这里是6pt。</font>
<font style="font-family: 微软雅黑; font-size: 7pt">这里是7pt。</font>
<font style="font-family: 微软雅黑; font-size: 8pt">这里是8pt。</font>
<font style="font-family: 微软雅黑; font-size: 9pt">这里是9pt。</font>
<font style="font-family: 微软雅黑; font-size: 10pt">这里是10pt。</font>
<font style="font-family: 微软雅黑; font-size: 11pt">这里是11pt。</font><br>
<font style="font-family: serif; font-size: 12pt">serif: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: serif; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: serif; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: serif; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: serif; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: serif; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: serif; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: Times New Roman; font-size: 12pt">Times New Roman: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: Times New Roman; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: Times New Roman; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: Times New Roman; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: Times New Roman; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: Times New Roman; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: Times New Roman; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: Georgia; font-size: 12pt">Georgia: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: Georgia; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: Georgia; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: Georgia; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: Georgia; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: Georgia; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: Georgia; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: sans-serif; font-size: 12pt">sans-serif: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: sans-serif; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: sans-serif; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: sans-serif; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: sans-serif; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: sans-serif; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: sans-serif; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: verdana; font-size: 12pt">verdana: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: verdana; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: verdana; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: verdana; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: verdana; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: verdana; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: verdana; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: Arial; font-size: 12pt">Arial: This is English, 这是英文中夹杂的中文。</font>
<font style="font-family: Arial; font-size: 6pt">Here is 6pt. </font>
<font style="font-family: Arial; font-size: 7pt">Here is 7pt. </font>
<font style="font-family: Arial; font-size: 8pt">Here is 8pt. </font>
<font style="font-family: Arial; font-size: 9pt">Here is 9pt. </font>
<font style="font-family: Arial; font-size: 10pt">Here is 10pt. </font>
<font style="font-family: Arial; font-size: 11pt">Here is 11pt.</font><br>
<font style="font-family: monospace; font-size: 12pt">程序代码:<br>
#include <stdio.h><br>
int main(){<br>
return 0;//很显然这是为了测试等宽字体<br>
}
</font>
</p>
</html>
宋体12pt:这里是中文,以及标点符号“,。!?:;”This is English.
这里是6pt。
这里是7pt。
这里是8pt。
这里是9pt。
这里是10pt。
这里是11pt。
黑体12pt:这里是中文,以及标点符号“,。!?:;”This is English.
这里是6pt。
这里是7pt。
这里是8pt。
这里是9pt。
这里是10pt。
这里是11pt。
微软雅黑12pt:这里是中文,以及标点符号“,。!?:;”This is English.
这里是6pt。
这里是7pt。
这里是8pt。
这里是9pt。
这里是10pt。
这里是11pt。
serif: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
Times New Roman: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
Georgia: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
sans-serif: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
verdana: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
Arial: This is English, 这是英文中夹杂的中文。
Here is 6pt.
Here is 7pt.
Here is 8pt.
Here is 9pt.
Here is 10pt.
Here is 11pt.
程序代码:
<stdio.h>
int main(){
return 0;//很显然这是为了测试等宽字体
}
fonts.conf
手册<match target="font">
# 抗锯齿
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
# 微调
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
# 自动微调器
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
# 微调样式
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
# 亚像素渲染
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
# LCD过滤器
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
# 取消粗体字的自动微调功能
<match target="font">
<test name="weight" compare="more">
<const>medium</const>
</test>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
</match>
# 只对较大的字体打开反锯齿功能
<match target="font">
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font" >
<test name="size" qual="any" compare="more">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
<match target="font" >
<test name="pixelsize" qual="any" compare="more">
<double>16</double>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
#字体替换
# 替换字体但并不改变字体的属性,Georgia被Ubuntu字体替换
<match target="pattern">
<test qual="any" name="family"><string>georgia</string></test>
<edit name="family" mode="assign" binding="same"><string>Ubuntu</string></edit>
</matc>
<!-- # 设置“优先”字体,缺失的情况下用设定的字体替换-->
< !-- 用Bitstream Vera Sans Mono替换Helvetica -->
< !-- 注意,默认配置文件中应该已经存在Helvetica的别名 -->
<alias>
<family>Helvetica</family>
<prefer><family>Bitstream Vera Sans Mono</family></prefer>
<default><family>fixed</family></default>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>你喜欢的拉丁衬线字体名称</family>
<family>你的中文衬线字体名称</family>
</prefer>
</alias>
最常见的别名有:
serif 代表衬线体(例如 DejaVu Serif、宋体)
sans-serif 代表无衬线体(例如 DejaVu Sans 和各种黑体)
monospace 则代表等宽字体(例如 DejaVu Sans Mono)
然而,这些别名所代表的字体有可能会变化,而且通常 KDE 和其他桌面环境中的字体管理工具不会显示其内在联系
Fontconfig 是一个字体配置函数库,它既提供全局范围的配置,也允许每个用户进行个性化的配置,应用程序可以通过它访问字体。
Fontconfig 由两个模块组成:
(1)配置模块,用于解析XML格式的配置文件;
(2)匹配模块,根据应用程序请求的字体模式(pattern),返回最匹配的字体。
<fontconfig>
<dir prefix="default">
包含一个目录名,Fontconfig 将会扫描其中的字体文件,将找到的字体添加到系统的可用字体列表中。
如果将prefix
设为xdg
,那么环境变量 XDG_DATA_HOME
的值将会被作为前缀添加到路径的头部
$XDG_DATA_HOME
参考
<cachedir prefix="default">
包含一个目录名称('~'表示用户家目录),用于保存字体属性的缓存(为了加速之后的读取)。
默认值是"$XDG_CACHE_HOME/fontconfig"。
<include ignore_missing="no" prefix="default">
包含一个额外的配置文件或目录('~'表用户家目录)。
如果是目录,那么该目录中所有文件名符合"[0-9].conf"格式的文件(以数字开头并以'.conf'结尾),都将被按照文件名的ASCII顺序依次处理。
注意,这些文件本身必须是具有完整XML结构的字体配置文件(包含完整的DOCTYPE声明),而不是用于插入此处的配置片段。
当配置文件的XML数据被 FcConfigParse 函数解析之后,包含的文件(或目录中文件名符合"[0-9].conf"格式的文件)也会被传递给 FcConfigLoadAndParse 函数进行处理,从而将这些文件的内容也整合到配置中。
如果将'ignore_missing'设为"yes"(默认的"no"),那么将不会对丢失的文件或目录发出警告。
<config>
<blank>
<rescan>
<selectfont>
<acceptfont>
<rejectfont>
<glob>
<pattern>
<patelt name="属性">
<match target="目标">
<test qual="品质" name="属性" target="目标" compare="比较" ignore-blanks="false">
<edit name="属性" mode="修改方式" binding="绑定">
"修改方式" 有相同"属性" 无相同"属性"
---------------------------------------------------------------------
"assign"(默认值) 替换第一个匹配的值 替换全部值
"assign_replace" 替换全部值 替换全部值
"prepend" 在第一个匹配的值之前插入 在值列表的首部插入
"prepend_first" 在值列表的首部插入 在值列表的首部插入
"append" 在第一个匹配的值之后添加 在值列表的尾部添加
"append_last" 在值列表的尾部添加 在值列表的尾部添加
"delete" 删除第一个匹配的值 删除全部值
"delete_all" 删除全部值 删除全部值
<alias binding="绑定">
<family>
用于容纳一个单独的字族名称。
<prefer>, <accept>, <default>
<int>, <double>, <string>, <bool>
<matrix>
<range>
<charset>
<langset>
<name target="目标">
<const>
常量 属性 数值 [译者注]
----------------------------------------------------
thin weight 0
extralight weight 40
ultralight weight 40
light weight 50
book weight 75
regular weight 80
normal weight 80
medium weight 100
demibold weight 180
semibold weight 180
bold weight 200
extrabold weight 205
black weight 210
heavy weight 210
roman slant 0 [正体]
italic slant 100 [斜体]
oblique slant 110 [合成斜体]
ultracondensed width 50
extracondensed width 63
condensed width 75
semicondensed width 87
normal width 100
semiexpanded width 113
expanded width 125
extraexpanded width 150
ultraexpanded width 200
proportional spacing 0 [比例,也就是非等宽,也就是没有统一的宽度,每个字符的宽度都不同]
dual spacing 90 [双宽,只有两个固定的宽度,通常是一个全角=两个半角,例如"SimHei"与"幼圆"]
mono spacing 100 [等宽,只有一个固定的宽度,也就是每个字符的宽度都完全相同,例如"Courier"]
charcell spacing 110 [字符单元,仅用于纯点阵字体,例如"Unifont"]
unknown rgba 0 [未知]
rgb rgba 1 [横向(水平)"Red Green Blue",这是最常见的LCD]
bgr rgba 2 [横向(水平)"Blue Green Red"]
vrgb rgba 3 [纵向(垂直)"Red Green Blue"]
vbgr rgba 4 [纵向(垂直)"Blue Green Red"]
none rgba 5 [无子像素,也就是非LCD屏,例如传统的CRT显示器]
lcdnone lcdfilter 0 [彻底关闭 LCD filter,不推荐,它会导致笔画边缘出现彩色边纹]
lcddefault lcdfilter 1 [最大限度的消除彩色边纹,但是可能会增加笔画的模糊程度。多数场合这是最佳选择]
lcdlight lcdfilter 2 [减轻笔画的模糊程度,但不能最大限度的消除彩色边纹。少数场合也许效果更好]
lcdlegacy lcdfilter 3 [为了与传统的"libXft color filter"兼容而设置,未来会被删除]
hintnone hintstyle 0 [禁用微调(包括自动微调与内嵌微调)]
hintslight hintstyle 1 [优先保持字符的形态,但是可能会降低笔画的锐利度]
hintmedium hintstyle 2 [在字符形态与笔画锐利度之间进行折中,实际效果通常相当于"hintfull"]
hintfull hintstyle 3 [优先提高笔画的锐利度,但是可能破坏字符的形态]
<or>, <and>, <plus>, <minus>, <times>, <divide>
<eq>, <not_eq>, <less>, <less_eq>, <more>, <more_eq>, <contains>, <not_contains>
<not>, <floor>, <ceil>, <round>, <trunc>
<if>
https://wiki.archlinux.org/index.php/Fonts
https://wiki.archlinux.org/index.php/Font_configuration
http://www.jinbuguo.com/gui/linux_fontconfig.html
http://www.jinbuguo.com/gui/fonts.conf.html