Linux 系统上浏览器选择字体的机制

Linux 系统上浏览器选择字体的机制

实际上,我认为我的问题太基础了,但是,即使在互联网上进行了深入搜索之后,我仍然不明白浏览器如何选择特定字体来在 Linux 系统上呈现特定脚本。我知道Linux系统有字体配置用于管理应用程序中的字体渲染,但 fontconfig 的行为与浏览器不一致。主要是,Chromium 及其衍生产品并不总是遵守 fontconfig 规则。他们尝试自己选择字体。另一方面,Firefox及其衍生品与Linux系统有很好的集成并且他们倾向于遵守 fontconfig 设置。我尝试了不同的浏览器来测试它们的行为,发现即使我们在 fontconfig 中配置了特定字体的规则,我们仍然需要更多的调整才能在浏览器之间获得一致的行为。他们倾向于选择自己的字体。这让我感到困惑。所以我对此的问题是:

  • 浏览器实际上如何选择字体作为其字体用户界面字体用于呈现特定脚本的字体
  • 我知道我们可以在CSS中指定字体,但是如果我们不指定它们会发生什么?浏览器将如何后备字体?
  • fontconfig对于浏览器来说有什么作用?浏览器是否使用 fontconfig 或其他东西来确定字体的优先级?
  • 我错过了什么吗?

请帮助我消除我的困惑。任何帮助将不胜感激。

答案1

经过长时间研究 fontconfig 和浏览器的行为,我开始了解以下几点:

  1. Fontconfig 是一个相对较小但复杂的软件。它具有针对给定条件和渲染参数匹配最佳字体的算法。这些条件和参数统称为“模式”。

  2. 字体有多种特征,不同的字体也可能有一些共同的特征。因此,在为给定模式选择字体时,必须检查系统上的所有字体以了解它们的相关性。某些字体的某些特性会压倒其他字体。对于前。某些字体可能具有对外来脚本/符号的 Unicode 支持,但绘图质量可能较差。同时,某些字体可能具有相对较少数量的脚本/符号的 Unicode 支持,但具有良好的绘图质量。在这种情况下,fontconfig 会尝试更喜欢更可能呈现给定字符集的字体,并且实际上可能会忽略绘图质量。所以我们根本无法保证fontconfig的结果,因为它们更多地依赖于字体文件本身,并要求应用程序的特定要求。最后,作为用户,我们总是知道哪种字体适合特定情况。但fontconfig不知道这一点。显然,它无法了解字体的美观、质量和错误。它只是将每种字体视为一种字体。

  3. 某些应用程序(例如浏览器和图形设计套件)也可以根据需要使用自己的图案和字体。在这种情况下,他们可能会请求 fontconfig,或者自行行事。

  4. 我们可以在不同的系统上重现 fontconfig 的优先级行为,但这些系统应该具有完全相同版本的字体文件、配置文件和渲染框架。否则,如果某些字体文件已更新度量或脚本/语言数据,则它可能比其他文件更受欢迎。

  5. 最好在主目录中设置自己的 fonts.conf 文件,以帮助 fontconfig 匹配正确的字体,以防万一失败。

更多信息在这里:https://www.freedesktop.org/software/fontconfig/fontconfig-user.html

相关内容