LINUX.ORG.RU

Проблема с отображением некоторых SVG на Debian 12

 , ,


0

1

Обновился до Debian 12. Есть самопальный пак иконок в svg, собран на базе какого-то старого пака + иконки из старой версии Numix Circle + свои. Сейчас большинство иконок приложений везде некорректно отображаются в ОС (Thunar, Plank, просмотрщики фото, браузеры), просто цветной кружок (фон иконки). Если открыть в Inkscape, то там все ок. Сохранилась еще какая-то более новая версия Numix Circle, те же самые иконки там отображаются нормально. Глянул в текстовом редакторе, есть отличия. Может кто знает, как пофиксить? Или что-то поменялось в какой-то либе, и придется заново пак перебирать?

Иконка из пака:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
 <defs>
  <linearGradient id="linearGradient3764" x1="1" x2="47" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-1,1,0,-1.5e-6,47.999998)">
   <stop style="stop-color:#97b2d3;stop-opacity:1"/>
   <stop offset="1" style="stop-color:#a5bcd9;stop-opacity:1"/>
  </linearGradient>
  <clipPath id="clipPath-172451806">
   <g transform="translate(0,-1004.3622)">
    <path d="m -24 13 c 0 1.105 -0.672 2 -1.5 2 -0.828 0 -1.5 -0.895 -1.5 -2 0 -1.105 0.672 -2 1.5 -2 0.828 0 1.5 0.895 1.5 2 z" transform="matrix(15.333333,0,0,11.5,414.99999,878.8622)" style="fill:#1890d0"/>
   </g>
  </clipPath>
  <clipPath id="clipPath-183935099">
   <g transform="translate(0,-1004.3622)">
    <path d="m -24 13 c 0 1.105 -0.672 2 -1.5 2 -0.828 0 -1.5 -0.895 -1.5 -2 0 -1.105 0.672 -2 1.5 -2 0.828 0 1.5 0.895 1.5 2 z" transform="matrix(15.333333,0,0,11.5,414.99999,878.8622)" style="fill:#1890d0"/>
   </g>
  </clipPath>
 </defs>
 <g>
  <path d="m 36.31 5 c 5.859 4.062 9.688 10.831 9.688 18.5 c 0 12.426 -10.07 22.5 -22.5 22.5 c -7.669 0 -14.438 -3.828 -18.5 -9.688 c 1.037 1.822 2.306 3.499 3.781 4.969 c 4.085 3.712 9.514 5.969 15.469 5.969 c 12.703 0 23 -10.298 23 -23 c 0 -5.954 -2.256 -11.384 -5.969 -15.469 c -1.469 -1.475 -3.147 -2.744 -4.969 -3.781 z m 4.969 3.781 c 3.854 4.113 6.219 9.637 6.219 15.719 c 0 12.703 -10.297 23 -23 23 c -6.081 0 -11.606 -2.364 -15.719 -6.219 c 4.16 4.144 9.883 6.719 16.219 6.719 c 12.703 0 23 -10.298 23 -23 c 0 -6.335 -2.575 -12.06 -6.719 -16.219 z" style="opacity:0.05"/>
  <path d="m 41.28 8.781 c 3.712 4.085 5.969 9.514 5.969 15.469 c 0 12.703 -10.297 23 -23 23 c -5.954 0 -11.384 -2.256 -15.469 -5.969 c 4.113 3.854 9.637 6.219 15.719 6.219 c 12.703 0 23 -10.298 23 -23 c 0 -6.081 -2.364 -11.606 -6.219 -15.719 z" style="opacity:0.1"/>
  <path d="m 31.25 2.375 c 8.615 3.154 14.75 11.417 14.75 21.13 c 0 12.426 -10.07 22.5 -22.5 22.5 c -9.708 0 -17.971 -6.135 -21.12 -14.75 a 23 23 0 0 0 44.875 -7 a 23 23 0 0 0 -16 -21.875 z" style="opacity:0.2"/>
 </g>
 <g>
  <path d="m 24 1 c 12.703 0 23 10.297 23 23 c 0 12.703 -10.297 23 -23 23 -12.703 0 -23 -10.297 -23 -23 0 -12.703 10.297 -23 23 -23 z" style="fill:url(#linearGradient3764);fill-opacity:1"/>
 </g>
 <g>
  <g style="clip-path:url(#clipPath-172451806)">
   <g transform="translate(1,1)">
    <g style="opacity:0.1">
     <!-- color: #a5bcd9 -->
     <g>
      <path d="m 12 32.48 c -0.012 -5.758 8.316 -22.395 12.195 -22.477 c 1.938 -0.047 4.844 3.637 7.285 8.398 c 2.445 4.758 4.426 10.598 4.52 14.863 c 0 0 -9.383 -18.328 -11.723 -18.379 c -2.379 -0.066 -8.852 12.91 -8.08 14.352 c 0.754 1.41 14.695 -3.133 14.695 -3.133 c -0.301 0.461 -9.402 6.48 -16.227 7.895 c -1.031 -0.043 -2.578 0 -2.664 -1.52 m 0 0" style="fill:#000;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
     </g>
    </g>
   </g>
  </g>
 </g>
 <g>
  <g style="clip-path:url(#clipPath-183935099)">
   <!-- color: #a5bcd9 -->
   <g>
    <path d="m 12 32.48 c -0.012 -5.758 8.316 -22.395 12.195 -22.477 c 1.938 -0.047 4.844 3.637 7.285 8.398 c 2.445 4.758 4.426 10.598 4.52 14.863 c 0 0 -9.383 -18.328 -11.723 -18.379 c -2.379 -0.066 -8.852 12.91 -8.08 14.352 c 0.754 1.41 14.695 -3.133 14.695 -3.133 c -0.301 0.461 -9.402 6.48 -16.227 7.895 c -1.031 -0.043 -2.578 0 -2.664 -1.52 m 0 0" style="fill:#4c627f;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
   </g>
  </g>
 </g>
 <g>
  <path d="m 40.03 7.531 c 3.712 4.084 5.969 9.514 5.969 15.469 0 12.703 -10.297 23 -23 23 c -5.954 0 -11.384 -2.256 -15.469 -5.969 4.178 4.291 10.01 6.969 16.469 6.969 c 12.703 0 23 -10.298 23 -23 0 -6.462 -2.677 -12.291 -6.969 -16.469 z" style="opacity:0.1"/>
 </g>
