在 HTML 电子邮件中使用 Google Webfonts 我在 Outlook(2007、2010 等)中遇到了在合并 webfonts 之前没有出现的字体替换问题。它忽略了字体堆栈并直接转到 Times。
尽管使用了内联后备字体堆栈,但仍会发生这种情况。
我注意到以前在这里发布过的类似问题,但只是作为一般问题,与 webfonts 的使用无关。以前所有的字体后备都可以正常工作。我正在使用 Litmus 进行电子邮件测试。
有谁知道为什么会发生这种情况?
链接到石蕊:https ://litmus.com/pub/53a33c7/screenshots
CSS中最初链接的字体如下:
<link href='http://fonts.googleapis.com/css?family=Arvo|Droid+Serif:400,700,400italic,700italic|Roboto:300' rel='stylesheet' type='text/css'>
在另一个答案中看到可能的解决方案后,我也尝试使用 @font-face 和自托管文件,但它没有用(我也更新了类名):
除了 font-face 尝试的解决方法:
<!--[if !mso]><!-->
@font-face {
font-family: 'droid_serif';
src: url('http://www.suissamesser.com/emails/rsdsa/DroidSerif-webfont.eot');
src: url('http://www.suissamesser.com/emails/rsdsa/DroidSerif-webfont.eot?#iefix') format('embedded-opentype'),
url('http://www.suissamesser.com/emails/rsdsa/DroidSerif-webfont.svg#droid_serif') format('svg'),
url('http://www.suissamesser.com/emails/rsdsa/DroidSerif-webfont.woff') format('woff'),
url('http://www.suissamesser.com/emails/rsdsa/DroidSerif-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
<!--<![endif]-->
Outlook 特定的覆盖 CSS 似乎有效,但存在优先级问题。我不相信 Outlook 能够识别 !important 声明,因此我一直在努力进行更具体的选择。但是,我仍然不明白为什么会发生这种情况以及是否有更简单的修复方法。
Outlook 字体覆盖摘录:
<!--[if gte mso 9]>
<style>
/* Target Outlook 2007 and 2010 */
h1 { font-family: 'Georgia',serif !important; font-weight:normal; }
h1 a { font-family: 'Georgia',serif !important; font-weight:normal; }
h2 { font-family: 'Trebuchet MS',arial, helvetica, sans-serif; font-weight:normal; }
h3 { font-family: 'Trebuchet MS',arial, helvetica, sans-serif; }
.cover,img.cover,a.cover {
display: block;
visibility: visible;
td { font-family: 'Trebuchet MS',arial, helvetica, sans-serif; }
.droid { font-family: 'Georgia', serif; }
}
</style>
<![endif]-->
有问题的代码示例:
<td height="30" colspan="3" align="left" valign="middle" class="featured">
<h2 style="text-align: left; padding: 0; margin: 0; color: #00799f; font-family: 'Roboto',arial, helvetica, sans-serif; font-size: 21px; font-weight: 100; background: none; border-bottom: 1px solid #b1d6e2; text-decoration: none; line-height: 36px; mso-line-height-rule: exactly;">cover story</h2>
</td>
更新:
我已经尝试了答案中的建议,将 webfont 导入代码放在排除 Outlook 的条件标签中,但无济于事。
<!--[if !mso]><!-- -->
@import url(http://www.example.css);
<!--<![endif]-->
和
<!--[if !mso]><!-- -->
@import url(http://fonts.googleapis.com/css?family=Oxygen);
<!--<![endif]-->
更新二(解决方案):
在提供的所有帮助下,很明显,一些看似很小的问题都可能导致此问题。font-face 方法似乎比@import 更可取。使 webfont 名称与本地字体不同可能会导致相同的问题,但这并不是这封特定电子邮件所发生的情况。
我很早就尝试过条件代码来完全从 Outlook 中隐藏 webfont 导入代码<!--[if !mso]><!-->
。
问题是我在 head 部分的 CSS 样式标记中执行此操作。只需将此代码放在其自己的样式标签中,如下所示即可。
我确认它正在工作,因为我能够删除用于检测 Outlook 2007 和更高版本的额外解决方法 CSS 代码,以将 h1、h2 值恢复到标准字体堆栈。
<!--[if !mso]><!-->
<style type="text/css">
@font-face {
font-family: 'oxygenlight';
src: url('http://www----/fonts/oxygen-light-webfont.eot');
src: url('http://www.----/fonts/oxygen-light-webfont.eot?#iefix') format('embedded-opentype'),
url('http://www.-----/fonts/oxygen-light-webfont.woff') format('woff'),
url('http://www.-----/fonts/oxygen-light-webfont.ttf') format('truetype'),
url('http://www.-----/fonts/oxygen-light-webfont.svg#oxygenlightlight') format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<!--<![endif]-->