Точно так же, как другие объяснили, очень сложно. Кривая смещения не является кубическим Безье и очень трудноразрешима. Тогда вогнутости, которые глубже смещения, вызывают проблемы пересечения.
Хорошей новостью является то, что обычно вы хотите рассчитать смещение обводки для рендеринга, поэтому нужна только точность пикселей. Кроме того, различные пересечения по-прежнему создают заполненный многоугольник, если вы соблюдаете правило наматывания для заполнения многоугольника. Таким образом, сначала вы сглаживаете кривую, а затем смещаетесь линейно, и это становится проблемой многоугольника с прямой линией.
Некоторый код здесь можно использовать в качестве эталонной реализации:
https://github.com/memononen/nanosvg