Changeset 252967 in webkit


Ignore:
Timestamp:
Dec 1, 2019 7:27:07 AM (4 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Add support for word-spacing property
https://bugs.webkit.org/show_bug.cgi?id=204723
<rdar://problem/57541871>

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252966 r252967  
     12019-12-01  Zalan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Add support for word-spacing property
     4        https://bugs.webkit.org/show_bug.cgi?id=204723
     5        <rdar://problem/57541871>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        * layout/inlineformatting/InlineLineBuilder.cpp:
     10        (WebCore::Layout::LineBuilder::TrimmableContent::append):
     11        * layout/inlineformatting/LineLayoutContext.cpp:
     12        (WebCore::Layout::inlineItemWidth):
     13
    1142019-11-30  Antoine Quint  <graouts@apple.com>
    215
  • trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp

    r252942 r252967  
    711711void LineBuilder::TrimmableContent::append(LayoutUnit itemRunWidth, size_t runIndex)
    712712{
    713     ASSERT(itemRunWidth >= 0);
     713    // word-spacing could very well be negative, but it does not mean that the line gains that much extra space when the content is trimmed.
     714    itemRunWidth = std::max(0_lu, itemRunWidth);
    714715    m_width += itemRunWidth;
    715716    m_runIndexes.append(runIndex);
  • trunk/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp

    r252958 r252967  
    3939{
    4040    if (inlineItem.isForcedLineBreak())
    41         return 0;
     41        return { };
    4242
    4343    if (is<InlineTextItem>(inlineItem)) {
    4444        auto& inlineTextItem = downcast<InlineTextItem>(inlineItem);
    45         if (auto contentWidth = inlineTextItem.width())
    46             return *contentWidth;
    47         auto end = inlineTextItem.isCollapsible() ? inlineTextItem.start() + 1 : inlineTextItem.end();
    48         return TextUtil::width(inlineTextItem.layoutBox(), inlineTextItem.start(), end, contentLogicalLeft);
     45        auto contentWidth = inlineTextItem.width();
     46        if (!contentWidth) {
     47            auto end = inlineTextItem.isCollapsible() ? inlineTextItem.start() + 1 : inlineTextItem.end();
     48            contentWidth = TextUtil::width(inlineTextItem.layoutBox(), inlineTextItem.start(), end, contentLogicalLeft);
     49        }
     50        auto wordSpacing = inlineTextItem.isWhitespace() ? LayoutUnit(inlineTextItem.style().fontCascade().wordSpacing()) : 0_lu;
     51        return *contentWidth + wordSpacing;
    4952    }
    5053
Note: See TracChangeset for help on using the changeset viewer.