Variable font subsetting

Dropping some variable features from recursive while preserving the sans to mono transition, requires fontools. Use wakamaifondue after every finalized change to verify the features.

Subsetting features/variations

Using varLib.Instancer in a script like so outputs all the available features in the font.

from fontTools import ttLib
from fontTools.varLib import instancer
varfont = ttLib.TTFont("")
for a in varfont["fvar"].axes:
    print (a.axisTag)
MONO
CASL
wght
slnt
CRSV

Dropping CASL, slnt, CSRV and limiting wght to an uppper limit of 600 instead of the default 1000. This grabs the lowest normal values for all the dropped features for example, dropping slnt results it in being set to 0

fonttools varLib.instancer ./Recursive_VF_1.084.ttf slnt=drop CRSV=drop CASL=drop wght=300:600      

Subsetting characters and compression

Basic latin unicode characters are the only ones needed here. The other flags are pretty self-explanatory. More about unicode selection, layout-features & other methods such as --desubroutinize and --no-hinting can be found over at docs of subset. A healthy dose of caution when working to modify, kerning, heights or hinting. Make sure to see how the font renders on different browser engines and operating systems. Its very easy to mess up rendering for firefox on windows specifically for example.

fonttools subset Recursive_VF_1.084-partial.ttf --output-file="recursive-var-minimal-last.woff2" --layout-features+="lnum, tnum" --unicodes="U+0000-007A,U+2019,U+002C"