The soon-to-be-released IE9 comes with a feature that allows it to render in both IE7 and IE8 Modes. In these two modes, Microsoft ‘fixed’ the parser bug that affected the actual IE7 and IE8. This fix breaks the @font-face syntax for those compatibility modes.
Yes, you read that right. Microsoft specifically include modes to emulate IE7 and IE8 while you’re in IE9 - so that IE9 behaves exactly like IE7 and IE8, for site’s that don’t work in IE9 itself. And in their infinite wisdom they’ve changed IE7 and IE8 so that those modes don’t actually emulate IE7 or IE8. Let me clarify further: the goal of those modes is to exactly mimic IE7 and 8. MS have deliberately “patched” them and now they do not.
This is <sarcasm>so great</sarcasm> for us web developers - thanks MS for giving us two new FrankenBrowser versions of IE to have to test against because they have their own quirks. You’re fucking geniuses.
For the ever suffering Web Developer, here’s some new code to get font embedding to work in the real IE7/8 and the new FrankenBrowser IE7/8, and every other sane browser in the land.