|
|
@@ -56,7 +56,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
};
|
|
|
|
|
|
return {
|
|
|
- process: (doc, secondPass) => {
|
|
|
+ removeUnusedFonts: doc => {
|
|
|
const declaredFonts = new Set();
|
|
|
const fontsDetails = new Map();
|
|
|
const usedFonts = [];
|
|
|
@@ -70,22 +70,12 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
discarded: 0
|
|
|
}
|
|
|
};
|
|
|
- let pseudoElementsContent;
|
|
|
- if (secondPass) {
|
|
|
- pseudoElementsContent = "";
|
|
|
- } else {
|
|
|
- pseudoElementsContent = Array.from(doc.querySelectorAll("style")).map(style => getPseudoElementsContent(doc, style.sheet.cssRules)).join("");
|
|
|
- }
|
|
|
+ let pseudoElementsContent = Array.from(doc.querySelectorAll("style")).map(style => getPseudoElementsContent(doc, style.sheet.cssRules)).join("");
|
|
|
doc.querySelectorAll("style").forEach(style => {
|
|
|
if (style.sheet) {
|
|
|
stats.rules.processed += style.sheet.cssRules.length;
|
|
|
stats.rules.discarded += style.sheet.cssRules.length;
|
|
|
- processRules(doc, style.sheet.cssRules, fontsDetails, declaredFonts, usedFonts, pseudoElementsContent, secondPass);
|
|
|
- }
|
|
|
- });
|
|
|
- doc.querySelectorAll("style").forEach(style => {
|
|
|
- if (style.sheet) {
|
|
|
- style.textContent = processFontFaceRules(style.sheet.cssRules, fontsDetails, "all", stats);
|
|
|
+ processRules(doc, style.sheet.cssRules, fontsDetails, declaredFonts, usedFonts, pseudoElementsContent, false);
|
|
|
}
|
|
|
});
|
|
|
doc.querySelectorAll("[style]").forEach(element => {
|
|
|
@@ -116,6 +106,35 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
}
|
|
|
});
|
|
|
return stats;
|
|
|
+ },
|
|
|
+ removeAlternativeFonts: doc => {
|
|
|
+ const declaredFonts = new Set();
|
|
|
+ const fontsDetails = new Map();
|
|
|
+ const usedFonts = [];
|
|
|
+ const stats = {
|
|
|
+ rules: {
|
|
|
+ processed: 0,
|
|
|
+ discarded: 0
|
|
|
+ },
|
|
|
+ fonts: {
|
|
|
+ processed: 0,
|
|
|
+ discarded: 0
|
|
|
+ }
|
|
|
+ };
|
|
|
+ let pseudoElementsContent = "";
|
|
|
+ doc.querySelectorAll("style").forEach(style => {
|
|
|
+ if (style.sheet) {
|
|
|
+ stats.rules.processed += style.sheet.cssRules.length;
|
|
|
+ stats.rules.discarded += style.sheet.cssRules.length;
|
|
|
+ processRules(doc, style.sheet.cssRules, fontsDetails, declaredFonts, usedFonts, pseudoElementsContent, true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ doc.querySelectorAll("style").forEach(style => {
|
|
|
+ if (style.sheet) {
|
|
|
+ style.textContent = processFontFaceRules(style.sheet.cssRules, fontsDetails, "all", stats);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return stats;
|
|
|
}
|
|
|
};
|
|
|
|