Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SVG parsing breaks with complex SVG, Unknown modifier 'I' #4155

Closed
ilicmarko opened this issue Apr 18, 2019 · 0 comments
Closed

SVG parsing breaks with complex SVG, Unknown modifier 'I' #4155

ilicmarko opened this issue Apr 18, 2019 · 0 comments

Comments

@ilicmarko
Copy link

ilicmarko commented Apr 18, 2019

Description

There is a problem parsing non-optimized SVG from sketch. When you export and SVG from sketch like a shape there is this weird syntax with translates but it is considered a valid SVG.

When I pass that SVG (as and asset) to the svg() function it breaks. Here is the error log.

yii\base\ErrorException: preg_replace(): Unknown modifier 'I' in /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Extension.php:921
Stack trace:
#0 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Extension.php(921): ::preg_replace()
#1 /home/vagrant/code/storage/runtime/compiled_templates/ae/ae7420d3f05c2142ca0069eb5f907da0bb0488cfc84043301d82e3a93bae2ce6.php(120): craft\web\twig\Extension->svgFunction()
#2 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(386): __TwigTemplate_7c59852b5d9257936f744ed0dcce1b2d581587c42b6cd2510f2b12e9fc2dd14f->doDisplay()
#3 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(49): __TwigTemplate_7c59852b5d9257936f744ed0dcce1b2d581587c42b6cd2510f2b12e9fc2dd14f->displayWithErrorHandling()
#4 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(363): __TwigTemplate_7c59852b5d9257936f744ed0dcce1b2d581587c42b6cd2510f2b12e9fc2dd14f->displayWithErrorHandling()
#5 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(31): __TwigTemplate_7c59852b5d9257936f744ed0dcce1b2d581587c42b6cd2510f2b12e9fc2dd14f->display()
#6 /home/vagrant/code/storage/runtime/compiled_templates/8a/8a3c5a92613274874894ac0df3946e92f4f6986b8b6c160524058d10851278c2.php(75): __TwigTemplate_7c59852b5d9257936f744ed0dcce1b2d581587c42b6cd2510f2b12e9fc2dd14f->display()
#7 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(386): __TwigTemplate_7614a082f728fb389adccc2137c8b7cdafdefeea08307b4a6bb8e862621039e6->doDisplay()
#8 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(49): __TwigTemplate_7614a082f728fb389adccc2137c8b7cdafdefeea08307b4a6bb8e862621039e6->displayWithErrorHandling()
#9 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(363): __TwigTemplate_7614a082f728fb389adccc2137c8b7cdafdefeea08307b4a6bb8e862621039e6->displayWithErrorHandling()
#10 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(31): __TwigTemplate_7614a082f728fb389adccc2137c8b7cdafdefeea08307b4a6bb8e862621039e6->display()
#11 /home/vagrant/code/storage/runtime/compiled_templates/8b/8ba9f0ea6329b733b229f473c16df12a2c9a89a5107ba25931f4586e773b6ee8.php(81): __TwigTemplate_7614a082f728fb389adccc2137c8b7cdafdefeea08307b4a6bb8e862621039e6->display()
#12 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(189): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->block_body()
#13 /home/vagrant/code/storage/runtime/compiled_templates/be/becd286c291020e037c0d7b34558d565415d404ae3c1c3d39e4821c8a7d2392f.php(91): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->displayBlock()
#14 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(386): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->doDisplay()
#15 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(49): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->displayWithErrorHandling()
#16 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(363): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->displayWithErrorHandling()
#17 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(31): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->display()
#18 /home/vagrant/code/storage/runtime/compiled_templates/ec/ec9e428f8fd46b2eb4cdd7677dce685cfd175aa12821d48652705f4267dfbd29.php(34): __TwigTemplate_5d400ee3b5b9c456f58439b8b4cd79a390972311885ab88c0540dd869fb82c30->display()
#19 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(386): __TwigTemplate_8c76639d70e85d7e798a198ee76052397bc468ef532fe8aab4e3d9083bcc09f9->doDisplay()
#20 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(49): __TwigTemplate_8c76639d70e85d7e798a198ee76052397bc468ef532fe8aab4e3d9083bcc09f9->displayWithErrorHandling()
#21 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(363): __TwigTemplate_8c76639d70e85d7e798a198ee76052397bc468ef532fe8aab4e3d9083bcc09f9->displayWithErrorHandling()
#22 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(31): __TwigTemplate_8c76639d70e85d7e798a198ee76052397bc468ef532fe8aab4e3d9083bcc09f9->display()
#23 /home/vagrant/code/storage/runtime/compiled_templates/8b/8ba9f0ea6329b733b229f473c16df12a2c9a89a5107ba25931f4586e773b6ee8.php(28): __TwigTemplate_8c76639d70e85d7e798a198ee76052397bc468ef532fe8aab4e3d9083bcc09f9->display()
#24 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(386): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->doDisplay()
#25 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(49): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->displayWithErrorHandling()
#26 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(363): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->displayWithErrorHandling()
#27 /home/vagrant/code/vendor/craftcms/cms/src/web/twig/Template.php(31): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->display()
#28 /home/vagrant/code/vendor/twig/twig/lib/Twig/Template.php(371): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->display()
#29 /home/vagrant/code/vendor/twig/twig/lib/Twig/Environment.php(289): __TwigTemplate_59babad98cfbd4caa00dd1e08c548425b953c13868299e11b055196015eb237e->render()
#30 /home/vagrant/code/vendor/craftcms/cms/src/web/View.php(331): craft\web\twig\Environment->render()
#31 /home/vagrant/code/vendor/craftcms/cms/src/web/View.php(378): craft\web\View->renderTemplate()
#32 /home/vagrant/code/vendor/craftcms/cms/src/web/Controller.php(156): craft\web\View->renderPageTemplate()
#33 /home/vagrant/code/vendor/craftcms/cms/src/controllers/TemplatesController.php(78): craft\controllers\TemplatesController->renderTemplate()
#34 /home/vagrant/code/vendor/yiisoft/yii2/base/InlineAction.php(57): craft\controllers\TemplatesController->actionRender()
#35 /home/vagrant/code/vendor/yiisoft/yii2/base/InlineAction.php(57): ::call_user_func_array:{/home/vagrant/code/vendor/yiisoft/yii2/base/InlineAction.php:57}()
#36 /home/vagrant/code/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams()
#37 /home/vagrant/code/vendor/craftcms/cms/src/web/Controller.php(104): craft\controllers\TemplatesController->runAction()
#38 /home/vagrant/code/vendor/yiisoft/yii2/base/Module.php(528): craft\controllers\TemplatesController->runAction()
#39 /home/vagrant/code/vendor/craftcms/cms/src/web/Application.php(284): craft\web\Application->runAction()
#40 /home/vagrant/code/vendor/yiisoft/yii2/web/Application.php(103): craft\web\Application->runAction()
#41 /home/vagrant/code/vendor/craftcms/cms/src/web/Application.php(273): craft\web\Application->handleRequest()
#42 /home/vagrant/code/vendor/yiisoft/yii2/base/Application.php(386): craft\web\Application->handleRequest()
#43 /home/vagrant/code/web/index.php(21): craft\web\Application->run()
#44 {main}

