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

Reply via email to