Changeset 294758 in webkit
- Timestamp:
- May 24, 2022, 12:43:40 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
-
layout/formattingContexts/inline/InlineLine.cpp (modified) (2 diffs)
-
platform/graphics/ComplexTextController.cpp (modified) (1 diff)
-
platform/graphics/FontCascade.cpp (modified) (4 diffs)
-
platform/graphics/WidthIterator.cpp (modified) (2 diffs)
-
platform/text/TextFlags.h (modified) (2 diffs)
-
rendering/LegacyInlineTextBox.cpp (modified) (1 diff)
-
rendering/LegacyLineLayout.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
r294607 r294758 124 124 expansionBehavior = ExpansionBehavior::forbidAll(); 125 125 else { 126 expansionBehavior. setLeft(runIsAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow);127 expansionBehavior. setRight(ExpansionBehavior::Behavior::Allow);126 expansionBehavior.left = runIsAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow; 127 expansionBehavior.right = ExpansionBehavior::Behavior::Allow; 128 128 auto& textContent = *run.textContent(); 129 129 // Trailing hanging whitespace sequence is ignored when computing the expansion opportunities. … … 145 145 // Forbid right expansion in the last run to prevent trailing expansion at the end of the line. 146 146 if (lastRunIndexWithContent && runsExpansionOpportunities[*lastRunIndexWithContent]) { 147 runsExpansionBehaviors[*lastRunIndexWithContent]. setRight(ExpansionBehavior::Behavior::Forbid);147 runsExpansionBehaviors[*lastRunIndexWithContent].right = ExpansionBehavior::Behavior::Forbid; 148 148 if (runIsAfterExpansion) { 149 149 // When the last run has an after expansion (e.g. CJK ideograph) we need to remove this trailing expansion opportunity. -
trunk/Source/WebCore/platform/graphics/ComplexTextController.cpp
r294607 r294758 674 674 void ComplexTextController::adjustGlyphsAndAdvances() 675 675 { 676 bool afterExpansion = m_run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Forbid;676 bool afterExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid; 677 677 size_t runCount = m_complexTextRuns.size(); 678 678 bool hasExtraSpacing = (m_font.letterSpacing() || m_font.wordSpacing() || m_expansion) && !m_run.spacingDisabled(); 679 bool runForcesLeftExpansion = m_run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Force;680 bool runForcesRightExpansion = m_run.expansionBehavior().right ()== ExpansionBehavior::Behavior::Force;681 bool runForbidsLeftExpansion = m_run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Forbid;682 bool runForbidsRightExpansion = m_run.expansionBehavior().right ()== ExpansionBehavior::Behavior::Forbid;679 bool runForcesLeftExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Force; 680 bool runForcesRightExpansion = m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Force; 681 bool runForbidsLeftExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid; 682 bool runForbidsRightExpansion = m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Forbid; 683 683 684 684 // We are iterating in glyph order, not string order. Compare this to WidthIterator::advanceInternal() -
trunk/Source/WebCore/platform/graphics/FontCascade.cpp
r294607 r294758 963 963 { 964 964 unsigned count = 0; 965 bool isAfterExpansion = expansionBehavior.left ()== ExpansionBehavior::Behavior::Forbid;966 if (expansionBehavior.left ()== ExpansionBehavior::Behavior::Force) {965 bool isAfterExpansion = expansionBehavior.left == ExpansionBehavior::Behavior::Forbid; 966 if (expansionBehavior.left == ExpansionBehavior::Behavior::Force) { 967 967 ++count; 968 968 isAfterExpansion = true; … … 985 985 } 986 986 } 987 if (!isAfterExpansion && expansionBehavior.right ()== ExpansionBehavior::Behavior::Force) {987 if (!isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Force) { 988 988 ++count; 989 989 isAfterExpansion = true; 990 } else if (isAfterExpansion && expansionBehavior.right ()== ExpansionBehavior::Behavior::Forbid) {990 } else if (isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Forbid) { 991 991 ASSERT(count); 992 992 --count; … … 999 999 { 1000 1000 unsigned count = 0; 1001 bool isAfterExpansion = expansionBehavior.left ()== ExpansionBehavior::Behavior::Forbid;1002 if (expansionBehavior.left ()== ExpansionBehavior::Behavior::Force) {1001 bool isAfterExpansion = expansionBehavior.left == ExpansionBehavior::Behavior::Forbid; 1002 if (expansionBehavior.left == ExpansionBehavior::Behavior::Force) { 1003 1003 ++count; 1004 1004 isAfterExpansion = true; … … 1047 1047 } 1048 1048 } 1049 if (!isAfterExpansion && expansionBehavior.right ()== ExpansionBehavior::Behavior::Force) {1049 if (!isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Force) { 1050 1050 ++count; 1051 1051 isAfterExpansion = true; 1052 } else if (isAfterExpansion && expansionBehavior.right ()== ExpansionBehavior::Behavior::Forbid) {1052 } else if (isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Forbid) { 1053 1053 ASSERT(count); 1054 1054 --count; -
trunk/Source/WebCore/platform/graphics/WidthIterator.cpp
r294607 r294758 42 42 , m_fallbackFonts(fallbackFonts) 43 43 , m_expansion(run.expansion()) 44 , m_isAfterExpansion(run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Forbid)44 , m_isAfterExpansion(run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid) 45 45 , m_accountForGlyphBounds(accountForGlyphBounds) 46 46 , m_enableKerning(font.enableKerning()) … … 382 382 std::swap(isLeftmostCharacter, isRightmostCharacter); 383 383 384 bool forceLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Force;385 bool forceRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right ()== ExpansionBehavior::Behavior::Force;386 bool forbidLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left ()== ExpansionBehavior::Behavior::Forbid;387 bool forbidRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right ()== ExpansionBehavior::Behavior::Forbid;384 bool forceLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Force; 385 bool forceRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Force; 386 bool forbidLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid; 387 bool forbidRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Forbid; 388 388 389 389 bool isIdeograph = FontCascade::canExpandAroundIdeographsInComplexText() && FontCascade::isCJKIdeographOrSymbol(character); -
trunk/Source/WebCore/platform/text/TextFlags.h
r294607 r294758 59 59 }; 60 60 61 class ExpansionBehavior { 62 public: 61 struct ExpansionBehavior { 63 62 enum class Behavior : uint8_t { 64 63 Forbid, … … 70 69 71 70 ExpansionBehavior(Behavior left, Behavior right) 72 : m_left(static_cast<uint8_t>(left))73 , m_right(static_cast<uint8_t>(right))74 { 75 } 76 77 static constExpansionBehavior defaultBehavior()71 : left(left) 72 , right(right) 73 { 74 } 75 76 static ExpansionBehavior defaultBehavior() 78 77 { 79 78 return { }; 80 79 } 81 80 82 static constExpansionBehavior allowRightOnly()81 static ExpansionBehavior allowRightOnly() 83 82 { 84 83 return { Behavior::Forbid, Behavior::Allow }; 85 84 } 86 85 87 static constExpansionBehavior allowLeftOnly()86 static ExpansionBehavior allowLeftOnly() 88 87 { 89 88 return { Behavior::Allow, Behavior::Forbid }; 90 89 } 91 90 92 static constExpansionBehavior forceLeftOnly()91 static ExpansionBehavior forceLeftOnly() 93 92 { 94 93 return { Behavior::Force, Behavior::Forbid }; 95 94 } 96 95 97 static constExpansionBehavior forbidAll()96 static ExpansionBehavior forbidAll() 98 97 { 99 98 return { Behavior::Forbid, Behavior::Forbid }; 100 99 } 101 100 102 Behavior left() const { return static_cast<Behavior>(m_left); } 103 void setLeft(Behavior behavior) { m_left = static_cast<uint8_t>(behavior); } 104 105 Behavior right() const { return static_cast<Behavior>(m_right); } 106 void setRight(Behavior behavior) { m_right = static_cast<uint8_t>(behavior); } 107 108 private: 109 // Default behavior follows the previous implementation: 110 // forbids left and allows right expansions. 111 uint8_t m_left : 2 { static_cast<uint8_t>(Behavior::Forbid) }; 112 uint8_t m_right : 2 { static_cast<uint8_t>(Behavior::Allow) }; 101 Behavior left : 2 { Behavior::Forbid }; 102 Behavior right : 2 { Behavior::Allow }; 113 103 }; 114 104 -
trunk/Source/WebCore/rendering/LegacyInlineTextBox.cpp
r294607 r294758 492 492 493 493 if (forceLeftExpansion()) 494 behavior. setLeft(ExpansionBehavior::Behavior::Force);494 behavior.left = ExpansionBehavior::Behavior::Force; 495 495 else if (canHaveLeftExpansion()) 496 behavior. setLeft(ExpansionBehavior::Behavior::Allow);496 behavior.left = ExpansionBehavior::Behavior::Allow; 497 497 else 498 behavior. setLeft(ExpansionBehavior::Behavior::Forbid);498 behavior.left = ExpansionBehavior::Behavior::Forbid; 499 499 500 500 if (forceRightExpansion()) 501 behavior. setRight(ExpansionBehavior::Behavior::Force);501 behavior.right = ExpansionBehavior::Behavior::Force; 502 502 else if (expansion() && nextLeafOnLine() && !nextLeafOnLine()->isLineBreak()) 503 behavior. setRight(ExpansionBehavior::Behavior::Allow);503 behavior.right = ExpansionBehavior::Behavior::Allow; 504 504 else 505 behavior. setRight(ExpansionBehavior::Behavior::Forbid);505 behavior.right = ExpansionBehavior::Behavior::Forbid; 506 506 507 507 return behavior; -
trunk/Source/WebCore/rendering/LegacyLineLayout.cpp
r294699 r294758 744 744 if (FontCascade::leftExpansionOpportunity(downcast<RenderText>(leafChild->renderer()).stringView(), leafChild->direction())) { 745 745 setRightExpansion = true; 746 result. setRight(ExpansionBehavior::Behavior::Force);746 result.right = ExpansionBehavior::Behavior::Force; 747 747 } 748 748 } … … 759 759 if (FontCascade::rightExpansionOpportunity(downcast<RenderText>(leafChild->renderer()).stringView(), leafChild->direction())) { 760 760 setLeftExpansion = true; 761 result. setLeft(ExpansionBehavior::Behavior::Force);761 result.left = ExpansionBehavior::Behavior::Force; 762 762 } 763 763 } … … 770 770 if (&textBox == rubyBase.firstRootBox()->firstLeafDescendant()) { 771 771 setLeftExpansion = true; 772 result. setLeft(ExpansionBehavior::Behavior::Forbid);772 result.left = ExpansionBehavior::Behavior::Forbid; 773 773 } if (&textBox == rubyBase.firstRootBox()->lastLeafDescendant()) { 774 774 setRightExpansion = true; 775 result. setRight(ExpansionBehavior::Behavior::Forbid);775 result.right = ExpansionBehavior::Behavior::Forbid; 776 776 } 777 777 } 778 778 } 779 779 if (!setLeftExpansion) 780 result. setLeft(isAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow);780 result.left = isAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow; 781 781 if (!setRightExpansion) 782 result. setRight(ExpansionBehavior::Behavior::Allow);782 result.right = ExpansionBehavior::Behavior::Allow; 783 783 return result; 784 784 } … … 786 786 static inline void applyExpansionBehavior(LegacyInlineTextBox& textBox, ExpansionBehavior expansionBehavior) 787 787 { 788 switch (expansionBehavior.left ()) {788 switch (expansionBehavior.left) { 789 789 case ExpansionBehavior::Behavior::Force: 790 790 textBox.setForceLeftExpansion(); … … 801 801 }; 802 802 803 switch (expansionBehavior.right ()) {803 switch (expansionBehavior.right) { 804 804 case ExpansionBehavior::Behavior::Force: 805 805 textBox.setForceRightExpansion();
Note:
See TracChangeset
for help on using the changeset viewer.