Here is the Sketch SVG that will "break" craft

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="40px" height="40px" viewBox="0 0 40 40">
  <!-- Generator: sketchtool 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
  <title>9E0176AB-A0AB-479E-9106-E72FADE5FE19</title>
  <desc>Created with sketchtool.</desc>
  <g id="7-get-started" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
    <g id="7.1-for-investors" transform="translate(-679.000000, -428.000000)" fill="#0047BB">
      <g id="cards" transform="translate(0.000000, 324.000000)">
        <g id="content" transform="translate(55.000000, 80.000000)">
          <g id="02" transform="translate(600.000000, 0.000000)">
            <g id="content" transform="translate(24.000000, 24.000000)">
              <g id="6.-Components/Illustration">
                <path d="M39.344262,10.4921106 L39.344262,36.0658815 C39.344262,37.8737503 37.8734424,39.34457 36.0655735,39.34457 L3.2786885,39.34457 C1.47081966,39.34457 0,37.8737503 0,36.0658815 L0,10.4921106 C0,10.1301434 0.29377049,9.83637294 0.6557377,9.83637294 C1.01770491,9.83637294 1.3114754,10.1301434 1.3114754,10.4921106 L1.3114754,36.0658815 C1.3114754,37.1504716 2.19409835,38.0330946 3.2786885,38.0330946 L19.0163933,38.0330946 L19.0163933,36.4914552 C18.2163933,36.1563733 16.1678687,35.4101437 13.7704917,35.4101437 C8.03803273,35.4101437 3.50360653,36.6835864 3.45836063,36.6960454 C3.39934424,36.7130946 3.33901637,36.7216192 3.2786885,36.7216192 C3.1377049,36.7216192 2.9986885,36.6763733 2.88327867,36.5891601 C2.71999998,36.4652257 2.6229508,36.2711274 2.6229508,36.0658815 L2.6229508,7.21342208 C2.6229508,6.92096306 2.81704916,6.66325814 3.09836063,6.58325814 C3.28983604,6.52817617 7.84524585,5.24620894 13.7704917,5.24620894 C17.1652458,5.24620894 19.8524589,6.57079912 19.9652458,6.62653683 C20.1875408,6.73801224 20.3278687,6.96489749 20.3278687,7.21342208 L20.3278687,32.3039142 C22.3259015,31.166865 26.9993441,28.6271928 31.4754096,27.071783 L31.4754096,1.61473349 C26.6537703,3.55374991 22.0354097,6.42719257 21.9868851,6.45801224 C21.6793441,6.65014339 21.2747539,6.55637289 21.0832785,6.24948765 C20.8911474,5.9426024 20.9849179,5.53801223 21.2918031,5.34588108 C21.3449179,5.31309419 26.6537703,2.00948759 31.9003276,0.0416187166 C32.1029506,-0.0337911204 32.3285244,-0.00559439872 32.5042621,0.117028554 C32.6813112,0.239651506 32.786885,0.440962984 32.786885,0.656044954 L32.786885,27.5412912 C32.786885,27.8239141 32.6065571,28.0737502 32.3383604,28.1635863 C26.5718031,30.0855535 20.074754,33.9662093 20.0098359,34.0048978 C19.807213,34.126865 19.5540982,34.1301437 19.3488523,34.0134224 C19.1436064,33.8973568 19.0163933,33.6789962 19.0163933,33.4429306 L19.0163933,7.63834012 C18.2118032,7.30194667 16.1613114,6.55768437 13.7704917,6.55768437 C9.11147535,6.55768437 5.24393439,7.39899586 3.9344262,7.72096307 L3.9344262,35.221947 C5.53311472,34.8435864 9.25377043,34.0986683 13.7704917,34.0986683 C16.5927868,34.0986683 18.9259015,35.0140782 19.6977048,35.3550618 C20.5659015,35.037029 23.3724589,34.0986683 26.229508,34.0986683 C30.6242621,34.0986683 33.9239342,34.8048978 35.4098358,35.194406 L35.4098358,7.74653684 C35.1934424,7.70325815 34.9127866,7.64883192 34.5777047,7.58719258 C34.2216391,7.52161881 33.9862293,7.17997946 34.051803,6.82325814 C34.1173768,6.4678483 34.4603276,6.23178273 34.8150817,6.2973565 C35.6937702,6.45866798 36.2078686,6.57342208 36.2078686,6.57342208 C36.5081965,6.63965158 36.7213112,6.9058811 36.7213112,7.21342208 L36.7213112,36.0658815 C36.7213112,36.2763733 36.6203276,36.474406 36.4491801,36.5976847 C36.2767211,36.7209634 36.0563932,36.7537503 35.8590161,36.6881765 C35.8203276,36.6750618 31.9416391,35.4101437 26.229508,35.4101437 C23.7744261,35.4101437 21.2839343,36.1898159 20.3278687,36.5242421 L20.3278687,38.0330946 L36.0655735,38.0330946 C37.1501637,38.0330946 38.0327866,37.1504716 38.0327866,36.0658815 L38.0327866,10.4921106 C38.0327866,10.1301434 38.3259014,9.83637294 38.6885243,9.83637294 C39.0511473,9.83637294 39.344262,10.1301434 39.344262,10.4921106 L39.344262,10.4921106 Z M15.8872128,12.1694874 C11.8380326,11.2193235 7.23672125,12.4298153 7.04327863,12.4816186 C6.69377045,12.5753891 6.4859016,12.9347333 6.57967209,13.2848973 C6.65836061,13.578012 6.92327864,13.7707989 7.21245896,13.7707989 C7.2688524,13.7707989 7.32590157,13.7635858 7.38295075,13.7485038 C7.42688518,13.7360448 11.857049,12.5707989 15.5881964,13.4462088 C15.9390161,13.528176 16.2937702,13.3098153 16.3763931,12.9570284 C16.459016,12.6048973 16.2399997,12.2521104 15.8872128,12.1694874 L15.8872128,12.1694874 Z M15.8872128,16.1039144 C11.8380326,15.1544062 7.23672125,16.3642423 7.04327863,16.4160456 C6.69377045,16.5098161 6.4859016,16.8691604 6.57967209,17.2193243 C6.65836061,17.5124391 6.92327864,17.7052259 7.21245896,17.7052259 C7.2688524,17.7052259 7.32590157,17.6980128 7.38295075,17.6829309 C7.42688518,17.6704718 11.857049,16.5052259 15.5881964,17.3806358 C15.9390161,17.462603 16.2937702,17.2442423 16.3763931,16.8914554 C16.459016,16.5393243 16.2399997,16.1865374 15.8872128,16.1039144 L15.8872128,16.1039144 Z M15.8872128,20.0383405 C11.8380326,19.0888323 7.23672125,20.2980126 7.04327863,20.3504716 C6.69377045,20.4442421 6.4859016,20.8035863 6.57967209,21.1537503 C6.65836061,21.446865 6.92327864,21.6403076 7.21245896,21.6403076 C7.2688524,21.6403076 7.32590157,21.6324388 7.38295075,21.6173568 C7.42688518,21.6048978 11.857049,20.4396519 15.5881964,21.3150617 C15.9390161,21.397029 16.2937702,21.1786683 16.3763931,20.8258814 C16.459016,20.4737503 16.2399997,20.1209634 15.8872128,20.0383405 L15.8872128,20.0383405 Z M15.8872128,23.9727657 C11.8380326,23.0226018 7.23672125,24.2324379 7.04327863,24.2848969 C6.69377045,24.3786674 6.4859016,24.7380116 6.57967209,25.0881755 C6.65836061,25.3812903 6.92327864,25.5747329 7.21245896,25.5747329 C7.2688524,25.5747329 7.32590157,25.566864 7.38295075,25.5517821 C7.42688518,25.5393231 11.857049,24.3740772 15.5881964,25.249487 C15.9390161,25.3314542 16.2937702,25.1130936 16.3763931,24.7603067 C16.459016,24.4081755 16.2399997,24.0553887 15.8872128,23.9727657 L15.8872128,23.9727657 Z M15.8872128,27.9071927 C11.8380326,26.9570287 7.23672125,28.1675205 7.04327863,28.2193238 C6.69377045,28.3130943 6.4859016,28.6724386 6.57967209,29.0226025 C6.65836061,29.3157173 6.92327864,29.5091599 7.21245896,29.5091599 C7.2688524,29.5091599 7.32590157,29.501291 7.38295075,29.4862091 C7.42688518,29.4737501 11.857049,28.3085041 15.5881964,29.183914 C15.9390161,29.2652255 16.2937702,29.0475205 16.3763931,28.6947337 C16.459016,28.3426025 16.2399997,27.9898156 15.8872128,27.9071927 L15.8872128,27.9071927 Z M22.3659012,26.5275205 C22.4819667,26.7544058 22.7127864,26.8855533 22.9514749,26.8855533 C23.051147,26.8855533 23.1534421,26.8626025 23.2485241,26.8140779 C23.2872126,26.7944058 27.1468846,24.8337501 29.0504911,24.2324386 C29.3954091,24.1229304 29.5868845,23.7544058 29.4773763,23.4094878 C29.3685239,23.0645698 29.0026223,22.8724386 28.6544255,22.9812911 C26.6491797,23.6153894 22.8157372,25.5629304 22.6531143,25.6455533 C22.3304913,25.8094877 22.2019667,26.2042418 22.3659012,26.5275205 L22.3659012,26.5275205 Z M22.3659012,22.593094 C22.4819667,22.8199793 22.7127864,22.9511268 22.9514749,22.9511268 C23.051147,22.9511268 23.1534421,22.928176 23.2485241,22.8796514 C23.2872126,22.8599793 27.1468846,20.8993236 29.0504911,20.2980121 C29.3954091,20.1885039 29.5868845,19.8199793 29.4773763,19.4750613 C29.3685239,19.1301433 29.0026223,18.9380122 28.6544255,19.0468646 C26.6491797,19.680963 22.8157372,21.6285039 22.6531143,21.7111268 C22.3304913,21.8750613 22.2019667,22.2698153 22.3659012,22.593094 L22.3659012,22.593094 Z M22.3659012,18.6586675 C22.4819667,18.8855528 22.7127864,19.0167003 22.9514749,19.0167003 C23.051147,19.0167003 23.1534421,18.9937495 23.2485241,18.9452249 C23.2872126,18.9255528 27.1468846,16.9648971 29.0504911,16.3635856 C29.3954091,16.2540774 29.5868845,15.8855529 29.4773763,15.5406348 C29.3685239,15.1957168 29.0026223,15.0035857 28.6544255,15.1124381 C26.6491797,15.7465365 22.8157372,17.6940774 22.6531143,17.7767004 C22.3304913,17.9406348 22.2019667,18.3353889 22.3659012,18.6586675 L22.3659012,18.6586675 Z M22.3659012,14.7242418 C22.4819667,14.951127 22.7127864,15.0822745 22.9514749,15.0822745 C23.051147,15.0822745 23.1534421,15.0593237 23.2485241,15.0107991 C23.2872126,14.991127 27.1468846,13.0304713 29.0504911,12.4291599 C29.3954091,12.3196517 29.5868845,11.9511271 29.4773763,11.6062091 C29.3685239,11.261291 29.0026223,11.0691599 28.6544255,11.1780124 C26.6491797,11.8121107 22.8157372,13.7596516 22.6531143,13.8422746 C22.3304913,14.006209 22.2019667,14.4009631 22.3659012,14.7242418 L22.3659012,14.7242418 Z M22.9514749,11.1478481 C23.051147,11.1478481 23.1534421,11.1248972 23.2485241,11.0763727 C23.2872126,11.0567005 27.1468846,9.09604484 29.0504911,8.49473338 C29.3954091,8.38522518 29.5868845,8.0167006 29.4773763,7.67178258 C29.3685239,7.32686456 29.0026223,7.13473341 28.6544255,7.24358587 C26.6491797,7.87768421 22.8157372,9.82522514 22.6531143,9.90784809 C22.3304913,10.0717825 22.2019667,10.4665366 22.3659012,10.7898153 C22.4819667,11.0167005 22.7127864,11.1478481 22.9514749,11.1478481 L22.9514749,11.1478481 Z" id="book-open"></path>
              </g>
            </g>
          </g>
        </g>
      </g>
    </g>
  </g>
</svg>

Steps to reproduce

  1. Upload the given SVG as an asset
  2. Try to print the SVG asset {{ svg(asset) }}

Additional info

  • Craft version: Craft Solo 3.0.41
  • PHP version: 7.2.14
  • Database driver & version: MySQL 5.7.24
  • Plugins & versions:
Plugin Version
Amazon S3 1.0.8
Element API 2.5.4
Imager v2.1.9
Migration Manager 3.0.17
Navigation 1.1.4
Redactor 2.1.7
SEOmatic 3.1.44
Super Table 2.0.14
angrybrad pushed a commit that referenced this issue May 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant