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

Changeset 179133 in webkit


Ignore:
Timestamp:
Jan 26, 2015, 12:40:29 PM (12 years ago)
Author:
ddkilzer@apple.com
Message:

Merged r177377. rdar://problem/19419793

Location:
branches/safari-600.1.4.15-branch
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-600.1.4.15-branch/LayoutTests/ChangeLog

    r179128 r179133  
     12015-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        Merge r177377.
     4
     5    2014-12-16  Myles C. Maxfield  <litherum@gmail.com>
     6
     7        Ruby does not preserve expansion opportunities from enclosing context
     8        https://bugs.webkit.org/show_bug.cgi?id=139618
     9
     10        Updating test for new expansion logic.
     11
     12        Reviewed by David Hyatt.
     13
     14        * fast/ruby/ruby-justification-expected.html:
     15        * fast/ruby/ruby-justification.html:
     16
    1172015-01-26  David Kilzer  <ddkilzer@apple.com>
    218
  • branches/safari-600.1.4.15-branch/LayoutTests/fast/ruby/ruby-justification-expected.html

    r179032 r179133  
    1010abcdefg <ruby>abcdefg<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
    1111</div>
     12<div>
     13abcdefg <ruby>a<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
     14</div>
     15<div>
     16a<span style="background: green;">&#x685c;</span>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
     17</div>
    1218</div>
    1319<div style="font-family: Ahem; font-size: 16px;">
  • branches/safari-600.1.4.15-branch/LayoutTests/fast/ruby/ruby-justification.html

    r179032 r179133  
    1010<ruby>abcdefg abcdefg<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
    1111</div>
     12<div>
     13abcdefg <ruby>a<rt><span style="color: transparent;">aaaaaaaaaaaaaaaaaaaaaaa</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
     14</div>
     15<div>
     16a<ruby><rb style="background: green;">&#x685c;</rb><rt> </ruby>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
     17</div>
    1218<div style="font-family: Ahem;">
    1319<ruby>abcdefg abcdefg<rt>a</ruby> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
  • branches/safari-600.1.4.15-branch/Source/WebCore/ChangeLog

    r179128 r179133  
     12015-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        Merge r177377.
     4
     5    2014-12-16  Myles C. Maxfield  <litherum@gmail.com>
     6
     7        Ruby does not preserve expansion opportunities from enclosing context
     8        https://bugs.webkit.org/show_bug.cgi?id=139618
     9
     10        Reviewed by David Hyatt.
     11
     12        There is currently no sharing of expansion opportunity information between
     13        ruby bases and the text surrounding the ruby. This patch adds a bit on
     14        RenderText, m_contentIsKnownToFollow, which affects how expansion
     15        opportunities are handled at paint-time, as well as a bit on RenderRubyBase,
     16        m_isAfterExpansion, which affects how expansions are calculated when laying
     17        out a line. This patch also adds a field to RenderRubyBase which represents
     18        the base's starting position within a ruby. This field is necessary because
     19        an expansion from a line might occur at the very beginning of a ruby base,
     20        so we have to remember some state from expansion time to RenderRubyBase
     21        layout time.
     22
     23        Added more tests to fast/ruby/ruby-justification.html.
     24
     25        * rendering/InlineBox.h:
     26        (WebCore::InlineBox::setExpansionWithoutGrowing):
     27        (WebCore::InlineBox::expansion):
     28        * rendering/InlineFlowBox.cpp:
     29        (WebCore::InlineFlowBox::removeChild): Keep the bit on InlineTextBox up to
     30        date.
     31        (WebCore::InlineFlowBox::placeBoxRangeInInlineDirection): Set expansion
     32        information in InlineFlowBoxes so the total expansion for a whole line
     33        is held in the RootInlineBox's expansion.
     34        * rendering/InlineTextBox.h:
     35        (WebCore::InlineTextBox::expansionBehavior):
     36        * rendering/RenderBlockFlow.h:
     37        * rendering/RenderBlockLineLayout.cpp:
     38        (WebCore::RenderBlockFlow::updateRubyForJustifiedText):
     39        updateRubyForJustifiedText() had a bunch of problems with it. First of all,
     40        it didn't actually set the InlineBoxes as dirty, so the second layout pass
     41        sometimes wouldn't perform any updates. Secondarily, it didn't take
     42        overhangs into account. Thirdly, it didn't mark the ruby base and text as
     43        needing layout so that subsequent layouts would actually traverse into them.
     44        (WebCore::RenderBlockFlow::computeExpansionForJustifiedText):
     45        (WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment):
     46        This nested if triangle is super nasty, but I'm not sure of a better way to
     47        write it.
     48        (WebCore::updateRubyForJustifiedText): Deleted.
     49        (WebCore::computeExpansionForJustifiedText): Deleted.
     50        * rendering/RenderRubyBase.cpp:
     51        (WebCore::RenderRubyBase::RenderRubyBase):
     52        (WebCore::RenderRubyBase::adjustInlineDirectionLineBounds):
     53        * rendering/RenderRubyBase.h:
     54        * rendering/RenderRubyRun.cpp:
     55        (WebCore::RenderRubyRun::layout):
     56        * rendering/RenderText.cpp:
     57        (WebCore::RenderText::RenderText):
     58        * rendering/RenderText.h:
     59        (WebCore::RenderText::contentIsKnownToFollow):
     60        (WebCore::RenderText::setContentIsKnownToFollow):
     61
    1622015-01-26  David Kilzer  <ddkilzer@apple.com>
    263
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineBox.h

    r179032 r179133  
    276276        m_logicalWidth += m_expansion;
    277277    }
     278    void setExpansionWithoutGrowing(float newExpansion)
     279    {
     280        ASSERT(!m_expansion);
     281        m_expansion = newExpansion;
     282    }
     283    float expansion() const { return m_expansion; }
    278284
    279285private:
     
    407413    bool canHaveLeadingExpansion() const { return m_bitfields.hasSelectedChildrenOrCanHaveLeadingExpansion(); }
    408414    void setCanHaveLeadingExpansion(bool canHaveLeadingExpansion) { m_bitfields.setHasSelectedChildrenOrCanHaveLeadingExpansion(canHaveLeadingExpansion); }
    409     float expansion() const { return m_expansion; }
    410415   
    411416    // For InlineFlowBox and InlineTextBox
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineFlowBox.cpp

    r178830 r179133  
    180180        dirtyLineBoxes();
    181181
     182    if (child->prevLeafChild() && child->prevLeafChild()->isInlineTextBox()) {
     183        if (child->isInlineTextBox())
     184            toInlineTextBox(child->prevLeafChild())->renderer().setContentIsKnownToFollow(toInlineTextBox(child)->renderer().contentIsKnownToFollow());
     185        // FIXME: Handle the case where we remove the last inline box, and it's not a text box. If we're trying to share
     186        // expansion opportunites both inside and outside a replaced element (such as for ruby bases), we need to search
     187        // outside the current inline box tree to determine if there is content that follows the new last inline item.
     188    }
     189
    182190    root().childRemoved(child);
    183191
     
    376384float InlineFlowBox::placeBoxRangeInInlineDirection(InlineBox* firstChild, InlineBox* lastChild, float& logicalLeft, float& minLogicalLeft, float& maxLogicalRight, bool& needsWordSpacing)
    377385{
     386    float totalExpansion = 0;
    378387    for (InlineBox* curr = firstChild; curr && curr != lastChild; curr = curr->nextOnLine()) {
    379388        if (curr->renderer().isText()) {
     
    389398                minLogicalLeft = std::min(logicalLeft, minLogicalLeft);
    390399            logicalLeft += text->logicalWidth();
     400            totalExpansion += text->expansion();
    391401            if (knownToHaveNoOverflow())
    392402                maxLogicalRight = std::max(logicalLeft, maxLogicalRight);
     
    408418                    minLogicalLeft = std::min(logicalLeft, minLogicalLeft);
    409419                logicalLeft = flow->placeBoxesInInlineDirection(logicalLeft, needsWordSpacing);
     420                totalExpansion += flow->expansion();
    410421                if (knownToHaveNoOverflow())
    411422                    maxLogicalRight = std::max(logicalLeft, maxLogicalRight);
     
    430441        }
    431442    }
     443    setExpansionWithoutGrowing(totalExpansion);
    432444    return logicalLeft;
    433445}
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineTextBox.h

    r179032 r179133  
    167167    {
    168168        return (canHaveLeadingExpansion() ? TextRun::AllowLeadingExpansion : TextRun::ForbidLeadingExpansion)
    169             | (expansion() && nextLeafChild() && !nextLeafChild()->isLineBreak() ? TextRun::AllowTrailingExpansion : TextRun::ForbidTrailingExpansion);
     169            | (renderer().contentIsKnownToFollow() || (expansion() && nextLeafChild() && !nextLeafChild()->isLineBreak()) ? TextRun::AllowTrailingExpansion : TextRun::ForbidTrailingExpansion);
    170170    }
    171171
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderBlockFlow.h

    r170774 r179133  
    551551    void setMarginsForRubyRun(BidiRun*, RenderRubyRun&, RenderObject*, const LineInfo&);
    552552    void computeInlineDirectionPositionsForLine(RootInlineBox*, const LineInfo&, BidiRun* firstRun, BidiRun* trailingSpaceRun, bool reachedEnd, GlyphOverflowAndFallbackFontsMap&, VerticalPositionCache&, WordMeasurements&);
     553    void updateRubyForJustifiedText(RenderRubyRun&, BidiRun&, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, RenderObject* previousObject, const LineInfo&, size_t& expansionIndex);
     554    void computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth, const LineInfo&);
    553555    BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const LineInfo&, ETextAlign, float& logicalLeft,
    554556        float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache&, WordMeasurements&);
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderBlockLineLayout.cpp

    r179045 r179133  
    541541}
    542542
    543 static inline void updateRubyForJustifiedText(RenderRubyRun& rubyRun, BidiRun& r, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, size_t& i)
     543void RenderBlockFlow::updateRubyForJustifiedText(RenderRubyRun& rubyRun, BidiRun& r, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, RenderObject* previousObject, const LineInfo& lineInfo, size_t& i)
    544544{
    545545    if (!rubyRun.rubyBase() || !rubyRun.rubyBase()->firstRootBox() || rubyRun.rubyBase()->firstRootBox()->nextRootBox() || !r.renderer().style().collapseWhiteSpace())
     
    564564    if (totalOpportunitiesInRun) {
    565565        ASSERT(!rubyRun.hasOverrideWidth());
    566         rubyRun.setOverrideLogicalContentWidth(rubyRun.logicalWidth() + totalExpansion);
     566        float newBaseWidth = rubyRun.logicalWidth() + totalExpansion + marginStartForChild(rubyRun) + marginEndForChild(rubyRun);
     567        float newRubyRunWidth = rubyRun.logicalWidth() + totalExpansion;
     568        rubyBase.setInitialOffset((newRubyRunWidth - newBaseWidth) / 2);
     569        rubyRun.setOverrideLogicalContentWidth(newRubyRunWidth);
    567570        rubyRun.setNeedsLayout(MarkOnlyThis);
     571        rootBox.markDirty();
     572        if (RenderRubyText* rubyText = rubyRun.rubyText()) {
     573            if (RootInlineBox* textRootBox = rubyText->firstRootBox())
     574                textRootBox->markDirty();
     575        }
    568576        rubyRun.layoutBlock(true);
    569577        rubyRun.clearOverrideLogicalContentWidth();
    570         r.box()->setExpansion(totalExpansion);
     578        setMarginsForRubyRun(&r, rubyRun, previousObject, lineInfo); // Expanding the base might mean there's less of a need for overhang
     579        r.box()->setExpansion(newRubyRunWidth - r.box()->logicalWidth());
     580
     581        // This relayout caused the size of the RenderRubyText and the RenderRubyBase to change, dependent on the line's current expansion. Next time we relayout the
     582        // RenderRubyRun, make sure that we relayout the RenderRubyBase and RenderRubyText as well.
     583        rubyBase.setNeedsLayout(MarkOnlyThis);
     584        if (RenderRubyText* rubyText = rubyRun.rubyText())
     585            rubyText->setNeedsLayout(MarkOnlyThis);
     586        if (rubyBase.lastLeafChild() && rubyBase.lastLeafChild()->isText() && r.box() && r.box()->nextLeafChild() && !r.box()->nextLeafChild()->isLineBreak())
     587            toRenderText(rubyBase.lastLeafChild())->setContentIsKnownToFollow(true);
    571588
    572589        totalLogicalWidth += totalExpansion;
     
    575592}
    576593
    577 static inline void computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth)
     594void RenderBlockFlow::computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth, const LineInfo& lineInfo)
    578595{
    579596    if (!expansionOpportunityCount || availableLogicalWidth <= totalLogicalWidth)
    580597        return;
    581598
     599    RenderObject* previousObject = nullptr;
     600
    582601    size_t i = 0;
    583602    for (BidiRun* r = firstRun; r; r = r->next()) {
    584         if (!r->box() || r == trailingSpaceRun)
     603        if (!r->box() || r == trailingSpaceRun) {
     604            previousObject = &r->renderer();
    585605            continue;
     606        }
    586607       
    587608        if (r->renderer().isText()) {
     
    599620            expansionOpportunityCount -= opportunitiesInRun;
    600621        } else if (r->renderer().isRubyRun())
    601             updateRubyForJustifiedText(toRenderRubyRun(r->renderer()), *r, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, i);
     622            updateRubyForJustifiedText(toRenderRubyRun(r->renderer()), *r, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, previousObject, lineInfo, i);
     623
     624        previousObject = &r->renderer();
    602625
    603626        if (!expansionOpportunityCount)
     
    700723    float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth();
    701724    unsigned expansionOpportunityCount = 0;
    702     bool isAfterExpansion = true;
     725    bool isAfterExpansion = this->isRubyBase() ? toRenderRubyBase(*this).isAfterExpansion() : true;
    703726    Vector<unsigned, 16> expansionOpportunities;
    704727    RenderObject* previousObject = 0;
     
    732755                auto* rubyBase = toRenderRubyRun(r->renderer()).rubyBase();
    733756                if (rubyBase->firstRootBox() && !rubyBase->firstRootBox()->nextRootBox() && r->renderer().style().collapseWhiteSpace()) {
     757                    rubyBase->setIsAfterExpansion(isAfterExpansion);
    734758                    for (auto* leafChild = rubyBase->firstRootBox()->firstLeafChild(); leafChild; leafChild = leafChild->nextLeafChild()) {
    735759                        if (!leafChild->isInlineTextBox())
     
    763787
    764788    if (isAfterExpansion && !expansionOpportunities.isEmpty()) {
    765         expansionOpportunities.last()--;
    766         expansionOpportunityCount--;
     789        bool shouldShareExpansionsWithContainingLine = true;
     790        if (this->isRubyBase()) {
     791            if (RenderRubyRun* rubyRun = toRenderRubyBase(*this).rubyRun()) {
     792                if (RenderElement* rubyElement = rubyRun->parent()) {
     793                    if (rubyElement->style().display() == INLINE) {
     794                        if (RenderBlock* containingBlock = rubyElement->containingBlock()) {
     795                            if (containingBlock->style().textAlign() == JUSTIFY)
     796                                shouldShareExpansionsWithContainingLine = false;
     797                        }
     798                    }
     799                }
     800            }
     801        }
     802        if (shouldShareExpansionsWithContainingLine) {
     803            expansionOpportunities.last()--;
     804            expansionOpportunityCount--;
     805        }
    767806    }
    768807
    769808    updateLogicalWidthForAlignment(textAlign, lineBox, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth, expansionOpportunityCount);
    770809
    771     computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth);
     810    computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, lineInfo);
    772811
    773812    return r;
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyBase.cpp

    r179032 r179133  
    3939RenderRubyBase::RenderRubyBase(Document& document, PassRef<RenderStyle> style)
    4040    : RenderBlockFlow(document, WTF::move(style))
     41    , m_initialOffset(0)
     42    , m_isAfterExpansion(true)
    4143{
    4244    setInline(false);
     
    144146void RenderRubyBase::adjustInlineDirectionLineBounds(int expansionOpportunityCount, float& logicalLeft, float& logicalWidth) const
    145147{
     148    if (rubyRun()->hasOverrideWidth() && firstRootBox() && !firstRootBox()->nextRootBox()) {
     149        logicalLeft += m_initialOffset;
     150        logicalWidth -= 2 * m_initialOffset;
     151        return;
     152    }
     153
    146154    LayoutUnit maxPreferredLogicalWidth = rubyRun() && rubyRun()->hasOverrideWidth() ? rubyRun()->overrideLogicalContentWidth() : this->maxPreferredLogicalWidth();
    147155    if (maxPreferredLogicalWidth >= logicalWidth)
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyBase.h

    r179071 r179133  
    4949    RenderRubyRun* rubyRun() const;
    5050
     51    void setIsAfterExpansion(bool isAfterExpansion) { m_isAfterExpansion = isAfterExpansion; }
     52    bool isAfterExpansion() { return m_isAfterExpansion; }
     53
     54    void setInitialOffset(float initialOffset) { m_initialOffset = initialOffset; }
     55
     56    void reset()
     57    {
     58        m_initialOffset = 0;
     59        m_isAfterExpansion = true;
     60    }
     61
    5162private:
    5263    virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const;
     
    6172    // Allow RenderRubyRun to manipulate the children within ruby bases.
    6273    friend class RenderRubyRun;
     74
     75    float m_initialOffset;
     76    unsigned m_isAfterExpansion : 1;
    6377};
    6478
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyRun.cpp

    r170774 r179133  
    232232void RenderRubyRun::layout()
    233233{
     234    if (RenderRubyBase* base = rubyBase())
     235        base->reset();
     236
    234237    RenderBlockFlow::layout();
    235238   
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderText.cpp

    r179092 r179133  
    164164    , m_useBackslashAsYenSymbol(false)
    165165    , m_originalTextDiffersFromRendered(false)
     166    , m_contentIsKnownToFollow(false)
    166167#if ENABLE(IOS_TEXT_AUTOSIZING)
    167168    , m_candidateComputedTextSize(0)
  • branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderText.h

    r179092 r179133  
    161161    LayoutUnit topOfFirstText() const;
    162162
     163    bool contentIsKnownToFollow() { return m_contentIsKnownToFollow; }
     164    void setContentIsKnownToFollow(bool contentIsKnownToFollow) { m_contentIsKnownToFollow = contentIsKnownToFollow; }
     165
    163166protected:
    164167    virtual void computePreferredLogicalWidths(float leadWidth);
     
    196199
    197200    // We put the bitfield first to minimize padding on 64-bit.
    198     bool m_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.
    199     bool m_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').
    200     bool m_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').
    201     bool m_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)
    202     bool m_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)
    203     bool m_linesDirty : 1; // This bit indicates that the text run has already dirtied specific
     201    unsigned m_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.
     202    unsigned m_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').
     203    unsigned m_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').
     204    unsigned m_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)
     205    unsigned m_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)
     206    unsigned m_linesDirty : 1; // This bit indicates that the text run has already dirtied specific
    204207                           // line boxes, and this hint will enable layoutInlineChildren to avoid
    205208                           // just dirtying everything when character data is modified (e.g., appended/inserted
    206209                           // or removed).
    207     bool m_containsReversedText : 1;
    208     bool m_isAllASCII : 1;
    209     bool m_canUseSimpleFontCodePath : 1;
    210     mutable bool m_knownToHaveNoOverflowAndNoFallbackFonts : 1;
    211     bool m_useBackslashAsYenSymbol : 1;
    212     bool m_originalTextDiffersFromRendered : 1;
     210    unsigned m_containsReversedText : 1;
     211    unsigned m_isAllASCII : 1;
     212    unsigned m_canUseSimpleFontCodePath : 1;
     213    mutable unsigned m_knownToHaveNoOverflowAndNoFallbackFonts : 1;
     214    unsigned m_useBackslashAsYenSymbol : 1;
     215    unsigned m_originalTextDiffersFromRendered : 1;
     216    unsigned m_contentIsKnownToFollow : 1;
    213217
    214218#if ENABLE(IOS_TEXT_AUTOSIZING)
Note: See TracChangeset for help on using the changeset viewer.