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

Changeset 287036 in webkit


Ignore:
Timestamp:
Dec 14, 2021, 11:45:20 AM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Take inline axis direction into account when computing horizontal alignment offset
https://bugs.webkit.org/show_bug.cgi?id=234286

Reviewed by Antti Koivisto.

This is in preparation for computing the content visual start when text-align is non-initial.

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::horizontalAlignmentOffset):
(WebCore::Layout::LineBoxBuilder::build):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r287030 r287036  
     12021-12-14  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Take inline axis direction into account when computing horizontal alignment offset
     4        https://bugs.webkit.org/show_bug.cgi?id=234286
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This is in preparation for computing the content visual start when text-align is non-initial.
     9
     10        * layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
     11        (WebCore::Layout::horizontalAlignmentOffset):
     12        (WebCore::Layout::LineBoxBuilder::build):
     13
    1142021-12-11  Dean Jackson  <dino@apple.com>
    215
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp

    r287028 r287036  
    3737namespace Layout {
    3838
    39 static std::optional<InlineLayoutUnit> horizontalAlignmentOffset(TextAlignMode textAlign, const LineBuilder::LineContent& lineContent)
     39static std::optional<InlineLayoutUnit> horizontalAlignmentOffset(TextAlignMode textAlign, const LineBuilder::LineContent& lineContent, bool isLeftToRightDirection)
    4040{
    4141    // Depending on the line’s alignment/justification, the hanging glyph can be placed outside the line box.
     
    7373    case TextAlignMode::Left:
    7474    case TextAlignMode::WebKitLeft:
     75        if (!isLeftToRightDirection)
     76            return extraHorizontalSpace;
     77        FALLTHROUGH;
    7578    case TextAlignMode::Start:
    7679        return { };
    7780    case TextAlignMode::Right:
    7881    case TextAlignMode::WebKitRight:
     82        if (!isLeftToRightDirection)
     83            return { };
     84        FALLTHROUGH;
    7985    case TextAlignMode::End:
    8086        return extraHorizontalSpace;
     
    100106LineBoxBuilder::LineAndLineBox LineBoxBuilder::build(const LineBuilder::LineContent& lineContent, size_t lineIndex)
    101107{
    102     auto textAlign = !lineIndex ? rootBox().firstLineStyle().textAlign() : rootBox().style().textAlign();
    103     auto rootInlineBoxAlignmentOffset = Layout::horizontalAlignmentOffset(textAlign, lineContent).value_or(InlineLayoutUnit { });
     108    auto& rootStyle = lineIndex ? rootBox().firstLineStyle() : rootBox().style();
     109    auto rootInlineBoxAlignmentOffset = Layout::horizontalAlignmentOffset(rootStyle.textAlign(), lineContent, rootStyle.isLeftToRightDirection()).value_or(InlineLayoutUnit { });
    104110    auto lineBox = LineBox { rootBox(), rootInlineBoxAlignmentOffset, lineContent.contentLogicalWidth, lineIndex, lineContent.nonSpanningInlineLevelBoxCount };
    105111
Note: See TracChangeset for help on using the changeset viewer.