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

Unified Diff: Source/wtf/text/StringImpl.cpp

Issue 1135003004: Make small-caps work correctly with tr locale (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Patch for landing Created 5 years, 7 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
« Source/wtf/text/StringImpl.h ('K') | « Source/wtf/text/StringImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/wtf/text/StringImpl.cpp
diff --git a/Source/wtf/text/StringImpl.cpp b/Source/wtf/text/StringImpl.cpp
index 14fb36d6564cc40d8562c602b1b1fbdf9d4cea12..837e0d801e03d446f52e271040d153b439eb1ee7 100644
--- a/Source/wtf/text/StringImpl.cpp
+++ b/Source/wtf/text/StringImpl.cpp
@@ -530,7 +530,7 @@ PassRefPtr<StringImpl> StringImpl::lower()
// Do a slower implementation for cases that include non-ASCII Latin-1 characters.
for (int32_t i = 0; i < length; ++i)
- data8[i] = static_cast<LChar>(Unicode::toLower(characters8()[i]));
tkent 2015/05/28 00:38:26 I prefer keeping Unicode::. We have Unicode::toLo
rwlbuis 2015/05/28 23:03:07 Yes, I should not have included it. My idea was to
+ data8[i] = static_cast<LChar>(toLower(characters8()[i]));
return newImpl.release();
}
@@ -564,12 +564,12 @@ PassRefPtr<StringImpl> StringImpl::lower()
RefPtr<StringImpl> newImpl = createUninitialized(m_length, data16);
bool error;
- int32_t realLength = Unicode::toLower(data16, length, characters16(), m_length, &error);
+ int32_t realLength = toLower(data16, length, characters16(), m_length, &error);
if (!error && realLength == length)
return newImpl.release();
newImpl = createUninitialized(realLength, data16);
- Unicode::toLower(data16, realLength, characters16(), m_length, &error);
+ toLower(data16, realLength, characters16(), m_length, &error);
if (error)
return this;
return newImpl.release();
@@ -608,7 +608,7 @@ PassRefPtr<StringImpl> StringImpl::upper()
LChar c = characters8()[i];
if (UNLIKELY(c == smallLetterSharpSCharacter))
++numberSharpSCharacters;
- UChar upper = static_cast<UChar>(Unicode::toUpper(c));
+ UChar upper = static_cast<UChar>(toUpper(c));
if (UNLIKELY(upper > 0xff)) {
// Since this upper-cased character does not fit in an 8-bit string, we need to take the 16-bit path.
goto upconvert;
@@ -629,8 +629,9 @@ PassRefPtr<StringImpl> StringImpl::upper()
if (c == smallLetterSharpSCharacter) {
*dest++ = 'S';
*dest++ = 'S';
- } else
- *dest++ = static_cast<LChar>(Unicode::toUpper(c));
+ } else {
+ *dest++ = static_cast<LChar>(toUpper(c));
+ }
}
return newImpl.release();
@@ -655,11 +656,11 @@ upconvert:
// Do a slower implementation for cases that include non-ASCII characters.
bool error;
- int32_t realLength = Unicode::toUpper(data16, length, source16, m_length, &error);
+ int32_t realLength = toUpper(data16, length, source16, m_length, &error);
if (!error && realLength == length)
return newImpl;
newImpl = createUninitialized(realLength, data16);
- Unicode::toUpper(data16, realLength, source16, m_length, &error);
+ toUpper(data16, realLength, source16, m_length, &error);
if (error)
return this;
return newImpl.release();
@@ -809,7 +810,7 @@ PassRefPtr<StringImpl> StringImpl::foldCase()
// Do a slower implementation for cases that include non-ASCII Latin-1 characters.
for (int32_t i = 0; i < length; ++i)
- data[i] = static_cast<LChar>(Unicode::toLower(characters8()[i]));
+ data[i] = static_cast<LChar>(toLower(characters8()[i]));
return newImpl.release();
}
@@ -2094,4 +2095,20 @@ size_t StringImpl::sizeInBytes() const
return size + sizeof(*this);
}
+UChar32 toUpper(UChar32 c, const AtomicString& localeIdentifier)
+{
+ if (!localeIdentifier.isNull()) {
+ if (localeIdMatchesLang(localeIdentifier, "tr") || localeIdMatchesLang(localeIdentifier, "az")) {
+ if (c == 'i')
+ return 0x130; // Latin capital letter i with dot above
tkent 2015/05/28 00:38:26 Please add latinCapitalLetterIWithDotAbove to wtf/
rwlbuis 2015/05/28 23:03:08 Done.
+ if (c == 0x131) // Latin small letter dotless i
tkent 2015/05/28 00:38:26 Please add latinSmallLetterDotlessI to wtf/unicode
rwlbuis 2015/05/28 23:03:07 Done.
+ return 'I';
+ } else if (localeIdMatchesLang(localeIdentifier, "lt")) {
+ // FIXME
tkent 2015/05/28 00:38:26 FIXME -> TODO(rob.buis): blah blah
rwlbuis 2015/05/28 23:03:07 In this case, I don't think I want to put my name
tkent 2015/05/29 05:49:50 Please add TODO(rub.buis). It doesn't mean you'll
+ }
+ }
+
+ return toUpper(c);
+}
+
} // namespace WTF
« Source/wtf/text/StringImpl.h ('K') | « Source/wtf/text/StringImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698