nerd-fonts/patch_Iosevka.sh

55 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# usage: patch.sh [version of Iosevka]
if [[ -z "$1" ]]; then
echo "Need an Iosevka version.
Example: patch.sh 11.2.4"
exit 1
fi
if ! command -v fontforge >/dev/null; then
printf "\033[1;31mfontforge\033[0m is not installed.\n"
exit 1
fi
if ! command -v ttx >/dev/null; then
printf "\033[1;31mfonttools\033[0m is not installed.\n"
exit 1
fi
version="$1"
variants=(
"bold"
"italic"
"bolditalic"
"regular"
)
# Get the zip files from Github
echo "Downloading Iosevka Term version ${version} zip file ..."
curl -fsSL https://github.com/be5invis/Iosevka/releases/download/v${version}/ttf-iosevka-term-${version}.zip -o ./original/iosevka-term.zip
echo "Unzipping the downloaded archive ..."
unzip ./original/iosevka-term.zip -d ./original
for variant in "${variants[@]}"; do
echo "Patching Iosevka term ${variant} ..."
# Run the font-patcher script
fontforge -script ./font-patcher --quiet --no-progressbars --careful --complete ./original/iosevka-term-${variant}.ttf
mv ./*Complete.ttf ./patched/iosevka-term-${variant}-nerd-font.ttf
# Correct xAvgCharWidth
ttx -t "OS/2" ./original/iosevka-term-${variant}.ttf
ttx -t "OS/2" ./patched/iosevka-term-${variant}-nerd-font.ttf
original_x_avg_char_width=$(grep xAvgCharWidth ./original/iosevka-term-${variant}.ttx | cut -d '"' -f 2)
sed -i "s/xAvgCharWidth value=\"[0-9]\+\"/xAvgCharWidth value=\"${original_x_avg_char_width}\"/g" ./patched/iosevka-term-${variant}-nerd-font.ttx
mv ./patched/iosevka-term-${variant}-nerd-font.ttf ./patched/iosevka-term-${variant}-nerd-font.original.ttf
ttx -o ./patched/iosevka-term-${variant}-nerd-font.ttf -m ./patched/iosevka-term-${variant}-nerd-font.original.ttf ./patched/iosevka-term-${variant}-nerd-font.ttx
# Optionally build hdmx table and correct TTF font family name (for Sarasa)
#python3 ./build-hdmx-for-sarasa.py ./patched/iosevka-term-${variant}-nerd-font.ttf
#python3 ./correct-ttf-font-family-name.py ./patched/iosevka-term-${variant}-nerd-font.ttf
done