There is no provided way to achieve what you are describing*.
If you are willing to do so some manual line drawing, you best bet is using CanvasItem.draw_line() for each segment (all Node2D inherint form CanvasItem).
Another solution might be to have a different Line2D node for each segment where the width changes.
*Actually you can build the width_curve programatically and that way you can create a curve that changes the width exactly at the points you wish. You seem to want to avoid working with the curve solution but I encourage you to try, maybe it’ll become useful experience for a later day .
With curve I have add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0)to add a new point but I don’t understand what the vector2 does exactly, I’m assuming it’s choosing the position of the point with x and a width value with y although I haven’t been able to make that work.