Существует комплект (группа) svg иконок, части которых находятся в форме - обводки (толщины линии) объекта. А часть уже находится в правильной форме - векторном контуре. Визуально разницу между формами представлено на рисунке во вложении. Для примера соответствующая операция в Adobe Illustrator, для svg элементов, выполняется с помощью пункта меню Объект – Контур - Преобразовать обводку в кривые (Object – Path - Outline Stroke).
В архиве для примера представлен комплект svg иконок, которые нужно привести к правильной форме
Функционал скрипта:
Функционал скрипта заключается в том, чтобы комплексно, в конкретной директории (папке), проанализировать все svg иконки, выявить те, которые находятся в форме - обводки (толщины линии) и привести их к правильной форме - векторному контуру. Эта форма необходима для дальнейшего создания иконкового шрифта. Если такой подход трудоемкий, а именно имеется в виду, выявление лишь тех иконок, которые нужно обработать, то скрипт должен обработать все иконки. Но самым оптимальным вариантом был бы вариант выявления только тех, которые нужно обработать.
Требования к скрипту:
- Скрипт должен приводить svg иконки к правильной форме – векторный контур.
- Скрипт не должен по завершению обработки деформировать элементы svg иконки и svg иконку в целом. То есть сохранять свою оригинальную форму после обработки. Примечание: svg иконка может состоять из нескольких элементов, и все эти элементы находятся в сгруппированном виде.
- После завершения обработки svg иконка должна открываться в графических и онлайн редакторах и ее можно было корректировать и изменять. То есть svg не должен быть представлен как поврежденный файл после обработки скрипта.
Способы реализации:
Способ #1 (Реализация с помощью Python):
Метод #1 - Реализовать соответствующий скрипт с помощью Python. Скрипт может быть представлен в виде файла script.py и работать непосредственно из папки с входными данными (svg иконками). Запуск скрипта для выполнения своих функций может осуществляться с помощью VsCode при вводе команды через встроенный терминал – python script.py.
Метод #2 - Также рассматриваю вариант реализации скрипта, с помощью Python с предусмотренным пользовательским интерфейсом. В данном случае скрипт может работать из любой директории после инсталляции. А интерфейс по функционалу будет предусматривать: строку для открытия окна обзора и дальнейшего выбора конкретного пути к папке с svg иконками; кнопку для запуска скрипта и выполнения своих действий.
Для обоих предложенных методов, после обработки svg элементов, если эти методы предполагают, что скрипт по своему функционалу будет анализировать все файлы svg и выявлять лишь те файлы, которые необходимо обработать и соответственно будут обработаны, то таким образом, по завершению операции обработки, он должен вывести log файл в файле *.txt с перечнем svg иконок, которые были непосредственно обработаны.
Способ #2 (Реализация с помощью JavaScript) САМОЙ ОПТИМАЛЬНЫЙ ВАРИАНТ:
Этот вариант рассматривается как самый оптимальный по причинам того, что есть действующий шаблонизатор для VsCode, который разработан на основе системы Vite. В этом шаблонизаторе уже реализован функционал по созданию иконковых шрифтов при условии, что svg иконки представлены в правильной форме. Этот функционал реализован с помощью решения https://github.com/nfroidure/svgicons2svgfont
На Git существует ряд решений, которые позволяют приводить svg иконки к правильной форме https://github.com/search?q=outline%20stroke%20svg&type=repositories ВНИМАНИЕ: ряд этих решений представлен, как пример и они не предусмотрены и не рассматриваются как обязательные методы для реализации, если эти решения будут нестабильно срабатывать или некорректно выполнять свои функции
Цель по Способу #2 заключается в том, чтобы реализовать функционал, который рассматривается по ТЗ, и присоединить к уже существующему функционалу в шаблонизаторе, что даст возможность общей командой, комплексно проанализировать, обработать svg иконки и создать на основании них иконковый шрифт.
Прошу пожалуйста откликнуться для обсуждения тех специалистов, кто именно детально ознакомился с ТЗ и уверен в реализации с предложенными адекватными ценами.
В случае необходимости отвечу на дополнительные вопросы