Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ae4576e425cf4eee9960dcd6de57b5ec693cab91
      
https://github.com/WebKit/WebKit/commit/ae4576e425cf4eee9960dcd6de57b5ec693cab91
  Author: Alan Baradlay <[email protected]>
  Date:   2026-04-14 (Tue, 14 Apr 2026)

  Changed paths:
    A LayoutTests/fast/css/first-letter-text-transform-change-expected.txt
    A LayoutTests/fast/css/first-letter-text-transform-change.html
    M Source/WebCore/rendering/RenderText.cpp
    M Source/WebCore/rendering/RenderText.h

  Log Message:
  -----------
  [First-Letter] Fix ::first-letter disappearing after style change.
https://bugs.webkit.org/show_bug.cgi?id=297570
<rdar://145550507>

Reviewed by Antti Koivisto.

When text-transform changes (e.g. uppercase to lowercase), each text
renderer re-applies the transform to its content. The old code called
RenderText::setText(originalText()) which treats it as a content change.

For a ::first-letter remaining fragment, this is wrong because:
1. originalText() returns the fragment's portion ("B"), not the full
   DOM text ("ab").
2. setText triggers setTextInternal on the fragment, which resets it
   to just "b" and destroys the first-letter renderer.
3. The first character "a" is lost.

The fix introduces updateRenderedText() which re-applies the transform
without going through setText/setTextInternal. This avoids destroying
the first-letter split -- each fragment just re-renders its text with
the new transform.

* LayoutTests/fast/css/first-letter-text-transform-change-expected.txt: Added.
* LayoutTests/fast/css/first-letter-text-transform-change.html: Added.
* Source/WebCore/rendering/RenderText.cpp:
(WebCore::RenderText::styleDidChange):
(WebCore::RenderText::setTextInternal):
(WebCore::RenderText::updateRenderedText):
* Source/WebCore/rendering/RenderText.h:

Canonical link: https://commits.webkit.org/311201@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to