[webkit-changes] [WebKit/WebKit] 453507: Font fallback should ignore generic families for c...
Vitor Roriz
noreply at github.com
Thu Oct 19 07:51:19 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4535075b56fdb33a076f51fe92cd0bb8832797c8
https://github.com/WebKit/WebKit/commit/4535075b56fdb33a076f51fe92cd0bb8832797c8
Author: Vitor Roriz <vitor.roriz at apple.com>
Date: 2023-10-19 (Thu, 19 Oct 2023)
Changed paths:
A LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA-expected.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA-ref.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA.html
M LayoutTests/platform/mac/fast/text/softbank-emoji-expected.txt
M LayoutTests/platform/wpe/fast/text/softbank-emoji-expected.txt
M Source/WebCore/css/CSSFontSelector.cpp
M Source/WebCore/platform/graphics/FontCascadeFonts.cpp
M Source/WebCore/platform/graphics/FontRanges.cpp
M Source/WebCore/platform/graphics/FontRanges.h
M Source/WebCore/platform/graphics/WidthIterator.cpp
M Source/WebCore/platform/graphics/coretext/FontCascadeCoreText.cpp
M Source/WebCore/platform/text/CharacterProperties.h
Log Message:
-----------
Font fallback should ignore generic families for codepoints in PUA
https://bugs.webkit.org/show_bug.cgi?id=263261
rdar://115901340
Reviewed by Cameron McCormack.
According to spec: https://drafts.csswg.org/css-fonts-4/#char-handling-issues
"If a given character is a Private-Use Area Unicode codepoint, user agents must only match font families named in the font-family list that are not generic families. If none of the families named in the font-family list contain a glyph for that codepoint, user agents must display some form of missing glyph symbol for that character rather than attempting installed font fallback for that codepoint."
We are currently not ignoring generic font families for font fallback when a code point is in the private-use area (PUA).
This patch changes that. Now FontRanges has a flag to signal that the Font represented by the FontRanges
object came from a generic family. That way, we can skip it during font fallback when finding
the glyph data for a codepoint that is in the private-user area.
After attempting all user-specified font-families, if we couldn't find a font that can represent such codepoint,
we then use the .notdef glyph (glyph 0) and the last resource font of WebKit for it.
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/matching/font-unicode-PUA.html: Added.
* LayoutTests/platform/mac/fast/text/softbank-emoji-expected.txt:
* LayoutTests/platform/wpe/fast/text/softbank-emoji-expected.txt:
* Source/WebCore/css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::fontRangesForFamily):
* Source/WebCore/platform/graphics/FontCascadeFonts.cpp:
(WebCore::realizeNextFallback):
(WebCore::FontCascadeFonts::glyphDataForVariant):
(WebCore::FontCascadeFonts::glyphDataForCharacter):
* Source/WebCore/platform/graphics/FontRanges.cpp:
(WebCore::FontRanges::FontRanges):
(WebCore::FontRanges::glyphDataForCharacter const):
* Source/WebCore/platform/graphics/FontRanges.h:
(WebCore::FontRanges::isGeneric const):
* Source/WebCore/platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::advanceInternal):
* Source/WebCore/platform/graphics/coretext/FontCascadeCoreText.cpp:
(WebCore::FontCascade::fontForCombiningCharacterSequence const):
* Source/WebCore/platform/text/CharacterProperties.h:
(WebCore::isPrivateUseAreaCharacter):
Canonical link: https://commits.webkit.org/269524@main
More information about the webkit-changes
mailing list