From 3b2d0d23acf7582516a34f1f32e4dc84a830351a Mon Sep 17 00:00:00 2001 From: Fabio Zuber Date: Tue, 17 Sep 2019 19:45:14 +0200 Subject: [PATCH] Fix local fonts with colors in name (#1077) * fix(optimizer): do not convert colors inside local font names --- lib/optimizer/level-1/optimize.js | 7 ++++++- test/optimizer/level-1/optimize-test.js | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/optimizer/level-1/optimize.js b/lib/optimizer/level-1/optimize.js index 13cfd8c52..845fce446 100644 --- a/lib/optimizer/level-1/optimize.js +++ b/lib/optimizer/level-1/optimize.js @@ -37,8 +37,13 @@ var IMPORT_PREFIX_PATTERN = /^@import/i; var QUOTED_PATTERN = /^('.*'|".*")$/; var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/; var URL_PREFIX_PATTERN = /^url\(/i; +var LOCAL_PREFIX_PATTERN = /^local\(/i; var VARIABLE_NAME_PATTERN = /^--\S+$/; +function isLocal(value){ + return LOCAL_PREFIX_PATTERN.test(value); +} + function isNegative(value) { return value && value[1][0] == '-' && parseFloat(value[1]) < 0; } @@ -443,7 +448,7 @@ function optimizeBody(rule, properties, context) { value = !options.compatibility.properties.urlQuotes ? removeUrlQuotes(value) : value; - } else if (isQuoted(value)) { + } else if (isQuoted(value) || isLocal(value)) { value = levelOptions.removeQuotes ? removeQuotes(name, value) : value; diff --git a/test/optimizer/level-1/optimize-test.js b/test/optimizer/level-1/optimize-test.js index 7f2d477e1..7872dad31 100644 --- a/test/optimizer/level-1/optimize-test.js +++ b/test/optimizer/level-1/optimize-test.js @@ -540,6 +540,10 @@ vows.describe('level 1 optimizations') 'with mixed bold weight and variant #2': [ 'a{font:bold normal 17px sans-serif}', 'a{font:bold normal 17px sans-serif}' + ], + 'with color in local font name': [ + '@font-face{src:local("Sans Black Italic")}', + '@font-face{src:local("Sans Black Italic")}', ] }, { level: 1 }) )