Changes by Mitz Pettel.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 25 Jun 2005 05:17:33 +0000 (05:17 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 25 Jun 2005 05:17:33 +0000 (05:17 +0000)
        Reviewed by me.

        Test cases added:
        * layout-tests/fast/text/international/bidi-explicit-embedding-expected.txt: Added.
        * layout-tests/fast/text/international/bidi-explicit-embedding.html: Added.

        - fixed <http://bugzilla.opendarwin.org/show_bug.cgi?id=3599>
          Incorrect layout of explicit embedding levels

        * khtml/rendering/bidi.cpp:
        (khtml::embed): Set up the new run correctly following an embed/pop.
        (khtml::RenderBlock::bidiReorderLine): Close the "dangling" run when we see an explicit
        embedding character (or PDF).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@9486 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/fast/text/international/bidi-explicit-embedding-expected.txt [new file with mode: 0644]
LayoutTests/fast/text/international/bidi-explicit-embedding.html [new file with mode: 0644]
WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/bidi.cpp

diff --git a/LayoutTests/fast/text/international/bidi-explicit-embedding-expected.txt b/LayoutTests/fast/text/international/bidi-explicit-embedding-expected.txt
new file mode 100644 (file)
index 0000000..77d5fd2
--- /dev/null
@@ -0,0 +1,128 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x494
+  RenderBlock {HTML} at (0,0) size 800x494
+    RenderBody {BODY} at (8,16) size 784x462
+      RenderBlock {P} at (0,0) size 784x54
+        RenderText {TEXT} at (0,0) size 748x54
+          text run at (0,0) width 733: "In each line, reading from left to right, the bracket should appear before the parenthesis. The"
+          text run at (0,18) width 748: "bracket should be a left bracket and the parenthesis should be a right parenthesis. In each line,"
+          text run at (0,36) width 600: "Roman characters and digits should be in increasing order from left to right."
+      RenderBlock {P} at (0,70) size 784x18
+        RenderText {TEXT} at (0,0) size 61x18
+          text run at (0,0) width 26: "\x{5D0}\x{5D1}\x{5D2}"
+          text run at (26,0) width 30: " def"
+          text run at (56,0) width 5: " "
+        RenderInline {SPAN} at (0,0) size 37x18
+          RenderText {TEXT} at (61,0) size 37x18
+            text run at (61,0) width 6: "]"
+            text run at (67,0) width 31: "(\x{5D6}\x{5D7}\x{5D8}"
+        RenderText {TEXT} at (98,0) size 24x18
+          text run at (98,0) width 24: " jkl"
+      RenderBlock {P} at (0,104) size 784x18
+        RenderText {TEXT} at (0,0) size 61x18
+          text run at (0,0) width 26: "\x{5D0}\x{5D1}\x{5D2}"
+          text run at (26,0) width 30: " def"
+          text run at (56,0) width 5: " "
+        RenderInline {SPAN} at (0,0) size 36x18
+          RenderText {TEXT} at (61,0) size 36x18
+            text run at (61,0) width 6: "]"
+            text run at (67,0) width 25: "ghi"
+            text run at (92,0) width 5: "("
+        RenderText {TEXT} at (97,0) size 24x18
+          text run at (97,0) width 24: " jkl"
+      RenderBlock {P} at (0,138) size 784x18
+        RenderText {TEXT} at (0,0) size 33x18
+          text run at (0,0) width 28: "abc"
+          text run at (28,0) width 5: " "
+        RenderInline {SPAN} at (0,0) size 58x18
+          RenderText {TEXT} at (33,0) size 58x18
+            text run at (33,0) width 6: "]"
+            text run at (39,0) width 21: "23"
+            text run at (60,0) width 5: " "
+            text run at (65,0) width 21: "45"
+            text run at (86,0) width 5: "("
+        RenderText {TEXT} at (91,0) size 31x18
+          text run at (91,0) width 31: " fgh"
+      RenderBlock {P} at (0,172) size 784x18
+        RenderText {TEXT} at (0,0) size 122x18
+          text run at (0,0) width 28: "abc"
+          text run at (28,0) width 5: " "
+          text run at (33,0) width 5: "]"
+          text run at (38,0) width 21: "23"
+          text run at (59,0) width 5: " "
+          text run at (64,0) width 21: "45"
+          text run at (85,0) width 6: "\x{202B}("
+          text run at (91,0) width 31: "\x{202C} fgh"
+      RenderBlock {P} at (0,206) size 784x18
+        RenderText {TEXT} at (0,0) size 109x18
+          text run at (0,0) width 28: "abc"
+          text run at (28,0) width 5: " "
+          text run at (33,0) width 5: "]"
+          text run at (38,0) width 40: "de fg"
+          text run at (78,0) width 6: "\x{202B}("
+          text run at (84,0) width 25: "\x{202C} hij"
+      RenderBlock {P} at (0,240) size 784x18
+        RenderText {TEXT} at (0,0) size 11x18
+          text run at (0,0) width 11: "1"
+        RenderInline {SPAN} at (0,0) size 54x18
+          RenderText {TEXT} at (11,0) size 54x18
+            text run at (11,0) width 6: "]"
+            text run at (17,0) width 43: "ab cd"
+            text run at (60,0) width 5: "("
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {P} at (0,274) size 784x18
+        RenderText {TEXT} at (0,0) size 11x18
+          text run at (0,0) width 11: "1"
+        RenderInline {SPAN} at (0,0) size 50x18
+          RenderText {TEXT} at (11,0) size 50x18
+            text run at (11,0) width 6: "]"
+            text run at (17,0) width 20: " \x{5D2}\x{5D3}"
+            text run at (37,0) width 19: "ab"
+            text run at (56,0) width 5: "("
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {P} at (0,308) size 784x18
+        RenderText {TEXT} at (0,0) size 11x18
+          text run at (0,0) width 11: "1"
+        RenderInline {SPAN} at (0,0) size 21x18
+          RenderText {TEXT} at (11,0) size 21x18
+            text run at (11,0) width 5: "]"
+            text run at (16,0) width 10: "2"
+            text run at (26,0) width 6: "\x{202B}("
+            text run at (32,0) width 0: "\x{202C}"
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {P} at (0,342) size 784x18
+        RenderText {TEXT} at (0,0) size 11x18
+          text run at (0,0) width 11: "1"
+        RenderInline {SPAN} at (0,0) size 20x18
+          RenderText {TEXT} at (11,0) size 20x18
+            text run at (11,0) width 5: "]"
+            text run at (16,0) width 9: "a"
+            text run at (25,0) width 6: "\x{202B}("
+            text run at (31,0) width 0: "\x{202C}"
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {P} at (0,376) size 784x18
+        RenderText {TEXT} at (0,0) size 60x18
+          text run at (0,0) width 10: "1"
+          text run at (10,0) width 5: "]"
+          text run at (15,0) width 20: " \x{5D2}\x{5D3}"
+          text run at (35,0) width 19: "ab"
+          text run at (54,0) width 6: "\x{202B}("
+          text run at (60,0) width 0: "\x{202C}"
+      RenderBlock {P} at (0,410) size 784x18
+        RenderInline {SPAN} at (0,0) size 100x18
+          RenderText {TEXT} at (0,0) size 100x18
+            text run at (0,0) width 6: "]"
+            text run at (6,0) width 28: "abc"
+            text run at (34,0) width 36: " \x{5D0}\x{5D1}\x{5D2} "
+            text run at (70,0) width 25: "def"
+            text run at (95,0) width 5: "("
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {P} at (0,444) size 784x18
+        RenderText {TEXT} at (0,0) size 100x18
+          text run at (0,0) width 5: "]"
+          text run at (5,0) width 28: "abc"
+          text run at (33,0) width 36: " \x{5D0}\x{5D1}\x{5D2} "
+          text run at (69,0) width 25: "def"
+          text run at (94,0) width 6: "\x{202B}("
+          text run at (100,0) width 0: "\x{202C}"
diff --git a/LayoutTests/fast/text/international/bidi-explicit-embedding.html b/LayoutTests/fast/text/international/bidi-explicit-embedding.html
new file mode 100644 (file)
index 0000000..af49d14
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Embedding bugs</title>
+</head>
+<body style="font-family:'Lucida Grande';">
+<p>
+In each line, reading from left to right, the bracket should
+appear before the parenthesis. The bracket should be a left bracket and
+the parenthesis should be a right parenthesis. In each line, Roman characters
+and digits should be in increasing order from left to right.
+</p>
+<p>
+&#x05d0;&#x05d1;&#x05d2; def <span dir="rtl">(&#x05d6;&#x05d7;&#x05d8;]</span> jkl
+</p>
+<p>
+&#x05d0;&#x05d1;&#x05d2; def <span dir="rtl">(ghi]</span> jkl
+</p>
+<p>
+abc <span dir="rtl">(45 23]</span> fgh
+</p>
+<p>
+abc &#x202B;(45 23]&#x202C; fgh
+</p>
+<p>
+abc &#x202B;(de fg]&#x202C; hij
+</p>
+<p>
+1<span dir="rtl">(ab cd]</span>
+</p>
+<p>
+1<span dir="rtl">(ab &#x05d2;&#x05d3;]</span>
+</p>
+<p>
+1<span>&#x202B;(2]&#x202C;</span>
+</p>
+<p>
+1<span>&#x202B;(a]&#x202C;</span>
+</p>
+<p>
+1&#x202B;(ab &#x05d2;&#x05d3;]&#x202C;
+</p>
+<p>
+<span dir="rtl">(def &#x05d0;&#x05d1;&#x05d2; abc]</span>
+</p>
+<p>
+&#x202B;(def &#x05d0;&#x05d1;&#x05d2; abc]&#x202C;
+</p>
+</body>
+</html>
index 68ed5ca849643ad7a32ac64b1046b5858933aa40..edc52dd8768e16e915c6824a7bd9db05af17a470 100644 (file)
@@ -1,3 +1,20 @@
+2005-06-24  Darin Adler  <darin@apple.com>
+
+        Changes by Mitz Pettel.
+        Reviewed by me.
+
+        Test cases added:
+        * layout-tests/fast/text/international/bidi-explicit-embedding-expected.txt: Added.
+        * layout-tests/fast/text/international/bidi-explicit-embedding.html: Added.
+
+        - fixed <http://bugzilla.opendarwin.org/show_bug.cgi?id=3599>
+          Incorrect layout of explicit embedding levels
+
+        * khtml/rendering/bidi.cpp:
+        (khtml::embed): Set up the new run correctly following an embed/pop.
+        (khtml::RenderBlock::bidiReorderLine): Close the "dangling" run when we see an explicit
+        embedding character (or PDF).
+
 2005-06-24  Darin Adler  <darin@apple.com>
 
         Changes by Mitz Pettel.
index 9ad3e700b2fe268d49a54cb55a7fc05751e3008d..acb22035615f84c59161bf69cb6e180f4c126f63 100644 (file)
@@ -626,10 +626,10 @@ static void embed( QChar::Direction d, BidiState &bidi )
 
            bidi.context = new BidiContext(level, runDir, bidi.context, override);
            bidi.context->ref();
-           if ( override )
-               dir = runDir;
+            dir = runDir;
            bidi.status.last = runDir;
            bidi.status.lastStrong = runDir;
+           bidi.status.eor = runDir;
        }
     }
     adjustEmbedding = b;
@@ -917,7 +917,6 @@ void RenderBlock::bidiReorderLine(const BidiIterator &start, const BidiIterator
         case QChar::DirRLO:
         case QChar::DirLRO:
         case QChar::DirPDF:
-            bidi.eor = bidi.last;
             embed( dirCurrent, bidi );
             break;