Changeset 179748 in webkit
- Timestamp:
- Feb 6, 2015, 9:58:43 AM (12 years ago)
- Location:
- branches/safari-600.5-branch
- Files:
-
- 14 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/ruby/ruby-justification-expected.html (modified) (1 diff)
-
LayoutTests/fast/ruby/ruby-justification.html (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/InlineBox.h (modified) (2 diffs)
-
Source/WebCore/rendering/InlineFlowBox.cpp (modified) (5 diffs)
-
Source/WebCore/rendering/InlineTextBox.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderBlockFlow.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderBlockLineLayout.cpp (modified) (7 diffs)
-
Source/WebCore/rendering/RenderRubyBase.cpp (modified) (2 diffs)
-
Source/WebCore/rendering/RenderRubyBase.h (modified) (2 diffs)
-
Source/WebCore/rendering/RenderRubyRun.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderText.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderText.h (modified) (2 diffs)
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 context8 https://bugs.webkit.org/show_bug.cgi?id=1396189 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 17 1 2015-01-24 David Kilzer <ddkilzer@apple.com> 18 2 -
branches/safari-600.5-branch/LayoutTests/fast/ruby/ruby-justification-expected.html
r179665 r179748 10 10 abcdefg <ruby>abcdefg<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 11 11 </div> 12 <div>13 abcdefg <ruby>a<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm14 </div>15 <div>16 a<span style="background: green;">桜</span>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm17 </div>18 12 </div> 19 13 <div style="font-family: Ahem; font-size: 16px;"> -
branches/safari-600.5-branch/LayoutTests/fast/ruby/ruby-justification.html
r179665 r179748 10 10 <ruby>abcdefg abcdefg<rt><span style="color: transparent;">a</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 11 11 </div> 12 <div>13 abcdefg <ruby>a<rt><span style="color: transparent;">aaaaaaaaaaaaaaaaaaaaaaa</span></ruby> abcdefg mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm14 </div>15 <div>16 a<ruby><rb style="background: green;">桜</rb><rt> </ruby>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm17 </div>18 12 <div style="font-family: Ahem;"> 19 13 <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 context8 https://bugs.webkit.org/show_bug.cgi?id=1396189 10 Reviewed by David Hyatt.11 12 There is currently no sharing of expansion opportunity information between13 ruby bases and the text surrounding the ruby. This patch adds a bit on14 RenderText, m_contentIsKnownToFollow, which affects how expansion15 opportunities are handled at paint-time, as well as a bit on RenderRubyBase,16 m_isAfterExpansion, which affects how expansions are calculated when laying17 out a line. This patch also adds a field to RenderRubyBase which represents18 the base's starting position within a ruby. This field is necessary because19 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 RenderRubyBase21 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 to30 date.31 (WebCore::InlineFlowBox::placeBoxRangeInInlineDirection): Set expansion32 information in InlineFlowBoxes so the total expansion for a whole line33 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 pass41 sometimes wouldn't perform any updates. Secondarily, it didn't take42 overhangs into account. Thirdly, it didn't mark the ruby base and text as43 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 to47 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 62 1 2015-01-24 David Kilzer <ddkilzer@apple.com> 63 2 -
branches/safari-600.5-branch/Source/WebCore/rendering/InlineBox.h
r179665 r179748 278 278 m_logicalWidth += m_bitfields.expansion(); 279 279 } 280 void setExpansionWithoutGrowing(float newExpansion)281 {282 ASSERT(!m_expansion);283 m_expansion = newExpansion;284 }285 float expansion() const { return m_expansion; }286 280 287 281 private: … … 421 415 bool canHaveLeadingExpansion() const { return m_bitfields.hasSelectedChildrenOrCanHaveLeadingExpansion(); } 422 416 void setCanHaveLeadingExpansion(bool canHaveLeadingExpansion) { m_bitfields.setHasSelectedChildrenOrCanHaveLeadingExpansion(canHaveLeadingExpansion); } 417 int expansion() { return m_bitfields.expansion(); } 423 418 424 419 // For InlineFlowBox and InlineTextBox -
branches/safari-600.5-branch/Source/WebCore/rendering/InlineFlowBox.cpp
r179665 r179748 180 180 dirtyLineBoxes(); 181 181 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 share186 // expansion opportunites both inside and outside a replaced element (such as for ruby bases), we need to search187 // outside the current inline box tree to determine if there is content that follows the new last inline item.188 }189 190 182 root().childRemoved(child); 191 183 … … 384 376 float InlineFlowBox::placeBoxRangeInInlineDirection(InlineBox* firstChild, InlineBox* lastChild, float& logicalLeft, float& minLogicalLeft, float& maxLogicalRight, bool& needsWordSpacing) 385 377 { 386 float totalExpansion = 0;387 378 for (InlineBox* curr = firstChild; curr && curr != lastChild; curr = curr->nextOnLine()) { 388 379 if (curr->renderer().isText()) { … … 398 389 minLogicalLeft = std::min(logicalLeft, minLogicalLeft); 399 390 logicalLeft += text->logicalWidth(); 400 totalExpansion += text->expansion();401 391 if (knownToHaveNoOverflow()) 402 392 maxLogicalRight = std::max(logicalLeft, maxLogicalRight); … … 418 408 minLogicalLeft = std::min(logicalLeft, minLogicalLeft); 419 409 logicalLeft = flow->placeBoxesInInlineDirection(logicalLeft, needsWordSpacing); 420 totalExpansion += flow->expansion();421 410 if (knownToHaveNoOverflow()) 422 411 maxLogicalRight = std::max(logicalLeft, maxLogicalRight); … … 441 430 } 442 431 } 443 setExpansionWithoutGrowing(totalExpansion);444 432 return logicalLeft; 445 433 } -
branches/safari-600.5-branch/Source/WebCore/rendering/InlineTextBox.h
r179665 r179748 167 167 { 168 168 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); 170 170 } 171 171 -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockFlow.h
r179665 r179748 551 551 void setMarginsForRubyRun(BidiRun*, RenderRubyRun&, RenderObject*, const LineInfo&); 552 552 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&);555 553 BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const LineInfo&, ETextAlign, float& logicalLeft, 556 554 float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache&, WordMeasurements&); -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockLineLayout.cpp
r179665 r179748 541 541 } 542 542 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)543 static inline void updateRubyForJustifiedText(RenderRubyRun& rubyRun, BidiRun& r, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, size_t& i) 544 544 { 545 545 if (!rubyRun.rubyBase() || !rubyRun.rubyBase()->firstRootBox() || rubyRun.rubyBase()->firstRootBox()->nextRootBox() || !r.renderer().style().collapseWhiteSpace()) … … 564 564 if (totalOpportunitiesInRun) { 565 565 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); 570 567 rubyRun.setNeedsLayout(MarkOnlyThis); 571 rootBox.markDirty();572 if (RenderRubyText* rubyText = rubyRun.rubyText()) {573 if (RootInlineBox* textRootBox = rubyText->firstRootBox())574 textRootBox->markDirty();575 }576 568 rubyRun.layoutBlock(true); 577 569 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); 588 571 589 572 totalLogicalWidth += totalExpansion; … … 592 575 } 593 576 594 void RenderBlockFlow::computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth, const LineInfo& lineInfo)577 static inline void computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth) 595 578 { 596 579 if (!expansionOpportunityCount || availableLogicalWidth <= totalLogicalWidth) 597 580 return; 598 581 599 RenderObject* previousObject = nullptr;600 601 582 size_t i = 0; 602 583 for (BidiRun* r = firstRun; r; r = r->next()) { 603 if (!r->box() || r == trailingSpaceRun) { 604 previousObject = &r->renderer(); 584 if (!r->box() || r == trailingSpaceRun) 605 585 continue; 606 }607 586 608 587 if (r->renderer().isText()) { … … 620 599 expansionOpportunityCount -= opportunitiesInRun; 621 600 } 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); 625 602 626 603 if (!expansionOpportunityCount) … … 723 700 float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth(); 724 701 unsigned expansionOpportunityCount = 0; 725 bool isAfterExpansion = t his->isRubyBase() ? toRenderRubyBase(*this).isAfterExpansion() : true;702 bool isAfterExpansion = true; 726 703 Vector<unsigned, 16> expansionOpportunities; 727 704 RenderObject* previousObject = 0; … … 759 736 auto* rubyBase = toRenderRubyRun(r->renderer()).rubyBase(); 760 737 if (rubyBase->firstRootBox() && !rubyBase->firstRootBox()->nextRootBox() && r->renderer().style().collapseWhiteSpace()) { 761 rubyBase->setIsAfterExpansion(isAfterExpansion);762 738 for (auto* leafChild = rubyBase->firstRootBox()->firstLeafChild(); leafChild; leafChild = leafChild->nextLeafChild()) { 763 739 if (!leafChild->isInlineTextBox()) … … 797 773 798 774 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--; 816 777 } 817 778 818 779 updateLogicalWidthForAlignment(textAlign, lineBox, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth, expansionOpportunityCount); 819 780 820 computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth , lineInfo);781 computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth); 821 782 822 783 return r; -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyBase.cpp
r179665 r179748 39 39 RenderRubyBase::RenderRubyBase(Document& document, PassRef<RenderStyle> style) 40 40 : RenderBlockFlow(document, WTF::move(style)) 41 , m_initialOffset(0)42 , m_isAfterExpansion(true)43 41 { 44 42 setInline(false); … … 146 144 void RenderRubyBase::adjustInlineDirectionLineBounds(int expansionOpportunityCount, float& logicalLeft, float& logicalWidth) const 147 145 { 148 if (rubyRun()->hasOverrideWidth() && firstRootBox() && !firstRootBox()->nextRootBox()) {149 logicalLeft += m_initialOffset;150 logicalWidth -= 2 * m_initialOffset;151 return;152 }153 154 146 LayoutUnit maxPreferredLogicalWidth = rubyRun() && rubyRun()->hasOverrideWidth() ? rubyRun()->overrideLogicalContentWidth() : this->maxPreferredLogicalWidth(); 155 147 if (maxPreferredLogicalWidth >= logicalWidth) -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyBase.h
r179665 r179748 49 49 RenderRubyRun* rubyRun() const; 50 50 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 62 51 private: 63 52 virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const; … … 72 61 // Allow RenderRubyRun to manipulate the children within ruby bases. 73 62 friend class RenderRubyRun; 74 75 float m_initialOffset;76 unsigned m_isAfterExpansion : 1;77 63 }; 78 64 -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderRubyRun.cpp
r179665 r179748 232 232 void RenderRubyRun::layout() 233 233 { 234 if (RenderRubyBase* base = rubyBase())235 base->reset();236 237 234 RenderBlockFlow::layout(); 238 235 -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderText.cpp
r179665 r179748 164 164 , m_useBackslashAsYenSymbol(false) 165 165 , m_originalTextDiffersFromRendered(false) 166 , m_contentIsKnownToFollow(false)167 166 #if ENABLE(IOS_TEXT_AUTOSIZING) 168 167 , m_candidateComputedTextSize(0) -
branches/safari-600.5-branch/Source/WebCore/rendering/RenderText.h
r179665 r179748 157 157 const SimpleLineLayout::Layout* simpleLineLayout() const; 158 158 159 bool contentIsKnownToFollow() { return m_contentIsKnownToFollow; }160 void setContentIsKnownToFollow(bool contentIsKnownToFollow) { m_contentIsKnownToFollow = contentIsKnownToFollow; }161 162 159 protected: 163 160 virtual void computePreferredLogicalWidths(float leadWidth); … … 195 192 196 193 // We put the bitfield first to minimize padding on 64-bit. 197 unsignedm_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.198 unsignedm_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').199 unsignedm_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').200 unsignedm_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)201 unsignedm_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)202 unsignedm_linesDirty : 1; // This bit indicates that the text run has already dirtied specific194 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 203 200 // line boxes, and this hint will enable layoutInlineChildren to avoid 204 201 // just dirtying everything when character data is modified (e.g., appended/inserted 205 202 // 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; 213 209 214 210 #if ENABLE(IOS_TEXT_AUTOSIZING)
Note:
See TracChangeset
for help on using the changeset viewer.