LibreOffice在渲染ttf字体时出现问题。

Microsoft TTF字体,如Calibri和Cambria,在某些页面缩放级别下无法正确显示:

Comparison between the system font and Cambria at different zoom levels

我通过将Microsoft字体手动放置在~/.fonts目录中并更新字体缓存来安装了它们。
有没有办法在LibreOffice下改善Microsoft字体的渲染效果?
4个回答

Calibri和Cambria这样的字体在调整到小尺寸时会使用嵌入的位图。

要禁用此字体行为,请将以下内容放入$HOME/.fonts.conf中:

<match target="font" >
     <edit name="embeddedbitmap" mode="assign">
         <bool>false</bool>
     </edit>
</match>

如果文件不存在,则创建文件。

重新启动以生效。

来源
http://ubuntuforums.org/showthread.php?t=724818(需要注册)
http://manpages.ubuntu.com/manpages/precise/man5/fonts-conf.5.html

注意:
$HOME/.fonts.conf 在Ubuntu 12.10中已被弃用。 相反,将上述XML代码(作为root用户)粘贴到 /etc/fonts/conf.d/50-user.conf 中。


这个方法很有效,谢谢!让我想知道为什么这不是默认行为。禁用嵌入位图有什么不利之处吗? - Glutanimate
1@Glutanimate 就我所知,很少有字体使用这项技术。所以你不应该遇到任何问题。我同意,在全局fonts.conf中应该设置为默认值。 - loklaan
1对于14.04版本来说,~/.config/font-manager/local.conf是一个更好的位置来添加这个设置(假设您不想破坏系统范围的设置)。 - Alan De Smet
这对我来说效果更好:http://askubuntu.com/a/594983/15943 - alfC
1不需要重新启动,只需运行fc-cache -f并重新打开渲染字体的应用程序。 - Ben

不要将 XML 代码放在 /etc/fonts/conf.d/50-user.conf 中(实际上只是包含来自 $HOME/.config/fontconfig/conf.d$HOME/.config/fontconfig/fonts.conf 的文件),而是将 XML 代码放在两个提到的目录下的文件中,这两个目录位于您的 $HOME/.config/fontconfig/ 目录中。不要修改系统配置文件,否则会增加系统升级的复杂程度。


我解决了我的系统问题,方法是移除Calibri字体,安装Carlito字体,它与Calibri字体"度量兼容",并且附带有一个映射条目到fontconfig(local.conf)的软件包,刷新了我的字体缓存,并重新启动了LibreOffice。
$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache

这是一个上面是Microsoft,下面是Carlito的之前和之后的对比。

Calibri tests

你可以使用fonts-crosextra-caladeaCaladea替换为Cambria,并且你可以使用fonts-croscoreCroscore fonts Arimo、Tinos和Cousine替换为ArialTimes New RomanCourier New
更多详细信息请参见我的完整帖子

我在Ubuntu LTS 18.04上遇到了这个问题,然后在升级到20.04 LTS之后又遇到了。Calibri在LibreOffice和Firefox上看起来很糟糕。上述方法对我有效,具体操作如下:
创建上述描述的文件,并将其保存为fonts.conf,放在$HOME/.config/fontconfig目录下。
然后重新生成字体缓存:sudo fc-cache -fv
我不确定最后一步是否必要,但在检查字体渲染之前,我还是执行了这个操作。
现在,Calibri在LibreOffice和Firefox中看起来完美无瑕。