[webkit-changes] [WebKit/WebKit] d29576: Revert "[Cocoa] objectForEqualityCheck() is no lon...
Vitor Roriz
noreply at github.com
Tue Jan 23 14:35:42 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d2957647a0af6c363cf6fe108021a11330d6fc84
https://github.com/WebKit/WebKit/commit/d2957647a0af6c363cf6fe108021a11330d6fc84
Author: Vitor Roriz <vitor.roriz at apple.com>
Date: 2024-01-23 (Tue, 23 Jan 2024)
Changed paths:
M Source/WebCore/platform/graphics/FontPlatformData.h
M Source/WebCore/platform/graphics/coretext/FontPlatformDataCoreText.cpp
M Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm
Log Message:
-----------
Revert "[Cocoa] objectForEqualityCheck() is no longer necessary"
https://bugs.webkit.org/show_bug.cgi?id=263136
rdar://116934547
Reviewed by Cameron McCormack.
This reverts commit dc989b3ef737547949c45f39dc996f0850fe862f.
267312 at main [1] broke the following test:
imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-overrides-uax-behavior-011.html
Before [1] we used to define a derived object from the Fonts we were trying to compare,
because we considered that CFEqual() would do a shallow comparison.
Since it is possible to generate two font objects (with different pointers) representing
the same font object, a shallow comparison wouldn’t work for us.
[1] states that CFEqual() "now” does a deep comparison, and
the derived object would have no use anymore.
However, at Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:
ComplexTextController::collectComplexTextRunsForCharacters:
We observe that the comparisons before and after [1] produce different results,
for the specific test that is failing. More specifically we can reduce it to
the render of “X͏”:
-> Without [1] the following is never true:
if (!safeCFEqual(runFontEqualityObject.get(), font->platformData().objectForEqualityCheck().get()))
This means that the fonts are considered equal. However:
-> With [1] the following is always true:
if (!safeCFEqual(runCTFont, font->platformData().ctFont()))
This means that the run’s font, acquired after shaping is not the same as the font passed,
so we will try to add it to the fallback font list.
* Source/WebCore/platform/graphics/FontPlatformData.h:
* Source/WebCore/platform/graphics/coretext/FontPlatformDataCoreText.cpp:
(WebCore::FontPlatformData::objectForEqualityCheck):
(WebCore::FontPlatformData::objectForEqualityCheck const):
* Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
Canonical link: https://commits.webkit.org/273377@main
More information about the webkit-changes
mailing list