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

Changeset 179748 in webkit


Ignore:
Timestamp:
Feb 6, 2015, 9:58:43 AM (12 years ago)
Author:
matthew_hanson@apple.com
Message:

Rollout r179133. rdar://problem/19526158

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

Legend:

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

    r179665 r179748  
    1 2015-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 
    1712015-01-24  David Kilzer  <ddkilzer@apple.com>
    182
  • branches/safari-600.5-branch/LayoutTests/fast/ruby/ruby-justification-expected.html

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

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

    r179665 r179748  
    1 2015-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 
    6212015-01-24  David Kilzer  <ddkilzer@apple.com>
    632
  • branches/safari-600.5-branch/Source/WebCore/rendering/InlineBox.h

    r179665 r179748  
    278278        m_logicalWidth += m_bitfields.expansion();
    279279    }
    280     void setExpansionWithoutGrowing(float newExpansion)
    281     {
    282         ASSERT(!m_expansion);
    283         m_expansion = newExpansion;
    284     }
    285     float expansion() const { return m_expansion; }
    286280
    287281private:
     
    421415    bool canHaveLeadingExpansion() const { return m_bitfields.hasSelectedChildrenOrCanHaveLeadingExpansion(); }
    422416    void setCanHaveLeadingExpansion(bool canHaveLeadingExpansion) { m_bitfields.setHasSelectedChildrenOrCanHaveLeadingExpansion(canHaveLeadingExpansion); }
     417    int expansion() { return m_bitfields.expansion(); }
    423418   
    424419    // For InlineFlowBox and InlineTextBox
  • branches/safari-600.5-branch/Source/WebCore/rendering/InlineFlowBox.cpp

    r179665 r179748  
    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 
    190182    root().childRemoved(child);
    191183
     
    384376float InlineFlowBox::placeBoxRangeInInlineDirection(InlineBox* firstChild, InlineBox* lastChild, float& logicalLeft, float& minLogicalLeft, float& maxLogicalRight, bool& needsWordSpacing)
    385377{
    386     float totalExpansion = 0;
    387378    for (InlineBox* curr = firstChild; curr && curr != lastChild; curr = curr->nextOnLine()) {
    388379        if (curr->renderer().isText()) {
     
    398389                minLogicalLeft = std::min(logicalLeft, minLogicalLeft);
    399390            logicalLeft += text->logicalWidth();
    400             totalExpansion += text->expansion();
    401391            if (knownToHaveNoOverflow())
    402392                maxLogicalRight = std::max(logicalLeft, maxLogicalRight);
     
    418408                    minLogicalLeft = std::min(logicalLeft, minLogicalLeft);
    419409                logicalLeft = flow->placeBoxesInInlineDirection(logicalLeft, needsWordSpacing);
    420                 totalExpansion += flow->expansion();
    421410                if (knownToHaveNoOverflow())
    422411                    maxLogicalRight = std::max(logicalLeft, maxLogicalRight);
     
    441430        }
    442431    }
    443     setExpansionWithoutGrowing(totalExpansion);
    444432    return logicalLeft;
    445433}
  • branches/safari-600.5-branch/Source/WebCore/rendering/InlineTextBox.h

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

    r179665 r179748  
    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&);
    555553    BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const LineInfo&, ETextAlign, float& logicalLeft,
    556554        float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache&, WordMeasurements&);
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockLineLayout.cpp

    r179665 r179748  
    541541}
    542542
    543 void 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)
     543static inline void updateRubyForJustifiedText(RenderRubyRun& rubyRun, BidiRun& r, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, 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         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);
     566        rubyRun.setOverrideLogicalContentWidth(rubyRun.logicalWidth() + totalExpansion);
    570567        rubyRun.setNeedsLayout(MarkOnlyThis);
    571         rootBox.markDirty();
    572         if (RenderRubyText* rubyText = rubyRun.rubyText()) {
    573             if (RootInlineBox* textRootBox = rubyText->firstRootBox())
    574                 textRootBox->markDirty();
    575         }
    576568        rubyRun.layoutBlock(true);
    577569        rubyRun.clearOverrideLogicalContentWidth();
    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);
     570        r.box()->setExpansion(totalExpansion);
    588571
    589572        totalLogicalWidth += totalExpansion;
     
    592575}
    593576
    594 void RenderBlockFlow::computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth, const LineInfo& lineInfo)
     577static inline void computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth)
    595578{
    596579    if (!expansionOpportunityCount || availableLogicalWidth <= totalLogicalWidth)
    597580        return;
    598581
    599     RenderObject* previousObject = nullptr;
    600 
    601582    size_t i = 0;
    602583    for (BidiRun* r = firstRun; r; r = r->next()) {
    603         if (!r->box() || r == trailingSpaceRun) {
    604             previousObject = &r->renderer();
     584        if (!r->box() || r == trailingSpaceRun)
    605585            continue;
    606         }
    607586       
    608587        if (r->renderer().isText()) {
     
    620599            expansionOpportunityCount -= opportunitiesInRun;
    621600        } else if (r->renderer().isRubyRun())
    622             updateRubyForJustifiedText(toRenderRubyRun(r->renderer()), *r, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, previousObject, lineInfo, i);
    623 
    624         previousObject = &r->renderer();
     601            updateRubyForJustifiedText(toRenderRubyRun(r->renderer()), *r, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, i);
    625602
    626603        if (!expansionOpportunityCount)
     
    723700    float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth();
    724701    unsigned expansionOpportunityCount = 0;
    725     bool isAfterExpansion = this->isRubyBase() ? toRenderRubyBase(*this).isAfterExpansion() : true;
     702    bool isAfterExpansion = true;
    726703    Vector<unsigned, 16> expansionOpportunities;
    727704    RenderObject* previousObject = 0;
     
    759736                auto* rubyBase = toRenderRubyRun(r->renderer()).rubyBase();
    760737                if (rubyBase->firstRootBox() && !rubyBase->firstRootBox()->nextRootBox() && r->renderer().style().collapseWhiteSpace()) {
    761                     rubyBase->setIsAfterExpansion(isAfterExpansion);
    762738                    for (auto* leafChild = rubyBase->firstRootBox()->firstLeafChild(); leafChild; leafChild = leafChild->nextLeafChild()) {
    763739                        if (!leafChild->isInlineTextBox())
     
    797773
    798774    if (isAfterExpansion && !expansionOpportunities.isEmpty()) {
    799         bool shouldShareExpansionsWithContainingLine = true;
    800         if (this->isRubyBase()) {
    801             if (RenderRubyRun* rubyRun = toRenderRubyBase(*this).rubyRun()) {
    802                 if (RenderElement* rubyElement = rubyRun->parent()) {
    803                     if (rubyElement->style().display() == INLINE) {
    804                         if (RenderBlock* containingBlock = rubyElement->containingBlock()) {
    805                             if (containingBlock->style().textAlign() == JUSTIFY)
    806                                 shouldShareExpansionsWithContainingLine = false;
    807                         }
    808                     }
    809                 }
    810             }
    811         }
    812         if (shouldShareExpansionsWithContainingLine) {
    813             expansionOpportunities.last()--;
    814             expansionOpportunityCount--;
    815         }
     775        expansionOpportunities.last()--;
     776        expansionOpportunityCount--;
    816777    }
    817778
    818779    updateLogicalWidthForAlignment(textAlign, lineBox, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth, expansionOpportunityCount);
    819780
    820     computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, lineInfo);
     781    computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth);
    821782
    822783    return r;
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyBase.cpp

    r179665 r179748  
    3939RenderRubyBase::RenderRubyBase(Document& document, PassRef<RenderStyle> style)
    4040    : RenderBlockFlow(document, WTF::move(style))
    41     , m_initialOffset(0)
    42     , m_isAfterExpansion(true)
    4341{
    4442    setInline(false);
     
    146144void RenderRubyBase::adjustInlineDirectionLineBounds(int expansionOpportunityCount, float& logicalLeft, float& logicalWidth) const
    147145{
    148     if (rubyRun()->hasOverrideWidth() && firstRootBox() && !firstRootBox()->nextRootBox()) {
    149         logicalLeft += m_initialOffset;
    150         logicalWidth -= 2 * m_initialOffset;
    151         return;
    152     }
    153 
    154146    LayoutUnit maxPreferredLogicalWidth = rubyRun() && rubyRun()->hasOverrideWidth() ? rubyRun()->overrideLogicalContentWidth() : this->maxPreferredLogicalWidth();
    155147    if (maxPreferredLogicalWidth >= logicalWidth)
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyBase.h

    r179665 r179748  
    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 
    6251private:
    6352    virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const;
     
    7261    // Allow RenderRubyRun to manipulate the children within ruby bases.
    7362    friend class RenderRubyRun;
    74 
    75     float m_initialOffset;
    76     unsigned m_isAfterExpansion : 1;
    7763};
    7864
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyRun.cpp

    r179665 r179748  
    232232void RenderRubyRun::layout()
    233233{
    234     if (RenderRubyBase* base = rubyBase())
    235         base->reset();
    236 
    237234    RenderBlockFlow::layout();
    238235   
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderText.cpp

    r179665 r179748  
    164164    , m_useBackslashAsYenSymbol(false)
    165165    , m_originalTextDiffersFromRendered(false)
    166     , m_contentIsKnownToFollow(false)
    167166#if ENABLE(IOS_TEXT_AUTOSIZING)
    168167    , m_candidateComputedTextSize(0)
  • branches/safari-600.5-branch/Source/WebCore/rendering/RenderText.h

    r179665 r179748  
    157157    const SimpleLineLayout::Layout* simpleLineLayout() const;
    158158
    159     bool contentIsKnownToFollow() { return m_contentIsKnownToFollow; }
    160     void setContentIsKnownToFollow(bool contentIsKnownToFollow) { m_contentIsKnownToFollow = contentIsKnownToFollow; }
    161 
    162159protected:
    163160    virtual void computePreferredLogicalWidths(float leadWidth);
     
    195192
    196193    // We put the bitfield first to minimize padding on 64-bit.
    197     unsigned m_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.
    198     unsigned m_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').
    199     unsigned m_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').
    200     unsigned m_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)
    201     unsigned m_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)
    202     unsigned m_linesDirty : 1; // This bit indicates that the text run has already dirtied specific
     194    bool m_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.
     195    bool m_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').
     196    bool m_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').
     197    bool m_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)
     198    bool m_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)
     199    bool m_linesDirty : 1; // This bit indicates that the text run has already dirtied specific
    203200                           // line boxes, and this hint will enable layoutInlineChildren to avoid
    204201                           // just dirtying everything when character data is modified (e.g., appended/inserted
    205202                           // or removed).
    206     unsigned m_containsReversedText : 1;
    207     unsigned m_isAllASCII : 1;
    208     unsigned m_canUseSimpleFontCodePath : 1;
    209     mutable unsigned m_knownToHaveNoOverflowAndNoFallbackFonts : 1;
    210     unsigned m_useBackslashAsYenSymbol : 1;
    211     unsigned m_originalTextDiffersFromRendered : 1;
    212     unsigned m_contentIsKnownToFollow : 1;
     203    bool m_containsReversedText : 1;
     204    bool m_isAllASCII : 1;
     205    bool m_canUseSimpleFontCodePath : 1;
     206    mutable bool m_knownToHaveNoOverflowAndNoFallbackFonts : 1;
     207    bool m_useBackslashAsYenSymbol : 1;
     208    bool m_originalTextDiffersFromRendered : 1;
    213209
    214210#if ENABLE(IOS_TEXT_AUTOSIZING)
Note: See TracChangeset for help on using the changeset viewer.