[webkit-changes] [WebKit/WebKit] 85696a: ComplexTextController: Handle unpaired surrogates

Fujii Hironori noreply at github.com
Thu Mar 28 13:09:23 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 85696a6b3a7ba449d1da02ac2f275a3f31582d0e
      https://github.com/WebKit/WebKit/commit/85696a6b3a7ba449d1da02ac2f275a3f31582d0e
  Author: Fujii Hironori <Hironori.Fujii at sony.com>
  Date:   2024-03-28 (Thu, 28 Mar 2024)

  Changed paths:
    A LayoutTests/fast/text/unpaired-surrogate-complex-expected.txt
    A LayoutTests/fast/text/unpaired-surrogate-complex.html
    R LayoutTests/fast/text/unpaired-surrogate-expected-mismatch.html
    A LayoutTests/fast/text/unpaired-surrogate-expected.txt
    M LayoutTests/fast/text/unpaired-surrogate.html
    M LayoutTests/platform/wincairo/TestExpectations
    M Source/WebCore/platform/graphics/ComplexTextController.cpp
    M Source/WebCore/platform/graphics/ComplexTextController.h

  Log Message:
  -----------
  ComplexTextController: Handle unpaired surrogates
https://bugs.webkit.org/show_bug.cgi?id=271691

Reviewed by Vitor Roriz.

Unpaired surrogates displayed nothing in the complex text code path.
https://commits.webkit.org/241073@main made the simple text code path
handle unpaired surrogates to display white squares. Chrome and
Firefox display a question mark or a hex code glyph for it.

241073 at main added a test case fast/text/unpaired-surrogate.html. Cocoa
ports takes the simple text code path for it, but GTK and Windows
ports take the complex text code path. The test case is a mismatch
test case, but falsely passed for GTK and Windows ports. They rendered
nothing for the test, and unexpectedly passed the test.

If I add text-rendering:optimizeSpeed to the test, GTK and Windows
ports also take the simple text code path and display a white square
glyph for the unpaired surrogate.

If I use a Devanagari letter in the test, Cocoa port also takes the
complex text code path and exhibits the same problem.

ComplexTextController just ignored unpaired surrogates. It shouldn't
ignore.

Converted the mismatch test case to a JS test. And, added
text-rendering:optimizeSpeed to take the simple text code path. Added
a new test case with a complex text to test the complex text code
path.

* LayoutTests/fast/text/unpaired-surrogate-complex-expected.txt: Added.
* LayoutTests/fast/text/unpaired-surrogate-complex.html: Added.
* LayoutTests/fast/text/unpaired-surrogate-expected-mismatch.html: Removed.
* LayoutTests/fast/text/unpaired-surrogate-expected.txt: Added.
* LayoutTests/fast/text/unpaired-surrogate.html:
* LayoutTests/platform/wincairo/TestExpectations:
* Source/WebCore/platform/graphics/ComplexTextController.cpp:
(WebCore::ComplexTextController::advanceByCombiningCharacterSequence):
(WebCore::ComplexTextController::collectComplexTextRuns):
* Source/WebCore/platform/graphics/ComplexTextController.h:

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



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


More information about the webkit-changes mailing list