Changeset 192564 in webkit


Ignore:
Timestamp:
Nov 17, 2015 7:00:43 PM (8 years ago)
Author:
Alan Bujtas
Message:

Simple line layout: Add letter-spacing support.
https://bugs.webkit.org/show_bug.cgi?id=151362

Reviewed by Antti Koivisto.

This enables us to use simple line layout on letter-spacing content.
(fixme: webkit.org/b/151368 -> Repaint rect is not computed correctly when negative letter-spacing applied)

Source/WebCore:

Test: fast/text/simple-line-letterspacing.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow): RenderLineBoxList tests vertical intersection only.

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):

LayoutTests:

  • fast/text/simple-line-letterspacing-expected.html: Added.
  • fast/text/simple-line-letterspacing.html: Added.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r192545 r192564  
     12015-11-17  Zalan Bujtas  <zalan@apple.com>
     2
     3        Simple line layout: Add letter-spacing support.
     4        https://bugs.webkit.org/show_bug.cgi?id=151362
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This enables us to use simple line layout on letter-spacing content.
     9        (fixme: webkit.org/b/151368 -> Repaint rect is not computed correctly when negative letter-spacing applied)
     10
     11        * fast/text/simple-line-letterspacing-expected.html: Added.
     12        * fast/text/simple-line-letterspacing.html: Added.
     13
    1142015-11-17  Ryan Haddad  <ryanhaddad@apple.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r192541 r192564  
     12015-11-17  Zalan Bujtas  <zalan@apple.com>
     2
     3        Simple line layout: Add letter-spacing support.
     4        https://bugs.webkit.org/show_bug.cgi?id=151362
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This enables us to use simple line layout on letter-spacing content.
     9        (fixme: webkit.org/b/151368 -> Repaint rect is not computed correctly when negative letter-spacing applied)
     10
     11        Test: fast/text/simple-line-letterspacing.html
     12
     13        * rendering/SimpleLineLayout.cpp:
     14        (WebCore::SimpleLineLayout::canUseForStyle):
     15        * rendering/SimpleLineLayoutFunctions.cpp:
     16        (WebCore::SimpleLineLayout::paintFlow): RenderLineBoxList tests vertical intersection only.
     17        * rendering/SimpleLineLayoutTextFragmentIterator.cpp:
     18        (WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):
     19
    1202015-11-17  Per Arne Vollan  <peavo@outlook.com>
    221
  • trunk/Source/WebCore/rendering/SimpleLineLayout.cpp

    r192526 r192564  
    123123    if (!style.textIndent().isZero())
    124124        return false;
    125     if (!style.wordSpacing().isZero() || style.letterSpacing())
     125    if (!style.wordSpacing().isZero())
    126126        return false;
    127127    if (!style.isLeftToRightDirection())
  • trunk/Source/WebCore/rendering/SimpleLineLayoutFunctions.cpp

    r192140 r192564  
    8787    float deviceScaleFactor = flow.document().deviceScaleFactor();
    8888    for (const auto& run : resolver.rangeForRect(paintRect)) {
     89        if (run.start() == run.end())
     90            continue;
     91
    8992        FloatRect rect = run.rect();
    9093        rect.inflate(strokeOverflow);
    91         if (!rect.intersects(paintRect) || run.start() == run.end())
     94        if (paintRect.y() > rect.maxY() || paintRect.maxY() < rect.y())
    9295            continue;
     96
    9397        TextRun textRun(run.text());
    9498        textRun.setTabSize(!style.collapseWhiteSpace(), style.tabSize());
  • trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp

    r189870 r192564  
    209209    if (measureWithEndSpace)
    210210        width -= m_style.spaceWidth;
    211     return width;
    212 }
    213 
    214 }
    215 }
     211    return std::max<float>(0, width);
     212}
     213
     214}
     215}
Note: See TracChangeset for help on using the changeset viewer.