我必须在 Ubuntu 12.04/12.10 上使用 apt-get install ttf-mscorefonts-installer。简而言之,我需要将 PDF 文件从需要这些字体来显示某些字形的应用程序中传输出来。
运行此命令后,问题是我的 Web 浏览器(和一些 Java 应用程序)中的字体现在变得“丑陋”。显然,这是一个主观意见,但我持有这种观点。
在大多数情况下,我希望恢复旧字体(Liberation、DejaVu、Ubuntu 等)。我不确定如何最好地描述这一点,但这里有一个例子:
Web浏览器中的CSS示例
font-family: Verdana,Arial,sans-serif;
没有 ttf-mscorefonts-installer(情况 1):
$ fc-match Verdana
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
$ fc-match Arial
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
$ fc-match sans-serif
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"`
使用 ttf-mscorefonts-installer (案例 2):
$ fc-match Verdana
Verdana.ttf: "Verdana" "Normal"
$ fc-match Arial
Arial.ttf: "Arial" "Normal"
$ fc-match sans-serif
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"`
我想要(案例 1)。或者,我想要(案例 2)中的字体在 IE 中看起来不那么“丑陋”。在我的网络浏览器中,它们比免费替代品更加参差不齐,不够流畅。
这可能吗?
答案1
fontconfig 采用了一套完整的字体替换系统。字体定义分为不同层次:字体名称和字体系列。给定一个特定的字体,fontconfig 将使用同名的字体(如果可用),否则寻找同名的字体系列如果仍然不匹配,则使用标准字体系列定义作为替代,即 Sans、Sans-serif 和 Mono。
Ubuntu 在“/etc/fonts/conf.d/45-latin.conf”中定义了字体系列“Verdana”,其中“Verdana”默认设置为“Sans-serif”,这意味着默认情况下,'Verdana' 采用 Sans-serif。但如果安装了 'Verdana.ttf',则会改用 'Verdana.ttf'。
在您的系统中,Sans-serif 系列中的首选字体是“Liberation Sans”,因此fontconfig 使用“Liberation Sans”替代“Verdana”如果没有同名的字体,而如果在搜索路径中则使用“Verdana.ttf”。这解释了您所发布的内容。
所以你的问题的解决方案是,你必须重新映射字体“Verdana”更改为其他字体,或者一组字体将“Liberation Sans”指定为最高优先级.(建议采用后一种情况)
打开或创建文件 ~/.config/fontconfig/fonts.conf,附加以下内容:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family"><string>Verdana</string></test>
<edit name="family" mode="prepend" binding="strong">
<string>Liberation Sans</string>
<string>Verdana</string>
</edit>
</match>
</fontconfig>
请注意,~/.fonts.conf 现已弃用,如果您已经有用户定义的 fonts.conf,请删除页眉和页脚,只保留“匹配”部分。而且,在“Arial”上演示相同的解决方法会太冗长。我相信您可以自己找到它。