[webkit-changes] [WebKit/WebKit] df0f17: Select primary font for missing glyph for PUA char...

Vitor Roriz noreply at github.com
Wed May 1 12:21:22 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: df0f17533ab4c17991214087049e647a68754ce5
      https://github.com/WebKit/WebKit/commit/df0f17533ab4c17991214087049e647a68754ce5
  Author: Vitor Roriz <vitor.roriz at apple.com>
  Date:   2024-05-01 (Wed, 01 May 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/platform/mac/fast/text/softbank-emoji-expected.txt
    M LayoutTests/platform/wpe/fast/text/softbank-emoji-expected.txt
    M Source/WebCore/platform/graphics/FontCascadeFonts.cpp

  Log Message:
  -----------
  Select primary font for missing glyph for PUA characters
https://bugs.webkit.org/show_bug.cgi?id=273233
rdar://124036223

Reviewed by Antti Koivisto.

We used to render the missing glyph for PUA characters (see [1])
with the lastResortFontFallback, instead of the primary font.
This is done by FontCascadeFonts::glyphDataForVariant(...)
producing a GlyphData object with such font for the missing glyph (glyph 0).

The ComplexTextController, which handles complex text, would always
use the primary font for getting metrics for the missing glyph. When rendering
PUA characters we would use the simple path (WidthIterator is used instead
of ComplexTextController), selecting the last resort font both for layout and painting.

However, when computing the caret position, we still use the ComplexTextController
because WidthIterator can't handle partial runs with ligatures (for example).

This would result in WidthIterator being used for layout/painting and selecting the
lastResortFont, and ComplexTextController being used for calculating the caret position,
selecting the primary font.

We are fixing it by updating the special case for PUA character and selecting
the primary font for such case, instead of the lastResortFont. This also has
the benefit of enforcing interoperability with other browser, as Blink
and Gecko seem to also use the primary font selected by the author.

[1] https://commits.webkit.org/269524@main

* LayoutTests/platform/mac/fast/text/softbank-emoji-expected.txt:
* LayoutTests/platform/wpe/fast/text/softbank-emoji-expected.txt:
- Rebasing this test since they contain PUA characters and font will change.

* LayoutTests/TestExpectations:
- We should pass this test now.

* Source/WebCore/platform/graphics/FontCascadeFonts.cpp:
(WebCore::FontCascadeFonts::glyphDataForVariant):
- Using primary font instead of last resort font for glyph 0 when PUA characters can't be mapped by selected fonts.

Canonical link: https://commits.webkit.org/278221@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