Changeset 71566 in webkit


Ignore:
Timestamp:
Nov 8, 2010 1:35:58 PM (13 years ago)
Author:
xji@chromium.org
Message:

2010-11-08 Xiaomei Ji <xji@chromium.org>

Reviewed by Dan Bernstein.

Fix Unicode explicit bidi control characters are removed in editing operations,
such as insert/copy/cut/paste.
https://bugs.webkit.org/show_bug.cgi?id=25321

Unicode explicit bidi control characters were excluded in BidiRun and
consequently from InlineTextBoxes due to their effect on rendering complex
text with ATSUI.
The fix is including those characters in BidiRun and remove them from
ComplexTextRun with ATSUI.

Test: editing/inserting/insert-paste-bidi-control.html

fast/text/atsui-bidi-control.html

  • platform/graphics/mac/ComplexTextControllerATSUI.cpp: (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):
  • platform/text/BidiResolver.h: (WebCore::::checkDirectionInLowerRaiseEmbeddingLevel): (WebCore::::lowerExplicitEmbeddingLevel): (WebCore::::raiseExplicitEmbeddingLevel): (WebCore::::createBidiRunsForLine):

2010-11-08 Xiaomei Ji <xji@chromium.org>

Reviewed by Dan Bernstein.

Fix Unicode explicit bidi control characters are removed in editing operations,
such as insert/copy/cut/paste.
https://bugs.webkit.org/show_bug.cgi?id=25321

Unicode explicit bidi control characters were excluded in BidiRun and
consequently from InlineTextBoxes due to their effect on rendering complex
text with ATSUI.
The fix is including those characters in BidiRun and remove them from
ComplexTextRun with ATSUI.

  • editing/inserting/insert-paste-bidi-control-expected.txt: Added.
  • editing/inserting/insert-paste-bidi-control.html: Added.
  • editing/selection/extend-selection-expected.txt:
  • editing/selection/home-end-expected.txt:
  • fast/text/atsui-bidi-control-expected.txt: Added.
  • fast/text/atsui-bidi-control.html: Added.
  • platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
  • platform/mac/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt:
  • platform/mac/fast/text/international/bidi-control-chars-treated-as-ZWS-expected.txt:
  • platform/mac/fast/text/international/bidi-explicit-embedding-expected.txt:
  • platform/mac/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:
  • platform/mac/fast/text/international/bidi-neutral-run-expected.txt:
  • platform/mac/fast/text/international/bidi-override-expected.txt:
