فهرست منبع

created separated entry for "Fonts" in the options page

Gildas 7 سال پیش
والد
کامیت
ede66962b3

+ 12 - 4
_locales/en/messages.json

@@ -179,6 +179,18 @@
         "message": "remove images for alternative screen resolutions",
         "description": "Options page label: 'remove images for alternative screen resolutions'"
     },
+    "fontsSubTitle": {
+        "message": "Fonts",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "remove unused fonts",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "remove alternative fonts",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "Stylesheets",
         "description": "Options sub-title: 'Stylesheets'"
@@ -191,10 +203,6 @@
         "message": "remove unused styles",
         "description": "Options page label: 'remove unused styles'"
     },
-    "optionRemoveAlternativeFonts": {
-        "message": "remove alternative fonts to woff/otf and unused fonts",
-        "description": "Options page label: 'remove alternative fonts to woff/otf and unused fonts'"
-    },
     "optionRemoveAlternativeMedias": {
         "message": "remove stylesheets for alternative devices to screens",
         "description": "Options page label: 'remove stylesheets for alternative devices to screens'"

+ 12 - 4
_locales/fr/messages.json

@@ -179,6 +179,18 @@
         "message": "supprimer les images pour des résolutions d'écran alternatives",
         "description": "Options page label: 'remove images for alternative screen resolutions'"
     },
+    "fontsSubTitle": {
+        "message": "Polices de caractère",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "supprimer les polices de caractère inutilisées",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "supprimer les polices de caractère alternatives",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "Feuilles de style",
         "description": "Options sub-title: 'Stylesheets'"
@@ -191,10 +203,6 @@
         "message": "supprimer les styles inutilisés",
         "description": "Options page label: 'remove unused styles'"
     },
-    "optionRemoveAlternativeFonts": {
-        "message": "supprimer les polices de caractère autres que woff/otf et les polices inutilisées",
-        "description": "Options page label: 'remove alternative fonts to woff/otf and unused fonts'"
-    },
     "optionRemoveAlternativeMedias": {
         "message": "supprimer les feuilles de styles pour les appareils autres que des écrans",
         "description": "Options page label: 'remove stylesheets for alternative devices to screens'"

+ 13 - 5
_locales/ja/messages.json

@@ -179,6 +179,18 @@
         "message": "代替画面解像度用の画像を削除します",
         "description": "オプションのページラベル: '代替画面解像度用の画像を削除します'"
     },
+    "fontsSubTitle": {
+        "message": "Fonts",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "remove unused fonts",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "remove alternative fonts",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "スタイルシート",
         "description": "オプションのサブタイトル: 'スタイルシート'"
@@ -189,11 +201,7 @@
     },
     "optionRemoveUnusedStyles": {
         "message": "未使用のスタイルを削除する",
-        "description": "オプションのページラベル: '未使用のスタイルを削除する'"
-    },
-    "optionRemoveAlternativeFonts": {
-        "message": "未使用のフォントと woff / otf への代替フォントを削除する",
-        "description": "オプションのページラベル: '未使用のフォントと woff / otf への代替フォントを削除する'"
+        "description": "Options page label: 'remove unused styles'"
     },
     "optionRemoveAlternativeMedias": {
         "message": "代替デバイス用のスタイルシートを画面に表示しない",

+ 12 - 4
_locales/pl/messages.json

@@ -179,6 +179,18 @@
         "message": "usuwaj obrazy dla alternatywnych rozdzielczości ekranu",
         "description": "Options page label: 'remove images for alternative screen resolutions'"
     },
+    "fontsSubTitle": {
+        "message": "Fonts",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "remove unused fonts",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "remove alternative fonts",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "Arkusze stylów",
         "description": "Options sub-title: 'Stylesheets'"
@@ -191,10 +203,6 @@
         "message": "usuwaj nieużywane style",
         "description": "Options page label: 'remove unused styles'"
     },
