diff options
| author | Shimeng (Simon) Wang <swang@google.com> | 2010-10-29 11:44:01 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-29 11:44:01 -0700 |
| commit | 5f2149d97da7a452dc97a39cfe9882436cc3dbc7 (patch) | |
| tree | 541e07eb2ab79b818d66ec94aea9e103e48a08e2 | |
| parent | 17c0983f231fd63332e8c29640b67d2b6c98c208 (diff) | |
| parent | 5a2ec43c8db3d26ffadd4e5ffd6ff1b76844bab6 (diff) | |
| download | external_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.cpp | 18 |
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; } } |
