Changeset 179133 in webkit
- Timestamp:
- Jan 26, 2015, 12:40:29 PM (12 years ago)
- Location:
- branches/safari-600.1.4.15-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.1.4.15-branch/LayoutTests/ChangeLog
r179128 r179133 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 1 17 2015-01-26 David Kilzer <ddkilzer@apple.com> 2 18 -
branches/safari-600.1.4.15-branch/LayoutTests/fast/ruby/ruby-justification-expected.html
r179032 r179133 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 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 14 </div> 15 <div> 16 a<span style="background: green;">桜</span>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 17 </div> 12 18 </div> 13 19 <div style="font-family: Ahem; font-size: 16px;"> -
branches/safari-600.1.4.15-branch/LayoutTests/fast/ruby/ruby-justification.html
r179032 r179133 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 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 14 </div> 15 <div> 16 a<ruby><rb style="background: green;">桜</rb><rt> </ruby>b mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 17 </div> 12 18 <div style="font-family: Ahem;"> 13 19 <ruby>abcdefg abcdefg<rt>a</ruby> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm -
branches/safari-600.1.4.15-branch/Source/WebCore/ChangeLog
r179128 r179133 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 1 62 2015-01-26 David Kilzer <ddkilzer@apple.com> 2 63 -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineBox.h
r179032 r179133 276 276 m_logicalWidth += m_expansion; 277 277 } 278 void setExpansionWithoutGrowing(float newExpansion) 279 { 280 ASSERT(!m_expansion); 281 m_expansion = newExpansion; 282 } 283 float expansion() const { return m_expansion; } 278 284 279 285 private: … … 407 413 bool canHaveLeadingExpansion() const { return m_bitfields.hasSelectedChildrenOrCanHaveLeadingExpansion(); } 408 414 void setCanHaveLeadingExpansion(bool canHaveLeadingExpansion) { m_bitfields.setHasSelectedChildrenOrCanHaveLeadingExpansion(canHaveLeadingExpansion); } 409 float expansion() const { return m_expansion; }410 415 411 416 // For InlineFlowBox and InlineTextBox -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineFlowBox.cpp
r178830 r179133 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 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 182 190 root().childRemoved(child); 183 191 … … 376 384 float InlineFlowBox::placeBoxRangeInInlineDirection(InlineBox* firstChild, InlineBox* lastChild, float& logicalLeft, float& minLogicalLeft, float& maxLogicalRight, bool& needsWordSpacing) 377 385 { 386 float totalExpansion = 0; 378 387 for (InlineBox* curr = firstChild; curr && curr != lastChild; curr = curr->nextOnLine()) { 379 388 if (curr->renderer().isText()) { … … 389 398 minLogicalLeft = std::min(logicalLeft, minLogicalLeft); 390 399 logicalLeft += text->logicalWidth(); 400 totalExpansion += text->expansion(); 391 401 if (knownToHaveNoOverflow()) 392 402 maxLogicalRight = std::max(logicalLeft, maxLogicalRight); … … 408 418 minLogicalLeft = std::min(logicalLeft, minLogicalLeft); 409 419 logicalLeft = flow->placeBoxesInInlineDirection(logicalLeft, needsWordSpacing); 420 totalExpansion += flow->expansion(); 410 421 if (knownToHaveNoOverflow()) 411 422 maxLogicalRight = std::max(logicalLeft, maxLogicalRight); … … 430 441 } 431 442 } 443 setExpansionWithoutGrowing(totalExpansion); 432 444 return logicalLeft; 433 445 } -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/InlineTextBox.h
r179032 r179133 167 167 { 168 168 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); 170 170 } 171 171 -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderBlockFlow.h
r170774 r179133 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&); 553 555 BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const LineInfo&, ETextAlign, float& logicalLeft, 554 556 float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache&, WordMeasurements&); -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderBlockLineLayout.cpp
r179045 r179133 541 541 } 542 542 543 static inline void updateRubyForJustifiedText(RenderRubyRun& rubyRun, BidiRun& r, const Vector<unsigned, 16>& expansionOpportunities, unsigned& expansionOpportunityCount, float& totalLogicalWidth, float availableLogicalWidth, size_t& i)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) 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 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); 567 570 rubyRun.setNeedsLayout(MarkOnlyThis); 571 rootBox.markDirty(); 572 if (RenderRubyText* rubyText = rubyRun.rubyText()) { 573 if (RootInlineBox* textRootBox = rubyText->firstRootBox()) 574 textRootBox->markDirty(); 575 } 568 576 rubyRun.layoutBlock(true); 569 577 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); 571 588 572 589 totalLogicalWidth += totalExpansion; … … 575 592 } 576 593 577 static inline void computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth)594 void RenderBlockFlow::computeExpansionForJustifiedText(BidiRun* firstRun, BidiRun* trailingSpaceRun, const Vector<unsigned, 16>& expansionOpportunities, unsigned expansionOpportunityCount, float totalLogicalWidth, float availableLogicalWidth, const LineInfo& lineInfo) 578 595 { 579 596 if (!expansionOpportunityCount || availableLogicalWidth <= totalLogicalWidth) 580 597 return; 581 598 599 RenderObject* previousObject = nullptr; 600 582 601 size_t i = 0; 583 602 for (BidiRun* r = firstRun; r; r = r->next()) { 584 if (!r->box() || r == trailingSpaceRun) 603 if (!r->box() || r == trailingSpaceRun) { 604 previousObject = &r->renderer(); 585 605 continue; 606 } 586 607 587 608 if (r->renderer().isText()) { … … 599 620 expansionOpportunityCount -= opportunitiesInRun; 600 621 } 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(); 602 625 603 626 if (!expansionOpportunityCount) … … 700 723 float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth(); 701 724 unsigned expansionOpportunityCount = 0; 702 bool isAfterExpansion = t rue;725 bool isAfterExpansion = this->isRubyBase() ? toRenderRubyBase(*this).isAfterExpansion() : true; 703 726 Vector<unsigned, 16> expansionOpportunities; 704 727 RenderObject* previousObject = 0; … … 732 755 auto* rubyBase = toRenderRubyRun(r->renderer()).rubyBase(); 733 756 if (rubyBase->firstRootBox() && !rubyBase->firstRootBox()->nextRootBox() && r->renderer().style().collapseWhiteSpace()) { 757 rubyBase->setIsAfterExpansion(isAfterExpansion); 734 758 for (auto* leafChild = rubyBase->firstRootBox()->firstLeafChild(); leafChild; leafChild = leafChild->nextLeafChild()) { 735 759 if (!leafChild->isInlineTextBox()) … … 763 787 764 788 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 } 767 806 } 768 807 769 808 updateLogicalWidthForAlignment(textAlign, lineBox, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth, expansionOpportunityCount); 770 809 771 computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth );810 computeExpansionForJustifiedText(firstRun, trailingSpaceRun, expansionOpportunities, expansionOpportunityCount, totalLogicalWidth, availableLogicalWidth, lineInfo); 772 811 773 812 return r; -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyBase.cpp
r179032 r179133 39 39 RenderRubyBase::RenderRubyBase(Document& document, PassRef<RenderStyle> style) 40 40 : RenderBlockFlow(document, WTF::move(style)) 41 , m_initialOffset(0) 42 , m_isAfterExpansion(true) 41 43 { 42 44 setInline(false); … … 144 146 void RenderRubyBase::adjustInlineDirectionLineBounds(int expansionOpportunityCount, float& logicalLeft, float& logicalWidth) const 145 147 { 148 if (rubyRun()->hasOverrideWidth() && firstRootBox() && !firstRootBox()->nextRootBox()) { 149 logicalLeft += m_initialOffset; 150 logicalWidth -= 2 * m_initialOffset; 151 return; 152 } 153 146 154 LayoutUnit maxPreferredLogicalWidth = rubyRun() && rubyRun()->hasOverrideWidth() ? rubyRun()->overrideLogicalContentWidth() : this->maxPreferredLogicalWidth(); 147 155 if (maxPreferredLogicalWidth >= logicalWidth) -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyBase.h
r179071 r179133 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 51 62 private: 52 63 virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const; … … 61 72 // Allow RenderRubyRun to manipulate the children within ruby bases. 62 73 friend class RenderRubyRun; 74 75 float m_initialOffset; 76 unsigned m_isAfterExpansion : 1; 63 77 }; 64 78 -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderRubyRun.cpp
r170774 r179133 232 232 void RenderRubyRun::layout() 233 233 { 234 if (RenderRubyBase* base = rubyBase()) 235 base->reset(); 236 234 237 RenderBlockFlow::layout(); 235 238 -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderText.cpp
r179092 r179133 164 164 , m_useBackslashAsYenSymbol(false) 165 165 , m_originalTextDiffersFromRendered(false) 166 , m_contentIsKnownToFollow(false) 166 167 #if ENABLE(IOS_TEXT_AUTOSIZING) 167 168 , m_candidateComputedTextSize(0) -
branches/safari-600.1.4.15-branch/Source/WebCore/rendering/RenderText.h
r179092 r179133 161 161 LayoutUnit topOfFirstText() const; 162 162 163 bool contentIsKnownToFollow() { return m_contentIsKnownToFollow; } 164 void setContentIsKnownToFollow(bool contentIsKnownToFollow) { m_contentIsKnownToFollow = contentIsKnownToFollow; } 165 163 166 protected: 164 167 virtual void computePreferredLogicalWidths(float leadWidth); … … 196 199 197 200 // We put the bitfield first to minimize padding on 64-bit. 198 boolm_hasBreakableChar : 1; // Whether or not we can be broken into multiple lines.199 boolm_hasBreak : 1; // Whether or not we have a hard break (e.g., <pre> with '\n').200 boolm_hasTab : 1; // Whether or not we have a variable width tab character (e.g., <pre> with '\t').201 boolm_hasBeginWS : 1; // Whether or not we begin with WS (only true if we aren't pre)202 boolm_hasEndWS : 1; // Whether or not we end with WS (only true if we aren't pre)203 boolm_linesDirty : 1; // This bit indicates that the text run has already dirtied specific201 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 204 207 // line boxes, and this hint will enable layoutInlineChildren to avoid 205 208 // just dirtying everything when character data is modified (e.g., appended/inserted 206 209 // 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; 213 217 214 218 #if ENABLE(IOS_TEXT_AUTOSIZING)
Note:
See TracChangeset
for help on using the changeset viewer.