summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2010-10-29 11:44:01 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-29 11:44:01 -0700
commit5f2149d97da7a452dc97a39cfe9882436cc3dbc7 (patch)
tree541e07eb2ab79b818d66ec94aea9e103e48a08e2
parent17c0983f231fd63332e8c29640b67d2b6c98c208 (diff)
parent5a2ec43c8db3d26ffadd4e5ffd6ff1b76844bab6 (diff)
downloadexternal_webkit-5f2149d97da7a452dc97a39cfe9882436cc3dbc7.zip
external_webkit-5f2149d97da7a452dc97a39cfe9882436cc3dbc7.tar.gz
external_webkit-5f2149d97da7a452dc97a39cfe9882436cc3dbc7.tar.bz2
Merge "Enhance auto hyphenation."
-rw-r--r--WebCore/platform/text/android/HyphenationAndroid.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/WebCore/platform/text/android/HyphenationAndroid.cpp b/WebCore/platform/text/android/HyphenationAndroid.cpp
index e8ba5ef..cff0a66 100644
--- a/WebCore/platform/text/android/HyphenationAndroid.cpp
+++ b/WebCore/platform/text/android/HyphenationAndroid.cpp
@@ -75,6 +75,7 @@ size_t lastHyphenLocation(const UChar* characters, size_t length, size_t beforeI
return 0;
char word[maxWordLen];
+ int wordLength = 0;
for (size_t i = 0; i < length; ++i) {
const UChar ch = characters[i];
// Only English for now.
@@ -82,17 +83,24 @@ size_t lastHyphenLocation(const UChar* characters, size_t length, size_t beforeI
// detection or rely on the langAttr in the html element. Though
// seems right now the langAttr is not used or quite implemented in
// webkit.
- if (!isASCIIAlpha(ch))
+ if (!isASCIIAlpha(ch)) {
+ // Bypass leading spaces.
+ if (isASCIISpace(ch) && !wordLength)
+ continue;
return 0;
- word[i] = ch;
+ }
+ word[wordLength++] = ch;
}
+ if (wordLength < minWordLen)
+ return 0;
static const int extraBuffer = 5;
+ const int leadingSpacesCount = length - wordLength;
char hyphens[maxWordLen + extraBuffer];
- if (!hnj_hyphen_hyphenate(dict, word, length, hyphens)) {
- for (size_t i = beforeIndex - 1; i > 0; --i) {
+ if (!hnj_hyphen_hyphenate(dict, word, wordLength, hyphens)) {
+ for (size_t i = beforeIndex - 2 - leadingSpacesCount; i > 0; --i) {
if (hyphens[i] & 1)
- return i + 1;
+ return i + 1 + leadingSpacesCount;
}
}