| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |
| <style> | |
| .resultsDiv { | |
| position: absolute; | |
| top: 0px; | |
| left: 0px; | |
| -moz-column-width: 13em; | |
| -moz-column-gap: 5em; | |
| -webkit-columns:1 1px; /* Make as many (overflowing) columns as necessary, but keep them as narrow as possible */ | |
| -webkit-column-gap: 5em; | |
| -webkit-column-fill: auto; | |
| columns:1 1px; | |
| column-gap: 5em; | |
| column-fill: auto; | |
| height: 400px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div>This table shows unicode-bidi: isolate behavior (in red) with display: inline-block behavior overlapping in green. You should see no red in this test! Behavior between these two methods should be identical for non-wrapping strings, assuming unicode-bidi: isolate is implemented and functioning correctly.</div> | |
| <div id="resultsContainer" style="position: relative"> | |
| <div id="actual" style="color: red" class="resultsDiv"></div> | |
| <div id="expected" style="color: green;" class="resultsDiv"></div> | |
| </div> | |
| <script> | |
| var seed = 0; | |
| var neutrals = ['"', ")", "("]; | |
| var strongRTLs = ['ש', 'נ', 'ב', 'ג', 'ק', 'כ', 'ע']; | |
| var strongLTRs = ['a', 'b', 'c', 'd', 'e', 'f', 'g']; | |
| var neutral = function() { return neutrals[seed++ % neutrals.length]; } | |
| var strongRTL = function() { return strongRTLs[seed++ % strongRTLs.length]; } | |
| var strongLTR = function() { return strongLTRs[seed++ % strongLTRs.length]; } | |
| var charClassExamples = [neutral, strongRTL, strongLTR]; | |
| var possibleDirs = ['ltr', 'rtl']; | |
| var testStyle = "unicode-bidi: -webkit-isolate"; | |
| var controlStyle = "display: inline-block"; | |
| for (outerDirIndex in possibleDirs) { | |
| var outerDir = possibleDirs[outerDirIndex]; | |
| for (beforeSpanIndex in charClassExamples) { | |
| var beforeSpan = charClassExamples[beforeSpanIndex]; | |
| for (spanDirIndex in possibleDirs) { | |
| var spanDir = possibleDirs[spanDirIndex]; | |
| for (inSpanIndex in charClassExamples) { | |
| var inSpan = charClassExamples[inSpanIndex]; | |
| for (afterSpanIndex in charClassExamples) { | |
| var afterSpan = charClassExamples[afterSpanIndex]; | |
| function caseWithStyle(spanStyle) { | |
| seed = 0; | |
| var outerDiv = document.createElement("div"); | |
| outerDiv.dir = outerDir; | |
| outerDiv.appendChild(document.createTextNode(beforeSpan())); | |
| var span = document.createElement("span"); | |
| span.dir = spanDir; | |
| span.setAttribute("style", spanStyle) | |
| span.appendChild(document.createTextNode(inSpan())); | |
| outerDiv.appendChild(span); | |
| outerDiv.appendChild(document.createTextNode(afterSpan())); | |
| return outerDiv; | |
| } | |
| expected.appendChild(caseWithStyle(controlStyle)); | |
| actual.appendChild(caseWithStyle(testStyle)); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| </table> | |
| </body> | |
| </html> |