From my post on a duplicate question:
Variable fonts, even when they come with static TTF files, seem especially prone to this issue because they're intentionally (and correctly!) designed with multiple overlapping elements and self intersections. Unfortunately, the static versions of these variable fonts may still retain those features, causing issues in Blender.
Some users report that OTF versions of TTF fonts may correctly flatten the shapes, but you can also fix files yourself with Font Forge.
- Download Font Forge (free and open source)
- Open the font file you want to use in Blender
- Select all (Edit > Select > Select All)
- Remove overlap (Element > Overlap > Remove Overlap)
- Generate font (File > Generate Fonts…)
I used the default TTF options when generating fonts. It takes all of 10 seconds to open a font file, process, and generate the patched file. Even easier if you macro the keyboard shortcuts (in MacOS that's command+a, command+shift+o, command+shift+g).
Many thanks to user chojnicki and their similar question/answer for pointing me in the right direction.