|
|
@@ -231,18 +231,23 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
}
|
|
|
|
|
|
function processFontFaceRules(cssRules, fontsDetails, media, stats) {
|
|
|
- cssRules.forEach(cssRule => {
|
|
|
- if (cssRule.type == "Atrule" && cssRule.name == "media") {
|
|
|
- const mediaText = cssTree.generate(cssRule.prelude);
|
|
|
- processFontFaceRules(cssRule.block.children, fontsDetails, mediaText, stats);
|
|
|
- } else if (cssRule.type == "Atrule" && cssRule.name == "font-face" && (media.includes("all") || media.includes("screen"))) {
|
|
|
- const fontInfo = fontsDetails.get(getFontKey(cssRule));
|
|
|
+ const removedRules = [];
|
|
|
+ for (let cssRule = cssRules.head; cssRule; cssRule = cssRule.next) {
|
|
|
+ const ruleData = cssRule.data;
|
|
|
+ if (ruleData.type == "Atrule" && ruleData.name == "media") {
|
|
|
+ const mediaText = cssTree.generate(ruleData.prelude);
|
|
|
+ processFontFaceRules(ruleData.block.children, fontsDetails, mediaText, stats);
|
|
|
+ } else if (ruleData.type == "Atrule" && ruleData.name == "font-face" && (media.includes("all") || media.includes("screen"))) {
|
|
|
+ const fontInfo = fontsDetails.get(getFontKey(ruleData));
|
|
|
if (fontInfo) {
|
|
|
- fontsDetails.delete(getFontKey(cssRule));
|
|
|
- processFontFaceRule(cssRule, fontInfo, stats);
|
|
|
+ fontsDetails.delete(getFontKey(ruleData));
|
|
|
+ processFontFaceRule(ruleData, fontInfo, stats);
|
|
|
+ } else {
|
|
|
+ removedRules.push(cssRule);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
+ removedRules.forEach(cssRule => cssRules.remove(cssRule));
|
|
|
}
|
|
|
|
|
|
function processFontFaceRule(cssRule, fontInfo, stats) {
|