-    "optionRemoveAlternativeFonts": {
-        "message": "usuń czcionki inne niż woff/otf oraz nieużywane czcionki",
-        "description": "Options page label: 'remove alternative fonts to woff/otf and unused fonts'"
-    },
     "optionRemoveAlternativeMedias": {
         "message": "usuwaj arkusze stylów dla urządzeń innych niż ekrany",
         "description": "Options page label: 'remove stylesheets for alternative devices to screens'"

+ 12 - 4
_locales/ru/messages.json

@@ -179,6 +179,18 @@
         "message": "удалить изображения для альтернативных разрешений экрана",
         "description": "Options page label: 'remove images for alternative screen resolutions'"
     },
+    "fontsSubTitle": {
+        "message": "Fonts",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "remove unused fonts",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "remove alternative fonts",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "Таблицы стилей",
         "description": "Options sub-title: 'Stylesheets'"
@@ -191,10 +203,6 @@
         "message": "удалить неиспользуемые стили",
         "description": "Options page label: 'remove unused styles'"
     },
-    "optionRemoveAlternativeFonts": {
-        "message": "удалить альтернативные шрифты в woff/otf и неиспользуемые шрифты",
-        "description": "Options page label: 'remove alternative fonts to woff/otf and unused fonts'"
-    },
     "optionRemoveAlternativeMedias": {
         "message": "удалить таблицы стилей для экранов альтернативных устройств",
         "description": "Options page label: 'remove stylesheets for alternative devices to screens'"

+ 12 - 4
_locales/zh_CN/messages.json

@@ -179,6 +179,18 @@
         "message": "移除备用分辨率的图像",
         "description": "选项页标签: '移除备用分辨率的图像'"
     },
+    "fontsSubTitle": {
+        "message": "Fonts",
+        "description": "Options sub-title: 'Fonts'"
+    },
+    "optionRemoveUnusedFonts": {
+        "message": "remove unused fonts",
+        "description": "Options page label: 'remove unused fonts'"
+    },
+    "optionRemoveAlternativeFonts": {
+        "message": "remove alternative fonts",
+        "description": "Options page label: 'remove alternative fonts'"
+    },
     "optionsStylesheetsSubTitle": {
         "message": "样式表",
         "description": "选项页副标题: '样式表'"
@@ -191,10 +203,6 @@
         "message": "移除未使用的样式",
         "description": "选项页标签: '移除未使用的样式'"
     },
