The way bevel handles non-square corners doesn’t reflect bevels from the real world. In the real world, bevels usually have a constant size and shape defined by the tool, and they don’t change based on the angle of the corner being beveled. But in Blender, the beveled corners do not necessarily have a consistent radius.
Currently, bevel globally specifies how far along a vertice’s adjacent edges to attach the ends of the profile. Instead, with this solution applied, bevel will specify a global bevel radius. A circle of that radius will be placed between the adjacent edges at the location where each edge connects tangentially to the circle. Then the profile becomes a different portion of a circle depending on the angle of the corner.
There is a new offset type, "Radius," and a new "Profile Type" enum, with three options, "Radius," "Superellipse," and "Custom." There are probably better names.
The 2D shapes above work correctly, but in 3D when the beveled edge turns it's not quite right. The offsets are changed slightly from what they're set to at the beginning by the offset_adjust code.
This is the test file I've been using: