Проблемы с заменой стека шрифтов CSS в Outlook при использовании Google Webfonts - программирование
Подтвердить что ты не робот

Проблемы с заменой стека шрифтов CSS в Outlook при использовании Google Webfonts

Используя Google Webfonts в HTML-письме, я столкнулся с проблемами замены шрифтов в Outlook (2007,2010 и т.д.), которые не возникали до включения веб-сайтов. Он игнорирует стеки шрифтов и подходит к Times.

Это происходит, несмотря на использование встроенных резервных стеков шрифтов.

Я заметил похожие проблемы, которые были размещены здесь ранее, но только как общий вопрос, не связанный с использованием веб-сайтов. Раньше все резервные копии шрифтов работали правильно. Я использую 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'>

Я также попытался использовать @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, кажется, работает, но есть проблемы с приоритетом. Я не верю, что 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>

UPDATE:

Я попробовал предложение в ответах, чтобы поместить код импорта 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 не будет таким же, как локальный шрифт, может вызвать ту же проблему, но это не то, что происходит с этим конкретным электронным письмом.

Я уже пробовал условный код, чтобы скрыть код импорта webfont из Outlook <!--[if !mso]><!--> вообще.

Проблема заключалась в том, что я сделал это в теге стиля CSS в разделе главы. Простое размещение этого кода в теге собственного стиля, как показано ниже, сделало разницу.

Я подтвердил, что он работает, так как мне удалось удалить дополнительный обходной код CSS, который я использовал для обнаружения версии Outlook 2007 и выше, для восстановления значений 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]-->
4b9b3361

Ответ 1

UPDATE: Вот техникавызывать webfonts с возвратом к стеку шрифтов во всех версиях Outlook, который прерывает

Попробуйте объявить свой webfont, если вместо него Outlook. Webfont может быть проблематичным для Outlook, поэтому его вообще не называть может работать. Стоит попробовать...

Edit:

Эта проблема произошла до с нарушением Outlook, когда ваш первый объявленный шрифт находится в кавычках. Это похоже на ошибку/ограничение Outlook, которая, к сожалению, неизбежна.

Ответ 2

Чтобы 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>

Ответ 3

У меня тоже была эта проблема, и я нашел простое исправление. После того, как вы импортируете свой веб-шрифт, @media screen {} можно использовать для выделения клиентов, поддерживающих медиа-запросы, и это те, которые поддерживают веб-шрифты. Таким образом, просто указывая объявление семейства шрифтов внутри и вне этого селектора, вы можете скрыть определенные шрифты от почтовых клиентов, таких как Outlook, так что будет отображаться ваш следующий подходящий резервный шрифт, и ваш веб-шрифт будет хорошо отображаться у клиентов, которые его поддерживают.

@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 лучше, чем @font-face в сообщениях электронной почты в целом.

Ответ 4

Я помню, что у меня была аналогичная проблема. В конце концов, я думаю, что это вызвало проблему @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;
}

Ответ 5

Вероятно, проблема связана с тем, что у пользователя есть локально установленная версия шрифтов, и есть конфликт.

Попробуйте импортировать шрифт-шрифт (таким образом Google WebFonts работает в любом случае) и просто переименовать семейство шрифтов в нечто другое.

например.

@font-face {
    font-family: 'droid_serif';

в

@font-face {
    font-family: 'droid_serif_alt';

Обязательно отразите изменение остальной части вашей разметки!

Ответ 6

Куда идет этот CSS? Он больше в заголовке?

Ответ 7

Вы должны использовать " mso-font-alt" для Font-Fallback (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