未知字体如何被替换?

未知字体如何被替换?

假设我有一个外文文本文档,我用可以识别字体的文本编辑工具(例如 LibreOffice Writer)打开它。此文档中使用的一些字体可能在我的 Ubuntu 安装中不可用(例如 Garamond)。

问题是:Ubuntu 如何决定使用哪种已安装的字体来替换未知字体?它是否读取字体的任何特征并寻找类似的字体?是否始终使用默认替换字体?它是否搜索类似的字体名称?

除此之外,我想知道是否可以以某种方式改变这种行为或设置手动字体别名以自动使用例如免费字体EB-加拉蒙特而不是非自由的加拉蒙特

答案1

我认为这不是由 Ubuntu 决定的,而是由程序(LibreOffice、OpenOffice 等)决定的。我看不到任何与 LibreOffice 相关的内容本身但 OpenOffice 有一个不错的维基百科介绍“字体回退”的工作原理。一般来说,它可能也适用于 LibreOffice。

我从下面的 wiki 中复制了一些部分以便澄清。很难比维基百科,所以最好从那里阅读:

OpenOffice.org 2 中的字体回退是什么?

每当请求的字体未安装在系统上时,Font-Fallback 就会启动。(未安装意味着:OOo 无法使用)。然后 OOo 会尝试使用与 OOo 所知的字体不同的字体,尽可能接近所请求的字体。

字体回退如何工作?

为了使 font-fallback 产生令人满意的结果,OOo 必须以某种方式了解字体的相似性。例如,OOo 必须知道它可以替换海尔维提卡代替宋体, 但不是Comic Sans。这个任务并不像听起来那么简单,因为存在许多字体,而 OOo 不可能了解所有字体。

OOo 使用几种方法来寻找合适的替代品:

  • 系统提供的字体别名信息(例如来自fonts.dir 文件
  • 硬编码的后备字体列表,来自VCL.xcu(首次尝试)
  • 替代字体名称拼写
  • 字体属性(例如,它是否有 CJK 字符,是否是符号字体)或样式(衬线/无衬线、比例/非比例)

如果所有方法都失败了:

  • 使用默认字体

没有直接关系,但是TLDP 文档值得一读。

相关内容