@font-face работает в IE8, но не в IE9

Как описано выше, у меня есть проблемы с тем, что @ font-face не отображается в IE9, хотя он хорошо отображается в любом другом браузере, включая IE8 и ниже. Кроме того, при локальном просмотре на моем компьютере IE9 отображает шрифт, но не в режиме реального времени.

Сайт является:

http://bigwavedesign.co.uk/gcc/gcc

Используемый код:

    @font-face {
                font-family: 'LeagueGothicRegular';
                src: url('league_gothic_0-webfont.eot');
                src: local('League Gothic Regular'), url('league_gothic_0-webfont.woff') format('woff'), url('league_gothic_0-webfont.ttf') format('truetype'), url('league_gothic_0-webfont.svg#webfonta36nFpyE') format('svg');font-weight: normal;font-style: normal;
}

У кого-нибудь есть идеи, почему это может происходить?

Ура!

=============================================

РЕДАКТИРОВАТЬ

Я нашел следующий сайт, который показывает тот же шрифт нормально в IE9, есть идеи, как он это сделал?

http://iamthomasbishop.com/

12 ответов

Решение

Нет ответа, только подтверждение: у меня похожая проблема. Шрифт работает во всех других версиях IE, кроме IE9, с использованием IETester и оригинального браузера. При смене режима документа (F12 dev tools) шрифт работает. Не так, как мне бы это понравилось.

Обновление: с некоторой хитростью мне удалось заставить это работать. Похоже, что IE9 использует версию шрифта .woff (которую я исключил), а не .eot, как я думал. Я использовал генератор @ font-face от http://www.fontsquirrel.com/, чтобы получить все различные варианты шрифтов, и включил их в свой проект, используя smileyface -local. Не нужно было изменять мой файл.htaccess. Теперь работает нормально и выглядит одинаково во всех версиях IE:

@font-face {
  font-family: "LucidaFax-bold";
  src: url("_font/LucidaFax-bold.eot");
  src: local("☺"),
  url("_font/LucidaFax-bold.woff") format("woff"),
  url("_font/LucidaFax-bold.ttf") format("truetype"),
  url("_font/LucidaFax-bold.svg#LucidaFax-bold") format("svg");
  }

h1 { font-family: "LucidaFax-bold", serif;}

(Я даже недавно сошел с ума, когда использовал взлом текста и тени Марка "Tarquin" Уилтона-Джонса, применяя тот же внешний вид к версиям IE, что и к остальному миру браузеров. Старая школа? Выглядит отлично! Стоило ли это того? Ну, многому научился.;)

У меня только что была та же проблема с веб-шрифтами, размещенными на сайте IIS7, как предположил Гриллз, проблема была связана с MIME Types.

Я решил использовать "application/octet-stream", основываясь на ответах на тип Mime для вопроса WOFF.

  1. Откройте IIS и выберите сайт, на котором размещены шрифты (должно быть одинаковое имя домена для IE9 и Firefox)
  2. Двойной клик "Mime Types"
  3. Нажмите "Добавить..." в правом верхнем углу.
  4. В поле "Расширение имени файла:" введите ".woff"
  5. В поле "MIME type" введите "application/octet-stream"

Скриншот WOFF MIME Type

Надеюсь, что это сэкономит кому-то 10 минут в будущем.

Для нас хитростью было просто изменить формат файлов.eot, которые мы обслуживаем.

Работает в IE6-9, Firefox 3-4, Chrome, Safari, Android, iPhone.

@font-face {
    font-family: 'Museo';
    src: url('/ui/museo300.eot?') format('eot'),
         url('/ui/museo300.ttf')  format('truetype')
}

становится:

@font-face {
    font-family: 'Museo';
    src: url('/ui/museo300.eot?') format('embedded-opentype'),
         url('/ui/museo300.ttf')  format('truetype')
}

Мое решение состоит в том, чтобы объявить два разных шрифта:

