Unify SVGs for HTML safe titles reporting encoding errors in linting (#6522)
* Basic implementation * Fix error * Update icons * Tweak implementation * Minor changes * Apply suggested changes * Don't encode 34 and 39 codepoints (double and single quotes) * Fix comments
155
.svglintrc.js
@ -2,6 +2,7 @@ const fs = require('fs');
|
||||
|
||||
const data = require("./_data/simple-icons.json");
|
||||
const { htmlFriendlyToTitle } = require("./scripts/utils.js");
|
||||
const htmlNamedEntities = require("named-html-entities-json");
|
||||
const svgpath = require("svgpath");
|
||||
const svgPathBbox = require("svg-path-bbox");
|
||||
const parsePath = require("svg-path-segments");
|
||||
@ -69,6 +70,29 @@ function getPathDIndex(svgFileContent) {
|
||||
return svgFileContent.indexOf(pathDStart) + pathDStart.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the index at which the text of the first `<title></title>` tag starts.
|
||||
* @param svgFileContent The raw SVG as text.
|
||||
**/
|
||||
function getTitleTextIndex(svgFileContent) {
|
||||
const titleStart = '<title>';
|
||||
return svgFileContent.indexOf(titleStart) + titleStart.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a hexadecimal number passed as string to decimal number as integer.
|
||||
* @param hex The hexadecimal number representation to convert.
|
||||
**/
|
||||
function hexadecimalToDecimal(hex) {
|
||||
let result = 0, digitValue;
|
||||
hex = hex.toLowerCase();
|
||||
for (var i = 0; i < hex.length; i++) {
|
||||
digitValue = '0123456789abcdefgh'.indexOf(hex[i]);
|
||||
result = result * 16 + digitValue;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
if (updateIgnoreFile) {
|
||||
process.on('exit', () => {
|
||||
// ensure object output order is consistent due to async svglint processing
|
||||
@ -130,12 +154,141 @@ module.exports = {
|
||||
function(reporter, $, ast) {
|
||||
reporter.name = "icon-title";
|
||||
|
||||
const iconTitleText = $.find("title").text();
|
||||
const iconTitleText = $.find("title").text(),
|
||||
xmlNamedEntitiesCodepoints = [38, 60, 62],
|
||||
xmlNamedEntities = ["amp", "lt", "gt"];
|
||||
let _validCodepointsRepr = true;
|
||||
|
||||
// avoid character codepoints as hexadecimal representation
|
||||
const hexadecimalCodepoints = Array.from(
|
||||
iconTitleText.matchAll(/&#x([A-Fa-f0-9]+);/g)
|
||||
);
|
||||
if (hexadecimalCodepoints.length > 0) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
hexadecimalCodepoints.forEach(match => {
|
||||
const charHexReprIndex = getTitleTextIndex(ast.source) + match.index + 1;
|
||||
const charDec = hexadecimalToDecimal(match[1]);
|
||||
|
||||
let charRepr;
|
||||
if (xmlNamedEntitiesCodepoints.includes(charDec)) {
|
||||
charRepr = `&${xmlNamedEntities[xmlNamedEntitiesCodepoints.indexOf(charDec)]};`;
|
||||
} else if (charDec < 128) {
|
||||
charRepr = String.fromCodePoint(charDec);
|
||||
} else {
|
||||
charRepr = `&#${charDec};`;
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Hexadecimal representation of encoded character "${match[0]}" found at index ${charHexReprIndex}:`
|
||||
+ ` replace it with "${charRepr}".`
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
// avoid character codepoints as named entities
|
||||
const namedEntitiesCodepoints = Array.from(
|
||||
iconTitleText.matchAll(/&([A-Za-z0-9]+);/g)
|
||||
);
|
||||
if (namedEntitiesCodepoints.length > 0) {
|
||||
namedEntitiesCodepoints.forEach(match => {
|
||||
const namedEntiyReprIndex = getTitleTextIndex(ast.source) + match.index + 1;
|
||||
|
||||
if (!xmlNamedEntities.includes(match[1].toLowerCase())) {
|
||||
_validCodepointsRepr = false;
|
||||
const namedEntityJsRepr = htmlNamedEntities[match[1]];
|
||||
let replacement;
|
||||
|
||||
if (namedEntityJsRepr === undefined || namedEntityJsRepr.length != 1) {
|
||||
replacement = 'its decimal or literal representation';
|
||||
} else {
|
||||
const namedEntityDec = namedEntityJsRepr.codePointAt(0);
|
||||
if (namedEntityDec < 128) {
|
||||
replacement = `"${namedEntityJsRepr}"`;
|
||||
} else {
|
||||
replacement = `"&#${namedEntityDec};"`;
|
||||
}
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Named entity representation of encoded character "${match[0]}" found at index ${namedEntiyReprIndex}.`
|
||||
+ ` Replace it with ${replacement}.`
|
||||
);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (_validCodepointsRepr) {
|
||||
// compare encoded title with original title and report error if not equal
|
||||
const encodingMatches = Array.from(iconTitleText.matchAll(/&(#([0-9]+)|(amp|quot|lt|gt));/g)),
|
||||
encodedBuf = [];
|
||||
|
||||
const _indexesToIgnore = [];
|
||||
for (let m = 0; m < encodingMatches.length; m++) {
|
||||
let index = encodingMatches[m].index;
|
||||
for (let r = index; r < index + encodingMatches[m][0].length; r++) {
|
||||
_indexesToIgnore.push(r)
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = iconTitleText.length - 1; i >= 0; i--) {
|
||||
if (_indexesToIgnore.includes(i)) {
|
||||
encodedBuf.unshift(iconTitleText[i]);
|
||||
} else {
|
||||
// encode all non ascii characters plus "'&<> (XML named entities)
|
||||
let charDecimalCode = iconTitleText.charCodeAt(i);
|
||||
|
||||
if (charDecimalCode > 127) {
|
||||
encodedBuf.unshift(`&#${charDecimalCode};`);
|
||||
} else if (xmlNamedEntitiesCodepoints.includes(charDecimalCode)) {
|
||||
encodedBuf.unshift(
|
||||
`&${xmlNamedEntities[xmlNamedEntitiesCodepoints.indexOf(charDecimalCode)]};`
|
||||
);
|
||||
} else {
|
||||
encodedBuf.unshift(iconTitleText[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
const encodedIconTitleText = encodedBuf.join('');
|
||||
if (encodedIconTitleText !== iconTitleText) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
reporter.error(
|
||||
`Unencoded unicode characters found in title "${iconTitleText}":`
|
||||
+ ` rewrite it as "${encodedIconTitleText}".`
|
||||
);
|
||||
}
|
||||
|
||||
// check if there are some other encoded characters in decimal notation
|
||||
// which shouldn't be encoded
|
||||
encodingMatches.filter(m => !isNaN(m[2])).forEach(match => {
|
||||
const decimalNumber = parseInt(match[2]);
|
||||
if (decimalNumber < 128) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
const decimalCodepointCharIndex = getTitleTextIndex(ast.source) + match.index + 1;
|
||||
if (xmlNamedEntitiesCodepoints.includes(decimalNumber)) {
|
||||
replacement = `"&${xmlNamedEntities[xmlNamedEntitiesCodepoints.indexOf(decimalNumber)]};"`;
|
||||
} else {
|
||||
replacement = String.fromCharCode(decimalNumber);
|
||||
replacement = replacement == '"' ? `'"'` : `"${replacement}"`;
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Unnecessary encoded character "${match[0]}" found at index ${decimalCodepointCharIndex}:`
|
||||
+ ` replace it with ${replacement}.`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
if (_validCodepointsRepr) {
|
||||
const iconName = htmlFriendlyToTitle(iconTitleText);
|
||||
const iconExists = data.icons.some(icon => icon.title === iconName);
|
||||
if (!iconExists) {
|
||||
reporter.error(`No icon with title "${iconName}" found in simple-icons.json`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
function(reporter, $, ast) {
|
||||
reporter.name = "icon-size";
|
||||
|
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aeroméxico</title><path d="M22.354 12.222c.044.156 0 .422-.267.489a3.74 3.74 0 0 1-.666.11c-.377.045-.355.356-.355.534v2.264c0 .31-.244 1.354-1.443 1.354H16.87c-1.043 0-1.864-.866-1.864-1.798V9.803c-.022-.932.821-1.554 1.576-1.532.377 0 .644.111.843.222.444.2.933.444 1.577.755 0 0 1.02-.733 1.087-.777.355-.244.688-.067.8.155.377.733 1.087 2.22 1.465 3.596zm1.642-4.018a3.283 3.283 0 0 0-3.219-3.33c-1.709-.044-2.663.578-3.019.755-.022.023-.066 0-.11-.044-.311-.31-1-.777-1.754-.999-.111-.022-.133-.2 0-.2a13.3 13.3 0 0 1 3.64.111c.134.023.245-.066.178-.177-.044-.089-.067-.133-.133-.289-.156-.31-.533-.644-1.021-.777-1.266-.355-3.441-.666-5.394-.666-2.176-.022-4.484.422-5.062.555-.133.023-.333.09-.377.09-.111 0-.155.155-.089.221l.222.222c.067.089.111.222-.022.355L3.796 7.65H6.57c.177 0 .355.155.355.355 0 .177-.156.355-.333.355H2.997l-1.088.999h4.706c.178 0 .333.2.333.355 0 .155-.133.355-.333.355H1.11L0 11.09h9.501c.177 0 .333.2.333.355 0 .2-.133.378-.333.378H0v.999h9.479c.222 0 .333.2.333.377 0 .156-.156.333-.356.333H0v1h12.386c.2 0 .334.177.334.377 0 .177-.156.355-.334.355H3.33v.999h9.079c.177 0 .31.2.31.377s-.155.355-.31.355l-.178-.022H3.33v.999h10.455s.377-.866.377-1.843V9.403c0-.532.222-1.42 1.31-1.664.022 0 .067-.023.089-.023 3.085-.732 6.26-.066 8.058.71.333.156.4-.11.377-.222zM6.66 21.413h2.11c1.886-.022 3.107-1.02 3.107-1.02H6.659v1.02zm0-1.731h6.06c.29-.289.644-.8.733-.999H6.659v.999Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aeroméxico</title><path d="M22.354 12.222c.044.156 0 .422-.267.489a3.74 3.74 0 0 1-.666.11c-.377.045-.355.356-.355.534v2.264c0 .31-.244 1.354-1.443 1.354H16.87c-1.043 0-1.864-.866-1.864-1.798V9.803c-.022-.932.821-1.554 1.576-1.532.377 0 .644.111.843.222.444.2.933.444 1.577.755 0 0 1.02-.733 1.087-.777.355-.244.688-.067.8.155.377.733 1.087 2.22 1.465 3.596zm1.642-4.018a3.283 3.283 0 0 0-3.219-3.33c-1.709-.044-2.663.578-3.019.755-.022.023-.066 0-.11-.044-.311-.31-1-.777-1.754-.999-.111-.022-.133-.2 0-.2a13.3 13.3 0 0 1 3.64.111c.134.023.245-.066.178-.177-.044-.089-.067-.133-.133-.289-.156-.31-.533-.644-1.021-.777-1.266-.355-3.441-.666-5.394-.666-2.176-.022-4.484.422-5.062.555-.133.023-.333.09-.377.09-.111 0-.155.155-.089.221l.222.222c.067.089.111.222-.022.355L3.796 7.65H6.57c.177 0 .355.155.355.355 0 .177-.156.355-.333.355H2.997l-1.088.999h4.706c.178 0 .333.2.333.355 0 .155-.133.355-.333.355H1.11L0 11.09h9.501c.177 0 .333.2.333.355 0 .2-.133.378-.333.378H0v.999h9.479c.222 0 .333.2.333.377 0 .156-.156.333-.356.333H0v1h12.386c.2 0 .334.177.334.377 0 .177-.156.355-.334.355H3.33v.999h9.079c.177 0 .31.2.31.377s-.155.355-.31.355l-.178-.022H3.33v.999h10.455s.377-.866.377-1.843V9.403c0-.532.222-1.42 1.31-1.664.022 0 .067-.023.089-.023 3.085-.732 6.26-.066 8.058.71.333.156.4-.11.377-.222zM6.66 21.413h2.11c1.886-.022 3.107-1.02 3.107-1.02H6.659v1.02zm0-1.731h6.06c.29-.289.644-.8.733-.999H6.659v.999Z"/></svg>
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlloCiné</title><path d="M16.434.001a.826.826 0 00-.164.008l-3.423.543a2.635 2.635 0 01-2.189 3.01 2.629 2.629 0 01-3.01-2.185l-3.417.538a.818.818 0 00-.677.931l3.24 20.467a.818.818 0 00.931.677l3.423-.543a2.635 2.635 0 012.189-3.01 2.629 2.629 0 013.01 2.185l3.422-.543a.818.818 0 00.677-.93L17.2.685a.816.816 0 00-.767-.685zm-3.22 6.534c.066 0 .128.005.185.017.423.09.975.6 1.315.955.178.187.192.519.048.73l-1.228 1.795a.89.89 0 01-.437.283c-.504.125-1.248-.95-1.771 1.507-.524 2.458.59 1.776 1.003 2.098a.828.828 0 01.283.437l.394 2.14a.613.613 0 01-.341.649c-.456.182-1.167.427-1.589.336-.907-.192-2.342-2.4-1.57-6.044.725-3.415 2.71-4.89 3.708-4.903Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlloCiné</title><path d="M16.434.001a.826.826 0 00-.164.008l-3.423.543a2.635 2.635 0 01-2.189 3.01 2.629 2.629 0 01-3.01-2.185l-3.417.538a.818.818 0 00-.677.931l3.24 20.467a.818.818 0 00.931.677l3.423-.543a2.635 2.635 0 012.189-3.01 2.629 2.629 0 013.01 2.185l3.422-.543a.818.818 0 00.677-.93L17.2.685a.816.816 0 00-.767-.685zm-3.22 6.534c.066 0 .128.005.185.017.423.09.975.6 1.315.955.178.187.192.519.048.73l-1.228 1.795a.89.89 0 01-.437.283c-.504.125-1.248-.95-1.771 1.507-.524 2.458.59 1.776 1.003 2.098a.828.828 0 01.283.437l.394 2.14a.613.613 0 01-.341.649c-.456.182-1.167.427-1.589.336-.907-.192-2.342-2.4-1.57-6.044.725-3.415 2.71-4.89 3.708-4.903Z"/></svg>
|
Before Width: | Height: | Size: 743 B After Width: | Height: | Size: 747 B |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Citroën</title><path d="M18.591 15.407c-1.225-1.044-4.864-4.014-6.59-4.014-1.73 0-5.366 2.968-6.591 4.013-.007-.247-.014-.397-.014-.617 0 0-.03-.363.293-.725 2.657-2.393 5.442-3.563 5.528-3.6.83-.348.784-.283.783-1.683 0 0 .037-.002.06 0 1.17.106 4.316 3.14 6.177 5.19.003.003.367.422.367.864 0 .206-.006.41-.013.572m-.05-1.712c-.198-.218-4.855-5.328-6.541-5.328s-6.343 5.11-6.54 5.327h-.001c-.02.022-.474.539-.474 1.14 0 .47.031.941.031.946.002.022.012.22.124.275a.128.128 0 0 0 .058.013.242.242 0 0 0 .137-.055c.05-.044 4.795-4.209 6.665-4.209s6.615 4.165 6.663 4.207a.247.247 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.476.031-.944 0-.602-.454-1.119-.474-1.14m-3.35 6.45h-.001a6.569 6.569 0 0 1-.376 0c-.415 0-.863-.312-.863-.818 0-.501.438-.8.86-.8a4.14 4.14 0 0 1 .38 0c.425 0 .863.299.863.8 0 .506-.447.819-.862.819m.404-1.936c-.59-.013-1.19 0-1.194 0-.72 0-1.307.5-1.307 1.114 0 .623.586 1.13 1.307 1.13.005 0 .604.012 1.195 0 .722 0 1.309-.507 1.309-1.13 0-.608-.575-1.097-1.31-1.114m7.67 2.216H24v-1.07c0-.624-.56-1.114-1.274-1.114h-1.858c-.03 0-.102.007-.102.081v2.02c0 .054.04.082.079.082h.777v-1.689c0-.074.055-.113.11-.113h.857c.236 0 .587.215.587.678v1.04s.002.085.09.085m-15.507-1.75h1.146v-.348c0-.05-.035-.086-.082-.086H5.627a.083.083 0 0 0-.083.084v.349h.764c.286 0 .479.246.479.475v1.193c0 .039.035.083.084.083h.775v-1.639c0-.062.05-.112.112-.112m-3.532 1.668c0 .049.044.083.084.083h.044l-.006.005c.022-.005.097-.005.357-.005h.38v-2.101a.084.084 0 0 0-.083-.084H4.31a.085.085 0 0 0-.084.084v2.018zm5.994-1.079v-.436c0-.119.085-.202.206-.202h1.14c.173 0 .32.145.32.317a.322.322 0 0 1-.323.321H10.22zm1.668 1.162h.852c-.013-.525-.56-.742-.623-.765l-.01-.004v-.03l.011-.003c.366-.081.62-.36.62-.68 0-.337-.33-.703-.866-.703H9.811a.441.441 0 0 0-.446.446v1.655a.08.08 0 0 0 .082.083h.774l-.001-.774h.73c.65 0 .918.47.938.775m-8.965-1.451h.835c-.181-.457-.682-.77-1.257-.781l-.256-.006a11.048 11.048 0 0 0-.938.006c-.41.02-.67.114-.923.335a1.06 1.06 0 0 0-.384.802c0 .625.556 1.115 1.292 1.14.505.018.56.019 1.222 0 .613-.02 1.053-.297 1.243-.781h-.834a.078.078 0 0 0-.072.041.869.869 0 0 1-.754.422c-.171.007-.378 0-.378 0-.424 0-.863-.306-.863-.818v-.005c.003-.509.44-.813.865-.813.048-.002.219-.008.376 0 .309 0 .606.164.756.418a.08.08 0 0 0 .07.04m17.384 1.058h-2.02c-.069 0-.116-.045-.116-.11v-.416h1.75v-.383h-1.75l-.001-.38c0-.001-.001-.042.03-.074.022-.024.056-.036.1-.036h2.006v-.307c0-.026-.007-.046-.022-.06-.028-.027-.074-.025-.076-.025h-2.81c-.009 0-.086.002-.086.085v1.654c0 .219.169.445.45.445h2.46c.021 0 .042-.01.058-.025a.08.08 0 0 0 .027-.057v-.31m-.628-2.582a.553.553 0 0 0-.298-.076.56.56 0 0 0-.297.076c-.079.049-.141.114-.234.114-.093 0-.149-.065-.232-.114a.572.572 0 0 0-.297-.076.555.555 0 0 0-.298.076c-.082.05-.123.11-.123.181s.041.132.123.182c.083.05.181.075.298.075a.566.566 0 0 0 .29-.07c.075-.044.155-.118.239-.118.084 0 .16.066.234.113a.572.572 0 0 0 .297.075c.12 0 .22-.025.3-.075.08-.05.12-.11.12-.182 0-.07-.04-.131-.122-.181m-1.094-6.905c-1.224-1.042-4.86-4.01-6.585-4.01-1.726 0-5.36 2.966-6.583 4.01-.008-.247-.014-.397-.014-.616 0 0-.03-.363.292-.725 2.654-2.39 5.437-3.56 5.523-3.596.83-.348.783-.283.782-1.682 0 0 .037-.002.06 0 1.17.106 4.311 3.136 6.17 5.185.004.004.368.422.368.863 0 .206-.006.41-.013.571m-.05-1.71c-.198-.218-4.85-5.322-6.535-5.322-1.684 0-6.337 5.104-6.534 5.322-.02.021-.474.537-.474 1.139 0 .468.031.94.031.944.002.022.012.22.124.275a.13.13 0 0 0 .057.013.242.242 0 0 0 .138-.055c.05-.044 4.79-4.205 6.658-4.205 1.868 0 6.608 4.161 6.656 4.203a.245.245 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.475.031-.943 0-.602-.454-1.118-.473-1.14"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Citroën</title><path d="M18.591 15.407c-1.225-1.044-4.864-4.014-6.59-4.014-1.73 0-5.366 2.968-6.591 4.013-.007-.247-.014-.397-.014-.617 0 0-.03-.363.293-.725 2.657-2.393 5.442-3.563 5.528-3.6.83-.348.784-.283.783-1.683 0 0 .037-.002.06 0 1.17.106 4.316 3.14 6.177 5.19.003.003.367.422.367.864 0 .206-.006.41-.013.572m-.05-1.712c-.198-.218-4.855-5.328-6.541-5.328s-6.343 5.11-6.54 5.327h-.001c-.02.022-.474.539-.474 1.14 0 .47.031.941.031.946.002.022.012.22.124.275a.128.128 0 0 0 .058.013.242.242 0 0 0 .137-.055c.05-.044 4.795-4.209 6.665-4.209s6.615 4.165 6.663 4.207a.247.247 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.476.031-.944 0-.602-.454-1.119-.474-1.14m-3.35 6.45h-.001a6.569 6.569 0 0 1-.376 0c-.415 0-.863-.312-.863-.818 0-.501.438-.8.86-.8a4.14 4.14 0 0 1 .38 0c.425 0 .863.299.863.8 0 .506-.447.819-.862.819m.404-1.936c-.59-.013-1.19 0-1.194 0-.72 0-1.307.5-1.307 1.114 0 .623.586 1.13 1.307 1.13.005 0 .604.012 1.195 0 .722 0 1.309-.507 1.309-1.13 0-.608-.575-1.097-1.31-1.114m7.67 2.216H24v-1.07c0-.624-.56-1.114-1.274-1.114h-1.858c-.03 0-.102.007-.102.081v2.02c0 .054.04.082.079.082h.777v-1.689c0-.074.055-.113.11-.113h.857c.236 0 .587.215.587.678v1.04s.002.085.09.085m-15.507-1.75h1.146v-.348c0-.05-.035-.086-.082-.086H5.627a.083.083 0 0 0-.083.084v.349h.764c.286 0 .479.246.479.475v1.193c0 .039.035.083.084.083h.775v-1.639c0-.062.05-.112.112-.112m-3.532 1.668c0 .049.044.083.084.083h.044l-.006.005c.022-.005.097-.005.357-.005h.38v-2.101a.084.084 0 0 0-.083-.084H4.31a.085.085 0 0 0-.084.084v2.018zm5.994-1.079v-.436c0-.119.085-.202.206-.202h1.14c.173 0 .32.145.32.317a.322.322 0 0 1-.323.321H10.22zm1.668 1.162h.852c-.013-.525-.56-.742-.623-.765l-.01-.004v-.03l.011-.003c.366-.081.62-.36.62-.68 0-.337-.33-.703-.866-.703H9.811a.441.441 0 0 0-.446.446v1.655a.08.08 0 0 0 .082.083h.774l-.001-.774h.73c.65 0 .918.47.938.775m-8.965-1.451h.835c-.181-.457-.682-.77-1.257-.781l-.256-.006a11.048 11.048 0 0 0-.938.006c-.41.02-.67.114-.923.335a1.06 1.06 0 0 0-.384.802c0 .625.556 1.115 1.292 1.14.505.018.56.019 1.222 0 .613-.02 1.053-.297 1.243-.781h-.834a.078.078 0 0 0-.072.041.869.869 0 0 1-.754.422c-.171.007-.378 0-.378 0-.424 0-.863-.306-.863-.818v-.005c.003-.509.44-.813.865-.813.048-.002.219-.008.376 0 .309 0 .606.164.756.418a.08.08 0 0 0 .07.04m17.384 1.058h-2.02c-.069 0-.116-.045-.116-.11v-.416h1.75v-.383h-1.75l-.001-.38c0-.001-.001-.042.03-.074.022-.024.056-.036.1-.036h2.006v-.307c0-.026-.007-.046-.022-.06-.028-.027-.074-.025-.076-.025h-2.81c-.009 0-.086.002-.086.085v1.654c0 .219.169.445.45.445h2.46c.021 0 .042-.01.058-.025a.08.08 0 0 0 .027-.057v-.31m-.628-2.582a.553.553 0 0 0-.298-.076.56.56 0 0 0-.297.076c-.079.049-.141.114-.234.114-.093 0-.149-.065-.232-.114a.572.572 0 0 0-.297-.076.555.555 0 0 0-.298.076c-.082.05-.123.11-.123.181s.041.132.123.182c.083.05.181.075.298.075a.566.566 0 0 0 .29-.07c.075-.044.155-.118.239-.118.084 0 .16.066.234.113a.572.572 0 0 0 .297.075c.12 0 .22-.025.3-.075.08-.05.12-.11.12-.182 0-.07-.04-.131-.122-.181m-1.094-6.905c-1.224-1.042-4.86-4.01-6.585-4.01-1.726 0-5.36 2.966-6.583 4.01-.008-.247-.014-.397-.014-.616 0 0-.03-.363.292-.725 2.654-2.39 5.437-3.56 5.523-3.596.83-.348.783-.283.782-1.682 0 0 .037-.002.06 0 1.17.106 4.311 3.136 6.17 5.185.004.004.368.422.368.863 0 .206-.006.41-.013.571m-.05-1.71c-.198-.218-4.85-5.322-6.535-5.322-1.684 0-6.337 5.104-6.534 5.322-.02.021-.474.537-.474 1.139 0 .468.031.94.031.944.002.022.012.22.124.275a.13.13 0 0 0 .057.013.242.242 0 0 0 .138-.055c.05-.044 4.79-4.205 6.658-4.205 1.868 0 6.608 4.161 6.656 4.203a.245.245 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.475.031-.943 0-.602-.454-1.118-.473-1.14"/></svg>
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dassault Systèmes</title><path d="M21.1854 8.0254c1.064.192 1.9321.34 2.1311.79.223.51-.936.541-1.52.552-2.7992.054-4.4862.11-4.5712 1.061-.11 1.2241 1.196 2.4572 2.486 4.1852 1.1781 1.577 2.5172 3.1351 2.1322 4.5862-.482 1.809-2.6991 2.192-4.8102 2.192-2.0211.001-3.9382-.323-4.7432-.482-1.002-.199-.852-.694-.585-.853.298-.178 2.002-.182 3.187-.252.9751-.058 3.8052-.056 4.2463-.781.54-.889-.783-2.4081-2.0001-4.0002-1.519-1.984-3.1862-4.0341-2.3031-5.5322 1.14-1.936 4.4842-1.803 6.3502-1.466m-13.6905 2.95c1.772-.104 3.9261.206 5.1342 1.1301a2.172 2.172 0 01.78 2.2771c-.698 2.7521-3.3041 6.0833-9.0933 8.6434-1.8411.813-3.2892 1.125-3.5932.906-.326-.234.624-2.052.909-2.6541.9251-1.952 2.0791-3.8532 3.2052-5.5952.414-.64 1.055-1.7521 1.634-1.6621.519.08-.089 1.26-.488 2.011-.672 1.2601-2.523 4.7603-1.912 4.9693 1.35.462 7.6803-4.3542 6.7462-7.0363-.432-1.245-3.1801-1.363-4.9122-1.363-.787 0-2.508.186-2.603-.417-.102-.5561 2.613-1.1161 4.192-1.2101M11.8672.013c2.068-.098 4.5141.342 4.9702 1.8021.747 2.3901-3.0402 5.8772-6.3383 7.5873-.809.42-1.3.536-1.504.507-.195-.027-.225-.221-.162-.355.118-.252.65-.764 1.361-1.322 3.7151-2.9001 4.9232-5.0282 4.2212-5.8903-.45-.552-2.3321-.937-4.2872-.937-.53 0-1.925.123-2.068-.367C7.942.634 9.814.108 11.866.012"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dassault Systèmes</title><path d="M21.1854 8.0254c1.064.192 1.9321.34 2.1311.79.223.51-.936.541-1.52.552-2.7992.054-4.4862.11-4.5712 1.061-.11 1.2241 1.196 2.4572 2.486 4.1852 1.1781 1.577 2.5172 3.1351 2.1322 4.5862-.482 1.809-2.6991 2.192-4.8102 2.192-2.0211.001-3.9382-.323-4.7432-.482-1.002-.199-.852-.694-.585-.853.298-.178 2.002-.182 3.187-.252.9751-.058 3.8052-.056 4.2463-.781.54-.889-.783-2.4081-2.0001-4.0002-1.519-1.984-3.1862-4.0341-2.3031-5.5322 1.14-1.936 4.4842-1.803 6.3502-1.466m-13.6905 2.95c1.772-.104 3.9261.206 5.1342 1.1301a2.172 2.172 0 01.78 2.2771c-.698 2.7521-3.3041 6.0833-9.0933 8.6434-1.8411.813-3.2892 1.125-3.5932.906-.326-.234.624-2.052.909-2.6541.9251-1.952 2.0791-3.8532 3.2052-5.5952.414-.64 1.055-1.7521 1.634-1.6621.519.08-.089 1.26-.488 2.011-.672 1.2601-2.523 4.7603-1.912 4.9693 1.35.462 7.6803-4.3542 6.7462-7.0363-.432-1.245-3.1801-1.363-4.9122-1.363-.787 0-2.508.186-2.603-.417-.102-.5561 2.613-1.1161 4.192-1.2101M11.8672.013c2.068-.098 4.5141.342 4.9702 1.8021.747 2.3901-3.0402 5.8772-6.3383 7.5873-.809.42-1.3.536-1.504.507-.195-.027-.225-.221-.162-.355.118-.252.65-.764 1.361-1.322 3.7151-2.9001 4.9232-5.0282 4.2212-5.8903-.45-.552-2.3321-.937-4.2872-.937-.53 0-1.925.123-2.068-.367C7.942.634 9.814.108 11.866.012"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Let's Encrypt</title><path d="M11.9914 0a.8829.8829 0 00-.8718.817v3.0209A.8829.8829 0 0012 4.7207a.8829.8829 0 00.8803-.8803V.817a.8829.8829 0 00-.889-.817zm7.7048 3.1089a.8804.8804 0 00-.5214.1742l-2.374 1.9482a.8804.8804 0 00.5592 1.5622.8794.8794 0 00.5592-.2001l2.3714-1.9506a.8804.8804 0 00-.5944-1.534zm-15.3763.0133a.8829.8829 0 00-.611 1.5206l2.37 1.9506a.876.876 0 00.5606.2001v-.002a.8804.8804 0 00.5597-1.5602L4.8277 3.2831a.8829.8829 0 00-.5078-.161zm7.6598 3.2275a5.0456 5.0456 0 00-5.0262 5.0455v1.4876H5.787a.9672.9672 0 00-.9647.9643v9.1887a.9672.9672 0 00.9647.9643H18.213a.9672.9672 0 00.9643-.9643v-9.1907a.9672.9672 0 00-.9643-.9623h-1.1684v-1.4876a5.0456 5.0456 0 00-5.0649-5.0455zm.0127 2.8933a2.1522 2.1522 0 012.1593 2.1522v1.4876H9.8473v-1.4876a2.1522 2.1522 0 012.145-2.1522zm7.3812.5033a.8829.8829 0 10.0705 1.7632h3.0267a.8829.8829 0 000-1.7609H19.444a.8829.8829 0 00-.0705-.0023zm-17.8444.0023a.8829.8829 0 000 1.7609h2.9983a.8829.8829 0 000-1.7609zm10.4596 6.7746a1.2792 1.2792 0 01.641 2.3926v1.2453a.6298.6298 0 01-1.2595 0v-1.2453a1.2792 1.2792 0 01.6185-2.3926z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Let’s Encrypt</title><path d="M11.9914 0a.8829.8829 0 00-.8718.817v3.0209A.8829.8829 0 0012 4.7207a.8829.8829 0 00.8803-.8803V.817a.8829.8829 0 00-.889-.817zm7.7048 3.1089a.8804.8804 0 00-.5214.1742l-2.374 1.9482a.8804.8804 0 00.5592 1.5622.8794.8794 0 00.5592-.2001l2.3714-1.9506a.8804.8804 0 00-.5944-1.534zm-15.3763.0133a.8829.8829 0 00-.611 1.5206l2.37 1.9506a.876.876 0 00.5606.2001v-.002a.8804.8804 0 00.5597-1.5602L4.8277 3.2831a.8829.8829 0 00-.5078-.161zm7.6598 3.2275a5.0456 5.0456 0 00-5.0262 5.0455v1.4876H5.787a.9672.9672 0 00-.9647.9643v9.1887a.9672.9672 0 00.9647.9643H18.213a.9672.9672 0 00.9643-.9643v-9.1907a.9672.9672 0 00-.9643-.9623h-1.1684v-1.4876a5.0456 5.0456 0 00-5.0649-5.0455zm.0127 2.8933a2.1522 2.1522 0 012.1593 2.1522v1.4876H9.8473v-1.4876a2.1522 2.1522 0 012.145-2.1522zm7.3812.5033a.8829.8829 0 10.0705 1.7632h3.0267a.8829.8829 0 000-1.7609H19.444a.8829.8829 0 00-.0705-.0023zm-17.8444.0023a.8829.8829 0 000 1.7609h2.9983a.8829.8829 0 000-1.7609zm10.4596 6.7746a1.2792 1.2792 0 01.641 2.3926v1.2453a.6298.6298 0 01-1.2595 0v-1.2453a1.2792 1.2792 0 01.6185-2.3926z"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Macy’s</title><path d="M12.015.624L9.19 9.293H0l7.445 5.384-2.819 8.673L12 17.986l7.422 5.393-2.835-8.713L24 9.292h-9.162L12.015.622v.002z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Macy’s</title><path d="M12.015.624L9.19 9.293H0l7.445 5.384-2.819 8.673L12 17.986l7.422 5.393-2.835-8.713L24 9.292h-9.162L12.015.622v.002z"/></svg>
|
Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 231 B |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metro de la Ciudad de México</title><path d="M3.965 8.704V24H.008V6.864h2.097c1.066 0 1.86.774 1.86 1.84m2.366-1.84c.268.521.521 1.315.521 1.84V24h3.685V8.704a1.784 1.784 0 0 0-1.84-1.84M17.4 24V8.704a1.795 1.795 0 0 0-1.844-1.84h-2.382c.269.521.269 1.315.269 1.84V24M.008 3.953V0h15.549c4.75 0 8.435 3.953 8.435 8.704V24h-3.685V8.704a4.735 4.735 0 0 0-4.75-4.75z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metro de la Ciudad de México</title><path d="M3.965 8.704V24H.008V6.864h2.097c1.066 0 1.86.774 1.86 1.84m2.366-1.84c.268.521.521 1.315.521 1.84V24h3.685V8.704a1.784 1.784 0 0 0-1.84-1.84M17.4 24V8.704a1.795 1.795 0 0 0-1.844-1.84h-2.382c.269.521.269 1.315.269 1.84V24M.008 3.953V0h15.549c4.75 0 8.435 3.953 8.435 8.704V24h-3.685V8.704a4.735 4.735 0 0 0-4.75-4.75z"/></svg>
|
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 455 B |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Métro de Paris</title><path d="M17.708 18.099c-.202.152-.44.228-.714.228-.242 0-.471-.076-.688-.228-.218-.152-.327-.373-.327-.66V9.626h-.023l-2.984 6.057a1.453 1.453 0 0 1-.385.505c-.145.112-.337.168-.578.168-.24 0-.433-.056-.577-.168a1.442 1.442 0 0 1-.385-.505L8.063 9.627H8.04v7.811a.748.748 0 0 1-.339.66 1.23 1.23 0 0 1-.7.229c-.275 0-.508-.076-.702-.228-.193-.152-.29-.373-.29-.66V6.958c0-.304.096-.589.29-.853.192-.264.537-.396 1.036-.396.37 0 .655.084.856.252.2.169.38.421.542.757l3.277 6.754h.024l3.253-6.754c.16-.336.342-.588.543-.757.2-.168.485-.252.855-.252.498 0 .844.132 1.036.396.193.265.29.55.29.854v10.478c0 .288-.101.509-.302.66zm-5.732 4.156c5.658 0 10.279-4.64 10.279-10.327 0-5.62-4.603-10.183-10.279-10.183-5.674 0-10.23 4.536-10.23 10.183 0 5.59 4.715 10.327 10.23 10.327zm0 1.745C5.495 24 0 18.48 0 11.928 0 5.315 5.34 0 11.976 0 18.613 0 24 5.34 24 11.928 24 18.577 18.6 24 11.976 24Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Métro de Paris</title><path d="M17.708 18.099c-.202.152-.44.228-.714.228-.242 0-.471-.076-.688-.228-.218-.152-.327-.373-.327-.66V9.626h-.023l-2.984 6.057a1.453 1.453 0 0 1-.385.505c-.145.112-.337.168-.578.168-.24 0-.433-.056-.577-.168a1.442 1.442 0 0 1-.385-.505L8.063 9.627H8.04v7.811a.748.748 0 0 1-.339.66 1.23 1.23 0 0 1-.7.229c-.275 0-.508-.076-.702-.228-.193-.152-.29-.373-.29-.66V6.958c0-.304.096-.589.29-.853.192-.264.537-.396 1.036-.396.37 0 .655.084.856.252.2.169.38.421.542.757l3.277 6.754h.024l3.253-6.754c.16-.336.342-.588.543-.757.2-.168.485-.252.855-.252.498 0 .844.132 1.036.396.193.265.29.55.29.854v10.478c0 .288-.101.509-.302.66zm-5.732 4.156c5.658 0 10.279-4.64 10.279-10.327 0-5.62-4.603-10.183-10.279-10.183-5.674 0-10.23 4.536-10.23 10.183 0 5.59 4.715 10.327 10.23 10.327zm0 1.745C5.495 24 0 18.48 0 11.928 0 5.315 5.34 0 11.976 0 18.613 0 24 5.34 24 11.928 24 18.577 18.6 24 11.976 24Z"/></svg>
|
Before Width: | Height: | Size: 997 B After Width: | Height: | Size: 1001 B |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pokémon</title><path d="M4.463 11.691c-.081-.436-.651-.676-1.217-.368l.146.498.23.737.104.335c.423-.272.85-.599.737-1.203zm-.562.67a56.82 56.82 0 0 0-.197-.636l-.059-.203a.54.54 0 0 1 .33.033c.053.026.146.084.166.196.047.25-.037.429-.24.608zm9.108-1.362a.774.774 0 1 0-.963 1.207l1.018-1.153a1.058 1.058 0 0 0-.055-.054zm-.961.812a.5.5 0 0 1 .618-.707zm7.551.225a.375.375 0 0 1 .013.105c-.01.215-.213.382-.454.37-.241-.008-.43-.191-.42-.405.007-.203.187-.362.409-.372a.712.712 0 0 0-.132-.017c-.405-.017-.735.27-.748.626-.017.38.289.692.686.709.406.015.735-.272.75-.651a.625.625 0 0 0-.103-.365m-12.255.436c0 .216-.197.39-.438.39-.242 0-.438-.173-.438-.39 0-.202.173-.368.394-.388a.736.736 0 0 0-.132-.012c-.404 0-.723.3-.723.656 0 .382.32.68.716.68.405 0 .723-.298.723-.68a.605.605 0 0 0-.119-.358c.01.03.017.065.017.102m14.768-2.185l-.18.739-.166-.82-2.218-.487.016 1.233.334.075-.024.223-.01-.007c-.414-.218-.927-.24-1.41-.058-.163.06-.314.143-.45.242l-.335-2.112h-1.475l-.04.244h-1.553l-.177 1.085-.13-.159a1.986 1.986 0 0 0-1.525-.73l1.318-.709-.918-1.37-1.663 1.913.287.35a2.19 2.19 0 0 0-.674.429L9.696 9.104l-.497.953.019-.916-2.226.712.057 1.196.379-.098.056.605c-.433-.193-.954-.19-1.436.014a2.12 2.12 0 0 0-.399.229 1.695 1.695 0 0 0-.077-1.058 1.904 1.904 0 0 0-.817-.9 1.958 1.958 0 0 0-.865-.308c-.77-.135-1.696.003-2.606.392a6.339 6.339 0 0 0-.928.483L0 10.634l.215.363.667 1.127s.204.346.205.345l.361-.177.05-.023 1.658 3.7.16.355.37-.118.896-.288.394-.125-.104-.4-.476-1.829c.137-.101.264-.209.383-.321-.027.219-.013.44.047.652.124.443.416.793.818.986.435.21.965.21 1.456.002.247-.104.467-.257.651-.439l.068.728 1.57-.231-.002-1.407 3.282 1.62v-1.57a3.335 3.335 0 0 0 1.347-.436l-.138.843 1.77.279.097-.637.461.854.283-.545.104.895 2.005.352-.106-.674a1.817 1.817 0 0 0 1.038-.198l-.08.718 1.336.189.01.547 1.39.438L24 10.745zm-7.839.81l.092-.097-.112.69-.289-.262zm-1.177-2.813l.487.661-1.39.689-.097-.146zm-9.202 5.091l.555 2.128-.898.287-1.841-4.112c-.1.053-.284.14-.455.223L.59 10.775c.266-.169.556-.319.865-.45.868-.369 1.697-.48 2.36-.362.233.027.481.095.7.24.298.168.525.406.657.711.32.74-.215 1.807-1.276 2.461zm4.126-.378c-.01.318-.127.634-.321.903a1.797 1.797 0 0 1-.749.605c-.779.33-1.557 0-1.764-.74-.203-.714.266-1.565 1.02-1.89.483-.202.966-.155 1.312.08.213.146.377.364.453.637a1.33 1.33 0 0 1 .049.406zm4.236 1.504l-3.254-1.629.006 1.707-.843.115-.059-.703c.26-.446.355-.972.22-1.454a1.526 1.526 0 0 0-.4-.68l-.121-1.433-.377.098-.017-.362 1.352-.404.083 1.396.997-1.4.974.927-1.362 1.436 1.28.507c.142.27.36.5.634.67.264.163.568.26.889.291v.918zm-1.69-2.36l-.454-.174.423-.41c-.019.188-.01.385.03.584zm3.542.427c-.312.259-.67.427-1.139.54a2.216 2.216 0 0 1-.302.051c-.747.073-1.374-.27-1.612-.826a1.191 1.191 0 0 1-.069-.209c-.11-.468-.016-.887.215-1.215a1.47 1.47 0 0 1 .235-.261 1.87 1.87 0 0 1 .812-.413c.712-.171 1.339.046 1.723.517l-1.355 1.444a.978.978 0 0 0 .345-.033c.323-.079.504-.25.663-.436l.542.486.164.15a3.016 3.016 0 0 1-.222.205zm2.877 1.927l-.294-1.954-.418 1.078-.625-1.348h-.007l-.246 1.56-1.041-.18.146-.87a4.17 4.17 0 0 0 .116-.114l.338-.348-.329-.294.35-2.073h1.05l.262 1.436.294-1.663h.752l.312 2.026c-.396.451-.59 1.06-.456 1.615a1.478 1.478 0 0 0 .865 1.035l.04.263zm2.595-.637a1.64 1.64 0 0 1-.377.2 1.397 1.397 0 0 1-.773.077 1.153 1.153 0 0 1-.448-.19 1.118 1.118 0 0 1-.43-.655c-.08-.336-.007-.696.174-1.012.091-.154.207-.298.344-.423.152-.137.33-.25.527-.325.459-.172.912-.112 1.23.116a1.08 1.08 0 0 1 .422.633c.098.406-.018.838-.274 1.187a1.75 1.75 0 0 1-.395.392zm2.343 1.841l-.77-.229-.066-2.838-.388 2.19-.84-.135.062-.63c.547-.464.838-1.195.679-1.856a1.457 1.457 0 0 0-.434-.744l.071-.743-.317-.085.02-.396 1.448.29.487 2.308.499-2.069 1.1.244z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pokémon</title><path d="M4.463 11.691c-.081-.436-.651-.676-1.217-.368l.146.498.23.737.104.335c.423-.272.85-.599.737-1.203zm-.562.67a56.82 56.82 0 0 0-.197-.636l-.059-.203a.54.54 0 0 1 .33.033c.053.026.146.084.166.196.047.25-.037.429-.24.608zm9.108-1.362a.774.774 0 1 0-.963 1.207l1.018-1.153a1.058 1.058 0 0 0-.055-.054zm-.961.812a.5.5 0 0 1 .618-.707zm7.551.225a.375.375 0 0 1 .013.105c-.01.215-.213.382-.454.37-.241-.008-.43-.191-.42-.405.007-.203.187-.362.409-.372a.712.712 0 0 0-.132-.017c-.405-.017-.735.27-.748.626-.017.38.289.692.686.709.406.015.735-.272.75-.651a.625.625 0 0 0-.103-.365m-12.255.436c0 .216-.197.39-.438.39-.242 0-.438-.173-.438-.39 0-.202.173-.368.394-.388a.736.736 0 0 0-.132-.012c-.404 0-.723.3-.723.656 0 .382.32.68.716.68.405 0 .723-.298.723-.68a.605.605 0 0 0-.119-.358c.01.03.017.065.017.102m14.768-2.185l-.18.739-.166-.82-2.218-.487.016 1.233.334.075-.024.223-.01-.007c-.414-.218-.927-.24-1.41-.058-.163.06-.314.143-.45.242l-.335-2.112h-1.475l-.04.244h-1.553l-.177 1.085-.13-.159a1.986 1.986 0 0 0-1.525-.73l1.318-.709-.918-1.37-1.663 1.913.287.35a2.19 2.19 0 0 0-.674.429L9.696 9.104l-.497.953.019-.916-2.226.712.057 1.196.379-.098.056.605c-.433-.193-.954-.19-1.436.014a2.12 2.12 0 0 0-.399.229 1.695 1.695 0 0 0-.077-1.058 1.904 1.904 0 0 0-.817-.9 1.958 1.958 0 0 0-.865-.308c-.77-.135-1.696.003-2.606.392a6.339 6.339 0 0 0-.928.483L0 10.634l.215.363.667 1.127s.204.346.205.345l.361-.177.05-.023 1.658 3.7.16.355.37-.118.896-.288.394-.125-.104-.4-.476-1.829c.137-.101.264-.209.383-.321-.027.219-.013.44.047.652.124.443.416.793.818.986.435.21.965.21 1.456.002.247-.104.467-.257.651-.439l.068.728 1.57-.231-.002-1.407 3.282 1.62v-1.57a3.335 3.335 0 0 0 1.347-.436l-.138.843 1.77.279.097-.637.461.854.283-.545.104.895 2.005.352-.106-.674a1.817 1.817 0 0 0 1.038-.198l-.08.718 1.336.189.01.547 1.39.438L24 10.745zm-7.839.81l.092-.097-.112.69-.289-.262zm-1.177-2.813l.487.661-1.39.689-.097-.146zm-9.202 5.091l.555 2.128-.898.287-1.841-4.112c-.1.053-.284.14-.455.223L.59 10.775c.266-.169.556-.319.865-.45.868-.369 1.697-.48 2.36-.362.233.027.481.095.7.24.298.168.525.406.657.711.32.74-.215 1.807-1.276 2.461zm4.126-.378c-.01.318-.127.634-.321.903a1.797 1.797 0 0 1-.749.605c-.779.33-1.557 0-1.764-.74-.203-.714.266-1.565 1.02-1.89.483-.202.966-.155 1.312.08.213.146.377.364.453.637a1.33 1.33 0 0 1 .049.406zm4.236 1.504l-3.254-1.629.006 1.707-.843.115-.059-.703c.26-.446.355-.972.22-1.454a1.526 1.526 0 0 0-.4-.68l-.121-1.433-.377.098-.017-.362 1.352-.404.083 1.396.997-1.4.974.927-1.362 1.436 1.28.507c.142.27.36.5.634.67.264.163.568.26.889.291v.918zm-1.69-2.36l-.454-.174.423-.41c-.019.188-.01.385.03.584zm3.542.427c-.312.259-.67.427-1.139.54a2.216 2.216 0 0 1-.302.051c-.747.073-1.374-.27-1.612-.826a1.191 1.191 0 0 1-.069-.209c-.11-.468-.016-.887.215-1.215a1.47 1.47 0 0 1 .235-.261 1.87 1.87 0 0 1 .812-.413c.712-.171 1.339.046 1.723.517l-1.355 1.444a.978.978 0 0 0 .345-.033c.323-.079.504-.25.663-.436l.542.486.164.15a3.016 3.016 0 0 1-.222.205zm2.877 1.927l-.294-1.954-.418 1.078-.625-1.348h-.007l-.246 1.56-1.041-.18.146-.87a4.17 4.17 0 0 0 .116-.114l.338-.348-.329-.294.35-2.073h1.05l.262 1.436.294-1.663h.752l.312 2.026c-.396.451-.59 1.06-.456 1.615a1.478 1.478 0 0 0 .865 1.035l.04.263zm2.595-.637a1.64 1.64 0 0 1-.377.2 1.397 1.397 0 0 1-.773.077 1.153 1.153 0 0 1-.448-.19 1.118 1.118 0 0 1-.43-.655c-.08-.336-.007-.696.174-1.012.091-.154.207-.298.344-.423.152-.137.33-.25.527-.325.459-.172.912-.112 1.23.116a1.08 1.08 0 0 1 .422.633c.098.406-.018.838-.274 1.187a1.75 1.75 0 0 1-.395.392zm2.343 1.841l-.77-.229-.066-2.838-.388 2.19-.84-.135.062-.63c.547-.464.838-1.195.679-1.856a1.457 1.457 0 0 0-.434-.744l.071-.743-.317-.085.02-.396 1.448.29.487 2.308.499-2.069 1.1.244z"/></svg>
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RTÉ</title><path d="M1.983 12.857V9.038s.734-.018 1.615-.018c.131 0 .258.01.373.016 1.41.115 1.992.883 1.992 1.807 0 1.036-.82 1.819-1.992 1.986a3.5 3.5 0 0 1-.474.028zm2.84 1.244c1.736-.168 3.197-1.446 3.197-3.102 0-1.763-1.018-3.324-4.049-3.45a9.497 9.497 0 0 0-.393-.01c-2.098 0-3.537.1-3.537.1s.097 1.035.097 1.558v7.624C.138 17.522 0 18.26 0 18.26h2.118s-.135-.737-.135-1.577v-3.101l1.988 2.08 1.006 1.043c.62.677 1.702 1.555 1.702 1.555h2.8s-1.253-.878-1.835-1.438zm19.055-7.198a8.123 8.123 0 0 0-2.036-.284c-1.784 0-3.321.541-4.603 1.682l.02-1.261c1.36-.925 2.9-1.34 4.583-1.34.738 0 1.378.1 2.056.276l-.02.927M11.282 18.259s.117-.778.117-1.458V9.402h-.501c-.68 0-1.736 0-2.516.077l-.066-1.718h8.124l-.041 1.718c-.802-.077-1.838-.077-2.539-.077h-.617v7.399c0 .68.136 1.458.136 1.458h-2.097m10.419-1.524c-1.838 0-3.386-1.315-3.666-3.175h3.482c.385 0 1.222.082 1.222.082V12.1s-.822.061-1.28.061h-3.424c.347-1.822 1.845-3.08 3.666-3.08.96 0 2.139.438 2.139.438l.023-1.622s-.84-.318-2.162-.318c-3.063 0-5.741 2.34-5.741 5.32 0 3.223 2.678 5.4 5.74 5.4 1.44 0 2.3-.384 2.3-.384l-.04-1.676c-.001 0-1.062.496-2.26.496Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RTÉ</title><path d="M1.983 12.857V9.038s.734-.018 1.615-.018c.131 0 .258.01.373.016 1.41.115 1.992.883 1.992 1.807 0 1.036-.82 1.819-1.992 1.986a3.5 3.5 0 0 1-.474.028zm2.84 1.244c1.736-.168 3.197-1.446 3.197-3.102 0-1.763-1.018-3.324-4.049-3.45a9.497 9.497 0 0 0-.393-.01c-2.098 0-3.537.1-3.537.1s.097 1.035.097 1.558v7.624C.138 17.522 0 18.26 0 18.26h2.118s-.135-.737-.135-1.577v-3.101l1.988 2.08 1.006 1.043c.62.677 1.702 1.555 1.702 1.555h2.8s-1.253-.878-1.835-1.438zm19.055-7.198a8.123 8.123 0 0 0-2.036-.284c-1.784 0-3.321.541-4.603 1.682l.02-1.261c1.36-.925 2.9-1.34 4.583-1.34.738 0 1.378.1 2.056.276l-.02.927M11.282 18.259s.117-.778.117-1.458V9.402h-.501c-.68 0-1.736 0-2.516.077l-.066-1.718h8.124l-.041 1.718c-.802-.077-1.838-.077-2.539-.077h-.617v7.399c0 .68.136 1.458.136 1.458h-2.097m10.419-1.524c-1.838 0-3.386-1.315-3.666-3.175h3.482c.385 0 1.222.082 1.222.082V12.1s-.822.061-1.28.061h-3.424c.347-1.822 1.845-3.08 3.666-3.08.96 0 2.139.438 2.139.438l.023-1.622s-.84-.318-2.162-.318c-3.063 0-5.741 2.34-5.741 5.32 0 3.223 2.678 5.4 5.74 5.4 1.44 0 2.3-.384 2.3-.384l-.04-1.676c-.001 0-1.062.496-2.26.496Z"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>São Paulo Metro</title><path d="M13.366 6.543l5.092 5.456-5.092 5.456V6.543zM24 0v24H0V0h24zm-5.542 11.999l1.747-1.872L11.976 1.9l-8.227 8.228 1.747 1.871-1.747 1.871 8.227 8.229 8.228-8.229-1.746-1.871zm-7.87 5.455V6.543l-5.092 5.456 5.092 5.455z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>São Paulo Metro</title><path d="M13.366 6.543l5.092 5.456-5.092 5.456V6.543zM24 0v24H0V0h24zm-5.542 11.999l1.747-1.872L11.976 1.9l-8.227 8.228 1.747 1.871-1.747 1.871 8.227 8.229 8.228-8.229-1.746-1.871zm-7.87 5.455V6.543l-5.092 5.456 5.092 5.455z"/></svg>
|
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 339 B |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ŠKODA</title><path d="M11.9587 0C5.332.023-.0228 5.4147.0001 12.0416.0229 18.6685 5.4146 24.0229 12.0415 24c6.6268-.0228 11.9813-5.4143 11.9584-12.0412C23.9771 5.332 18.5856-.0228 11.9587.0001zm.0415 2.1343c2.6354 0 5.1128 1.0264 6.9761 2.8896C20.84 6.8873 21.8661 9.3647 21.8661 12c0 2.635-1.0262 5.1125-2.8898 6.9759-1.8633 1.8632-4.3407 2.8894-6.976 2.8894-2.6355 0-5.113-1.0262-6.9764-2.8894C3.1603 17.1125 2.1341 14.635 2.1341 12c0-2.6353 1.0262-5.1127 2.8898-6.9761 1.8633-1.8632 4.341-2.8896 6.9763-2.8896zm.1142 1.1936a8.7615 8.7615 0 0 0-2.523.3687h-.0002c-.079.0239-.1383.0563-.18.097-.0415.0405-.0642.0902-.0677.1406-.007.1009.0547.1973.143.2733h.0001c.7772.6649 1.8207 1.6606 2.5574 2.8952-.413.0084-.739-.2201-1.0197-.4892h-.0002c-.9956-.9475-2.0316-1.6227-2.8543-2.0848-.1488-.0832-.3106-.1218-.467-.032l-.0002.0002c-.9073.5276-1.5223 1.0269-2.2427 1.8623-.0675.0784-.0848.1612-.06.2292.0249.068.0834.1165.1487.1512.7708.4087 1.9748 1.1835 3.086 2.1856-.0976.063-.2136.0912-.3677.0694-.1777-.0252-.3974-.1082-.6588-.2452h-.0002c-1.0182-.535-1.9967-.8426-2.7428-1.0347-.1735-.0445-.3665.0051-.4594.1663-.4796.8333-.8098 1.828-.966 2.837v.0003c-.033.215.1155.4078.3286.445.8651.1514 2.0661.4305 3.1122 1.1123 1.046.6818 1.9382 1.7635 2.1934 3.533.02.1418-.0343.2725-.1335.3483-.0994.076-.2443.1003-.4196.018-.5214-.2443-1.0423-.488-1.5631-.7324v-.0002h-.0002c-.0574-.0265-.1244-.0508-.1945-.0508H4.3061c-.1881 0-.3296.0926-.388.2247-.0582.1321-.0322.2995.0902.4397.5892.6785 1.1295 1.4106 1.5915 2.1862.0457.077.115.116.2045.116h1.0725a.42.42 0 0 0 .2201-.0601c.337-.1977.674-.3948 1.0119-.5923h.0002l.0002-.0002c.0518-.031.103-.0306.1764-.0306h8.0845c.0452 0 .0842.0146.1111.0382.027.0235.0432.0552.0432.0981v.3978c0 .17.1533.3002.321.2742h.0002a5.0752 5.0752 0 0 0 2.6729-1.3127.3163.3163 0 0 0 0-.462 5.0725 5.0725 0 0 0-2.673-1.313h-.0001c-.1678-.026-.321.1046-.321.2745v.3637c0 .0433-.0179.0933-.0462.1298-.0284.0366-.0644.0586-.1027.0586-.0794 0-.1576.002-.2352 0h-.0006c-.1224-.002-.187-.072-.2237-.173-.0367-.1009-.0357-.2311-.0102-.323.5962-2.138.7426-3.4376.7356-4.3853-.0074-1.003-.033-2.009-.4867-3.337-.435-1.2713-.8395-2.5304-2.9465-4.4383-.1484-.1335-.3048-.2013-.5048-.2158a7.9719 7.9719 0 0 0-.589-.0218zm1.5278 9.7045c.6249 0 1.1322.5073 1.1322 1.1322 0 .6236-.5073 1.1312-1.1322 1.1312-.6246 0-1.1308-.5076-1.1308-1.1312 0-.6248.5063-1.1322 1.1308-1.1322z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ŠKODA</title><path d="M11.9587 0C5.332.023-.0228 5.4147.0001 12.0416.0229 18.6685 5.4146 24.0229 12.0415 24c6.6268-.0228 11.9813-5.4143 11.9584-12.0412C23.9771 5.332 18.5856-.0228 11.9587.0001zm.0415 2.1343c2.6354 0 5.1128 1.0264 6.9761 2.8896C20.84 6.8873 21.8661 9.3647 21.8661 12c0 2.635-1.0262 5.1125-2.8898 6.9759-1.8633 1.8632-4.3407 2.8894-6.976 2.8894-2.6355 0-5.113-1.0262-6.9764-2.8894C3.1603 17.1125 2.1341 14.635 2.1341 12c0-2.6353 1.0262-5.1127 2.8898-6.9761 1.8633-1.8632 4.341-2.8896 6.9763-2.8896zm.1142 1.1936a8.7615 8.7615 0 0 0-2.523.3687h-.0002c-.079.0239-.1383.0563-.18.097-.0415.0405-.0642.0902-.0677.1406-.007.1009.0547.1973.143.2733h.0001c.7772.6649 1.8207 1.6606 2.5574 2.8952-.413.0084-.739-.2201-1.0197-.4892h-.0002c-.9956-.9475-2.0316-1.6227-2.8543-2.0848-.1488-.0832-.3106-.1218-.467-.032l-.0002.0002c-.9073.5276-1.5223 1.0269-2.2427 1.8623-.0675.0784-.0848.1612-.06.2292.0249.068.0834.1165.1487.1512.7708.4087 1.9748 1.1835 3.086 2.1856-.0976.063-.2136.0912-.3677.0694-.1777-.0252-.3974-.1082-.6588-.2452h-.0002c-1.0182-.535-1.9967-.8426-2.7428-1.0347-.1735-.0445-.3665.0051-.4594.1663-.4796.8333-.8098 1.828-.966 2.837v.0003c-.033.215.1155.4078.3286.445.8651.1514 2.0661.4305 3.1122 1.1123 1.046.6818 1.9382 1.7635 2.1934 3.533.02.1418-.0343.2725-.1335.3483-.0994.076-.2443.1003-.4196.018-.5214-.2443-1.0423-.488-1.5631-.7324v-.0002h-.0002c-.0574-.0265-.1244-.0508-.1945-.0508H4.3061c-.1881 0-.3296.0926-.388.2247-.0582.1321-.0322.2995.0902.4397.5892.6785 1.1295 1.4106 1.5915 2.1862.0457.077.115.116.2045.116h1.0725a.42.42 0 0 0 .2201-.0601c.337-.1977.674-.3948 1.0119-.5923h.0002l.0002-.0002c.0518-.031.103-.0306.1764-.0306h8.0845c.0452 0 .0842.0146.1111.0382.027.0235.0432.0552.0432.0981v.3978c0 .17.1533.3002.321.2742h.0002a5.0752 5.0752 0 0 0 2.6729-1.3127.3163.3163 0 0 0 0-.462 5.0725 5.0725 0 0 0-2.673-1.313h-.0001c-.1678-.026-.321.1046-.321.2745v.3637c0 .0433-.0179.0933-.0462.1298-.0284.0366-.0644.0586-.1027.0586-.0794 0-.1576.002-.2352 0h-.0006c-.1224-.002-.187-.072-.2237-.173-.0367-.1009-.0357-.2311-.0102-.323.5962-2.138.7426-3.4376.7356-4.3853-.0074-1.003-.033-2.009-.4867-3.337-.435-1.2713-.8395-2.5304-2.9465-4.4383-.1484-.1335-.3048-.2013-.5048-.2158a7.9719 7.9719 0 0 0-.589-.0218zm1.5278 9.7045c.6249 0 1.1322.5073 1.1322 1.1322 0 .6236-.5073 1.1312-1.1322 1.1312-.6246 0-1.1308-.5076-1.1308-1.1312 0-.6248.5063-1.1322 1.1308-1.1322z"/></svg>
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
@ -1 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>tado°</title><path d="M22.486 7.795a1.514 1.514 0 1 0 0 3.029 1.514 1.514 0 0 0 0-3.029zm-8.504.003v2.456c-.457-.344-.945-.563-1.686-.563-1.814 0-2.833 1.364-2.833 3.267 0 1.792 1.019 3.247 2.833 3.247 1.781 0 2.817-1.46 2.82-3.247v-5.16zM1.89 7.799l-1.124.378V9.69H0v.945h.757v3.873c0 .84.67 1.51 1.518 1.51h1.128v-.943h-.946a.566.566 0 0 1-.568-.566v-3.874h3.215V9.69H1.89zm20.596.375a1.135 1.135 0 1 1 0 2.27 1.135 1.135 0 0 1 0-2.27zM5.48 9.69v.946h1.906c.354 0 .549.277.549.54v.773l-1.322-.001c-1.134 0-2.267.769-2.267 2.08 0 1.307 1.13 2.087 2.265 2.087.953 0 1.326-.57 1.326-.57v.47H9.07v-4.864c0-.784-.667-1.461-1.51-1.461zm12.861.002c-1.808 0-2.835 1.369-2.835 3.237 0 1.911 1.027 3.276 2.835 3.276 1.787 0 2.828-1.36 2.828-3.276 0-1.863-1.046-3.237-2.828-3.237zm-6.046.95c1.14 0 1.68 1.185 1.68 2.316 0 1.117-.55 2.305-1.68 2.305-1.232 0-1.697-1.188-1.697-2.305 0-1.13.56-2.316 1.697-2.316zm6.046.005c1.12 0 1.703 1.18 1.703 2.3 0 1.117-.572 2.313-1.703 2.313-1.126 0-1.707-1.165-1.707-2.307 0-1.126.57-2.306 1.707-2.306zM6.614 12.9h1.322v1.207c0 .5-.373 1.062-1.323 1.062-.367 0-1.133-.19-1.133-1.134 0-.842.758-1.135 1.134-1.135Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>tado°</title><path d="M22.486 7.795a1.514 1.514 0 1 0 0 3.029 1.514 1.514 0 0 0 0-3.029zm-8.504.003v2.456c-.457-.344-.945-.563-1.686-.563-1.814 0-2.833 1.364-2.833 3.267 0 1.792 1.019 3.247 2.833 3.247 1.781 0 2.817-1.46 2.82-3.247v-5.16zM1.89 7.799l-1.124.378V9.69H0v.945h.757v3.873c0 .84.67 1.51 1.518 1.51h1.128v-.943h-.946a.566.566 0 0 1-.568-.566v-3.874h3.215V9.69H1.89zm20.596.375a1.135 1.135 0 1 1 0 2.27 1.135 1.135 0 0 1 0-2.27zM5.48 9.69v.946h1.906c.354 0 .549.277.549.54v.773l-1.322-.001c-1.134 0-2.267.769-2.267 2.08 0 1.307 1.13 2.087 2.265 2.087.953 0 1.326-.57 1.326-.57v.47H9.07v-4.864c0-.784-.667-1.461-1.51-1.461zm12.861.002c-1.808 0-2.835 1.369-2.835 3.237 0 1.911 1.027 3.276 2.835 3.276 1.787 0 2.828-1.36 2.828-3.276 0-1.863-1.046-3.237-2.828-3.237zm-6.046.95c1.14 0 1.68 1.185 1.68 2.316 0 1.117-.55 2.305-1.68 2.305-1.232 0-1.697-1.188-1.697-2.305 0-1.13.56-2.316 1.697-2.316zm6.046.005c1.12 0 1.703 1.18 1.703 2.3 0 1.117-.572 2.313-1.703 2.313-1.126 0-1.707-1.165-1.707-2.307 0-1.126.57-2.306 1.707-2.306zM6.614 12.9h1.322v1.207c0 .5-.373 1.062-1.323 1.062-.367 0-1.133-.19-1.133-1.134 0-.842.758-1.135 1.134-1.135Z"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -22,6 +22,7 @@
|
||||
"jest": "27.2.2",
|
||||
"jest-diff": "27.2.2",
|
||||
"jsonschema": "1.4.0",
|
||||
"named-html-entities-json": "0.1.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"rimraf": "3.0.2",
|
||||
"svg-path-bbox": "1.0.1",
|
||||
|
@ -37,8 +37,12 @@ module.exports = {
|
||||
* @param {String} htmlFriendlyTitle The title to convert
|
||||
*/
|
||||
htmlFriendlyToTitle: htmlFriendlyTitle => (
|
||||
htmlFriendlyTitle
|
||||
.replace(/'/g, "’")
|
||||
.replace(/&/g, "&")
|
||||
htmlFriendlyTitle.replace(
|
||||
/&#([0-9]+);/g,
|
||||
(_, num) => String.fromCharCode(parseInt(num))
|
||||
).replace(
|
||||
/&(quot|amp|lt|gt);/g,
|
||||
(_, ref) => ({quot: '"', amp: '&', lt: '<', gt: '>'}[ref])
|
||||
)
|
||||
),
|
||||
}
|
||||
|