Every time this sort of thing comes up, I go back to Altsys Virtuoso on my NeXT Cube and drawing strokes and regions and then working up custom PostScript code for strokes and fills --- and wishing that there was a way to put a text box on screen and get its contents, or have a slider or other input into a PS program.
Nodebox almost scratches that itch:
https://www.nodebox.net/
but the last time I tried it, I couldn't get the precision which my current project requires for output.