subset.sh (1477B)
1 #!/bin/bash 2 # 3 # Produces subset font files for testing the `text-spacing-trim` property. 4 # 5 # Requires `pyftsubset` from [fonttools]. If [uv] is installed, this script can 6 # run without installing [fonttools] globally. 7 # 8 # [fonttools]: https://github.com/fonttools/fonttools 9 # [uv]: https://docs.astral.sh/uv/ 10 # 11 range="--unicodes=20-7E,2018-201F,56FD,6C34,3000-301F,30FB,FF01-FF1F,FF5B-FF65" 12 subrange="--unicodes=20-7E,56FD,FF08-FF09" 13 features="--layout-features+=halt,fwid,hwid,palt,pwid,vhal,vpal" 14 features_chws="$features,chws,vchw" 15 ext=".otf" 16 if [[ -z "$subsetter" ]]; then 17 if command -v uvx &>/dev/null; then 18 subsetter="uvx --from fonttools pyftsubset" 19 else 20 subsetter="pyftsubset" 21 fi 22 fi 23 subsetter=${subsetter:-pyftsubset} 24 for path in "$@"; do 25 filename="$(basename -- "$path")" 26 stem="${filename%.*}" 27 output_halt="$stem-subset-halt" 28 output_chws="$stem-subset-chws" 29 output_min="$stem-subset-halt-min" 30 (set -x; 31 $subsetter "$path" $range $features --output-file="$output_halt$ext" 32 $subsetter "$path" $range $features_chws --output-file="$output_chws$ext" 33 $subsetter "$output_halt$ext" $subrange $features --output-file="$output_min$ext" 34 $subsetter "$output_halt$ext" --unicodes=3002 $features --output-file="$output_halt-3002$ext" 35 $subsetter "$output_halt$ext" --unicodes=300C $features --output-file="$output_halt-300C$ext" 36 $subsetter "$output_halt$ext" --unicodes=FF1A $features --output-file="$output_halt-FF1A$ext" 37 ) 38 done