From 2b3276fb4fa8d8c72c6b3b1136cbc84c2e2297c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20D=C3=BCrrenberger?= Date: Tue, 10 Nov 2026 12:37:59 +0100 Subject: [PATCH] Fix crash on rem lengths in text-indent and word-spacing --- Source/HtmlRenderer/Core/Dom/CssBoxProperties.cs | 3 ++- .../Test/HtmlRenderer.Test/Css/TextPropertyTests.cs | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/HtmlRenderer/Core/Dom/CssBoxProperties.cs b/Source/HtmlRenderer/Core/Dom/CssBoxProperties.cs index 0167d22a4..8b1891112 100644 --- a/Source/HtmlRenderer/Core/Dom/CssBoxProperties.cs +++ b/Source/HtmlRenderer/Core/Dom/CssBoxProperties.cs @@ -1901,7 +1901,8 @@ public double GetEmHeight() protected string NoEms(string length) { var len = new CssLength(length); - if (len.Unit == CssUnit.Ems) + // CssLength reads rem as em with a parse error + if (len.Unit == CssUnit.Ems && !len.HasError) { length = len.ConvertEmToPixels(GetEmHeight()).ToString(); } diff --git a/Source/Test/HtmlRenderer.Test/Css/TextPropertyTests.cs b/Source/Test/HtmlRenderer.Test/Css/TextPropertyTests.cs index 53f68c3ee..eb687ef77 100644 --- a/Source/Test/HtmlRenderer.Test/Css/TextPropertyTests.cs +++ b/Source/Test/HtmlRenderer.Test/Css/TextPropertyTests.cs @@ -1,4 +1,5 @@ using HtmlRenderer.Test.CssEngineSupport; +using HtmlRenderer.Test.TestSupport; using TheArtOfDev.HtmlRenderer.Core.CssEngine; namespace HtmlRenderer.Test.Css; @@ -822,4 +823,14 @@ public void OverflowWrapAlternateNameNoneIllegal() Assert.IsInstanceOfType(property); Assert.IsFalse(property.HasValue); } + + [TestMethod] + [DataRow("text-indent")] + [DataRow("word-spacing")] + public void RemLengthDoesNotFailTheDocument(string property) + { + var (root, _) = LayoutHarness.Layout(LayoutHarness.Wrap($"

a b

")); + + Assert.IsNotNull(LayoutHarness.FindById(root, "x")); + } }