commit f842d874cc7389aa8d0f08297ef3a47135537052
parent 736feb6aa150a5ac3bc0ff5879fe7d9e681b4daf
Author: Emily McDonough <emcdonough@mozilla.com>
Date: Thu, 8 Jan 2026 20:44:47 +0000
Bug 2007703 - Account for text-combined decorating frames in text-decoration-inset calculation asserts about writing modes. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D278065
Diffstat:
3 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp
@@ -5871,8 +5871,11 @@ static bool ComputeDecorationInset(
decContainer = aDecFrame;
} else {
nsIFrame* const lineContainer = FindLineContainer(aFrame);
+ // If the frame specifies text-combined, then it might have an orthogonal
+ // writing mode to the line container.
MOZ_ASSERT(
- lineContainer->GetWritingMode().IsVertical() == wm.IsVertical(),
+ !wm.IsOrthogonalTo(lineContainer->GetWritingMode()) ||
+ aFrame->Style()->IsTextCombined(),
"Decorating frame and line container must have writing modes in the "
"same axis");
if (nsILineIterator* const iter = lineContainer->GetLineIterator()) {
diff --git a/layout/painting/crashtests/crashtests.list b/layout/painting/crashtests/crashtests.list
@@ -35,3 +35,4 @@ load 1819957-1.html
load 1851726-1.html
pref(image.testing.decode-sync.enabled,false) load 1862277-1.html
needs-focus pref(ui.caretBlinkTime,200) pref(image.testing.decode-sync.enabled,false) asserts(0-2) load 1870415-1.html
+load text-decoration-inset-text-combine-upright.html
diff --git a/layout/painting/crashtests/text-decoration-inset-text-combine-upright.html b/layout/painting/crashtests/text-decoration-inset-text-combine-upright.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<style>
+u{
+ display: table-caption;
+ text-combine-upright: all;
+}
+ol{
+ writing-mode: vertical-lr;
+}
+</style>
+<div>
+<u style="text-combine-upright: all; text-decoration-inset: 4px;" lang="ja-Kana">
+<ol>
+<span>a-</span>
+</ol>
+</u>
+</div>
+<div>
+<u style="text-combine-upright: all;" lang="ja-Kana">
+<ol>
+<span>a-</span>
+</ol>
+</u>
+</div>
+<div>
+<u style="text-decoration-inset: 4px;" lang="ja-Kana">
+<ol>
+<span style="text-combine-upright: all;">a-</span>
+</ol>
+</u>
+</div>
+<div>
+<u lang="ja-Kana">
+<ol>
+<span style="text-combine-upright: all;">a-</span>
+</ol>
+</u>
+</div>