Установка свойства cssText работает, но вы ДОЛЖНЫ вставить элемент style в документ перед добавлением правила @ font-face в документ. Например ...
var s = document.createElement('style');
s.type = "text/css";
document.getElementsByTagName('head')[0].appendChild(s);
s.styleSheet.cssText = "@font-face {" + rule + "}";
Насколько я могу судить, вполне возможно установить другие типы правил CSS перед вставкой элемента стиля на страницу, но не @ font-face.
Например ... это отлично работает:
var s = document.createElement('style');
s.type = "text/css";
s.styleSheet.cssText = "body { background: red}";
document.getElementsByTagName('head')[0].appendChild(s);
Но это приводит к сбою IE 8 и менее:
var s = document.createElement('style');
s.type = "text/css";
s.styleSheet.cssText = "@font-face {" + rule + "}";
document.getElementsByTagName('head')[0].appendChild(s);