Przeglądaj źródła

take style attributes into account when searching unused fonts

Gildas 7 lat temu
rodzic
commit
095291594c
1 zmienionych plików z 16 dodań i 2 usunięć
  1. 16 2
      lib/single-file/rules-minifier.js

+ 16 - 2
lib/single-file/rules-minifier.js

@@ -45,6 +45,11 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 					stats.discarded += processed - style.sheet.cssRules.length;
 				}
 			});
+			doc.querySelectorAll("[style]").forEach(element => {
+				if (element.style.fontFamily) {
+					element.style.fontFamily.split(",").forEach(fontFamily => rulesData.fonts.used.add(getFontFamily(fontFamily)));
+				}
+			});
 			const unusedFonts = Array.from(rulesData.fonts.declared).filter(fontFamily => !rulesData.fonts.used.has(fontFamily));
 			doc.querySelectorAll("style").forEach(style => {
 				if (style.sheet) {
@@ -73,7 +78,7 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 								stylesheetContent += rule.cssText;
 								rulesData.selectors.add(selector);
 								if (rule.style && rule.style.fontFamily) {
-									rule.style.fontFamily.split(",").forEach(fontFamily => rulesData.fonts.used.add(fontFamily.trim()));
+									rule.style.fontFamily.split(",").forEach(fontFamily => rulesData.fonts.used.add(getFontFamily(fontFamily)));
 								}
 							}
 						} catch (error) {
@@ -82,7 +87,7 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 					}
 				} else {
 					if (rule.type == CSSRule.FONT_FACE_RULE && rule.style && rule.style.fontFamily) {
-						rulesData.fonts.declared.add(rule.style.fontFamily.trim());
+						rulesData.fonts.declared.add(getFontFamily(rule.style.fontFamily));
 					}
 					stylesheetContent += rule.cssText;
 				}
@@ -132,4 +137,13 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 		return selector;
 	}
 
+	function getFontFamily(fontFamily) {
+		fontFamily = fontFamily.trim()
+		if (fontFamily.match(/^'(.*)'$/)) {
+			return fontFamily.replace(/^'(.*)'$/, "$1");
+		} else {
+			return fontFamily.replace(/^"(.*)"$/, "$1");
+		}
+	}
+
 })();