vscripts/vascadia.sh

70 lines
1.5 KiB
Bash
Raw Normal View History

2024-12-10 18:57:01 +02:00
#!/usr/bin/env zsh
###
2025-05-09 11:26:42 +03:00
# This script generates an archive with "baked in" stylistic sets
# for the best compatibility.
###
# opentype-feature-freezer is necessary, installed automatically via uv
###
2024-12-10 18:57:01 +02:00
# https://github.com/microsoft/cascadia-code
2025-05-09 11:26:42 +03:00
# calt,ss01 - handwritten italic
2024-12-10 18:57:01 +02:00
# ss02 - lua not equals ~=
# ss03 - serbian locale
# ss19 - slashed zero 0
# ss20 - graphical control characters
###
2025-05-09 11:26:42 +03:00
# VARIANT is a find wildcard, so use it wisely
# e.g. VARIANT='*MonoPL*.otf', VARIANT='*Code*.ttf', VARIANT='*'
# Font variants:
# Code - ligatures, no extras
# Mono - no ligatures, no extras
# PL - powerline symbols (CodePL, MonoPL)
# NF - powerline + NerdFont symbols (CodeNF, MonoNF)
# .ttf - truetype fonts
# .otf - opentype fonts
2024-12-10 18:57:01 +02:00
###
VERSION=2407.24
NAME=Vascadia
WDIR=$HOME/vascadia
2025-05-09 11:26:42 +03:00
SS=calt,ss01,ss19,ss20
VARIANT='*MonoPL*.otf'
2024-12-10 18:57:01 +02:00
SRC=CascadiaCode-$VERSION.zip
URL=https://github.com/microsoft/cascadia-code/releases/download/v$VERSION/$SRC
function prep {
2025-05-09 11:26:42 +03:00
[[ -r $SRC ]] || wget $URL
unzip $SRC 'otf/**'
uv venv
uv pip install opentype-feature-freezer
2024-12-10 18:57:01 +02:00
}
function convert {
2025-05-09 11:26:42 +03:00
mkdir -p $NAME
2024-12-10 18:57:01 +02:00
while read -r src; do
2025-05-09 11:26:42 +03:00
dst=$NAME/$(basename ${src//Cascadia/$NAME})
2024-12-10 18:57:01 +02:00
2025-05-09 11:26:42 +03:00
uv run pyftfeatfreeze -f $SS -R Cascadia/$NAME $src $dst
2024-12-10 18:57:01 +02:00
done
}
function cleanup {
2025-05-09 11:26:42 +03:00
typeset source=$NAME
2024-12-10 18:57:01 +02:00
typeset archive=$source-$VERSION.zip
zip -rv $archive $source
2025-05-09 11:26:42 +03:00
rm -rv $source otf
2024-12-10 18:57:01 +02:00
}
function main {
set -ex
2025-05-09 11:26:42 +03:00
mkdir -p $WDIR
cd $WDIR
2024-12-10 18:57:01 +02:00
prep
2025-05-09 11:26:42 +03:00
convert < <(find otf -type f -name $VARIANT)
2024-12-10 18:57:01 +02:00
cleanup
}
main $@