Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8b1d31668fbca9ba382333b287d5ed2c97f3212d
https://github.com/WebKit/WebKit/commit/8b1d31668fbca9ba382333b287d5ed2c97f3212d
Author: Yusuke Suzuki <[email protected]>
Date: 2023-12-04 (Mon, 04 Dec 2023)
Changed paths:
M Source/WTF/wtf/unicode/CharacterNames.h
M Source/WebCore/Headers.cmake
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/layout/formattingContexts/inline/text/TextUtil.cpp
M Source/WebCore/platform/graphics/Font.h
M Source/WebCore/platform/graphics/FontCascade.cpp
M Source/WebCore/platform/graphics/FontCascade.h
M Source/WebCore/platform/graphics/FontCascadeFonts.cpp
M Source/WebCore/platform/graphics/FontCascadeFonts.h
M Source/WebCore/platform/graphics/WidthIterator.cpp
M Source/WebCore/platform/graphics/WidthIterator.h
M Source/WebCore/platform/graphics/coretext/FontCoreText.cpp
M Tools/TestWebKitAPI/CMakeLists.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebCore/MonospaceFontTests.cpp
Log Message:
-----------
Add optimization for monospace font's content measuring
https://bugs.webkit.org/show_bug.cgi?id=265787
rdar://119124314
Reviewed by Alan Baradlay.
This patch adds an optimization path for monospace fonts when measuring text
width.
One of the problem is that a lot of monospace fonts are lying and we cannot
simply believe that
this is actually monospace. Thus, our current approach is,
1. When they are monospace fonts from the system, we know that they are
actually monospace (by ensuring
it in our tests). Thus, we can safely assume that their characters are
monospace. Only exception is
"Courier New", which has many strange characters. For now, we disable this
optimization for "Courier New".
2. We list up more format category unicode characters in
characterCanUseSimplifiedTextMeasuring to avoid using
monospace fast path for these characters. They are kind of control
characters and we do not expect that they
will appear in texts which should be rendered in a fast path.
* Source/WTF/wtf/unicode/CharacterNames.h:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/formattingContexts/inline/text/TextUtil.cpp:
(WebCore::Layout::fixedPitchWidth):
(WebCore::Layout::TextUtil::width):
* Source/WebCore/platform/graphics/Font.h:
(WebCore::Font::canTakeFixedPitchFastContentMeasuring const):
* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::letterSpacing const): Deleted.
(WebCore::FontCascade::wordSpacing const): Deleted.
* Source/WebCore/platform/graphics/FontCascade.h:
(WebCore::FontCascade::canTakeFixedPitchFastContentMeasuring const):
(WebCore::FontCascade::letterSpacing const):
(WebCore::FontCascade::wordSpacing const):
* Source/WebCore/platform/graphics/FontCascadeFonts.cpp:
(WebCore::FontCascadeFonts::determineCanTakeFixedPitchFastContentMeasuring):
* Source/WebCore/platform/graphics/FontCascadeFonts.h:
(WebCore::FontCascadeFonts::isFixedPitch):
(WebCore::FontCascadeFonts::canTakeFixedPitchFastContentMeasuring):
* Source/WebCore/platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::characterCanUseSimplifiedTextMeasuring):
* Source/WebCore/platform/graphics/WidthIterator.h:
* Source/WebCore/platform/graphics/coretext/FontCoreText.cpp:
(WebCore::extractBoolean):
(WebCore::Font::determinePitch):
* Tools/TestWebKitAPI/CMakeLists.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebCore/MonospaceFontTests.cpp: Added.
(TestWebKitAPI::TEST):
Canonical link: https://commits.webkit.org/271524@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes