Glyphs 4.0.1 (4004): exporting an OTF with “Use subroutines” off writes a malformed CFF charstring when a glyph’s horizontal hints overlap (hstemhm case). The vstem arguments come out with no vstem or hintmask operator, so they leak into the first rmoveto and the whole outline is offset. Attached file, glyph u, subroutines off versus on:
500 21 -21 21 -21 500 -20 20 -20 hstemhm 50 100 200 100 50 500 rmoveto ...
21 -21 500 -20 hstem -107 callsubr
u exports at y -400..100 instead of 0..500. Glyphs with a single hstem/vstem pair are fine, subroutines on is fine, and Glyphs 3.4.1 is fine with the same file and setting. Reproducible through the Export dialog and through instance.generate() with useSubroutines False. Seen in the wild on a hinted family where t, u and the italic O were all displaced.
SubrHintReproGlyphs4repro.zip (3.7 KB)