@@ -4,6 +4,7 @@ var CSSOM = {
44 CSSStyleRule : require ( "./CSSStyleRule" ) . CSSStyleRule ,
55 CSSImportRule : require ( "./CSSImportRule" ) . CSSImportRule ,
66 CSSMediaRule : require ( "./CSSMediaRule" ) . CSSMediaRule ,
7+ CSSFontFaceRule : require ( "./CSSFontFaceRule" ) . CSSFontFaceRule ,
78 CSSStyleDeclaration : require ( './CSSStyleDeclaration' ) . CSSStyleDeclaration ,
89 CSSKeyframeRule : require ( './CSSKeyframeRule' ) . CSSKeyframeRule ,
910 CSSKeyframesRule : require ( './CSSKeyframesRule' ) . CSSKeyframesRule
@@ -44,13 +45,13 @@ CSSOM.parse = function parse(token) {
4445
4546 var styleSheet = new CSSOM . CSSStyleSheet ;
4647
47- // @type CSSStyleSheet|CSSMediaRule|CSSKeyframesRule
48+ // @type CSSStyleSheet|CSSMediaRule|CSSFontFaceRule| CSSKeyframesRule
4849 var currentScope = styleSheet ;
4950
5051 // @type CSSMediaRule|CSSKeyframesRule
5152 var parentRule ;
5253
53- var selector , name , value , priority = "" , styleRule , mediaRule , importRule , keyframesRule , keyframeRule ;
54+ var selector , name , value , priority = "" , styleRule , mediaRule , importRule , fontFaceRule , keyframesRule , keyframeRule ;
5455
5556 var atKeyframesRegExp = / @ ( - (?: \w + - ) + ) ? k e y f r a m e s / g;
5657
@@ -136,6 +137,13 @@ CSSOM.parse = function parse(token) {
136137 i += "import" . length ;
137138 buffer += "@import" ;
138139 break ;
140+ } else if ( token . indexOf ( "@font-face" , i ) === i ) {
141+ state = "fontFaceRule-begin" ;
142+ i += "font-face" . length ;
143+ fontFaceRule = new CSSOM . CSSFontFaceRule ;
144+ fontFaceRule . __starts = i ;
145+ buffer = "" ;
146+ break ;
139147 } else {
140148 atKeyframesRegExp . lastIndex = i ;
141149 var matchKeyframes = atKeyframesRegExp . exec ( token ) ;
@@ -166,6 +174,14 @@ CSSOM.parse = function parse(token) {
166174 mediaRule . parentStyleSheet = styleSheet ;
167175 buffer = "" ;
168176 state = "before-selector" ;
177+ } else if ( state === "fontFaceRule-begin" ) {
178+ if ( parentRule ) {
179+ fontFaceRule . parentRule = parentRule ;
180+ }
181+ fontFaceRule . parentStyleSheet = styleSheet ;
182+ styleRule = fontFaceRule ;
183+ buffer = "" ;
184+ state = "before-name" ;
169185 } else if ( state === "keyframesRule-begin" ) {
170186 keyframesRule . name = buffer . trim ( ) ;
171187 if ( parentRule ) {
0 commit comments