@font-face {
    font-family: "Dereza bold";
    src: local("Dereza bold"), url("../../assets/otf/dereza_bold.otf") format("opentype"); 
}

@font-face {
    font-family: "IE Dereza bold";
    src: url("../../assets/eot/dereza_bold.eot");
}

А потом:

.divclass {
  font-family: "Dereza bold", "IE Dereza bold";
}

Abalore +1

Мое решение:

@font-face {
    font-family: "OfficinaSansBookSCC";
    src: url('font/OfficinaSansBookSCC.eot'); 
    src: url('font/OfficinaSansBookSCC.eot') format('embedded-opentype'), 
         url( 'font/OfficinaSansBookSCC.ttf' ) format("truetype");
} 

работает в IE 7-9, Chrome, Opera, Firefox.

первая строка необходима для IE 9, вторая для IE 7-8.

Ну, так как вы отредактировали свое сообщение, текст ниже не будет ответом. Вы указываете на правильный каталог? Есть ли шанс, что это проблема типа mime с сервера?

================================================== ==

Это может быть так:

Важно отметить, что ваш сайт должен отображаться в documentMode 9, чтобы воспользоваться новыми функциями, включенными в IE9 (который включает в себя все новые функции в IE9, а не только те, которые связаны с веб-шрифтами). Если вы раньше не слышали о DocumentMode, Microsoft разработала руководство, в котором объясняется, что это такое и как вы можете использовать его на своем сайте.

с http://blog.typekit.com/2010/09/03/typekit-adds-experimental-support-for-ie9/

В IE9 - F12 посмотрите на экран отладки, чтобы увидеть, есть ли какие-либо ошибки CSS3117. См. Также: IE9 блокирует загрузку веб-шрифта кросс-происхождения

Font Squirrel также предоставляет замечательный инструмент-генератор, который поможет вам создать набор шрифтов, который будет включать в себя необходимые форматы, уже написанный CSS и даже демонстрационную страницу, чтобы увидеть, как все это используется, а также помощь в решении проблем, с которыми вы можете столкнуться.

Было очень легко включить свой вывод в мой сайт, и это действительно решило проблему.

http://www.fontsquirrel.com/ использует это для своего примера CSS, который работал хорошо для проекта, над которым я работал.

@font-face {
    font-family: 'QuicksandBook';
    src: url('/Quicksand_Book-webfont.eot');
    src: url('/Quicksand_Book-webfont.eot?#iefix') format('embedded-opentype'),
         url('/Quicksand_Book-webfont.woff') format('woff'),
         url('/Quicksand_Book-webfont.ttf') format('truetype'),
         url('/Quicksand_Book-webfont.svg#QuicksandBook') format('svg');
    font-weight: normal;
    font-style: normal;
}

Вам следует ознакомиться с этим сообщением в блоге. Полу Айришу есть, что сказать о проблемах, с которыми вы сталкиваетесь, и он предлагает то, что он называет "пуленепробиваемым" выражением @font-face.

http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/

У меня была эта проблема. Оказывается, я пропустил запятую в декларации семейства шрифтов.

Я хотел добавить еще одну вещь, которая может пойти не так в этом сценарии. В IE9 есть правило, которое отбрасывает все объявления @font-face, которые нельзя кэшировать после первой загрузки. IE9 будет правильно использовать шрифт на первом дисплее, но при последующих обновлениях @font-face будет отключен. Я обнаружил это после того, как случайно закрыл свой браузер, а затем снова открыл его и обнаружил, что мой шрифт работал загадочно, только чтобы перестать работать одно обновление позже.

Чтобы это исправить, вам просто нужно убедиться, что запрос, обслуживающий ваш шрифт, имеет Cache-Control заголовок ответа чего-то другого, кроме no-cache, Я бы порекомендовал установить его на max-age=3600, Это обеспечит кэширование вашего шрифта в течение часа. IE9 сможет последовательно отображать ваш шрифт.

Другие вопросы по тегам