Да, существует множество библиотек для работы с SVG в языках программирования C++ и Python.
### Библиотеки для работы с SVG
**Python:**
1. **svgwrite** - библиотека, позволяющая создавать SVG-файлы. Она подходит для генерации SVG-документов, хотя не поддерживает разбор SVG.
2. **svgpathtools** - библиотека для работы с SVG-путями, которая позволяет обрабатывать и анализировать пути в формате SVG.
3. **cairosvg** - конвертирует SVG в другие форматы, такие как PNG и PDF. Можно использовать для визуализации SVG-документов.
4. **lxml** - может быть использована для парсинга и модификации SVG через UML, если необходимо изменять XML-структуру.
**C++:**
1. **libxml2** - хотя это не специализированная библиотека для SVG, она может использоваться для разбора XML и, следовательно, для работы с SVG.
2. **NanoVG** - это библиотека, которая поддерживает работу с векторной графикой, включая SVG, и может быть использована для рендеринга.
3. **Cairo** - библиотека 2D-графики, поддерживающая SVG как один из форматов для рисования, но требует дополнительных зависимостей.
### Основные задачи для разработки библиотеки
1. **Избавление от зависимостей:** Создание библиотеки, которая может выполнять необходимые действия без необходимости подключаться к большим системным библиотекам, может быть сложной задачей, но возможно. Вы можете использовать основные функции языка для реализации своей библиотеки для работы с SVG.
2. **Правильное направление контуров:** Для обеспечения правильного направления контуров, вам нужно будет реализовать алгоритмы, которые проверяют и изменяют порядок вершин контуров. Например, алгоритм может распознавать замкнутые контуры и переупорядочивать их вершины в соответствии с заданными условиями.
3. **Объединение контуров:** Реализация операции объединения контуров (Union) требует работы с векторной геометрией. Вы можете использовать алгоритмы булевой операции для работы с контурными данными.
4. **Удаление прямоугольников из SVG:** Чтобы удалить прямоугольники, вам необходимо будет анализировать контуры и игнорировать те, которые соответствуют характеристикам прямоугольников. Это можно сделать на этапе обработки или при рендеринге, минуя их.
### Рекомендации
Для разработки вашей библиотеки вы можете использовать существующие алгоритмы и структуры данных для работы с векторами и контурами. Важно сначала создать краткий план функционала и продумать архитектуру вашей библиотеки, чтобы избежать лишних зависимостей и обеспечить простоту использования.