Location:
trunk
Files:
4 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r71563 r71566  
     12010-11-08  Xiaomei Ji  <xji@chromium.org>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Fix Unicode explicit bidi control characters are removed in editing operations,
     6        such as insert/copy/cut/paste.
     7        https://bugs.webkit.org/show_bug.cgi?id=25321
     8
     9        Unicode explicit bidi control characters were excluded in BidiRun and
     10        consequently from InlineTextBoxes due to their effect on rendering complex
     11        text with ATSUI.
     12        The fix is including those characters in BidiRun and remove them from
     13        ComplexTextRun with ATSUI.
     14
     15        * editing/inserting/insert-paste-bidi-control-expected.txt: Added.
     16        * editing/inserting/insert-paste-bidi-control.html: Added.
     17        * editing/selection/extend-selection-expected.txt:
     18        * editing/selection/home-end-expected.txt:
     19        * fast/text/atsui-bidi-control-expected.txt: Added.
     20        * fast/text/atsui-bidi-control.html: Added.
     21        * platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
     22        * platform/mac/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt:
     23        * platform/mac/fast/text/international/bidi-control-chars-treated-as-ZWS-expected.txt:
     24        * platform/mac/fast/text/international/bidi-explicit-embedding-expected.txt:
     25        * platform/mac/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:
     26        * platform/mac/fast/text/international/bidi-neutral-run-expected.txt:
     27        * platform/mac/fast/text/international/bidi-override-expected.txt:
     28
    1292010-11-08  David Hyatt  <hyatt@apple.com>
    230
  • trunk/LayoutTests/editing/selection/extend-selection-expected.txt

    r56639 r71566  
    2121Just testing what ever
    2222car means אבג.
    23 car דהו אבג.
    24 he said " car דהו אבג ."
    25 זחט יךכ לםמ ' he said " car דהו אבג " '?
     23‫car דהו אבג.‬
     24he said "‫car דהו אבג‬."
     25זחט יךכ לםמ '‪he said "‫car דהו אבג‬"‬'?
    2626אבג abc דהו
    2727edf זחט abrebg
     
    491491  Extending backward:  "car means ABC."[(0,14)]
    492492Test 17, LTR:
    493   Extending forward: "᪜car DEF ABC.᪝"[(1,1), (1,13)]
    494   Extending backward:  "᪜car DEF ABC.᪝"[(1,13)]
     493  Extending forward: "᪜car DEF ABC.᪝"[(0,0), (0,14)]
     494  Extending backward:  "᪜car DEF ABC.᪝"[(0,14)]
    495495Test 17, RTL:
    496   Extending forward: "᪜car DEF ABC.᪝"[(1,1), (1,13)]
    497   Extending backward:  "᪜car DEF ABC.᪝"[(1,13)]
     496  Extending forward: "᪜car DEF ABC.᪝"[(0,0), (0,14)]
     497  Extending backward:  "᪜car DEF ABC.᪝"[(0,14)]
    498498Test 18, LTR:
    499499  Extending forward: "he said "᪜car DEF ABC᪝.""[(0,0), (0,24)]
  • trunk/LayoutTests/editing/selection/home-end-expected.txt

    r43032 r71566  
    9090  Moving backward:  "car means ABC."[14, 0]
    9191Test 16, LTR:
    92   Moving forward: "᪜car DEF ABC.᪝"[1, 13]
    93   Moving backward:  "᪜car DEF ABC.᪝"[13, 1]
     92  Moving forward: "᪜car DEF ABC.᪝"[0, 14]
     93  Moving backward:  "᪜car DEF ABC.᪝"[14, 0]
    9494Test 16, RTL:
    95   Moving forward: "᪜car DEF ABC.᪝"[1, 13]
    96   Moving backward:  "᪜car DEF ABC.᪝"[13, 1]
     95  Moving forward: "᪜car DEF ABC.᪝"[0, 14]
     96  Moving backward:  "᪜car DEF ABC.᪝"[14, 0]
    9797Test 17, LTR:
    9898  Moving forward: "he said "᪜car DEF ABC᪝.""[0, 24]
  • trunk/LayoutTests/platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt

    r43664 r71566  
    2121  RenderBlock {DIV} at (0,72) size 207x19
    2222    RenderText {#text} at (-154,1) size 361x18
     23      text run at (-154,1) width 0 RTL: "\x{202C}"
    2324      text run at (-154,1) width 276 RTL: " \x{5D8}\x{5E7}\x{5E1}\x{5D8} \x{5E2}\x{5D1}\x{5E8}\x{5D9} \x{5DC}\x{5D3}\x{5D5}\x{5D2}\x{5DE}\x{5D0} \x{5D8}\x{5E7}\x{5E1}\x{5D8} \x{5E2}\x{5D1}\x{5E8}\x{5D9} \x{5DC}\x{5D3}\x{5D5}\x{5D2}\x{5DE}\x{5D0} "
    2425      text run at (122,1) width 81: "English Text"
    25       text run at (203,1) width 4 RTL: " "
     26      text run at (203,1) width 4 RTL: "\x{202B} "
    2627layer at (8,99) size 207x19 scrollX 154 scrollWidth 361
    2728  RenderBlock {DIV} at (0,91) size 207x19
    2829    RenderText {#text} at (-154,1) size 361x18
     30      text run at (-154,1) width 0 RTL: "\x{202C}"
    2931      text run at (-154,1) width 276 RTL: " \x{5D8}\x{5E7}\x{5E1}\x{5D8} \x{5E2}\x{5D1}\x{5E8}\x{5D9} \x{5DC}\x{5D3}\x{5D5}\x{5D2}\x{5DE}\x{5D0} \x{5D8}\x{5E7}\x{5E1}\x{5D8} \x{5E2}\x{5D1}\x{5E8}\x{5D9} \x{5DC}\x{5D3}\x{5D5}\x{5D2}\x{5DE}\x{5D0} "
    3032      text run at (122,1) width 81: "English Text"
    31       text run at (203,1) width 4 RTL: " "
     33      text run at (203,1) width 4 RTL: "\x{202B} "
    3234layer at (8,154) size 207x19 scrollWidth 262
    3335  RenderBlock {DIV} at (0,146) size 207x19
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt

    r42379 r71566  
    4343          RenderBlock {P} at (4,22) size 94x18
    4444            RenderText {#text} at (0,0) size 94x18
    45               text run at (0,0) width 94: "ABCDEFGHI"
     45              text run at (0,0) width 0 RTL: "\x{202C}"
     46              text run at (0,0) width 94: "\x{202B}ABCDEFGHI"
    4647          RenderBlock {P} at (4,40) size 94x18
    4748            RenderText {#text} at (0,0) size 34x18
    48               text run at (0,0) width 34: "ABC"
     49              text run at (0,0) width 34: "\x{202B}ABC"
    4950            RenderInline {SPAN} at (0,0) size 31x18
    5051              RenderText {#text} at (34,0) size 31x18
    5152                text run at (34,0) width 31: "DEF"
    52             RenderText {#text} at (65,0) size 29x18
     53            RenderText {#text} at (0,0) size 94x18
     54              text run at (0,0) width 0 RTL: "\x{202C}"
    5355              text run at (65,0) width 29: "GHI"
    5456          RenderBlock {P} at (4,58) size 94x18
    5557            RenderText {#text} at (0,0) size 94x18
    56               text run at (0,0) width 94 RTL override: "IHGFEDCBA"
     58              text run at (0,0) width 0 RTL: "\x{202C}"
     59              text run at (0,0) width 94 RTL override: "\x{202E}IHGFEDCBA"
    5760          RenderBlock {P} at (4,76) size 94x18
    5861            RenderText {#text} at (65,0) size 29x18
    59               text run at (65,0) width 29 RTL override: "IHG"
     62              text run at (65,0) width 29 RTL override: "\x{202E}IHG"
    6063            RenderInline {SPAN} at (0,0) size 31x18
    6164              RenderText {#text} at (34,0) size 31x18
    6265                text run at (34,0) width 31 RTL override: "FED"
    6366            RenderText {#text} at (0,0) size 34x18
     67              text run at (0,0) width 0 RTL: "\x{202C}"
    6468              text run at (0,0) width 34 RTL override: "CBA"
    6569          RenderBlock {P} at (4,94) size 94x18
    6670            RenderText {#text} at (0,0) size 94x18
    67               text run at (0,0) width 34 RTL override: "CBA"
    68               text run at (34,0) width 31: "DEF"
    69               text run at (65,0) width 29 RTL override: "IHG"
     71              text run at (0,0) width 0 RTL: "\x{202C}"
     72              text run at (0,0) width 34 RTL override: "\x{202C}CBA"
     73              text run at (34,0) width 31: "\x{202B}DEF"
     74              text run at (65,0) width 29 RTL override: "\x{202E}IHG"
    7075          RenderBlock {P} at (4,112) size 94x18
    7176            RenderText {#text} at (0,0) size 94x18
    72               text run at (0,0) width 34 RTL override: "CBA"
    73               text run at (34,0) width 31 RTL override: "FED"
    74               text run at (65,0) width 29 RTL override: "IHG"
     77              text run at (0,0) width 0 RTL: "\x{202C}"
     78              text run at (0,0) width 34 RTL override: "\x{202C}CBA"
     79              text run at (34,0) width 31 RTL override: "\x{202E}FED"
     80              text run at (65,0) width 29 RTL override: "\x{202E}IHG"
    7581          RenderBlock {P} at (4,130) size 94x18
    7682            RenderText {#text} at (0,0) size 94x18
    77               text run at (0,0) width 34 RTL override: "CBA"
    78               text run at (34,0) width 31 RTL override: "FED"
    79               text run at (65,0) width 29 RTL override: "IHG"
     83              text run at (0,0) width 0 RTL: "\x{202C}"
     84              text run at (0,0) width 34 RTL override: "\x{202C}CBA"
     85              text run at (34,0) width 31 RTL override: "\x{202E}FED"
     86              text run at (65,0) width 29 RTL override: "\x{202E}IHG"
    8087          RenderBlock {P} at (4,148) size 94x18
    8188            RenderText {#text} at (0,0) size 94x18
    82               text run at (0,0) width 34 RTL override: "CBA"
    83               text run at (34,0) width 31 LTR override: "DEF"
    84               text run at (65,0) width 29 RTL override: "IHG"
     89              text run at (0,0) width 0 RTL: "\x{202C}"
     90              text run at (0,0) width 34 RTL override: "\x{202C}CBA"
     91              text run at (34,0) width 31 LTR override: "\x{202D}DEF"
     92              text run at (65,0) width 29 RTL override: "\x{202E}IHG"
    8593        RenderText {#text} at (108,81) size 4x18
    8694          text run at (108,81) width 4: " "
     
    103111          RenderBlock {P} at (4,42) size 28x19
    104112            RenderText {#text} at (0,1) size 27x18
    105               text run at (0,1) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
     113              text run at (0,1) width 27 RTL: "\x{202A}\x{5D0}\x{5D1}\x{5D2}"
     114              text run at (27,1) width 0: "\x{202C}"
    106115          RenderBlock {P} at (4,61) size 28x19
    107116            RenderText {#text} at (0,1) size 27x18
    108               text run at (0,1) width 27 LTR override: "\x{5D2}\x{5D1}\x{5D0}"
     117              text run at (0,1) width 27 LTR override: "\x{202D}\x{5D2}\x{5D1}\x{5D0}"
     118              text run at (27,1) width 0: "\x{202C}"
    109119        RenderText {#text} at (154,81) size 4x18
    110120          text run at (154,81) width 4: " "
     
    241251              text run at (0,1) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
    242252              text run at (27,1) width 4: " "
    243               text run at (31,1) width 38: "ABC "
     253              text run at (31,1) width 38: "\x{202A}ABC "
    244254              text run at (69,1) width 25 RTL: "\x{5D3}\x{5D4}\x{5D5}"
    245255              text run at (94,1) width 35: " DEF"
    246               text run at (129,1) width 4: " "
     256              text run at (129,1) width 4: "\x{202C} "
    247257              text run at (133,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    248258          RenderBlock {P} at (4,80) size 165x19
    249259            RenderText {#text} at (0,1) size 161x18
    250               text run at (0,1) width 31 RTL: " \x{5D0}\x{5D1}\x{5D2}"
     260              text run at (0,1) width 31 RTL: "\x{202C} \x{5D0}\x{5D1}\x{5D2}"
    251261              text run at (31,1) width 34: "ABC"
    252262              text run at (65,1) width 33 RTL: " \x{5D3}\x{5D4}\x{5D5} "
    253               text run at (98,1) width 31: "DEF"
     263              text run at (98,1) width 31: "\x{202B}DEF"
    254264              text run at (129,1) width 32 RTL: "\x{5D6}\x{5D7}\x{5D8} "
    255265          RenderBlock {P} at (4,99) size 165x19
    256266            RenderText {#text} at (0,1) size 161x18
    257267              text run at (0,1) width 31 RTL: " \x{5D0}\x{5D1}\x{5D2}"
    258               text run at (31,1) width 34: "ABC"
     268              text run at (31,1) width 34: "\x{202B}ABC"
    259269              text run at (65,1) width 29 RTL: "\x{5D3}\x{5D4}\x{5D5} "
    260               text run at (94,1) width 39: " DEF "
     270              text run at (94,1) width 39: "\x{202C} DEF "
    261271              text run at (133,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    262272          RenderBlock {P} at (4,118) size 165x19
    263273            RenderText {#text} at (0,1) size 161x18
    264               text run at (0,1) width 65 RTL override: "CBA \x{5D0}\x{5D1}\x{5D2}"
     274              text run at (0,1) width 65 RTL override: "\x{202E}CBA \x{5D0}\x{5D1}\x{5D2}"
    265275              text run at (65,1) width 29 RTL: "\x{5D3}\x{5D4}\x{5D5} "
    266               text run at (94,1) width 39: " DEF "
     276              text run at (94,1) width 39: "\x{202C} DEF "
    267277              text run at (133,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    268278          RenderBlock {P} at (4,137) size 165x19
     
    270280              text run at (0,1) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
    271281              text run at (27,1) width 4: " "
    272               text run at (31,1) width 63 LTR override: "ABC \x{5D5}\x{5D4}\x{5D3}"
    273               text run at (94,1) width 39: " DEF "
     282              text run at (31,1) width 63 LTR override: "\x{202D}ABC \x{5D5}\x{5D4}\x{5D3}"
     283              text run at (94,1) width 39: "\x{202C} DEF "
    274284              text run at (133,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    275285          RenderBlock {P} at (4,156) size 165x19
    276286            RenderText {#text} at (0,1) size 161x18
    277287              text run at (0,1) width 31 RTL: " \x{5D0}\x{5D1}\x{5D2}"
    278               text run at (31,1) width 63 LTR override: "ABC \x{5D5}\x{5D4}\x{5D3}"
    279               text run at (94,1) width 35: " DEF"
     288              text run at (31,1) width 63 LTR override: "\x{202D}ABC \x{5D5}\x{5D4}\x{5D3}"
     289              text run at (94,1) width 35: "\x{202C} DEF"
    280290              text run at (129,1) width 32 RTL: "\x{5D6}\x{5D7}\x{5D8} "
    281291        RenderText {#text} at (452,81) size 4x18
     
    439449          RenderBlock {P} at (4,23) size 198x19
    440450            RenderText {#text} at (0,1) size 194x18
    441               text run at (0,1) width 98 RTL override: "ABC \x{5D3}\x{5D4}\x{5D5} DEF"
     451              text run at (0,1) width 98 RTL override: "\x{202E}ABC \x{5D3}\x{5D4}\x{5D5} DEF"
    442452              text run at (98,1) width 31 RTL: "\x{5D0}\x{5D1}\x{5D2} "
    443               text run at (129,1) width 37: " GHI "
     453              text run at (129,1) width 37: "\x{202C} GHI "
    444454              text run at (166,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    445455        RenderText {#text} at (212,200) size 4x18
     
    522532              text run at (0,1) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
    523533              text run at (27,1) width 42: " ABC "
    524               text run at (69,1) width 60 RTL override: "\x{5D3}\x{5D4}\x{5D5} DEF"
    525               text run at (129,1) width 37: " GHI "
     534              text run at (69,1) width 60 RTL override: "\x{202E}\x{5D3}\x{5D4}\x{5D5} DEF"
     535              text run at (129,1) width 37: "\x{202C} GHI "
    526536              text run at (166,1) width 28 RTL: "\x{5D6}\x{5D7}\x{5D8}"
    527537        RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-control-chars-treated-as-ZWS-expected.txt

    r30635 r71566  
    1111        RenderText {#text} at (0,0) size 14x17
    1212          text run at (0,0) width 7: "a"
    13           text run at (7,0) width 7 LTR override: "e\x{300}"
     13          text run at (7,0) width 7 LTR override: "\x{202D}e\x{300}"
    1414        RenderBR {BR} at (14,14) size 0x0
    1515        RenderText {#text} at (0,18) size 14x17
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-explicit-embedding-expected.txt

    r25970 r71566  
    4848          text run at (60,0) width 5 RTL: " "
    4949          text run at (65,0) width 21: "45"
    50           text run at (86,0) width 6 RTL: "("
    51           text run at (92,0) width 31: " fgh"
     50          text run at (86,0) width 6 RTL: "\x{202B}("
     51          text run at (92,0) width 31: "\x{202C} fgh"
    5252      RenderBlock {P} at (0,206) size 784x18
    5353        RenderText {#text} at (0,0) size 110x18
     
    5555          text run at (33,0) width 6 RTL: "]"
    5656          text run at (39,0) width 40: "de fg"
    57           text run at (79,0) width 6 RTL: "("
    58           text run at (85,0) width 25: " hij"
     57          text run at (79,0) width 6 RTL: "\x{202B}("
     58          text run at (85,0) width 25: "\x{202C} hij"
    5959      RenderBlock {P} at (0,240) size 784x18
    6060        RenderText {#text} at (0,0) size 11x18
     
    8282            text run at (11,0) width 6 RTL: "]"
    8383            text run at (17,0) width 11: "2"
    84             text run at (28,0) width 6 RTL: "("
     84            text run at (28,0) width 6 RTL: "\x{202B}("
     85            text run at (34,0) width 0: "\x{202C}"
    8586        RenderText {#text} at (0,0) size 0x0
    8687      RenderBlock {P} at (0,342) size 784x18
     
    9192            text run at (11,0) width 6 RTL: "]"
    9293            text run at (17,0) width 9: "a"
    93             text run at (26,0) width 6 RTL: "("
     94            text run at (26,0) width 6 RTL: "\x{202B}("
     95            text run at (32,0) width 0: "\x{202C}"
    9496        RenderText {#text} at (0,0) size 0x0
    9597      RenderBlock {P} at (0,376) size 784x18
     
    98100          text run at (11,0) width 26 RTL: " \x{5D2}\x{5D3}]"
    99101          text run at (37,0) width 19: "ab"
    100           text run at (56,0) width 6 RTL: "("
     102          text run at (56,0) width 6 RTL: "\x{202B}("
     103          text run at (62,0) width 0: "\x{202C}"
    101104      RenderBlock {P} at (0,410) size 784x18
    102105        RenderInline {SPAN} at (0,0) size 102x18
     
    114117          text run at (34,0) width 37 RTL: " \x{5D0}\x{5D1}\x{5D2} "
    115118          text run at (71,0) width 25: "def"
    116           text run at (96,0) width 6 RTL: "("
     119          text run at (96,0) width 6 RTL: "\x{202B}("
     120          text run at (102,0) width 0: "\x{202C}"
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt

    r42379 r71566  
    8787          text run at (0,1) width 25 RTL: "\x{5D3}\x{5D4}\x{5D5}"
    8888          text run at (25,1) width 10: "(["
    89           text run at (35,1) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
     89          text run at (35,1) width 27 RTL: "\x{202C}\x{5D0}\x{5D1}\x{5D2}"
     90          text run at (62,1) width 0: "\x{202A}"
    9091      RenderBlock {P} at (0,421) size 784x19
    9192        RenderText {#text} at (0,1) size 35x18
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-neutral-run-expected.txt

    r42389 r71566  
    4949        RenderBlock {P} at (0,318) size 769x18
    5050          RenderText {#text} at (0,0) size 35x18
    51             text run at (0,0) width 7: "?"
    52             text run at (7,0) width 28: "(^cd"
     51            text run at (0,0) width 7: "\x{202A}?"
     52            text run at (7,0) width 28: "\x{202C}(^cd"
    5353        RenderBlock {P} at (0,352) size 769x18
    5454          RenderText {#text} at (0,0) size 35x18
    55             text run at (0,0) width 7 RTL: "?"
    56             text run at (7,0) width 28: "(^cd"
     55            text run at (0,0) width 7 RTL: "\x{202B}?"
     56            text run at (7,0) width 28: "\x{202C}(^cd"
    5757        RenderBlock {P} at (0,386) size 769x19
    5858          RenderText {#text} at (0,1) size 43x18
     
    9696        RenderBlock {P} at (0,706) size 769x19
    9797          RenderText {#text} at (0,1) size 35x18
    98             text run at (0,1) width 7: "?"
    99             text run at (7,1) width 13: "(^"
     98            text run at (0,1) width 7: "\x{202A}?"
     99            text run at (7,1) width 13: "\x{202C}(^"
    100100            text run at (20,1) width 15 RTL: "\x{5D2}\x{5D3}"
    101101        RenderBlock {P} at (0,741) size 769x19
    102102          RenderText {#text} at (0,1) size 35x18
    103             text run at (0,1) width 28 RTL: "(^\x{5D2}\x{5D3}"
    104             text run at (28,1) width 7 RTL: "?"
     103            text run at (0,1) width 28 RTL: "\x{202C}(^\x{5D2}\x{5D3}"
     104            text run at (28,1) width 7 RTL: "\x{202B}?"
    105105        RenderBlock {P} at (0,776) size 769x20
    106106          RenderText {#text} at (0,2) size 45x18
     
    144144        RenderBlock {P} at (0,1100) size 769x20
    145145          RenderText {#text} at (0,2) size 37x18
    146             text run at (0,2) width 7: "?"
    147             text run at (7,2) width 13: "(^"
     146            text run at (0,2) width 7: "\x{202A}?"
     147            text run at (7,2) width 13: "\x{202C}(^"
    148148            text run at (20,2) width 17 RTL: "\x{62C}\x{62F}"
    149149        RenderBlock {P} at (0,1136) size 769x20
    150150          RenderText {#text} at (0,2) size 37x18
    151             text run at (0,2) width 30 RTL: "(^\x{62C}\x{62F}"
    152             text run at (30,2) width 7 RTL: "?"
     151            text run at (0,2) width 30 RTL: "\x{202C}(^\x{62C}\x{62F}"
     152            text run at (30,2) width 7 RTL: "\x{202B}?"
    153153        RenderBlock {P} at (0,1172) size 769x19
    154154          RenderText {#text} at (0,1) size 63x18
     
    214214        RenderBlock {P} at (0,1492) size 769x19
    215215          RenderText {#text} at (0,1) size 55x18
    216             text run at (0,1) width 7: "?"
    217             text run at (7,1) width 29: "(^34"
     216            text run at (0,1) width 7: "\x{202A}?"
     217            text run at (7,1) width 29: "\x{202C}(^34"
    218218            text run at (36,1) width 12 RTL: "\x{5E9}"
    219219            text run at (48,1) width 7: "z"
     
    222222            text run at (0,1) width 12 RTL: "\x{5E9}"
    223223            text run at (12,1) width 16: "34"
    224             text run at (28,1) width 13 RTL: "(^"
    225             text run at (41,1) width 7 RTL: "?"
     224            text run at (28,1) width 13 RTL: "\x{202C}(^"
     225            text run at (41,1) width 7 RTL: "\x{202B}?"
    226226            text run at (48,1) width 7: "z"
    227227        RenderBlock {P} at (0,1562) size 769x20
     
    291291        RenderBlock {P} at (0,1886) size 769x20
    292292          RenderText {#text} at (0,2) size 55x18
    293             text run at (0,2) width 7: "?"
    294             text run at (7,2) width 13: "(^"
     293            text run at (0,2) width 7: "\x{202A}?"
     294            text run at (7,2) width 13: "\x{202C}(^"
    295295            text run at (20,2) width 12 RTL: "\x{5E9}"
    296296            text run at (32,2) width 16: "\x{663}\x{664}"
     
    300300            text run at (0,2) width 12 RTL: "\x{5E9}"
    301301            text run at (12,2) width 16: "\x{663}\x{664}"
    302             text run at (28,2) width 13 RTL: "(^"
    303             text run at (41,2) width 7 RTL: "?"
     302            text run at (28,2) width 13 RTL: "\x{202C}(^"
     303            text run at (41,2) width 7 RTL: "\x{202B}?"
    304304            text run at (48,2) width 7: "z"
    305305        RenderBlock {P} at (0,1958) size 769x18
    306306          RenderText {#text} at (0,0) size 33x18
    307307            text run at (0,0) width 28: "ab(^"
    308             text run at (28,0) width 5: "!"
     308            text run at (28,0) width 5: "\x{202A}!"
     309            text run at (33,0) width 0: "\x{202C}"
    309310        RenderBlock {P} at (0,1992) size 769x19
    310311          RenderText {#text} at (0,1) size 38x18
    311312            text run at (0,1) width 20 RTL: "\x{5D0}\x{5D1}"
    312313            text run at (20,1) width 13: "(^"
    313             text run at (33,1) width 5: "!"
     314            text run at (33,1) width 5: "\x{202A}!"
     315            text run at (38,1) width 0: "\x{202C}"
    314316        RenderBlock {P} at (0,2027) size 769x20
    315317          RenderText {#text} at (0,2) size 33x18
    316318            text run at (0,2) width 15 RTL: "\x{627}\x{628}"
    317319            text run at (15,2) width 13: "(^"
    318             text run at (28,2) width 5: "!"
     320            text run at (28,2) width 5: "\x{202A}!"
     321            text run at (33,2) width 0: "\x{202C}"
    319322        RenderBlock {P} at (0,2063) size 769x18
    320323          RenderText {#text} at (0,0) size 49x18
    321324            text run at (0,0) width 44: "ab12(^"
    322             text run at (44,0) width 5: "!"
     325            text run at (44,0) width 5: "\x{202A}!"
     326            text run at (49,0) width 0: "\x{202C}"
    323327        RenderBlock {P} at (0,2097) size 769x19
    324328          RenderText {#text} at (0,1) size 54x18
     
    326330            text run at (16,1) width 20 RTL: "\x{5D0}\x{5D1}"
    327331            text run at (36,1) width 13: "(^"
    328             text run at (49,1) width 5: "!"
     332            text run at (49,1) width 5: "\x{202A}!"
     333            text run at (54,1) width 0: "\x{202C}"
    329334        RenderBlock {P} at (0,2132) size 769x20
    330335          RenderText {#text} at (0,2) size 49x18
     
    332337            text run at (16,2) width 15 RTL: "\x{627}\x{628}"
    333338            text run at (31,2) width 13: "(^"
    334             text run at (44,2) width 5: "!"
     339            text run at (44,2) width 5: "\x{202A}!"
     340            text run at (49,2) width 0: "\x{202C}"
    335341        RenderBlock {P} at (0,2168) size 769x20
    336342          RenderText {#text} at (0,2) size 49x18
     
    338344            text run at (15,2) width 16: "\x{661}\x{662}"
    339345            text run at (31,2) width 13: "(^"
    340             text run at (44,2) width 5: "!"
     346            text run at (44,2) width 5: "\x{202A}!"
     347            text run at (49,2) width 0: "\x{202C}"
    341348        RenderBlock {P} at (0,2204) size 769x20
    342349          RenderText {#text} at (0,2) size 54x18
     
    344351            text run at (16,2) width 20 RTL: "\x{5D0}\x{5D1}"
    345352            text run at (36,2) width 13: "(^"
    346             text run at (49,2) width 5: "!"
     353            text run at (49,2) width 5: "\x{202A}!"
     354            text run at (54,2) width 0: "\x{202C}"
    347355        RenderBlock {P} at (0,2240) size 769x20
    348356          RenderText {#text} at (0,2) size 49x18
     
    350358            text run at (16,2) width 15 RTL: "\x{627}\x{628}"
    351359            text run at (31,2) width 13: "(^"
    352             text run at (44,2) width 5: "!"
     360            text run at (44,2) width 5: "\x{202A}!"
     361            text run at (49,2) width 0: "\x{202C}"
    353362        RenderBlock {P} at (0,2276) size 769x18
    354363          RenderText {#text} at (0,0) size 25x18
    355             text run at (0,0) width 7: "?"
    356             text run at (7,0) width 13: "(^"
    357             text run at (20,0) width 5: "!"
     364            text run at (0,0) width 7: "\x{202A}?"
     365            text run at (7,0) width 13: "\x{202C}(^"
     366            text run at (20,0) width 5: "\x{202A}!"
     367            text run at (25,0) width 0: "\x{202C}"
    358368        RenderBlock {P} at (0,2310) size 769x18
    359369          RenderText {#text} at (0,0) size 25x18
    360             text run at (0,0) width 7 RTL: "?"
    361             text run at (7,0) width 13: "(^"
    362             text run at (20,0) width 5: "!"
     370            text run at (0,0) width 7 RTL: "\x{202B}?"
     371            text run at (7,0) width 13: "\x{202C}(^"
     372            text run at (20,0) width 5: "\x{202A}!"
     373            text run at (25,0) width 0: "\x{202C}"
    363374        RenderBlock {P} at (0,2344) size 769x18
    364375          RenderText {#text} at (0,0) size 33x18
    365376            text run at (0,0) width 28: "ab(^"
    366             text run at (28,0) width 5 RTL: "!"
     377            text run at (28,0) width 5 RTL: "\x{202B}!"
     378            text run at (33,0) width 0: "\x{202C}"
    367379        RenderBlock {P} at (0,2378) size 769x19
    368380          RenderText {#text} at (0,1) size 38x18
    369             text run at (0,1) width 5 RTL: "!"
     381            text run at (0,1) width 5 RTL: "\x{202B}!"
    370382            text run at (5,1) width 33 RTL: "\x{5D0}\x{5D1}(^"
     383            text run at (38,1) width 0: "\x{202C}"
    371384        RenderBlock {P} at (0,2413) size 769x20
    372385          RenderText {#text} at (0,2) size 33x18
    373             text run at (0,2) width 5 RTL: "!"
     386            text run at (0,2) width 5 RTL: "\x{202B}!"
    374387            text run at (5,2) width 28 RTL: "\x{627}\x{628}(^"
     388            text run at (33,2) width 0: "\x{202C}"
    375389        RenderBlock {P} at (0,2449) size 769x18
    376390          RenderText {#text} at (0,0) size 49x18
    377391            text run at (0,0) width 44: "ab12(^"
    378             text run at (44,0) width 5 RTL: "!"
     392            text run at (44,0) width 5 RTL: "\x{202B}!"
     393            text run at (49,0) width 0: "\x{202C}"
    379394        RenderBlock {P} at (0,2483) size 769x19
    380395          RenderText {#text} at (0,1) size 54x18
    381             text run at (0,1) width 5 RTL: "!"
     396            text run at (0,1) width 5 RTL: "\x{202B}!"
    382397            text run at (5,1) width 13 RTL: "(^"
    383398            text run at (18,1) width 16: "12"
    384399            text run at (34,1) width 20 RTL: "\x{5D0}\x{5D1}"
     400            text run at (54,1) width 0: "\x{202C}"
    385401        RenderBlock {P} at (0,2518) size 769x20
    386402          RenderText {#text} at (0,2) size 49x18
    387             text run at (0,2) width 5 RTL: "!"
     403            text run at (0,2) width 5 RTL: "\x{202B}!"
    388404            text run at (5,2) width 13 RTL: "(^"
    389405            text run at (18,2) width 16: "12"
    390406            text run at (34,2) width 15 RTL: "\x{627}\x{628}"
     407            text run at (49,2) width 0: "\x{202C}"
    391408        RenderBlock {P} at (0,2554) size 769x20
    392409          RenderText {#text} at (0,2) size 49x18
    393410            text run at (0,2) width 15: "ab"
    394             text run at (15,2) width 5 RTL: "!"
     411            text run at (15,2) width 5 RTL: "\x{202B}!"
    395412            text run at (20,2) width 13 RTL: "(^"
    396413            text run at (33,2) width 16: "\x{661}\x{662}"
     414            text run at (49,2) width 0: "\x{202C}"
    397415        RenderBlock {P} at (0,2590) size 769x20
    398416          RenderText {#text} at (0,2) size 54x18
    399             text run at (0,2) width 5 RTL: "!"
     417            text run at (0,2) width 5 RTL: "\x{202B}!"
    400418            text run at (5,2) width 13 RTL: "(^"
    401419            text run at (18,2) width 16: "\x{661}\x{662}"
    402420            text run at (34,2) width 20 RTL: "\x{5D0}\x{5D1}"
     421            text run at (54,2) width 0: "\x{202C}"
    403422        RenderBlock {P} at (0,2626) size 769x20
    404423          RenderText {#text} at (0,2) size 49x18
    405             text run at (0,2) width 5 RTL: "!"
     424            text run at (0,2) width 5 RTL: "\x{202B}!"
    406425            text run at (5,2) width 13 RTL: "(^"
    407426            text run at (18,2) width 16: "\x{661}\x{662}"
    408427            text run at (34,2) width 15 RTL: "\x{627}\x{628}"
     428            text run at (49,2) width 0: "\x{202C}"
    409429        RenderBlock {P} at (0,2662) size 769x18
    410430          RenderText {#text} at (0,0) size 25x18
    411             text run at (0,0) width 7: "?"
    412             text run at (7,0) width 13: "(^"
    413             text run at (20,0) width 5 RTL: "!"
     431            text run at (0,0) width 7: "\x{202A}?"
     432            text run at (7,0) width 13: "\x{202C}(^"
     433            text run at (20,0) width 5 RTL: "\x{202B}!"
     434            text run at (25,0) width 0: "\x{202C}"
    414435        RenderBlock {P} at (0,2696) size 769x18
    415436          RenderText {#text} at (0,0) size 25x18
    416             text run at (0,0) width 5 RTL: "!"
    417             text run at (5,0) width 13 RTL: "(^"
    418             text run at (18,0) width 7 RTL: "?"
     437            text run at (0,0) width 5 RTL: "\x{202B}!"
     438            text run at (5,0) width 13 RTL: "\x{202C}(^"
     439            text run at (18,0) width 7 RTL: "\x{202B}?"
     440            text run at (25,0) width 0: "\x{202C}"
    419441        RenderBlock {P} at (0,2730) size 769x18
    420442          RenderText {#text} at (0,0) size 28x18
    421             text run at (0,0) width 28: "ab(^"
     443            text run at (0,0) width 28: "\x{202A}ab(^"
     444            text run at (28,0) width 0: "\x{202C}"
    422445        RenderBlock {P} at (0,2764) size 769x19
    423446          RenderText {#text} at (0,1) size 33x18
    424             text run at (0,1) width 20 RTL: "\x{5D0}\x{5D1}"
     447            text run at (0,1) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    425448            text run at (20,1) width 13: "(^"
     449            text run at (33,1) width 0: "\x{202C}"
    426450        RenderBlock {P} at (0,2799) size 769x20
    427451          RenderText {#text} at (0,2) size 28x18
    428             text run at (0,2) width 15 RTL: "\x{627}\x{628}"
     452            text run at (0,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    429453            text run at (15,2) width 13: "(^"
     454            text run at (28,2) width 0: "\x{202C}"
    430455        RenderBlock {P} at (0,2835) size 769x18
    431456          RenderText {#text} at (0,0) size 44x18
    432             text run at (0,0) width 44: "ab12(^"
     457            text run at (0,0) width 44: "\x{202A}ab12(^"
     458            text run at (44,0) width 0: "\x{202C}"
    433459        RenderBlock {P} at (0,2869) size 769x19
    434460          RenderText {#text} at (0,1) size 49x18
    435461            text run at (0,1) width 16: "12"
    436             text run at (16,1) width 20 RTL: "\x{5D0}\x{5D1}"
     462            text run at (16,1) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    437463            text run at (36,1) width 13: "(^"
     464            text run at (49,1) width 0: "\x{202C}"
    438465        RenderBlock {P} at (0,2904) size 769x20
    439466          RenderText {#text} at (0,2) size 44x18
    440467            text run at (0,2) width 16: "12"
    441             text run at (16,2) width 15 RTL: "\x{627}\x{628}"
     468            text run at (16,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    442469            text run at (31,2) width 13: "(^"
     470            text run at (44,2) width 0: "\x{202C}"
    443471        RenderBlock {P} at (0,2940) size 769x20
    444472          RenderText {#text} at (0,2) size 44x18
    445             text run at (0,2) width 15: "ab"
     473            text run at (0,2) width 15: "\x{202A}ab"
    446474            text run at (15,2) width 16: "\x{661}\x{662}"
    447475            text run at (31,2) width 13: "(^"
     476            text run at (44,2) width 0: "\x{202C}"
    448477        RenderBlock {P} at (0,2976) size 769x20
    449478          RenderText {#text} at (0,2) size 49x18
    450479            text run at (0,2) width 16: "\x{661}\x{662}"
    451             text run at (16,2) width 20 RTL: "\x{5D0}\x{5D1}"
     480            text run at (16,2) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    452481            text run at (36,2) width 13: "(^"
     482            text run at (49,2) width 0: "\x{202C}"
    453483        RenderBlock {P} at (0,3012) size 769x20
    454484          RenderText {#text} at (0,2) size 44x18
    455485            text run at (0,2) width 16: "\x{661}\x{662}"
    456             text run at (16,2) width 15 RTL: "\x{627}\x{628}"
     486            text run at (16,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    457487            text run at (31,2) width 13: "(^"
     488            text run at (44,2) width 0: "\x{202C}"
    458489        RenderBlock {P} at (0,3048) size 769x18
    459490          RenderText {#text} at (0,0) size 20x18
    460             text run at (0,0) width 7: "?"
    461             text run at (7,0) width 13: "(^"
     491            text run at (0,0) width 0: "\x{202A}"
     492            text run at (0,0) width 7: "\x{202A}?"
     493            text run at (7,0) width 13: "\x{202C}(^"
     494            text run at (20,0) width 0: "\x{202C}"
    462495        RenderBlock {P} at (0,3082) size 769x18
    463496          RenderText {#text} at (0,0) size 20x18
    464             text run at (0,0) width 7 RTL: "?"
    465             text run at (7,0) width 13: "(^"
     497            text run at (0,0) width 0: "\x{202A}"
     498            text run at (0,0) width 7 RTL: "\x{202B}?"
     499            text run at (7,0) width 13: "\x{202C}(^"
     500            text run at (20,0) width 0: "\x{202C}"
    466501      RenderBlock {DIV} at (0,3150) size 769x3100
    467502        RenderBlock {P} at (0,0) size 769x18
     
    510545        RenderBlock {P} at (0,318) size 769x18
    511546          RenderText {#text} at (0,0) size 35x18
    512             text run at (0,0) width 7: "?"
    513             text run at (7,0) width 28: "(^cd"
     547            text run at (0,0) width 7: "\x{202A}?"
     548            text run at (7,0) width 28: "\x{202C}(^cd"
    514549        RenderBlock {P} at (0,352) size 769x18
    515550          RenderText {#text} at (0,0) size 35x18
    516551            text run at (0,0) width 15: "cd"
    517             text run at (15,0) width 13 RTL: "(^"
    518             text run at (28,0) width 7 RTL: "?"
     552            text run at (15,0) width 13 RTL: "\x{202C}(^"
     553            text run at (28,0) width 7 RTL: "\x{202B}?"
    519554        RenderBlock {P} at (0,386) size 769x19
    520555          RenderText {#text} at (0,1) size 43x18
     
    557592        RenderBlock {P} at (0,706) size 769x19
    558593          RenderText {#text} at (0,1) size 35x18
    559             text run at (0,1) width 28 RTL: "(^\x{5D2}\x{5D3}"
    560             text run at (28,1) width 7: "?"
     594            text run at (0,1) width 28 RTL: "\x{202C}(^\x{5D2}\x{5D3}"
     595            text run at (28,1) width 7: "\x{202A}?"
    561596        RenderBlock {P} at (0,741) size 769x19
    562597          RenderText {#text} at (0,1) size 35x18
    563             text run at (0,1) width 28 RTL: "(^\x{5D2}\x{5D3}"
    564             text run at (28,1) width 7 RTL: "?"
     598            text run at (0,1) width 28 RTL: "\x{202C}(^\x{5D2}\x{5D3}"
     599            text run at (28,1) width 7 RTL: "\x{202B}?"
    565600        RenderBlock {P} at (0,776) size 769x20
    566601          RenderText {#text} at (0,2) size 45x18
     
    603638        RenderBlock {P} at (0,1100) size 769x20
    604639          RenderText {#text} at (0,2) size 37x18
    605             text run at (0,2) width 30 RTL: "(^\x{62C}\x{62F}"
    606             text run at (30,2) width 7: "?"
     640            text run at (0,2) width 30 RTL: "\x{202C}(^\x{62C}\x{62F}"
     641            text run at (30,2) width 7: "\x{202A}?"
    607642        RenderBlock {P} at (0,1136) size 769x20
    608643          RenderText {#text} at (0,2) size 37x18
    609             text run at (0,2) width 30 RTL: "(^\x{62C}\x{62F}"
    610             text run at (30,2) width 7 RTL: "?"
     644            text run at (0,2) width 30 RTL: "\x{202C}(^\x{62C}\x{62F}"
     645            text run at (30,2) width 7 RTL: "\x{202B}?"
    611646        RenderBlock {P} at (0,1172) size 769x19
    612647          RenderText {#text} at (0,1) size 63x18
     
    674709            text run at (0,1) width 7: "z"
    675710            text run at (7,1) width 12 RTL: "\x{5E9}"
    676             text run at (19,1) width 7: "?"
    677             text run at (26,1) width 29: "(^34"
     711            text run at (19,1) width 7: "\x{202A}?"
     712            text run at (26,1) width 29: "\x{202C}(^34"
    678713        RenderBlock {P} at (0,1527) size 769x19
    679714          RenderText {#text} at (0,1) size 55x18
     
    681716            text run at (7,1) width 12 RTL: "\x{5E9}"
    682717            text run at (19,1) width 16: "34"
    683             text run at (35,1) width 13 RTL: "(^"
    684             text run at (48,1) width 7 RTL: "?"
     718            text run at (35,1) width 13 RTL: "\x{202C}(^"
     719            text run at (48,1) width 7 RTL: "\x{202B}?"
    685720        RenderBlock {P} at (0,1562) size 769x20
    686721          RenderText {#text} at (0,2) size 63x18
     
    753788            text run at (7,2) width 12 RTL: "\x{5E9}"
    754789            text run at (19,2) width 16: "\x{663}\x{664}"
    755             text run at (35,2) width 13 RTL: "(^"
    756             text run at (48,2) width 7: "?"
     790            text run at (35,2) width 13 RTL: "\x{202C}(^"
     791            text run at (48,2) width 7: "\x{202A}?"
    757792        RenderBlock {P} at (0,1922) size 769x20
    758793          RenderText {#text} at (0,2) size 55x18
     
    760795            text run at (7,2) width 12 RTL: "\x{5E9}"
    761796            text run at (19,2) width 16: "\x{663}\x{664}"
    762             text run at (35,2) width 13 RTL: "(^"
    763             text run at (48,2) width 7 RTL: "?"
     797            text run at (35,2) width 13 RTL: "\x{202C}(^"
     798            text run at (48,2) width 7 RTL: "\x{202B}?"
    764799        RenderBlock {P} at (0,1958) size 769x18
    765800          RenderText {#text} at (0,0) size 33x18
     801            text run at (0,0) width 0 RTL: "\x{202C}"
    766802            text run at (0,0) width 28: "ab(^"
    767             text run at (28,0) width 5: "!"
     803            text run at (28,0) width 5: "\x{202A}!"
    768804        RenderBlock {P} at (0,1992) size 769x19
    769805          RenderText {#text} at (0,1) size 38x18
    770             text run at (0,1) width 5: "!"
     806            text run at (0,1) width 0 RTL: "\x{202C}"
     807            text run at (0,1) width 5: "\x{202A}!"
    771808            text run at (5,1) width 33 RTL: "\x{5D0}\x{5D1}(^"
    772809        RenderBlock {P} at (0,2027) size 769x20
    773810          RenderText {#text} at (0,2) size 33x18
    774             text run at (0,2) width 5: "!"
     811            text run at (0,2) width 0 RTL: "\x{202C}"
     812            text run at (0,2) width 5: "\x{202A}!"
    775813            text run at (5,2) width 28 RTL: "\x{627}\x{628}(^"
    776814        RenderBlock {P} at (0,2063) size 769x18
    777815          RenderText {#text} at (0,0) size 49x18
     816            text run at (0,0) width 0 RTL: "\x{202C}"
    778817            text run at (0,0) width 44: "ab12(^"
    779             text run at (44,0) width 5: "!"
     818            text run at (44,0) width 5: "\x{202A}!"
    780819        RenderBlock {P} at (0,2097) size 769x19
    781820          RenderText {#text} at (0,1) size 54x18
    782             text run at (0,1) width 5: "!"
     821            text run at (0,1) width 0 RTL: "\x{202C}"
     822            text run at (0,1) width 5: "\x{202A}!"
    783823            text run at (5,1) width 13 RTL: "(^"
    784824            text run at (18,1) width 16: "12"
     
    786826        RenderBlock {P} at (0,2132) size 769x20
    787827          RenderText {#text} at (0,2) size 49x18
    788             text run at (0,2) width 5: "!"
     828            text run at (0,2) width 0 RTL: "\x{202C}"
     829            text run at (0,2) width 5: "\x{202A}!"
    789830            text run at (5,2) width 13 RTL: "(^"
    790831            text run at (18,2) width 16: "12"
     
    792833        RenderBlock {P} at (0,2168) size 769x20
    793834          RenderText {#text} at (0,2) size 49x18
    794             text run at (0,2) width 5: "!"
     835            text run at (0,2) width 0 RTL: "\x{202C}"
     836            text run at (0,2) width 5: "\x{202A}!"
    795837            text run at (5,2) width 13 RTL: "(^"
    796838            text run at (18,2) width 31: "ab\x{661}\x{662}"
    797839        RenderBlock {P} at (0,2204) size 769x20
    798840          RenderText {#text} at (0,2) size 54x18
    799             text run at (0,2) width 5: "!"
     841            text run at (0,2) width 0 RTL: "\x{202C}"
     842            text run at (0,2) width 5: "\x{202A}!"
    800843            text run at (5,2) width 13 RTL: "(^"
    801844            text run at (18,2) width 16: "\x{661}\x{662}"
     
    803846        RenderBlock {P} at (0,2240) size 769x20
    804847          RenderText {#text} at (0,2) size 49x18
    805             text run at (0,2) width 5: "!"
     848            text run at (0,2) width 0 RTL: "\x{202C}"
     849            text run at (0,2) width 5: "\x{202A}!"
    806850            text run at (5,2) width 13 RTL: "(^"
    807851            text run at (18,2) width 16: "\x{661}\x{662}"
     
    809853        RenderBlock {P} at (0,2276) size 769x18
    810854          RenderText {#text} at (0,0) size 25x18
    811             text run at (0,0) width 7: "?"
    812             text run at (7,0) width 13: "(^"
    813             text run at (20,0) width 5: "!"
     855            text run at (0,0) width 0 RTL: "\x{202C}"
     856            text run at (0,0) width 7: "\x{202A}?"
     857            text run at (7,0) width 13: "\x{202C}(^"
     858            text run at (20,0) width 5: "\x{202A}!"
    814859        RenderBlock {P} at (0,2310) size 769x18
    815860          RenderText {#text} at (0,0) size 25x18
    816             text run at (0,0) width 5: "!"
    817             text run at (5,0) width 13 RTL: "(^"
    818             text run at (18,0) width 7 RTL: "?"
     861            text run at (0,0) width 0 RTL: "\x{202C}"
     862            text run at (0,0) width 5: "\x{202A}!"
     863            text run at (5,0) width 13 RTL: "\x{202C}(^"
     864            text run at (18,0) width 7 RTL: "\x{202B}?"
    819865        RenderBlock {P} at (0,2344) size 769x18
    820866          RenderText {#text} at (0,0) size 33x18
    821             text run at (0,0) width 5 RTL: "!"
     867            text run at (0,0) width 0 RTL: "\x{202C}"
     868            text run at (0,0) width 5 RTL: "\x{202B}!"
    822869            text run at (5,0) width 13 RTL: "(^"
    823870            text run at (18,0) width 15: "ab"
    824871        RenderBlock {P} at (0,2378) size 769x19
    825872          RenderText {#text} at (0,1) size 38x18
    826             text run at (0,1) width 5 RTL: "!"
     873            text run at (0,1) width 0 RTL: "\x{202C}"
     874            text run at (0,1) width 5 RTL: "\x{202B}!"
    827875            text run at (5,1) width 33 RTL: "\x{5D0}\x{5D1}(^"
    828876        RenderBlock {P} at (0,2413) size 769x20
    829877          RenderText {#text} at (0,2) size 33x18
    830             text run at (0,2) width 5 RTL: "!"
     878            text run at (0,2) width 0 RTL: "\x{202C}"
     879            text run at (0,2) width 5 RTL: "\x{202B}!"
    831880            text run at (5,2) width 28 RTL: "\x{627}\x{628}(^"
    832881        RenderBlock {P} at (0,2449) size 769x18
    833882          RenderText {#text} at (0,0) size 49x18
    834             text run at (0,0) width 5 RTL: "!"
     883            text run at (0,0) width 0 RTL: "\x{202C}"
     884            text run at (0,0) width 5 RTL: "\x{202B}!"
    835885            text run at (5,0) width 13 RTL: "(^"
    836886            text run at (18,0) width 31: "ab12"
    837887        RenderBlock {P} at (0,2483) size 769x19
    838888          RenderText {#text} at (0,1) size 54x18
    839             text run at (0,1) width 5 RTL: "!"
     889            text run at (0,1) width 0 RTL: "\x{202C}"
     890            text run at (0,1) width 5 RTL: "\x{202B}!"
    840891            text run at (5,1) width 13 RTL: "(^"
    841892            text run at (18,1) width 16: "12"
     
    843894        RenderBlock {P} at (0,2518) size 769x20
    844895          RenderText {#text} at (0,2) size 49x18
    845             text run at (0,2) width 5 RTL: "!"
     896            text run at (0,2) width 0 RTL: "\x{202C}"
     897            text run at (0,2) width 5 RTL: "\x{202B}!"
    846898            text run at (5,2) width 13 RTL: "(^"
    847899            text run at (18,2) width 16: "12"
     
    849901        RenderBlock {P} at (0,2554) size 769x20
    850902          RenderText {#text} at (0,2) size 49x18
    851             text run at (0,2) width 5 RTL: "!"
     903            text run at (0,2) width 0 RTL: "\x{202C}"
     904            text run at (0,2) width 5 RTL: "\x{202B}!"
    852905            text run at (5,2) width 13 RTL: "(^"
    853906            text run at (18,2) width 31: "ab\x{661}\x{662}"
    854907        RenderBlock {P} at (0,2590) size 769x20
    855908          RenderText {#text} at (0,2) size 54x18
    856             text run at (0,2) width 5 RTL: "!"
     909            text run at (0,2) width 0 RTL: "\x{202C}"
     910            text run at (0,2) width 5 RTL: "\x{202B}!"
    857911            text run at (5,2) width 13 RTL: "(^"
    858912            text run at (18,2) width 16: "\x{661}\x{662}"
     
    860914        RenderBlock {P} at (0,2626) size 769x20
    861915          RenderText {#text} at (0,2) size 49x18
    862             text run at (0,2) width 5 RTL: "!"
     916            text run at (0,2) width 0 RTL: "\x{202C}"
     917            text run at (0,2) width 5 RTL: "\x{202B}!"
    863918            text run at (5,2) width 13 RTL: "(^"
    864919            text run at (18,2) width 16: "\x{661}\x{662}"
     
    866921        RenderBlock {P} at (0,2662) size 769x18
    867922          RenderText {#text} at (0,0) size 25x18
    868             text run at (0,0) width 5 RTL: "!"
    869             text run at (5,0) width 13 RTL: "(^"
    870             text run at (18,0) width 7: "?"
     923            text run at (0,0) width 0 RTL: "\x{202C}"
     924            text run at (0,0) width 5 RTL: "\x{202B}!"
     925            text run at (5,0) width 13 RTL: "\x{202C}(^"
     926            text run at (18,0) width 7: "\x{202A}?"
    871927        RenderBlock {P} at (0,2696) size 769x18
    872928          RenderText {#text} at (0,0) size 25x18
    873             text run at (0,0) width 5 RTL: "!"
    874             text run at (5,0) width 13 RTL: "(^"
    875             text run at (18,0) width 7 RTL: "?"
     929            text run at (0,0) width 0 RTL: "\x{202C}"
     930            text run at (0,0) width 5 RTL: "\x{202B}!"
     931            text run at (5,0) width 13 RTL: "\x{202C}(^"
     932            text run at (18,0) width 7 RTL: "\x{202B}?"
    876933        RenderBlock {P} at (0,2730) size 769x18
    877934          RenderText {#text} at (0,0) size 28x18
    878             text run at (0,0) width 28: "ab(^"
     935            text run at (0,0) width 0 RTL: "\x{202C}"
     936            text run at (0,0) width 28: "\x{202A}ab(^"
    879937        RenderBlock {P} at (0,2764) size 769x19
    880938          RenderText {#text} at (0,1) size 33x18
    881             text run at (0,1) width 20 RTL: "\x{5D0}\x{5D1}"
     939            text run at (0,1) width 0 RTL: "\x{202C}"
     940            text run at (0,1) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    882941            text run at (20,1) width 13: "(^"
    883942        RenderBlock {P} at (0,2799) size 769x20
    884943          RenderText {#text} at (0,2) size 28x18
    885             text run at (0,2) width 15 RTL: "\x{627}\x{628}"
     944            text run at (0,2) width 0 RTL: "\x{202C}"
     945            text run at (0,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    886946            text run at (15,2) width 13: "(^"
    887947        RenderBlock {P} at (0,2835) size 769x18
    888948          RenderText {#text} at (0,0) size 44x18
    889             text run at (0,0) width 44: "ab12(^"
     949            text run at (0,0) width 0 RTL: "\x{202C}"
     950            text run at (0,0) width 44: "\x{202A}ab12(^"
    890951        RenderBlock {P} at (0,2869) size 769x19
    891952          RenderText {#text} at (0,1) size 49x18
     953            text run at (0,1) width 0 RTL: "\x{202C}"
    892954            text run at (0,1) width 16: "12"
    893             text run at (16,1) width 20 RTL: "\x{5D0}\x{5D1}"
     955            text run at (16,1) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    894956            text run at (36,1) width 13: "(^"
    895957        RenderBlock {P} at (0,2904) size 769x20
    896958          RenderText {#text} at (0,2) size 44x18
     959            text run at (0,2) width 0 RTL: "\x{202C}"
    897960            text run at (0,2) width 16: "12"
    898             text run at (16,2) width 15 RTL: "\x{627}\x{628}"
     961            text run at (16,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    899962            text run at (31,2) width 13: "(^"
    900963        RenderBlock {P} at (0,2940) size 769x20
    901964          RenderText {#text} at (0,2) size 44x18
    902             text run at (0,2) width 15: "ab"
     965            text run at (0,2) width 0 RTL: "\x{202C}"
     966            text run at (0,2) width 15: "\x{202A}ab"
    903967            text run at (15,2) width 16: "\x{661}\x{662}"
    904968            text run at (31,2) width 13: "(^"
    905969        RenderBlock {P} at (0,2976) size 769x20
    906970          RenderText {#text} at (0,2) size 49x18
     971            text run at (0,2) width 0 RTL: "\x{202C}"
    907972            text run at (0,2) width 16: "\x{661}\x{662}"
    908             text run at (16,2) width 20 RTL: "\x{5D0}\x{5D1}"
     973            text run at (16,2) width 20 RTL: "\x{202A}\x{5D0}\x{5D1}"
    909974            text run at (36,2) width 13: "(^"
    910975        RenderBlock {P} at (0,3012) size 769x20
    911976          RenderText {#text} at (0,2) size 44x18
     977            text run at (0,2) width 0 RTL: "\x{202C}"
    912978            text run at (0,2) width 16: "\x{661}\x{662}"
    913             text run at (16,2) width 15 RTL: "\x{627}\x{628}"
     979            text run at (16,2) width 15 RTL: "\x{202A}\x{627}\x{628}"
    914980            text run at (31,2) width 13: "(^"
    915981        RenderBlock {P} at (0,3048) size 769x18
    916982          RenderText {#text} at (0,0) size 20x18
    917             text run at (0,0) width 7: "?"
    918             text run at (7,0) width 13: "(^"
     983            text run at (0,0) width 0 RTL: "\x{202C}"
     984            text run at (0,0) width 0: "\x{202A}"
     985            text run at (0,0) width 7: "\x{202A}?"
     986            text run at (7,0) width 13: "\x{202C}(^"
    919987        RenderBlock {P} at (0,3082) size 769x18
    920988          RenderText {#text} at (0,0) size 20x18
    921             text run at (0,0) width 7 RTL: "?"
    922             text run at (7,0) width 13: "(^"
     989            text run at (0,0) width 0 RTL: "\x{202C}"
     990            text run at (0,0) width 0: "\x{202A}"
     991            text run at (0,0) width 7 RTL: "\x{202B}?"
     992            text run at (7,0) width 13: "\x{202C}(^"
  • trunk/LayoutTests/platform/mac/fast/text/international/bidi-override-expected.txt

    r42379 r71566  
    111111              RenderText {#text} at (5,6) size 233x18
    112112                text run at (5,6) width 22: "abc"
    113                 text run at (27,6) width 67 RTL override: "ihg\x{5D0}\x{5D1}\x{5D2}fed"
    114                 text run at (94,6) width 20: "jkl "
    115                 text run at (114,6) width 23 RTL: "\x{5D9}\x{5DB}\x{5DC}"
    116                 text run at (137,6) width 74 LTR override: "\x{5D8}\x{5D7}\x{5D6}abc\x{5D5}\x{5D4}\x{5D3}"
     113                text run at (27,6) width 67 RTL override: "\x{202E}ihg\x{5D0}\x{5D1}\x{5D2}fed"
     114                text run at (94,6) width 20: "\x{202C}jkl "
     115                text run at (114,6) width 23 RTL: "\x{202C}\x{5D9}\x{5DB}\x{5DC}"
     116                text run at (137,6) width 74 LTR override: "\x{202D}\x{5D8}\x{5D7}\x{5D6}abc\x{5D5}\x{5D4}\x{5D3}"
    117117                text run at (211,6) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
    118118            RenderTableCell {TD} at (339,84) size 242x28 [border: (1px solid #008000)] [r=3 c=2 rs=1 cs=1]
    119119              RenderText {#text} at (5,6) size 233x18
    120                 text run at (5,6) width 23 RTL: "\x{5D9}\x{5DB}\x{5DC}"
    121                 text run at (28,6) width 74 LTR override: "\x{5D8}\x{5D7}\x{5D6}abc\x{5D5}\x{5D4}\x{5D3}"
     120                text run at (5,6) width 23 RTL: "\x{202C}\x{5D9}\x{5DB}\x{5DC}"
     121                text run at (28,6) width 74 LTR override: "\x{202D}\x{5D8}\x{5D7}\x{5D6}abc\x{5D5}\x{5D4}\x{5D3}"
    122122                text run at (102,6) width 27 RTL: "\x{5D0}\x{5D1}\x{5D2}"
    123123                text run at (129,6) width 4 RTL: " "
    124124                text run at (133,6) width 22: "abc"
    125                 text run at (155,6) width 67 RTL override: "ihg\x{5D0}\x{5D1}\x{5D2}fed"
    126                 text run at (222,6) width 16: "jkl"
     125                text run at (155,6) width 67 RTL override: "\x{202E}ihg\x{5D0}\x{5D1}\x{5D2}fed"
     126                text run at (222,6) width 16: "\x{202C}jkl"
    127127      RenderBlock {P} at (0,163) size 784x18
    128128        RenderText {#text} at (0,0) size 387x18
  • trunk/WebCore/ChangeLog

    r71563 r71566  
     12010-11-08  Xiaomei Ji  <xji@chromium.org>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Fix Unicode explicit bidi control characters are removed in editing operations,
     6        such as insert/copy/cut/paste.
     7        https://bugs.webkit.org/show_bug.cgi?id=25321
     8
     9        Unicode explicit bidi control characters were excluded in BidiRun and
     10        consequently from InlineTextBoxes due to their effect on rendering complex
     11        text with ATSUI.
     12        The fix is including those characters in BidiRun and remove them from
     13        ComplexTextRun with ATSUI.
     14
     15        Test: editing/inserting/insert-paste-bidi-control.html
     16               fast/text/atsui-bidi-control.html
     17
     18        * platform/graphics/mac/ComplexTextControllerATSUI.cpp:
     19        (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):
     20        * platform/text/BidiResolver.h:
     21        (WebCore::::checkDirectionInLowerRaiseEmbeddingLevel):
     22        (WebCore::::lowerExplicitEmbeddingLevel):
     23        (WebCore::::raiseExplicitEmbeddingLevel):
     24        (WebCore::::createBidiRunsForLine):
     25
    1262010-11-08  David Hyatt  <hyatt@apple.com>
    227
  • trunk/WebCore/platform/graphics/mac/ComplexTextControllerATSUI.cpp

    r54729 r71566  
    3131
    3232#ifdef __LP64__
    33 // ATSUTextInserted() is SPI in 64-bit.
    3433extern "C" {
    3534OSStatus ATSUTextInserted(ATSUTextLayout iTextLayout,  UniCharArrayOffset iInsertionLocation, UniCharCount iInsertionLength);
     35OSStatus ATSUTextDeleted(ATSUTextLayout iTextLayout,  UniCharArrayOffset iInsertionLocation, UniCharCount iInsertionLength);
    3636}
    3737#endif
     
    189189    }
    190190
     191    // Remove the leading character if it is one of explicit Unicode bidi control characters.
     192    // Explicit Unicode bidi control character, if present, is always the leading
     193    // character in a run. And it could be the leading character in a LTR run.
     194    // For example, "a&#x202b;x!&#202c;y", the last run "&#x202c;y" is a LTR run
     195    // and begins with an explicit Unicode bidi control character.
     196    if (stringLength > 0) {
     197        UChar leadingCharacter;
     198        if (substituteCharacters.isEmpty())
     199            leadingCharacter = characters[0];
     200        else
     201            leadingCharacter = substituteCharacters[0];
     202        if (leadingCharacter == leftToRightEmbed
     203            || leadingCharacter == leftToRightOverride
     204            || leadingCharacter == rightToLeftEmbed
     205            || leadingCharacter == rightToLeftOverride
     206            || leadingCharacter == popDirectionalFormatting)
     207            if (substituteCharacters.isEmpty()) {
     208                substituteCharacters.grow(stringLength - 1);
     209                memcpy(substituteCharacters.data(), characters + 1, (stringLength - 1) * sizeof(UChar));
     210                ATSUTextMoved(atsuTextLayout, substituteCharacters.data());
     211            } else {
     212                substituteCharacters.remove(0);
     213                ATSUTextDeleted(atsuTextLayout, 0, 1);
     214            }
     215    }
     216
    191217    if (directionalOverride) {
    192218        UChar override = ltr ? leftToRightOverride : rightToLeftOverride;
     
    215241
    216242    ItemCount boundsCount;
    217     status = ATSUGetGlyphBounds(atsuTextLayout, 0, 0, 0, m_stringLength, kATSUseFractionalOrigins, 0, 0, &boundsCount);
     243    status = ATSUGetGlyphBounds(atsuTextLayout, 0, 0, 0, kATSUToTextEnd, kATSUseFractionalOrigins, 0, 0, &boundsCount);
    218244
    219245    status = ATSUDisposeTextLayout(atsuTextLayout);
  • trunk/WebCore/platform/text/BidiResolver.h

    r61921 r71566  
    202202    void raiseExplicitEmbeddingLevel(WTF::Unicode::Direction from, WTF::Unicode::Direction to);
    203203    void lowerExplicitEmbeddingLevel(WTF::Unicode::Direction from);
     204    void checkDirectionInLowerRaiseEmbeddingLevel();
    204205
    205206    Vector<WTF::Unicode::Direction, 8> m_currentExplicitEmbeddingSequence;
     
    309310
    310311template <class Iterator, class Run>
     312void BidiResolver<Iterator, Run>::checkDirectionInLowerRaiseEmbeddingLevel()
     313{
     314    using namespace WTF::Unicode;
     315
     316    ASSERT(m_status.eor != OtherNeutral || eor.atEnd());
     317    // bidi.sor ... bidi.eor ... bidi.last eor; need to append the bidi.sor-bidi.eor run or extend it through bidi.last
     318    // Bidi control characters are included into BidiRun, so last direction
     319    // could be one of the bidi embeddings when there are nested embeddings.
     320    // For example:  "&#x202a;&#x202b;....."
     321    ASSERT(m_status.last == EuropeanNumberSeparator
     322        || m_status.last == EuropeanNumberTerminator
     323        || m_status.last == CommonNumberSeparator
     324        || m_status.last == BoundaryNeutral
     325        || m_status.last == BlockSeparator
     326        || m_status.last == SegmentSeparator
     327        || m_status.last == WhiteSpaceNeutral
     328        || m_status.last == OtherNeutral
     329        || m_status.last == RightToLeftEmbedding
     330        || m_status.last == LeftToRightEmbedding
     331        || m_status.last == RightToLeftOverride
     332        || m_status.last == LeftToRightOverride
     333        || m_status.last == PopDirectionalFormat);
     334    if (m_direction == OtherNeutral)
     335        m_direction = m_status.lastStrong == LeftToRight ? LeftToRight : RightToLeft;
     336}
     337
     338template <class Iterator, class Run>
    311339void BidiResolver<Iterator, Run>::lowerExplicitEmbeddingLevel(WTF::Unicode::Direction from)
    312340{
     
    314342
    315343    if (!emptyRun && eor != last) {
    316         ASSERT(m_status.eor != OtherNeutral || eor.atEnd());
    317         // bidi.sor ... bidi.eor ... bidi.last eor; need to append the bidi.sor-bidi.eor run or extend it through bidi.last
    318         ASSERT(m_status.last == EuropeanNumberSeparator
    319             || m_status.last == EuropeanNumberTerminator
    320             || m_status.last == CommonNumberSeparator
    321             || m_status.last == BoundaryNeutral
    322             || m_status.last == BlockSeparator
    323             || m_status.last == SegmentSeparator
    324             || m_status.last == WhiteSpaceNeutral
    325             || m_status.last == OtherNeutral);
    326         if (m_direction == OtherNeutral)
    327             m_direction = m_status.lastStrong == LeftToRight ? LeftToRight : RightToLeft;
     344        checkDirectionInLowerRaiseEmbeddingLevel();
    328345        if (from == LeftToRight) {
    329346            // bidi.sor ... bidi.eor ... bidi.last L
     
    360377
    361378    if (!emptyRun && eor != last) {
    362         ASSERT(m_status.eor != OtherNeutral || eor.atEnd());
    363         // bidi.sor ... bidi.eor ... bidi.last eor; need to append the bidi.sor-bidi.eor run or extend it through bidi.last
    364         ASSERT(m_status.last == EuropeanNumberSeparator
    365             || m_status.last == EuropeanNumberTerminator
    366             || m_status.last == CommonNumberSeparator
    367             || m_status.last == BoundaryNeutral
    368             || m_status.last == BlockSeparator
    369             || m_status.last == SegmentSeparator
    370             || m_status.last == WhiteSpaceNeutral
    371             || m_status.last == OtherNeutral);
    372         if (m_direction == OtherNeutral)
    373             m_direction = m_status.lastStrong == LeftToRight ? LeftToRight : RightToLeft;
     379        checkDirectionInLowerRaiseEmbeddingLevel();
    374380        if (to == LeftToRight) {
    375381            // bidi.sor ... bidi.eor ... bidi.last L
     
    569575            break;
    570576
    571             // strong types
     577        // strong types
    572578        case LeftToRight:
    573579            switch(m_status.last) {
     
    861867            case NonSpacingMark:
    862868            case BoundaryNeutral:
    863             case RightToLeftEmbedding:
    864             case LeftToRightEmbedding:
    865             case RightToLeftOverride:
    866             case LeftToRightOverride:
    867             case PopDirectionalFormat:
    868869                // ignore these
    869870                break;
     
    876877        last = current;
    877878
    878         if (emptyRun && !(dirCurrent == RightToLeftEmbedding
    879                 || dirCurrent == LeftToRightEmbedding
    880                 || dirCurrent == RightToLeftOverride
    881                 || dirCurrent == LeftToRightOverride
    882                 || dirCurrent == PopDirectionalFormat)) {
     879        if (emptyRun) {
    883880            sor = current;
    884881            emptyRun = false;
     
    900897                break;
    901898            }
    902         }
    903 
    904         if (emptyRun && (dirCurrent == RightToLeftEmbedding
    905                 || dirCurrent == LeftToRightEmbedding
    906                 || dirCurrent == RightToLeftOverride
    907                 || dirCurrent == LeftToRightOverride
    908                 || dirCurrent == PopDirectionalFormat)) {
    909             // exclude the embedding char itself from the new run so that ATSUI will never see it
    910             eor = Iterator();
    911             last = current;
    912             sor = current;
    913899        }
    914900
Note: See TracChangeset for help on using the changeset viewer.