</svg>

Та же иконка из Numix:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
 <defs>
  <linearGradient id="linearGradient3764" x1="1" x2="47" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-1,1,0,-1.5e-6,47.999998)">
   <stop style="stop-color:#97b2d3;stop-opacity:1"/>
   <stop offset="1" style="stop-color:#a5bcd9;stop-opacity:1"/>
  </linearGradient>
 </defs>
 <g>
  <path d="m 36.31 5 c 5.859 4.062 9.688 10.831 9.688 18.5 c 0 12.426 -10.07 22.5 -22.5 22.5 c -7.669 0 -14.438 -3.828 -18.5 -9.688 c 1.037 1.822 2.306 3.499 3.781 4.969 c 4.085 3.712 9.514 5.969 15.469 5.969 c 12.703 0 23 -10.298 23 -23 c 0 -5.954 -2.256 -11.384 -5.969 -15.469 c -1.469 -1.475 -3.147 -2.744 -4.969 -3.781 z m 4.969 3.781 c 3.854 4.113 6.219 9.637 6.219 15.719 c 0 12.703 -10.297 23 -23 23 c -6.081 0 -11.606 -2.364 -15.719 -6.219 c 4.16 4.144 9.883 6.719 16.219 6.719 c 12.703 0 23 -10.298 23 -23 c 0 -6.335 -2.575 -12.06 -6.719 -16.219 z" style="opacity:0.05"/>
  <path d="m 41.28 8.781 c 3.712 4.085 5.969 9.514 5.969 15.469 c 0 12.703 -10.297 23 -23 23 c -5.954 0 -11.384 -2.256 -15.469 -5.969 c 4.113 3.854 9.637 6.219 15.719 6.219 c 12.703 0 23 -10.298 23 -23 c 0 -6.081 -2.364 -11.606 -6.219 -15.719 z" style="opacity:0.1"/>
  <path d="m 31.25 2.375 c 8.615 3.154 14.75 11.417 14.75 21.13 c 0 12.426 -10.07 22.5 -22.5 22.5 c -9.708 0 -17.971 -6.135 -21.12 -14.75 a 23 23 0 0 0 44.875 -7 a 23 23 0 0 0 -16 -21.875 z" style="opacity:0.2"/>
 </g>
 <g>
  <path d="m 24 1 c 12.703 0 23 10.297 23 23 c 0 12.703 -10.297 23 -23 23 -12.703 0 -23 -10.297 -23 -23 0 -12.703 10.297 -23 23 -23 z" style="fill:url(#linearGradient3764);fill-opacity:1"/>
 </g>
 <g>
  <g>
   <g transform="translate(1,1)">
    <g style="opacity:0.1">
     <!-- color: #a5bcd9 -->
     <g>
      <path d="m 12 32.48 c -0.012 -5.758 8.316 -22.395 12.195 -22.477 c 1.938 -0.047 4.844 3.637 7.285 8.398 c 2.445 4.758 4.426 10.598 4.52 14.863 c 0 0 -9.383 -18.328 -11.723 -18.379 c -2.379 -0.066 -8.852 12.91 -8.08 14.352 c 0.754 1.41 14.695 -3.133 14.695 -3.133 c -0.301 0.461 -9.402 6.48 -16.227 7.895 c -1.031 -0.043 -2.578 0 -2.664 -1.52 m 0 0" style="fill:#000;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
     </g>
    </g>
   </g>
  </g>
 </g>
 <g>
  <g>
   <!-- color: #a5bcd9 -->
   <g>
    <path d="m 12 32.48 c -0.012 -5.758 8.316 -22.395 12.195 -22.477 c 1.938 -0.047 4.844 3.637 7.285 8.398 c 2.445 4.758 4.426 10.598 4.52 14.863 c 0 0 -9.383 -18.328 -11.723 -18.379 c -2.379 -0.066 -8.852 12.91 -8.08 14.352 c 0.754 1.41 14.695 -3.133 14.695 -3.133 c -0.301 0.461 -9.402 6.48 -16.227 7.895 c -1.031 -0.043 -2.578 0 -2.664 -1.52 m 0 0" style="fill:#4c627f;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
   </g>
  </g>
 </g>
 <g>
  <path d="m 40.03 7.531 c 3.712 4.084 5.969 9.514 5.969 15.469 0 12.703 -10.297 23 -23 23 c -5.954 0 -11.384 -2.256 -15.469 -5.969 4.178 4.291 10.01 6.969 16.469 6.969 c 12.703 0 23 -10.298 23 -23 0 -6.462 -2.677 -12.291 -6.969 -16.469 z" style="opacity:0.1"/>
 </g>
</svg>
★★★

Последнее исправление: zevilz (всего исправлений: 1)

Мде, забавно. Собрал в Arch версию 2.50.9 - она действительно понимает эти clipPath из первого примера. Штатная 2.56.3 их не видит.

Вообще это svg-шное clipPath - у меня шрам на всю жизнь. Где-то в конце 90х пытался с ним работать - страшное дело. По-моему его вообще реализовать однозначно невозможно. Только костылями подпирать в ту или иную сторону.

Нууу...... Видимо в 2.56 librsvg костыль куда-то не туда повернули )

Или ищите способ установить в Debian 12 старую версию librsvg, или меняйте внутренности ваших svg. Без clipPath-ов )

Toxo2 ★★★★
()

Я вообще видел проблемы с path в svg, в зависимости от драйвера x11. Ставишь в виртуалке xorg-video-vmgfx - рисует path, удаляешь - не рисует. С той же ОС, но на реальном железе с проприетарными драйверами nvidia, опять не рисует. Я остановился на варианте заменить path на polygon. Не всегда возможно, но чаще всего да.

Loki13 ★★★★★
()