配置 fontconfig 以忽略可缩放字体中的位图

配置 fontconfig 以忽略可缩放字体中的位图

我安装了 Microsoft C-Fonts,效果非常好。但是,Calibri 的很多字体大小都显示为位图字体。我该如何告诉 fontconfig 禁止 Calibri(和 Cambria 等)从嵌入的位图中渲染?70-no-bitmaps.conf我的目录中已经有了/etc/fonts/conf.d/

有问题的字体可以是从 PowerPoint Viewer 中提取

答案1

/etc/fonts/conf.d/70-no-bitmaps.conf仅拒绝位图字体,它们不会禁用嵌入的位图,这里就是这种情况。我不知道他们为什么不将禁用嵌入位图的设置放在同一个 conf 文件中。无论如何,将以下内容放入您的~/.config/fontconfig/conf.d/20-no-embedded.conf(或,对于较旧版本的 Ubuntu,放入~/.fonts.conf.d/20-no-embedded.conf):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

这将禁用所有字体的嵌入位图。如果您只想禁用选定字体,请添加<test>元素:

<test name="family" compare="contains">
  <string>Calibri</string>
  <string>Cambria</string>
</test>

<edit ...

答案2

在您给出的示例中,在“<test>”节中两次提到了“<string>”属性。这会导致 Ubuntu 13.10 和 14.04 出现警告。要消除警告,文件中的节应如下所示:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family" compare="contains">
       <string>Calibri</string>
       <string>Cambria</string>
    </test>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

相关内容