在HTML电子邮件中使用Google Webfonts我在Outlook(2007,2010等)中遇到了在合并webfonts之前没有出现的字体替换问题。它忽略了字体堆栈并直接进入Times。
尽管使用内联后备字体堆栈,但仍会发生这种情况。
我注意到之前发布的类似问题,但仅作为一般性问题,与webfonts的使用无关。以前所有的字体回退都可以正常工作。我正在使用Litmus进行电子邮件测试。
有谁知道为什么会这样?
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'>
在看到可能的solution in another answer后,我也尝试使用@ 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认可!重要声明所以我一直在努力寻找更具体的选择。但是,我仍然不明白为什么会发生这种情况,如果有更简单的解决办法。
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]-->
更新II(解决方案):
在所提供的所有帮助下,很明显一些看似微不足道的问题都可能导致这个问题。 font-face方法似乎比@import更可取。将webfont名称与本地字体不同可能会导致同样的问题,但这不是这封特定电子邮件发生的事情。
我早期尝试使用条件代码来隐藏Outlook <!--[if !mso]><!-->
中的webfont导入代码。
问题是我在头部的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]-->
答案 0 :(得分:6)
更新:Here is a technique 在所有版本的文件中使用回退调用webfonts到字体堆栈 破坏的展望
如果不是Outlook,请尝试声明您的webfont。 webfont可能对Outlook有问题,因此根本不调用它可能有效。值得一试......
编辑:
当您的第一个声明的字体在引号中时,此问题有occured before与Outlook断开。这似乎是一个不可避免的Outlook bug /限制。
答案 1 :(得分:3)
要让Outlook使用您的字体堆栈,而不是使用Outlook选择添加的任何字体替换您的网络字体,请添加一个条件注释,只有Outlook才能读取它以分配您的字体堆栈备份字体。定义您的网络字体,但不要在条件注释中定义它,以便Outlook忽略网络字体,直接进行条件评论,只显示Arial。
<style>
@import url('http://www.yourdomain.com/webfont.css');
</style>
<!--[if gte mso 9]>
<style>
.webfontsubstitute { font-family: arial, sans-serif; }
</style>
<![endif]-->
</head>
<body>
<a href="#" target="_blank" style="font-family:superwebfont,arial,sans-serif;">
<span class="webfontsubstitute">WEB FONT STYLED TEXT HERE</span></a>
答案 2 :(得分:2)
我也遇到过这个问题,刚刚找到了一个简单的修复方法。导入Web字体后,可以使用 @media screen {} 来挑出支持媒体查询的客户端,这些客户端恰好是支持Web字体的客户端。因此,只需在此选择器内外指定 font-family 声明,即可隐藏电子邮件客户端(如Outlook)中的特定字体,以便显示下一个相应的后备字体,并显示您的Web字体很好地支持它的客户。
@import url(http://fonts.googleapis.com/css?family=Open+Sans:300);
.h1 { font-family: 'Arial', 'Helvetica', sans-serif }
@media screen {
.h1 {
font-family: Open Sans, 'Arial', 'Helvetica', sans-serif
}
}
顺便说一下, @import 的Campaign Monitor suggests在电子邮件中优于 @ font-face 。
答案 3 :(得分:1)
我记得有一段时间有类似的问题。最后我认为导致问题的是@import
,我不得不使用不同的方法来提取字体。
而不是@import
使用@font-face
方法。
@font-face {
font-family: 'Oxygen';
font-style: normal;
font-weight: 400;
src: local('Oxygen'), local('Oxygen-Regular'), url(http://themes.googleusercontent.com/static/fonts/oxygen/v2/eAWT4YudG0otf3rlsJD6zOvvDin1pK8aKteLpeZ5c0A.woff) format('woff');
}
然后像往常一样使用字体:
h1 {
font-family: 'Oxygen', sans-serif;
}
答案 4 :(得分:1)
问题可能是因为您的用户在本地安装了字体版本并且存在冲突。
尝试@ font-face导入(这是Google WebFonts无论如何都可以工作的方式),只需将font-family重命名为不同的东西。
E.g。
@font-face {
font-family: 'droid_serif';
为:
@font-face {
font-family: 'droid_serif_alt';
请务必反映标记其余部分的变化!
答案 5 :(得分:0)
这个CSS在哪里?它会不再出现在标题中了?
答案 6 :(得分:0)
您必须使用“ mso-font-alt ”进行字体回退(Outlook 2010,2013,2016):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
....
<style type="text/css">
@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;
mso-font-alt: 'Arial';
}
...
</style>
</head>
覆盖自定义css声明的另一个技巧:
<!--[if mso]>
<style>
body,table tr,table td,table th,a,span,table.MsoNormalTable {
font-family: 'Arial', 'Helvetica', 'sans-serif' !important;
}
.custom-headline{
font-family: 'Times New Roman', 'serif' !important;
}
</style>
<![endif]-->
请同时查看:https://litmus.com/community/code/36-outlook-and-fallback-fonts