Існує комплект (група) 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 іконки та створити на підставі них іконковий шрифт.
Прошу будь-ласка відгукуватись для обговорення тих спеціалістів хто саме детально ознайомився з ТЗ та впевнений у реалізації із запропонованими адекватними цінами.
У разі потреби відповім на додаткові запитання