diff --git a/Source/DataTypes/SvgUnit.cs b/Source/DataTypes/SvgUnit.cs index e2303a79ea02d5bb69cf88e630dfad4930e86e1b..1ad921dd88639c88af78841f8100f8491b7cdf1f 100644 --- a/Source/DataTypes/SvgUnit.cs +++ b/Source/DataTypes/SvgUnit.cs @@ -164,6 +164,14 @@ namespace Svg case UnitRenderingType.VerticalOffset: _deviceValue = (size.Height / 100) * value + boundable.Location.Y; break; + case UnitRenderingType.Other: + // Calculate a percentage value of the normalized viewBox diagonal length. + if (owner.OwnerDocument != null && owner.OwnerDocument.ViewBox != null && owner.OwnerDocument.ViewBox.Width!=0 && owner.OwnerDocument.ViewBox.Height != 0) + { + _deviceValue = (float)(Math.Sqrt(Math.Pow(owner.OwnerDocument.ViewBox.Width, 2) + Math.Pow(owner.OwnerDocument.ViewBox.Height, 2)) / Math.Sqrt(2) * value / 100.0); + } + else _deviceValue = (float)(Math.Sqrt(Math.Pow(size.Width, 2) + Math.Pow(size.Height, 2)) / Math.Sqrt(2) * value / 100.0); + break; default: _deviceValue = (float)(Math.Sqrt(Math.Pow(size.Width, 2) + Math.Pow(size.Height, 2)) / Math.Sqrt(2) * value / 100.0); break; diff --git a/Tests/W3CTestSuite/png/__issue-338-01_stroke_width.png b/Tests/W3CTestSuite/png/__issue-338-01_stroke_width.png new file mode 100644 index 0000000000000000000000000000000000000000..885a36b6e243fc0c34e7683eeef5d97343e608c6 Binary files /dev/null and b/Tests/W3CTestSuite/png/__issue-338-01_stroke_width.png differ diff --git a/Tests/W3CTestSuite/svg/__issue-338-01_stroke_width.svg b/Tests/W3CTestSuite/svg/__issue-338-01_stroke_width.svg new file mode 100644 index 0000000000000000000000000000000000000000..fffe1c4f1090ce50fb6c58ea8105955096e39077 --- /dev/null +++ b/Tests/W3CTestSuite/svg/__issue-338-01_stroke_width.svg @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file