You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
1 week ago
|
#!/usr/bin/env bash
|
||
|
set -e
|
||
|
|
||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||
|
ICONS_DIR="$DIR/icons"
|
||
|
BOOTSTRAP_SVG="$DIR/../../third_party/bootstrap/bootstrap-icons.svg"
|
||
|
|
||
|
ICON_IDS=(
|
||
|
arrow-right
|
||
|
backspace
|
||
|
capslock-fill
|
||
|
shift
|
||
|
shift-fill
|
||
|
)
|
||
|
ICON_FILL_COLOR="#fff"
|
||
|
|
||
|
# extract bootstrap icons
|
||
|
for id in "${ICON_IDS[@]}"; do
|
||
|
svg="${ICONS_DIR}/${id}.svg"
|
||
|
perl -0777 -ne "print \$& if /<symbol[^>]*id=\"$id\"[^>]*>.*?<\/symbol>/s" "$BOOTSTRAP_SVG" \
|
||
|
| sed "s/<symbol/<svg fill=\"$ICON_FILL_COLOR\"/; s/<\/symbol>/<\/svg>/" > "$svg"
|
||
|
done
|
||
|
|
||
|
# sudo apt install inkscape
|
||
|
|
||
|
for svg in $(find $DIR -type f | grep svg$); do
|
||
|
bunx svgo $svg --multipass --pretty --indent 2
|
||
|
|
||
|
# convert to PNG
|
||
|
png="${svg%.svg}.png"
|
||
|
width=$(inkscape --query-width "$svg")
|
||
|
height=$(inkscape --query-height "$svg")
|
||
|
if (( $(echo "$width > $height" | bc -l) )); then
|
||
|
export_dim="--export-width=512"
|
||
|
else
|
||
|
export_dim="--export-height=512"
|
||
|
fi
|
||
|
inkscape "$svg" --export-filename="$png" "$export_dim"
|
||
|
|
||
|
optipng -o7 -strip all "$png"
|
||
|
done
|
||
|
|
||
|
# cleanup bootstrap SVGs
|
||
|
for id in "${ICON_IDS[@]}"; do
|
||
|
rm "${ICONS_DIR}/${id}.svg"
|
||
|
done
|