Samsa-core requires substitute glyph to be set manually when there is a glyph changes along the axis:
if (font.featureVariations) {
let substituteGlyphId = glyph.featureVariationsGlyphId(
preset.tuple
);
if (substituteGlyphId !== undefined) {
tempGlyph = font.glyphs[substituteGlyphId];
}
}
let pathData = tempGlyph.decompose(preset.tuple).svgPath();
Gif: fontkit and harfbuzz have the correct rendering
