| Index: Source/core/rendering/RenderText.cpp
|
| diff --git a/Source/core/rendering/RenderText.cpp b/Source/core/rendering/RenderText.cpp
|
| index 03b74ff509e48640acf37d9c178eadd59e150aab..1170cddfc7c91f7dbcc921b0c483092966cd6e6f 100644
|
| --- a/Source/core/rendering/RenderText.cpp
|
| +++ b/Source/core/rendering/RenderText.cpp
|
| @@ -108,11 +108,11 @@ static void makeCapitalized(String* string, UChar previous)
|
| CRASH();
|
|
|
| StringBuffer<UChar> stringWithPrevious(length + 1);
|
| - stringWithPrevious[0] = previous == noBreakSpace ? ' ' : previous;
|
| + stringWithPrevious[0] = previous == noBreakSpace ? space : previous;
|
| for (unsigned i = 1; i < length + 1; i++) {
|
| // Replace   with a real space since ICU no longer treats   as a word separator.
|
| if (input[i - 1] == noBreakSpace)
|
| - stringWithPrevious[i] = ' ';
|
| + stringWithPrevious[i] = space;
|
| else
|
| stringWithPrevious[i] = input[i - 1];
|
| }
|
| @@ -318,7 +318,7 @@ String RenderText::plainText() const
|
| String text = m_text.substring(textBox->start(), textBox->len()).simplifyWhiteSpace(WTF::DoNotStripWhiteSpace);
|
| plainTextBuilder.append(text);
|
| if (textBox->nextTextBox() && textBox->nextTextBox()->start() > textBox->end() && text.length() && !text.right(1).containsOnlyWhitespace())
|
| - plainTextBuilder.append(' ');
|
| + plainTextBuilder.append(space);
|
| }
|
| return plainTextBuilder.toString();
|
| }
|
| @@ -721,11 +721,11 @@ ALWAYS_INLINE float RenderText::widthFromCache(const Font& f, int start, int len
|
| StringImpl& text = *m_text.impl();
|
| for (int i = start; i < start + len; i++) {
|
| char c = text[i];
|
| - if (c <= ' ') {
|
| - if (c == ' ' || c == '\n') {
|
| + if (c <= space) {
|
| + if (c == space || c == newlineCharacter) {
|
| w += monospaceCharacterWidth;
|
| isSpace = true;
|
| - } else if (c == '\t') {
|
| + } else if (c == characterTabulation) {
|
| if (style()->collapseWhiteSpace()) {
|
| w += monospaceCharacterWidth;
|
| isSpace = true;
|
| @@ -798,11 +798,11 @@ void RenderText::trimmedPrefWidths(float leadWidth,
|
|
|
| ASSERT(m_text);
|
| StringImpl& text = *m_text.impl();
|
| - if (text[0] == ' ' || (text[0] == '\n' && !style()->preserveNewline()) || text[0] == '\t') {
|
| + if (text[0] == space || (text[0] == newlineCharacter && !style()->preserveNewline()) || text[0] == characterTabulation) {
|
| const Font& font = style()->font(); // FIXME: This ignores first-line.
|
| if (stripFrontSpaces) {
|
| - const UChar space = ' ';
|
| - float spaceWidth = font.width(constructTextRun(this, font, &space, 1, style(), direction));
|
| + const UChar spaceChar = space;
|
| + float spaceWidth = font.width(constructTextRun(this, font, &spaceChar, 1, style(), direction));
|
| maxWidth -= spaceWidth;
|
| } else {
|
| maxWidth += font.fontDescription().wordSpacing();
|
| @@ -822,7 +822,7 @@ void RenderText::trimmedPrefWidths(float leadWidth,
|
| lastLineMaxWidth = maxWidth;
|
| for (int i = 0; i < len; i++) {
|
| int linelen = 0;
|
| - while (i + linelen < len && text[i + linelen] != '\n')
|
| + while (i + linelen < len && text[i + linelen] != newlineCharacter)
|
| linelen++;
|
|
|
| if (linelen) {
|
| @@ -955,21 +955,22 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
|
|
|
| bool previousCharacterIsSpace = isSpace;
|
| bool isNewline = false;
|
| - if (c == '\n') {
|
| + if (c == newlineCharacter) {
|
| if (styleToUse->preserveNewline()) {
|
| m_hasBreak = true;
|
| isNewline = true;
|
| isSpace = false;
|
| } else
|
| isSpace = true;
|
| - } else if (c == '\t') {
|
| + } else if (c == characterTabulation) {
|
| if (!styleToUse->collapseWhiteSpace()) {
|
| m_hasTab = true;
|
| isSpace = false;
|
| } else
|
| isSpace = true;
|
| - } else
|
| - isSpace = c == ' ';
|
| + } else {
|
| + isSpace = c == space;
|
| + }
|
|
|
| bool isBreakableLocation = isNewline || (isSpace && styleToUse->autoWrap());
|
| if (!i)
|
| @@ -1001,7 +1002,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)) {
|
| + while (c != newlineCharacter && c != space && c != characterTabulation && (c != softHyphen)) {
|
| j++;
|
| if (j == len)
|
| break;
|
| @@ -1019,7 +1020,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
|
| j = std::min(j, run->stop() + 1);
|
| int wordLen = j - i;
|
| if (wordLen) {
|
| - bool isSpace = (j < len) && c == ' ';
|
| + bool isSpace = (j < len) && c == space;
|
|
|
| // Non-zero only when kerning is enabled, in which case we measure words with their trailing
|
| // space, then subtract its width.
|
| @@ -1159,8 +1160,8 @@ bool RenderText::containsOnlyWhitespace(unsigned from, unsigned len) const
|
| StringImpl& text = *m_text.impl();
|
| unsigned currPos;
|
| for (currPos = from;
|
| - currPos < from + len && (text[currPos] == '\n' || text[currPos] == ' ' || text[currPos] == '\t');
|
| - currPos++) { }
|
| + currPos < from + len && (text[currPos] == newlineCharacter || text[currPos] == space || text[currPos] == characterTabulation);
|
| + currPos++) { }
|
| return currPos >= (from + len);
|
| }
|
|
|
| @@ -1314,7 +1315,7 @@ UChar RenderText::previousCharacter() const
|
| for (; previousText; previousText = previousText->previousInPreOrder())
|
| if (!isInlineFlowOrEmptyText(previousText))
|
| break;
|
| - UChar prev = ' ';
|
| + UChar prev = space;
|
| if (previousText && previousText->isText())
|
| if (StringImpl* previousString = toRenderText(previousText)->text().impl())
|
| prev = (*previousString)[previousString->length() - 1];
|
| @@ -1371,7 +1372,7 @@ void RenderText::setTextInternal(PassRefPtr<StringImpl> text)
|
| }
|
|
|
| ASSERT(m_text);
|
| - ASSERT(!isBR() || (textLength() == 1 && m_text[0] == '\n'));
|
| + ASSERT(!isBR() || (textLength() == 1 && m_text[0] == newlineCharacter));
|
|
|
| m_isAllASCII = m_text.containsOnlyASCII();
|
| m_canUseSimpleFontCodePath = computeCanUseSimpleFontCodePath();
|
|
|