2011-01-05 2 views
38

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

Сайт:

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; 
} 

Любой какие-либо идеи, почему это может происходить?

Cheers!

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

EDIT

Я нашел следующий сайт, который отображает тот же шрифт ok в IE9, anyine, какие-либо идеи, как он это сделал?

http://iamthomasbishop.com/

ответ

41

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

Обновление: С некоторыми обманами мне удалось заставить его работать. Похоже, что IE9 использует версию шрифта .woff (который я исключил) по сравнению с .eot, который, как я думал, будет. Я использовал @font-face generator от fontsquirrel, чтобы получить все различные варианты шрифтов и включить их в свой проект, используя 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;} 

(я даже разозлился свежим, используя Марк «Тарквиния» Wilton-Джонс text-shadow хака, применяя тот же самый взгляд на версию IE, как остальной мир браузера.Старая школа? Выглядит отлично! Стоило ли? Ну, многому научился.;)

+0

Я закончил тем, что использовал метатеги, чтобы IE9 выполнял как IE8 только для этого эффекта. Не идеально, поскольку я теряю некоторые хорошие эффекты CSS3, но лучше, чем ужасный рендеринг шрифтов, за которым я застрял! – DanC

+0

ОБНОВЛЕНИЕ! Используя эту технику, я также получил IE9, отображающий @ font-face, хотя странно, только когда все обернуто в «font_here» вместо «font_here», которое я изначально имел. Должно ли это иметь значение? Я сомневаюсь в этом, но следую за макетом, как показано Тобиасом, и все должно получиться отлично! – DanC

+2

попробуйте это с помощью смайлика, но без "" вокруг имени шрифта. font-family: LucidaFax-bold; ... звучит глупо, но работает для меня .. или посмотрите здесь: http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/ – slobodan

2

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

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

Это может быть это:

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

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

+0

Извините за редактирование! Файл .eot находится в том же каталоге, что и css, как рекомендовано. Это может быть проблема типа mime, хотя я не уверен на 100%, как исследовать этот тип проблемы. – DanC

+0

Я уверен, что это не так, просто одна из вещей, которые появились у меня в голове. Моя другая мысль заключается в том, что это проблема прав. Я нашел этот пост: http://readableweb.com/testing-shows-ie9-beta-greedy-for-web-fonts/ и, похоже, предполагает, что MS тестирует лицензию при принятии решения о том, показывать или не отображать шрифт. Может быть, это может объяснить локальное/серверное несоответствие. Я признаю, что я сейчас нахожусь над моей головой. –

18

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

Я решил использовать «приложение/октет-поток» на основе ответов на вопрос Mime type for WOFF.

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

WOFF MIME Type Screenshot

Надежда, что спасает кого-то 10 минут в будущее.

+0

Огромный! Это решило мою проблему отлично. Благодаря! –

+0

Мы используем этот же тип MIME в IIS («application/octet-stream») для .eot и .ttf. Стоит отметить, что мы видели широкую совместимость с этими двумя форматами - остальные в конечном итоге просто раздуваются в CSS. –

+0

Сохраните мою жизнь !!! – jpussacq

15

Для нас хитрость заключается в том, чтобы просто изменить формат на .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') 
} 
+1

Это сработало для меня. Я уже использовал правильный синтаксис, который [Tobias outlined] (http://stackoverflow.com/a/4641504/524501), но мой шрифт все еще не отображался в IE9. Затем я понял, что у меня нет формата, объявленного для формата eot (как в примере кода Tobias), поэтому я добавил, что предложил Крис здесь, и это сработало как шарм. Благодаря! – todd

+1

Это тоже работало для меня. Я работал с FontAwesome, который не работал в IE 9. Просто измените формат .eot на встроенный-opentype, как это сделал Крис. Крис, не могли бы вы объяснить, почему это устраняет проблему? – Julian

+0

@Julian У меня нет причин для вас, почему IE9 хочет, чтобы это прописано - я просто создал множество тестовых примеров с вариациями в форматах и ​​т. Д. И тестировал, пока не нашел самый маленький возможный тестовый пример, который все еще работал во всех основных браузеры. Вуаля. –

3

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

@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"; 
} 
3

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, хром, Opera, FireFox.

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

0

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; 
} 
1

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

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

0

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

0

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

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

Смежные вопросы