From 41f8ce966006e68d6b61f3c8a1526599ed9fd75e Mon Sep 17 00:00:00 2001 From: Billiam Date: Mon, 26 Jul 2021 13:12:13 -0500 Subject: [PATCH] Build multiple font weights in action (#355) * Build multiple font thicknesses * Fontcustom empties directory during compilation --- .github/workflows/font.yml | 10 ++++++++-- scripts/outline_svg.js | 25 +++++++++++++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/.github/workflows/font.yml b/.github/workflows/font.yml index 5520deefe..9a143a779 100644 --- a/.github/workflows/font.yml +++ b/.github/workflows/font.yml @@ -46,10 +46,16 @@ jobs: run: sudo yarn add svg-outline-stroke -W - name: "Outline SVG" - run: mkdir converted_icons && node scripts/outline_svg.js + run: node scripts/outline_svg.js - name: Build 'Lucide' - run: echo "Building Lucide font" && fontcustom compile ./converted_icons -h -n Lucide -o build -F + run: | + mkdir build + list=(_200 _300 "" _500 _600) + for name in "${list[@]}" + do + fontcustom compile "./converted_icons${name}" -h -n "Lucide${name}" -o ./tmp -F && mv ./tmp/* build + done - name: Zip 'Lucide' run: zip -r Lucide.zip build diff --git a/scripts/outline_svg.js b/scripts/outline_svg.js index ebc734d13..4f7db6308 100644 --- a/scripts/outline_svg.js +++ b/scripts/outline_svg.js @@ -3,21 +3,34 @@ const outlineStroke = require('svg-outline-stroke'); const { parse, stringify } = require('svgson'); const inputDir = `./icons/`; -const outputDir = `./converted_icons/`; +const outputDirs = { + 'converted_icons_200': '1', + 'converted_icons_300': '1.5', + 'converted_icons': '2', + 'converted_icons_500': '2.5', + 'converted_icons_600': '3' +} async function init() { try { + for (const directory of Object.keys(outputDirs)) { + await fs.mkdir(`./${directory}`); + } + const files = await fs.readdir(inputDir); for (const file of files) { const icon = await fs.readFile(`${inputDir}${file}`); const scaled = await parse(icon.toString(), { transformNode: transformForward, }); - const outlined = await outlineStroke(stringify(scaled)); - const outlinedWithoutAttrs = await parse(outlined, { - transformNode: transformBackwards, - }); - await fs.writeFile(`${outputDir}${file}`, stringify(outlinedWithoutAttrs)); + for (const [directory, width] of Object.entries(outputDirs)) { + scaled.attributes['stroke-width'] = width; + const outlined = await outlineStroke(stringify(scaled)); + const outlinedWithoutAttrs = await parse(outlined, { + transformNode: transformBackwards, + }); + await fs.writeFile(`./${directory}/${file}`, stringify(outlinedWithoutAttrs)); + } } } catch (err) { console.log(err);