offset(seg::GeneralOffset, s) nests the new offset s on the base segment seg.seg, but the normal to seg will be different when the base offset is not constant. I don't think we rely on the current behavior anywhere -- those methods are not even tested. But the correct behavior according to the semantics of offset segments everywhere else would be to use the normal to seg.
Partly for reasons like this, OffsetSegments are technically internal and not exposed to the user -- we're not really meant to ever see styled OffsetSegments in paths, since a number of things can go wrong. So we should never see an offset of a GeneralOffset created. We could eventually fix this either by resolving to BSpline approximation first or by handling nested offsets correctly, or even by throwing an explicit error if we're convinced it should never be used. Right now I mainly want this issue on the record.
offset(seg::GeneralOffset, s)nests the new offsetson the base segmentseg.seg, but the normal tosegwill be different when the base offset is not constant. I don't think we rely on the current behavior anywhere -- those methods are not even tested. But the correct behavior according to the semantics of offset segments everywhere else would be to use the normal toseg.Partly for reasons like this,
OffsetSegments are technically internal and not exposed to the user -- we're not really meant to ever see styled OffsetSegments in paths, since a number of things can go wrong. So we should never see an offset of a GeneralOffset created. We could eventually fix this either by resolving to BSpline approximation first or by handling nested offsets correctly, or even by throwing an explicit error if we're convinced it should never be used. Right now I mainly want this issue on the record.