我不得不在 Ubuntu 12.04/12.10 上 apt-get install ttf-mscorefonts-installer。简短的版本是我需要将 PDF 文件从需要这些字体用于某些字形的应用程序中导出。
运行此命令后的问题是,我的 Web 浏览器(和一些 Java 应用程序)中的字体现在“丑陋”了。显然这是一种主观意见,但这是我所持有的。
我希望在大多数情况下使用旧字体(Liberation、DejaVu、Ubuntu 等)。我不确定如何最好地描述这一点,但这里有一个例子:
Webbrowser 中的 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"`
Run Code Online (Sandbox Code Playgroud)
使用 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"`
Run Code Online (Sandbox Code Playgroud)
我想要(情况 1)。或者,我希望(案例 2)中的字体不要看起来“丑陋”的 IE。它们比我的网络浏览器中的免费替代品更参差不齐,更不流畅。
这可能吗?
fontconfig 采用一套完整的字体替换系统。字体定义有不同级别:字体名称和字体系列。给定一个特定的字体,fontconfig 使用同名的字体(如果可用),然后寻找同名的字体系列。如果仍然没有匹配,则使用标准字体系列定义作为替换,即 Sans、Sans-serif 和 Mono。
Ubuntu 在“/etc/fonts/conf.d/45-latin.conf”中定义了字体系列“Verdana”,其中“Verdana”默认设置为“Sans-serif”,这意味着Sans-serif 用于“默认情况下为 Verdana。但如果安装了“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>
Run Code Online (Sandbox Code Playgroud)
请注意, ~/.fonts.conf 现已弃用,如果您已经有用户定义的 fonts.conf,请删除页眉和页脚,仅保留“匹配”部分。如果在“Arial”上演示相同的解决方法,那就太啰嗦了。我相信你可以自己找到它。
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |