让@font-face 在 html 电子邮件中工作
Getting @font-face to work in html email
我正在使用@font-face 来显示我购买并自行托管的字体。它在 Apple 设备上运行良好,但在某些版本的 Outlook 和 Android 中,我的文本未显示在 - 只是文本内容应显示的大空白 space。
这是我的代码:
<head>
<style type="text/css">
@media screen {
@font-face {
font-family: 'ElenaWebBasic';
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot');
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot?#iefix') format('embedded-opentype'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff2') format('woff2'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff') format('woff');
font-weight:700;
font-style:normal;
}
h1 {
font-family:'ElenaWebBasic',Georgia,serif !important;
font-weight:700 !important;
}
}
</style>
</head>
然后在里面,在 <body>
的最顶部,我有以下内容:
<!--[if mso]>
<style type="text/css">
h1 {font-family: Georgia,serif !important; font-weight:400 !important;}
</style>
<![endif]-->
我原以为 Outlook 会默认使用 Georgia,serif 字体,但它根本不显示文本。
这可能是隐形文本闪现 (FOIT),但在某些情况下它比 闪现.
网络浏览器和电子邮件客户端都需要在显示之前下载网络字体(可能很明显)。根据 browser/client 和网络字体技术,有时最初会显示后备字体,有时最初会显示 nothing...直到下载网络字体。
如果文本应有的地方有空格,电子邮件客户端可能会检测到 html 文本但不能(还)呈现字体。也许字体下载时间很长,或者根本无法下载。如果您使用的是像 Litmus 这样的预览服务,则可以在下载和显示字体之前创建 Litmus 屏幕截图。 (这种情况一直发生在 Litmus 预览中的图像,即使它们工作得很好。)
旁注:
不确定在 <body>
中放置 <style>
标记是否会导致 Outlook 失效,但是将其移至 <head>
在 Outlook 中是绝对安全的:
<!--[if mso]>
<style type="text/css">
h1 {font-family: Georgia,serif !important; font-weight:400 !important;}
</style>
<![endif]-->
我发现 outlook 有时不喜欢重要的标签。正如 Ted 所建议的那样,将样式标签移至头部并从 mso 条件语句中删除重要标签。
Web 字体仅适用于 AOL Mail、本机 Android 邮件应用程序(不是 Gmail 应用程序)、Apple Mail、iOS Mail、Outlook 2000、Outlook.com 应用程序。
资料来源:https://litmus.com/blog/the-ultimate-guide-to-web-fonts
我今天创建了一封使用网络字体的电子邮件,我所做的是在 TD 样式和我使用的网络字体上使用网络安全字体堆栈:
*{font-family:(FONT NAME), (fallback font) !important;}
这意味着所有读取网络字体的设备都将使用网络字体,而其他设备将呈现 TD 样式中的字体。
这有什么帮助。
我试过你的例子,对我来说,文字出现了。对于这个问题,Ted 可能是正确的。
在基于 Word 的 Outlook 中,不应用外部导入的自定义字体,而是渲染引擎强制显示 Times New Roman。
如果要防止这种行为,首先需要在文本周围定义一个包装器元素。然后使用 mso 条件语句为包装器应用 "CSS fix"。您可以阅读本教程中的正确用法:http://blog.edmdesigner.com/typography-in-modern-html-emails/#fixingfallbackfontinwordbasedoutlooks
正如其他答案所说,这可能是 FOIT。
但是解决 Outlook 桌面不支持字体这一事实的最佳方法是简单地包含 "mso-font-alt",如下所示:
@font-face {
font-family: 'ElenaWebBasic';
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot');
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot?#iefix') format('embedded-opentype'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff2') format('woff2'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff') format('woff');
font-weight:700;
font-style:normal;
mso-font-alt:Georgia;
}
请注意 mso-font-alt 是单一字体,而不是字体堆栈。
这样您就不需要 Outlook 覆盖部分。
我正在使用@font-face 来显示我购买并自行托管的字体。它在 Apple 设备上运行良好,但在某些版本的 Outlook 和 Android 中,我的文本未显示在 - 只是文本内容应显示的大空白 space。
这是我的代码:
<head>
<style type="text/css">
@media screen {
@font-face {
font-family: 'ElenaWebBasic';
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot');
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot?#iefix') format('embedded-opentype'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff2') format('woff2'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff') format('woff');
font-weight:700;
font-style:normal;
}
h1 {
font-family:'ElenaWebBasic',Georgia,serif !important;
font-weight:700 !important;
}
}
</style>
</head>
然后在里面,在 <body>
的最顶部,我有以下内容:
<!--[if mso]>
<style type="text/css">
h1 {font-family: Georgia,serif !important; font-weight:400 !important;}
</style>
<![endif]-->
我原以为 Outlook 会默认使用 Georgia,serif 字体,但它根本不显示文本。
这可能是隐形文本闪现 (FOIT),但在某些情况下它比 闪现.
网络浏览器和电子邮件客户端都需要在显示之前下载网络字体(可能很明显)。根据 browser/client 和网络字体技术,有时最初会显示后备字体,有时最初会显示 nothing...直到下载网络字体。
如果文本应有的地方有空格,电子邮件客户端可能会检测到 html 文本但不能(还)呈现字体。也许字体下载时间很长,或者根本无法下载。如果您使用的是像 Litmus 这样的预览服务,则可以在下载和显示字体之前创建 Litmus 屏幕截图。 (这种情况一直发生在 Litmus 预览中的图像,即使它们工作得很好。)
旁注:
不确定在 <body>
中放置 <style>
标记是否会导致 Outlook 失效,但是将其移至 <head>
在 Outlook 中是绝对安全的:
<!--[if mso]>
<style type="text/css">
h1 {font-family: Georgia,serif !important; font-weight:400 !important;}
</style>
<![endif]-->
我发现 outlook 有时不喜欢重要的标签。正如 Ted 所建议的那样,将样式标签移至头部并从 mso 条件语句中删除重要标签。
Web 字体仅适用于 AOL Mail、本机 Android 邮件应用程序(不是 Gmail 应用程序)、Apple Mail、iOS Mail、Outlook 2000、Outlook.com 应用程序。 资料来源:https://litmus.com/blog/the-ultimate-guide-to-web-fonts
我今天创建了一封使用网络字体的电子邮件,我所做的是在 TD 样式和我使用的网络字体上使用网络安全字体堆栈:
*{font-family:(FONT NAME), (fallback font) !important;}
这意味着所有读取网络字体的设备都将使用网络字体,而其他设备将呈现 TD 样式中的字体。
这有什么帮助。
我试过你的例子,对我来说,文字出现了。对于这个问题,Ted 可能是正确的。
在基于 Word 的 Outlook 中,不应用外部导入的自定义字体,而是渲染引擎强制显示 Times New Roman。
如果要防止这种行为,首先需要在文本周围定义一个包装器元素。然后使用 mso 条件语句为包装器应用 "CSS fix"。您可以阅读本教程中的正确用法:http://blog.edmdesigner.com/typography-in-modern-html-emails/#fixingfallbackfontinwordbasedoutlooks
正如其他答案所说,这可能是 FOIT。
但是解决 Outlook 桌面不支持字体这一事实的最佳方法是简单地包含 "mso-font-alt",如下所示:
@font-face {
font-family: 'ElenaWebBasic';
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot');
src: url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.eot?#iefix') format('embedded-opentype'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff2') format('woff2'),
url('https://www.xyz.co.uk/webfonts/ElenaWebBasicBold/ElenaWebBasicBold.woff') format('woff');
font-weight:700;
font-style:normal;
mso-font-alt:Georgia;
}
请注意 mso-font-alt 是单一字体,而不是字体堆栈。
这样您就不需要 Outlook 覆盖部分。