<!DOCTYPE html>
<html  lang="en" >
<head>
<meta charset="utf-8"/>
<title>line-break:strict, Conditional Japanese Starter (CJ) (ja)</title>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#line-break-property">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<meta name="assert" content="With line-break:strict, a browser will NOT allow a conditional Japanese starter at the beginning of a line.">
<style type="text/css">
@font-face {
    font-family: 'mplus-1p-regular';
    src: url('/fonts/mplus-1p-regular.woff') format('woff');
    }
#wrapper { position: relative; }
.test { color: red; }
.test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 185px; padding: 0; border: 1px solid orange; line-height: 1em; }
</style>
<style>
.test { line-break: strict; }
</style>
<script>
var charlist = `3041  HIRAGANA LETTER SMALL A
3043  HIRAGANA LETTER SMALL I
3045  HIRAGANA LETTER SMALL U
3047  HIRAGANA LETTER SMALL E
3049  HIRAGANA LETTER SMALL O
3063  HIRAGANA LETTER SMALL TU
3083  HIRAGANA LETTER SMALL YA
3085  HIRAGANA LETTER SMALL YU
3087  HIRAGANA LETTER SMALL YO
308E  HIRAGANA LETTER SMALL WA
3095  HIRAGANA LETTER SMALL KA
3096  HIRAGANA LETTER SMALL KE
30A1  KATAKANA LETTER SMALL A
30A3  KATAKANA LETTER SMALL I
30A5  KATAKANA LETTER SMALL U
30A7  KATAKANA LETTER SMALL E
30A9  KATAKANA LETTER SMALL O
30C3  KATAKANA LETTER SMALL TU
30E3  KATAKANA LETTER SMALL YA
30E5  KATAKANA LETTER SMALL YU
30E7  KATAKANA LETTER SMALL YO
30EE  KATAKANA LETTER SMALL WA
30F5  KATAKANA LETTER SMALL KA
30F6  KATAKANA LETTER SMALL KE
30FC  KATAKANA-HIRAGANA PROLONGED SOUND MARK
31F0  KATAKANA LETTER SMALL KU
31F1  KATAKANA LETTER SMALL SI
31F2  KATAKANA LETTER SMALL SU
31F3  KATAKANA LETTER SMALL TO
31F4  KATAKANA LETTER SMALL NU
31F5  KATAKANA LETTER SMALL HA
31F6  KATAKANA LETTER SMALL HI
31F7  KATAKANA LETTER SMALL HU
31F8  KATAKANA LETTER SMALL HE
31F9  KATAKANA LETTER SMALL HO
31FA  KATAKANA LETTER SMALL MU
31FB  KATAKANA LETTER SMALL RA
31FC  KATAKANA LETTER SMALL RI
31FD  KATAKANA LETTER SMALL RU
31FE  KATAKANA LETTER SMALL RE
31FF  KATAKANA LETTER SMALL RO
FF67  HALFWIDTH KATAKANA LETTER SMALL A
FF68  HALFWIDTH KATAKANA LETTER SMALL I
FF69  HALFWIDTH KATAKANA LETTER SMALL U
FF6A  HALFWIDTH KATAKANA LETTER SMALL E
FF6B  HALFWIDTH KATAKANA LETTER SMALL O
FF6C  HALFWIDTH KATAKANA LETTER SMALL YA
FF6D  HALFWIDTH KATAKANA LETTER SMALL YU
FF6E  HALFWIDTH KATAKANA LETTER SMALL YO
FF6F  HALFWIDTH KATAKANA LETTER SMALL TU
FF70  HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK`
</script>
</head>
<body>
<script>
var lines = charlist.split('\n')
var out = '<div id="log"></div>\n'
for (var i=0;i<lines.length;i++) {
	// get the data
	var firstSpace = lines[i].indexOf(' ')
	var hex = lines[i].substr(0,firstSpace)
	var name = lines[i].substr(firstSpace)
	// make a test
	out +=  '<div class="wrapper"><div>'+hex+'</div>' +
	'<div class="test" id="test'+i+'" lang="ja">文文文文文文&#x'+hex+';字<span id="testSpan'+i+'">字</span></div>' +
	 '<div class="ref" id="ref'+i+'" lang="ja">文文文文文<br/>文&#x'+hex+';字<span id="refSpan'+i+'">字</span></div>' +
	 '</div>'
	}
function spansNearEnough(counter) {
  return Math.abs( document.getElementById('testSpan'+counter).getBoundingClientRect().left
           - document.getElementById('refSpan'+counter).getBoundingClientRect().left ) < 1;
}

document.querySelector('body').innerHTML = out
setup({explicit_done: true});

document.fonts.ready.then(validate);

function validate() {
  for (i=0;i<lines.length;i++) {
    test(function() {
      assert_true(spansNearEnough(i));
    }, lines[i]+' may NOT appear at line start if ja and strict');
    // Hide successful tests.
    if (spansNearEnough(i)) document.getElementById('test'+i).parentNode.style.display = 'none'
  }
  done();
}
</script>
<!--Notes:
The test creates a box with room for 6 characters, causing wrapping to occur either between the 6th and the 7th character, or before the 6th if the breaks after the 6th or before the 7th are prohibited.

It also creates the expected behaviour with a ref instance, using <br/>. Each line ends with a span. The test then checks whether the left edge of the span is in the same place in test and ref instance.
-->
</body>
</html>
