Well, first of all - sometimes it’s too hard to get correct results, because you can have a stitch of radius, say, 1, but your widening offset is for example 2, and you have no way to achieve ideal results. But if forget about it, there are simple solutions.
Me, for getting constant width quads (say, R) I was doing like this: in each linestrip joint I calculated normal bisector N_joint as normalized sum of normals of adjacent segments (say, N_seg_prev and N_seg_cur, these are simply normals to linestrip segments!!). In this direction I enlarged quad left and right. The length of enlargement was R/dot(N_joint,N_seg_prev). Doing so, I achieved constand enlarmenet width. Very first and very last normals were simply segments’ normals.
I used this approach for rendering polylines in chart and so on. There are some caveats with texturing. If you want to make good and uniform texturing, you should go in much more sophisticated way, because quads here are trapezoids, and common texturing breaks. But this is another topic