Ваша проблема в том, что ваши шаблоны используют patternContentUnits="objectBoundingBox"
.Это означает, что полосатое изображение в ваших шаблонах масштабируется в соответствии с размером формы, к которой применяется шаблон.
Демо:
<svg>
<defs>
<pattern id="blue" height="100%" width="100%" patternContentUnits="objectBoundingBox">
<image height="1" width="1" preserveAspectRatio="none" xlink:href="http://placekitten.com/100/100" />
</pattern>
</defs>
<rect x="0" y="0" width="150" height="150" fill="url(#blue)"/>
<rect x="175" y="25" width="100" height="100" fill="url(#blue)"/>
</svg>
Чтобы исправить это, вам нужно использовать patternContentUnits
, которые не зависят от размера фигуры, к которой применяется рисунок.Вы делаете это, указывая patternContentUnits="userSpaceOnUse"
.
<svg>
<defs>
<pattern id="blue" height="100%" width="100%" patternContentUnits="userSpaceOnUse">
<image height="150" width="150" preserveAspectRatio="none" xlink:href="http://placekitten.com/100/100" />
</pattern>
</defs>
<rect x="0" y="0" width="150" height="150" fill="url(#blue)"/>
<rect x="175" y="25" width="100" height="100" fill="url(#blue)"/>
</svg>