我在Debian系统上使用Iceweasel浏览器(Firefox衍生版)和XFCE4桌面.
我没有在〜/ .config / fontconfig / fonts.conf中定义任何自定义字体替换.
这就是fc-match目前告诉我的.
lone@debian:~$fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
所以我希望当我有一个HTML时,使用’Liberation Mono’字体应该提供与使用’Courier’相同的结果.但是从下面的屏幕截图中可以看出,情况并非如此(JSFiddle:http://jsfiddle.net/8L3rmyxn/).
我点击了’Inspect Element’并找到了使用的实际字体.
对于在CSS中使用“Liberation Mono”的文本,浏览器使用’DejaVu Serif’而不是与fc-math的输出一致.
对于CSS中使用’Courier’的文本,浏览器使用’Nimbus Mono L’,它与fc-match的输出一致.
对于在CSS中使用“monospace”的文本,浏览器使用“DejaVu Sans Mono”,它再次与fc-match的输出一致.
题
为什么在’Liberation Mono’字体的情况下,浏览器不使用’Nimbus Mono L’而是使用’DejaVu Serif’字体?
已知决议
请注意,我知道解决此问题的方法.如果我在〜/ .config / fontconfig / fonts.conf中明确定义了’Liberation Mono’的别名,那么我得到了所需的结果,即’Liberation Mono’字体中的文字和’Courier’字体中的文字看似相似.
lone@debian:~$cat ~/.config/fontconfig/fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>Liberation Mono</family>
<prefer><family>Nimbus Mono L</family></prefer>
</alias>
</fontconfig>
lone@debian:~$fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular
问题,再次
但我的问题仍然存在.为什么在fonts.conf中没有这个明确的别名,当我在CSS中指定’Liberation Mono’字体时,浏览器不使用’Nimbus Mono L’而是使用’DejaVu Serif’字体,即使fc-match也是如此无论我是否在fonts.conf中定义了别名,“Liberation Mono”输出相同的内容?
最佳答案 默认情况下,Firefox仅允许通过fontconfig最多替换3次.
您可以在about:config中设置gfx.font_rendering.fontconfig.max_generic_substitutions以增加此限制.允许的最高值是127.