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 $@
|