Ответ 1
Это из-за того, как IE8 и ниже интерпретируют объявления шрифтов. Обычный url('myfont-webfont.eot')
приведет к 404 ошибкам сервера в этих версиях IE; добавление ?#iefix
устраняет проблемы с сервером. (Это по той же причине есть условные таблицы стилей для IE.)
Согласно Fontspring (прямо из источника):
Internet Explorer < 9 имеет ошибку в синтаксическом анализаторе для атрибута src. Если в src включено более одного формата шрифта, IE не загружает его и сообщает об ошибке 404. Причина в том, что IE пытается загрузить как файл все между открывающей скобкой вплоть до самой последней закрывающей круглой скобки. Чтобы справиться с этим неправильным поведением, вы просто сначала объявляете EOT и добавляете один знак вопроса. Вопросительный знак fools IE в мышлении остальной строки является строкой запроса и загружает только файл EOT. Другие браузеры следуют спецификации и выбирают нужный формат на основе каскада src и подсказки формата.
Таким образом, необходимой частью является ?
; Я полагаю, что #iefix
- это просто семантическая линия для программистов, которая не интерпретируется браузером каким-либо определенным образом.
Вот еще одна информация, если вы хотите: https://github.com/stubbornella/csslint/wiki/Bulletproof-font-face.