⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286968 in webkit


Ignore:
Timestamp:
Dec 13, 2021, 12:21:18 PM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Simple RTL content does not need visual reordering
https://bugs.webkit.org/show_bug.cgi?id=234252

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::build):
(WebCore::Layout::InlineItemsBuilder::breakAndComputeBidiLevels):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:

(WebCore::Layout::InlineItemsBuilder::needsVisualReordering const):
(WebCore::Layout::InlineItemsBuilder::needsVisualReordeering const): Deleted.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r286965 r286968  
     12021-12-13  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Simple RTL content does not need visual reordering
     4        https://bugs.webkit.org/show_bug.cgi?id=234252
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * layout/formattingContexts/inline/InlineItemsBuilder.cpp:
     9        (WebCore::Layout::InlineItemsBuilder::build):
     10        (WebCore::Layout::InlineItemsBuilder::breakAndComputeBidiLevels):
     11        * layout/formattingContexts/inline/InlineItemsBuilder.h:
     12        (WebCore::Layout::InlineItemsBuilder::needsVisualReordering const):
     13        (WebCore::Layout::InlineItemsBuilder::needsVisualReordeering const): Deleted.
     14
    1152021-12-13  Youenn Fablet  <youenn@apple.com>
    216
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp

    r286951 r286968  
    8787    InlineItems inlineItems;
    8888    collectInlineItems(inlineItems);
    89     if (needsVisualReordeering())
     89    if (needsVisualReordering())
    9090        breakAndComputeBidiLevels(inlineItems);
    9191    computeInlineTextItemWidths(inlineItems);
     
    251251void InlineItemsBuilder::breakAndComputeBidiLevels(InlineItems& inlineItems)
    252252{
    253     ASSERT(needsVisualReordeering());
     253    ASSERT(needsVisualReordering());
    254254    ASSERT(!inlineItems.isEmpty());
    255255
     
    259259    buildBidiParagraph(root().style(), inlineItems, paragraphContentBuilder, inlineItemOffsets);
    260260    ASSERT(inlineItemOffsets.size() == inlineItems.size());
     261    if (paragraphContentBuilder.is8Bit()) {
     262        // Simple content with RTL inline base direction could just follow the logical order.
     263        // Note that inline level elements produce 16bit paragraph content by appending objectReplacementCharacter.
     264        // e.g. <div dir=rtl>this initiates 8bit paragraph builder</div> while
     265        //      <div dir=rtl><img> <- turns the paragraph builder to 16bit</div>
     266        return;
     267    }
    261268
    262269    // 1. Setup the bidi boundary loop by calling ubidi_setPara with the paragraph text.
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.h

    r286951 r286968  
    5151    void handleInlineLevelBox(const Box&, InlineItems&);
    5252   
    53     bool needsVisualReordeering() const { return hasSeenBidiContent() || !root().style().isLeftToRightDirection(); }
     53    bool needsVisualReordering() const { return hasSeenBidiContent() || !root().style().isLeftToRightDirection(); }
    5454    bool hasSeenBidiContent() const { return m_hasSeenBidiContent; }
    5555
Note: See TracChangeset for help on using the changeset viewer.