Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8b1d31668fbca9ba382333b287d5ed2c97f3212d https://github.com/WebKit/WebKit/commit/8b1d31668fbca9ba382333b287d5ed2c97f3212d Author: Yusuke Suzuki <ysuz...@apple.com> 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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes