Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(891)

Unified Diff: Source/core/rendering/RenderText.cpp

Issue 20526006: Remove -webkit-hyphens and -webkit-hyphenate-limit-* properties. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: init removal Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderBlockLineLayout.cpp ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderText.cpp
diff --git a/Source/core/rendering/RenderText.cpp b/Source/core/rendering/RenderText.cpp
index cf913991fecd926f3f69367cd95523a01087b2d2..dff968552237a1977b582729373d52717960e8c2 100644
--- a/Source/core/rendering/RenderText.cpp
+++ b/Source/core/rendering/RenderText.cpp
@@ -32,7 +32,6 @@
#include "core/page/FrameView.h"
#include "core/page/Settings.h"
#include "core/platform/graphics/FloatQuad.h"
-#include "core/platform/text/Hyphenation.h"
#include "core/platform/text/TextBreakIterator.h"
#include "core/platform/text/transcoder/FontTranscoder.h"
#include "core/rendering/EllipsisBox.h"
@@ -889,50 +888,6 @@ static inline float hyphenWidth(RenderText* renderer, const Font& font)
return font.width(RenderBlock::constructTextRun(renderer, font, style->hyphenString().string(), style));
}
-static float maxWordFragmentWidth(RenderText* renderer, RenderStyle* style, const Font& font, int wordOffset, int wordLength, int minimumPrefixLength, int minimumSuffixLength, int& suffixStart)
-{
- suffixStart = 0;
- if (wordLength <= minimumSuffixLength)
- return 0;
-
- Vector<int, 8> hyphenLocations;
- int hyphenLocation = wordLength - minimumSuffixLength;
- String word = renderer->substring(wordOffset, wordLength);
- while ((hyphenLocation = lastHyphenLocation(word, hyphenLocation, style->locale())) >= minimumPrefixLength)
- hyphenLocations.append(hyphenLocation);
-
- if (hyphenLocations.isEmpty())
- return 0;
-
- hyphenLocations.reverse();
-
- float minimumFragmentWidthToConsider = font.pixelSize() * 5 / 4 + hyphenWidth(renderer, font);
- float maxFragmentWidth = 0;
- for (size_t k = 0; k < hyphenLocations.size(); ++k) {
- int fragmentLength = hyphenLocations[k] - suffixStart;
- StringBuilder fragmentWithHyphen;
- if (renderer->is8Bit())
- fragmentWithHyphen.append(renderer->characters8() + wordOffset + suffixStart, fragmentLength);
- else
- fragmentWithHyphen.append(renderer->characters16() + wordOffset + suffixStart, fragmentLength);
- fragmentWithHyphen.append(style->hyphenString());
-
- TextRun run = RenderBlock::constructTextRun(renderer, font, fragmentWithHyphen.toString(), style);
- run.setCharactersLength(fragmentWithHyphen.length());
- run.setCharacterScanForCodePath(!renderer->canUseSimpleFontCodePath());
- float fragmentWidth = font.width(run);
-
- // Narrow prefixes are ignored. See tryHyphenating in RenderBlockLineLayout.cpp.
- if (fragmentWidth <= minimumFragmentWidthToConsider)
- continue;
-
- suffixStart += fragmentLength;
- maxFragmentWidth = max(maxFragmentWidth, fragmentWidth);
- }
-
- return maxFragmentWidth;
-}
-
void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const SimpleFontData*>& fallbackFonts, GlyphOverflow& glyphOverflow)
{
ASSERT(m_hasTab || preferredLogicalWidthsDirty() || !m_knownToHaveNoOverflowAndNoFallbackFonts);
@@ -976,19 +931,6 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
float maxWordWidth = numeric_limits<float>::max();
int minimumPrefixLength = 0;
int minimumSuffixLength = 0;
- if (styleToUse->hyphens() == HyphensAuto && canHyphenate(styleToUse->locale())) {
- maxWordWidth = 0;
-
- // Map 'hyphenate-limit-{before,after}: auto;' to 2.
- minimumPrefixLength = styleToUse->hyphenationLimitBefore();
- if (minimumPrefixLength < 0)
- minimumPrefixLength = 2;
-
- minimumSuffixLength = styleToUse->hyphenationLimitAfter();
- if (minimumSuffixLength < 0)
- minimumSuffixLength = 2;
- }
-
int firstGlyphLeftOverflow = -1;
bool breakAll = (styleToUse->wordBreak() == BreakAllWordBreak || styleToUse->wordBreak() == BreakWordBreak) && styleToUse->autoWrap();
@@ -1034,7 +976,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
ASSERT(lastWordBoundary == i);
lastWordBoundary++;
continue;
- } else if (c == softHyphen && styleToUse->hyphens() != HyphensNone) {
+ } else if (c == softHyphen) {
currMaxWidth += widthFromCache(f, lastWordBoundary, i - lastWordBoundary, leadWidth + currMaxWidth, &fallbackFonts, &glyphOverflow);
if (firstGlyphLeftOverflow < 0)
firstGlyphLeftOverflow = glyphOverflow.left;
@@ -1045,7 +987,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
bool hasBreak = breakAll || isBreakable(breakIterator, i, nextBreakable);
bool betweenWords = true;
int j = i;
- while (c != '\n' && c != ' ' && c != '\t' && (c != softHyphen || styleToUse->hyphens() == HyphensNone)) {
+ while (c != '\n' && c != ' ' && c != '\t' && (c != softHyphen)) {
j++;
if (j == len)
break;
@@ -1066,28 +1008,11 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
w = widthFromCache(f, i, wordLen + 1, leadWidth + currMaxWidth, &fallbackFonts, &glyphOverflow) - wordTrailingSpaceWidth;
else {
w = widthFromCache(f, i, wordLen, leadWidth + currMaxWidth, &fallbackFonts, &glyphOverflow);
- if (c == softHyphen && styleToUse->hyphens() != HyphensNone)
+ if (c == softHyphen)
currMinWidth += hyphenWidth(this, f);
}
- if (w > maxWordWidth) {
- int suffixStart;
- float maxFragmentWidth = maxWordFragmentWidth(this, styleToUse, f, i, wordLen, minimumPrefixLength, minimumSuffixLength, suffixStart);
-
- if (suffixStart) {
- float suffixWidth;
- if (wordTrailingSpaceWidth && isSpace)
- suffixWidth = widthFromCache(f, i + suffixStart, wordLen - suffixStart + 1, leadWidth + currMaxWidth, 0, 0) - wordTrailingSpaceWidth;
- else
- suffixWidth = widthFromCache(f, i + suffixStart, wordLen - suffixStart, leadWidth + currMaxWidth, 0, 0);
-
- maxFragmentWidth = max(maxFragmentWidth, suffixWidth);
-
- currMinWidth += maxFragmentWidth - w;
- maxWordWidth = max(maxWordWidth, maxFragmentWidth);
- } else
- maxWordWidth = w;
- }
+ maxWordWidth = max(maxWordWidth, w);
if (firstGlyphLeftOverflow < 0)
firstGlyphLeftOverflow = glyphOverflow.left;
« no previous file with comments | « Source/core/rendering/RenderBlockLineLayout.cpp ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698