summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/rendering
diff options
context:
space:
mode:
authorclaireho <chinglanho@gmail.com>2012-04-30 10:21:14 -0700
committerclaireho <chinglanho@gmail.com>2012-05-11 09:54:28 -0700
commit1be479d1603f2e8aefe28c2ef33dbc7f227dca30 (patch)
tree352fce490c43febfa35dbee2e0ec3cb5ab48a109 /Source/WebCore/rendering
parent78d0003d44a4fa393275929d92c8e4929e70c7fa (diff)
downloadexternal_webkit-1be479d1603f2e8aefe28c2ef33dbc7f227dca30.zip
external_webkit-1be479d1603f2e8aefe28c2ef33dbc7f227dca30.tar.gz
external_webkit-1be479d1603f2e8aefe28c2ef33dbc7f227dca30.tar.bz2
Cherry pick fixes for b/6388728 to jb-dev. DO NOT MERGE
cherry-picked a571e242f305463ffcb0a8680c750312ed04ea79 to jb-dev. Remove the FIXME item in shouldBreakAfter() of break_line.cpp. Bug: 6388728 - Improper line break of Japanese text The FIXME item in shouldBreakAfter() is a temporary workaround for webkit bug #17411 due to Unicode5.0 does not define IdeographicComma(U+3001) and ideographicFullStop(U+3002) as line breaks. However, shouldBreakAfter() hard coded these 2 codepoints should have a line break regardless any other punctuation right after these 2 characters. Now, Android is using ICU4.8.1 that is against on Unicode6.0. IdeographicComma and ideographicFullStop are included in the external/icu4c/data/unidata/LineBreak.txt. It is safe to remove this temporary workaround. Change-Id: Icf9d9bd088da0bef4f4b5cf6324dc744b5ac2ad5
Diffstat (limited to 'Source/WebCore/rendering')
-rw-r--r--Source/WebCore/rendering/break_lines.cpp32
1 files changed, 12 insertions, 20 deletions
diff --git a/Source/WebCore/rendering/break_lines.cpp b/Source/WebCore/rendering/break_lines.cpp
index 9ac3375..4dbf81b 100644
--- a/Source/WebCore/rendering/break_lines.cpp
+++ b/Source/WebCore/rendering/break_lines.cpp
@@ -119,29 +119,21 @@ COMPILE_ASSERT(WTF_ARRAY_LENGTH(asciiLineBreakTable) == asciiLineBreakTableLastC
static inline bool shouldBreakAfter(UChar ch, UChar nextCh)
{
- switch (ch) {
- case ideographicComma:
- case ideographicFullStop:
- // FIXME: cases for ideographicComma and ideographicFullStop are a workaround for an issue in Unicode 5.0
- // which is likely to be resolved in Unicode 5.1 <http://bugs.webkit.org/show_bug.cgi?id=17411>.
- // We may want to remove or conditionalize this workaround at some point.
#ifdef ANDROID_LAYOUT
- // as '/' is used in uri which is always long, we would like to break it
- case '/':
-#endif
+ if (ch == '/') // as '/' is used in uri which is always long, we would like to break it
return true;
- default:
- // If both ch and nextCh are ASCII characters, use a lookup table for enhanced speed and for compatibility
- // with other browsers (see comments for asciiLineBreakTable for details).
- if (ch >= asciiLineBreakTableFirstChar && ch <= asciiLineBreakTableLastChar
- && nextCh >= asciiLineBreakTableFirstChar && nextCh <= asciiLineBreakTableLastChar) {
- const unsigned char* tableRow = asciiLineBreakTable[ch - asciiLineBreakTableFirstChar];
- int nextChIndex = nextCh - asciiLineBreakTableFirstChar;
- return tableRow[nextChIndex / 8] & (1 << (nextChIndex % 8));
- }
- // Otherwise defer to the Unicode algorithm by returning false.
- return false;
+#endif
+
+ // If both ch and nextCh are ASCII characters, use a lookup table for enhanced speed and for compatibility
+ // with other browsers (see comments for asciiLineBreakTable for details).
+ if (ch >= asciiLineBreakTableFirstChar && ch <= asciiLineBreakTableLastChar
+ && nextCh >= asciiLineBreakTableFirstChar && nextCh <= asciiLineBreakTableLastChar) {
+ const unsigned char* tableRow = asciiLineBreakTable[ch - asciiLineBreakTableFirstChar];
+ int nextChIndex = nextCh - asciiLineBreakTableFirstChar;
+ return tableRow[nextChIndex / 8] & (1 << (nextChIndex % 8));
}
+ // Otherwise defer to the Unicode algorithm by returning false.
+ return false;
}
static inline bool needsLineBreakIterator(UChar ch)