Cómo hacer que el ancho del trazo sea inmune a la matriz de transformación actual

En SVG (y Lienzo, Cuarzo, Postscript, ...), la matriz de transformación afecta tanto a las coordenadas de la ruta como al ancho de línea. ¿Hay alguna manera de hacer un ajuste para que el ancho de línea no se vea afectado? Es decir, en el siguiente ejemplo, la escala es diferente para X e Y, lo que convierte al cuadrado en un rectángulo, lo cual está bien, pero también hace que las líneas se ensanchen en dos lados.

<code>  <g transform="rotate(30) scale(5,1) ">
      <rect x="10" y="10" width="20" height="20" 
            stroke="blue" fill="none" stroke-width="2"/>
  </g>
</code>

Puedo ver que sería útil en muchos casos, pero ¿hay alguna manera de optar por no hacerlo? Supongo que me gustaría tener una pluma TM separada o poder configurar la pluma para que sea una elipse que la CTM convierte en un círculo, pero no veo nada de eso.

A falta de eso, creo que no tengo que decirle a SVG sobre mi CTM y, en su lugar, transformar las coordenadas, lo que significa convertir primitivas comorect a supath equivalentes

Respuestas a la pregunta(2)

Su respuesta a la pregunta