-    "optionRemoveAlternativeFonts": {
-        "message": "移除 woff/otf 备用字体以及未使用的字体",
-        "description": "选项页标签: '移除 woff/otf 备用字体以及未使用的字体'"
-    },
     "optionRemoveAlternativeMedias": {
         "message": "移除其他设备分辨率的样式表",
         "description": "选项页标签: '移除其他设备分辨率的样式表'"

+ 2 - 0
extension/core/bg/config.js

@@ -29,6 +29,7 @@ singlefile.config = (() => {
 	const DEFAULT_CONFIG = {
 		removeHiddenElements: true,
 		removeUnusedStyles: true,
+		removeUnusedFonts: true,
 		removeFrames: false,
 		removeImports: true,
 		removeScripts: true,
@@ -104,6 +105,7 @@ singlefile.config = (() => {
 			config.compressHTML = config.compressCSS = config.compress;
 			delete config.compress;
 		}
+		upgradeOldConfig(config, "removeUnusedFonts", "removeUnusedStyles");
 		upgradeOldConfig(config, "removeUnusedStyles", "removeUnusedCSSRules");
 		upgradeOldConfig(config, "removeAlternativeImages", "removeSrcSet");
 		upgradeOldConfig(config, "confirmInfobarContent", "confirmInfobar");

+ 5 - 3
extension/core/bg/runner.js

@@ -68,11 +68,13 @@ singlefile.runner = (() => {
 		removeAlternativeImages: [
 			"/lib/single-file/modules/html-images-alt-minifier.js"
 		],
-		removeUnusedStyles: [
+		removeUnusedFonts: [
 			"/lib/single-file/vendor/css-font-property-parser.js",
-			"/lib/single-file/modules/css-matched-rules.js",
-			"/lib/single-file/modules/css-rules-minifier.js",
 			"/lib/single-file/modules/css-fonts-minifier.js"
+		],
+		removeUnusedStyles: [
+			"/lib/single-file/modules/css-matched-rules.js",
+			"/lib/single-file/modules/css-rules-minifier.js"
 		]
 	};
 

+ 7 - 0
extension/ui/bg/ui-options.js

@@ -30,6 +30,7 @@
 	const confirm = browserInfo.name == CHROME_BROWSER_NAME ? message => bgPage.confirm(message) : message => { document.body.style.opacity = 0; const value = window.confirm(message); document.body.style.opacity = 1; return value; };
 	const removeHiddenElementsLabel = document.getElementById("removeHiddenElementsLabel");
 	const removeUnusedStylesLabel = document.getElementById("removeUnusedStylesLabel");
+	const removeUnusedFontsLabel = document.getElementById("removeUnusedFontsLabel");
 	const removeFramesLabel = document.getElementById("removeFramesLabel");
 	const removeImportsLabel = document.getElementById("removeImportsLabel");
 	const removeScriptsLabel = document.getElementById("removeScriptsLabel");
@@ -66,6 +67,7 @@
 	const htmlContentLabel = document.getElementById("htmlContentLabel");
 	const imagesLabel = document.getElementById("imagesLabel");
 	const stylesheetsLabel = document.getElementById("stylesheetsLabel");
+	const fontsLabel = document.getElementById("fontsLabel");
 	const otherResourcesLabel = document.getElementById("otherResourcesLabel");
 	const autoSaveLabel = document.getElementById("autoSaveLabel");
 	const autoSettingsLabel = document.getElementById("autoSettingsLabel");
@@ -89,6 +91,7 @@
 	const profileNamesInput = document.getElementById("profileNamesInput");
 	const removeHiddenElementsInput = document.getElementById("removeHiddenElementsInput");
 	const removeUnusedStylesInput = document.getElementById("removeUnusedStylesInput");
+	const removeUnusedFontsInput = document.getElementById("removeUnusedFontsInput");
 	const removeFramesInput = document.getElementById("removeFramesInput");
 	const removeImportsInput = document.getElementById("removeImportsInput");
 	const removeScriptsInput = document.getElementById("removeScriptsInput");
@@ -281,6 +284,7 @@
 	renameProfileButton.title = browser.i18n.getMessage("profileRenameButtonTooltip");
 	removeHiddenElementsLabel.textContent = browser.i18n.getMessage("optionRemoveHiddenElements");
 	removeUnusedStylesLabel.textContent = browser.i18n.getMessage("optionRemoveUnusedStyles");
+	removeUnusedFontsLabel.textContent = browser.i18n.getMessage("optionRemoveUnusedFonts");
 	removeFramesLabel.textContent = browser.i18n.getMessage("optionRemoveFrames");
 	removeImportsLabel.textContent = browser.i18n.getMessage("optionRemoveImports");
 	removeScriptsLabel.textContent = browser.i18n.getMessage("optionRemoveScripts");
@@ -318,6 +322,7 @@
 	htmlContentLabel.textContent = browser.i18n.getMessage("optionsHTMLContentSubTitle");
 	imagesLabel.textContent = browser.i18n.getMessage("optionsImagesSubTitle");
 	stylesheetsLabel.textContent = browser.i18n.getMessage("optionsStylesheetsSubTitle");
+	fontsLabel.textContent = browser.i18n.getMessage("fontsSubTitle");
 	otherResourcesLabel.textContent = browser.i18n.getMessage("optionsOtherResourcesSubTitle");
 	autoSaveLabel.textContent = browser.i18n.getMessage("optionsAutoSaveSubTitle");
 	miscLabel.textContent = browser.i18n.getMessage("optionsMiscSubTitle");
@@ -432,6 +437,7 @@
 		const profileOptions = profiles[selectedProfileName];
 		removeHiddenElementsInput.checked = profileOptions.removeHiddenElements;
 		removeUnusedStylesInput.checked = profileOptions.removeUnusedStyles;
+		removeUnusedFontsInput.checked = profileOptions.removeUnusedFonts;
 		removeFramesInput.checked = profileOptions.removeFrames;
 		removeImportsInput.checked = profileOptions.removeImports;
 		removeScriptsInput.checked = profileOptions.removeScripts;
@@ -478,6 +484,7 @@
 		pendingSave = singlefile.config.updateProfile(profileNamesInput.value, {
 			removeHiddenElements: removeHiddenElementsInput.checked,
 			removeUnusedStyles: removeUnusedStylesInput.checked,
+			removeUnusedFonts: removeUnusedFontsInput.checked,
 			removeFrames: removeFramesInput.checked,
 			removeImports: removeImportsInput.checked,
 			removeScripts: removeScriptsInput.checked,

+ 18 - 11
extension/ui/pages/options.html

@@ -79,6 +79,21 @@
 			<input type="checkbox" id="removeFramesInput">
 		</div>
 	</details>
+	<details>
+		<summary id="stylesheetsLabel"></summary>
+		<div class="option">
+			<label for="compressCSSInput" id="compressCSSLabel"></label>
+			<input type="checkbox" id="compressCSSInput">
+		</div>
+		<div class="option">
+			<label for="removeUnusedStylesInput" id="removeUnusedStylesLabel"></label>
+			<input type="checkbox" id="removeUnusedStylesInput">
+		</div>
+		<div class="option">
+			<label for="removeAlternativeMediasInput" id="removeAlternativeMediasLabel"></label>
+			<input type="checkbox" id="removeAlternativeMediasInput">
+		</div>
+	</details>
 	<details>
 		<summary id="imagesLabel"></summary>
 		<div class="option">
@@ -99,23 +114,15 @@
 		</div>
 	</details>
 	<details>
-		<summary id="stylesheetsLabel"></summary>
+		<summary id="fontsLabel"></summary>
 		<div class="option">
-			<label for="compressCSSInput" id="compressCSSLabel"></label>
-			<input type="checkbox" id="compressCSSInput">
-		</div>
-		<div class="option">
-			<label for="removeUnusedStylesInput" id="removeUnusedStylesLabel"></label>
-			<input type="checkbox" id="removeUnusedStylesInput">
+			<label for="removeUnusedFontsInput" id="removeUnusedFontsLabel"></label>
+			<input type="checkbox" id="removeUnusedFontsInput">
 		</div>
 		<div class="option">
 			<label for="removeAlternativeFontsInput" id="removeAlternativeFontsLabel"></label>
 			<input type="checkbox" id="removeAlternativeFontsInput">
 		</div>
-		<div class="option">
-			<label for="removeAlternativeMediasInput" id="removeAlternativeMediasLabel"></label>
-			<input type="checkbox" id="removeAlternativeMediasInput">
-		</div>
 	</details>
 	<details>
 		<summary id="otherResourcesLabel"></summary>

+ 1 - 1
lib/single-file/single-file-core.js

@@ -114,7 +114,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 		sequential: [
 			{ option: "removeUnusedStyles", action: "removeUnusedStyles" },
 			{ option: "removeAlternativeMedias", action: "removeAlternativeMedias" },
-			{ option: "removeUnusedStyles", action: "removeUnusedFonts" }
+			{ option: "removeUnusedFonts", action: "removeUnusedFonts" }
 		],
 		parallel: [
 			{ action: "processStylesheets" },

+ 2 - 2
lib/single-file/util/doc-helper.js

@@ -63,7 +63,7 @@ this.docHelper = this.docHelper || (() => {
 		if (win) {
 			canvasData = getCanvasData(doc, win);
 			imageData = getImageData(doc, win, options);
-			if (doc.body && (options.removeHiddenElements || options.removeUnusedStyles || options.compressHTML)) {
+			if (doc.body && (options.removeHiddenElements || options.removeUnusedFonts || options.compressHTML)) {
 				let elementsInfo = getElementsInfo(win, doc.body);
 				if (options.removeHiddenElements) {
 					const markerRemovedContent = removedContentAttributeName(options.sessionId);
@@ -81,7 +81,7 @@ this.docHelper = this.docHelper || (() => {
 					});
 					elementsInfo = new Map(Array.from(elementsInfo).filter(([element]) => element.getAttribute(markerRemovedContent) != ""));
 				}
-				if (options.removeUnusedStyles) {
+				if (options.removeUnusedFonts) {
 					let loadedFonts;
 					if (doc.fonts) {
 						loadedFonts = Array.from(doc.fonts).filter(font => font.status == "loaded" || font.status == "loading");