后备字体 Outlook 2019——方法不起作用

Fall-Back Fonts Outlook 2019--Approach is not working

我正在使用 Google Font Libre Caslon Text 作为我们电子邮件的正文和 Times New Roman 的后备字体。结果很奇怪。

当我使用这种内联样式时 font-family: 'Libre Caslon Text','Times New Roman',serif; 这两种字体在 Outlook 2019 中都不起作用。

但是,如果我使用这种内联样式 font-family: 'Libre Caslon','Times New Roman',serif; Outlook 2019 中的时代新罗马作品。

我错过了什么?

我不是 100% 确定为什么 Times New Roman (TNR) 没有为场景 1 加载,因为通常您不应该将网络友好字体用撇号括起来,但这似乎不是这里的决定因素. 此外,您的网络字体回退方法对于 Outlook 来说并不完整。

遗憾的是,Outlook 不遵循前端和电子邮件行业标准来回退到声明的下一个可能的字体。相反,当遇到 Web 或非 Web 友好字体时,Outlook 将简单地破坏字体声明并应用 TNR。 现在我同意这没有意义,因为您的方案 1 不符合此条件,但我认为声明可能有问题,TNR 被包裹在撇号中或 Outlook 被您的网络字体命名混淆。

无论如何,为 Windows 台机器上的 Outlook 客户端定义回退的最后一部分是:

<!--[if mso]>
    <style type="text/css">
    h1,h2,h3,h4,h5,h6,p,a,span,td,strong,li {
        font-family:Times New Roman,serif !important;
    }
    </style>
<![endif]-->

您可以根据您的特定用例定制元素标签,或者像我上面使用的那样使用广泛的选择集。

添加这个并给这两个场景另一个测试运行,让我们知道它是怎么回事。

Outlook 2019(自 Outlook 2007 以来 Windows 上的所有 Outlook)使用 Word 的呈现引擎。 Word 不支持网络字体嵌入。但确实如此。因此任何 @font-face 声明仍将由 Outlook 解释,但不会下载和应用字体文件。为了更好地控制所使用的备用字体,您可以在 @font-face 声明中使用以下两个属性之一:

  • mso-font-alt:允许您声明单个后备字体的名称。例如:mso-font-alt: "Times New Roman";.
  • mso-generic-font-family:允许您在以下值中声明字体系列:decorativemodernroman(类似于 serif)、scriptswiss(类似于 sans-serif)或 auto(在 Outlook 2016 中默认定义为 roman,然后从 Outlook 更改为 swiss 2019).

在你的情况下,你需要像这样声明你的字体:

 @font-face {
   font-family: 'Libre Caslon Text';
   font-style: normal;
   font-weight: 400;
   src: url('https://example.com/Libre-Caslon-Text.woff2') format('woff2');
   mso-generic-font-family: roman;
   mso-font-alt: 'Times New Roman';
 }

这是我两年前写的一篇文章:Today I learned about mso-generic-font-family…