<!DOCTYPE html>
<html  lang="en" >
<head>
<meta charset="utf-8">
<title>Wide and fullwidth characters around line break</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-transform'>
<meta name="assert" content="If the East Asian Width property of both the character before and after the line feed is F, W or H  and neither side is Hangul, then the segment break is removed.">
<style type='text/css'>
/* the CSS below is not part of the test */
.test span { font-size: 24px; font-family: sans-serif; background-color: #2AA5F7; color: white; }
.ref span { font-size: 24px; font-family: sans-serif; background-color: #270CEF; color: white; }
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id='log'></div>
<div id='test1' class="test"><span>日本語
ＷＩＤＴＨ</span></div>
<div id='test2' class="test"><span>日本語&#x20;&#x20;&#x20;
ＷＩＤＴＨ</span></div>
<div id='test3' class="test"><span>日本語
&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;ＷＩＤＴＨ</span></div>
<div id='test4' class="test"><span>日本語&#x20;&#x20;&#x20;
&#x20;&#x20;&#x20;&#x20;&#x20;ＷＩＤＴＨ</span></div>
<div id='test5' class="test"><span>日本語


ＷＩＤＴＨ</span></div>
<div id='test6' class="test"><span>日本語&#x20;&#x20;
&#x20;&#x20;&#x20;
&#x20;&#x20;&#x20;
&#x20;&#x20;&#x20;ＷＩＤＴＨ</span></div>
<div id="ref" class="ref"><span>日本語ＷＩＤＴＨ</span></div>
<script>
test(function() {
assert_equals(document.getElementById('test1').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "linebreak only");
test(function() {
assert_equals(document.getElementById('test2').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "spaces linebreak");
test(function() {
assert_equals(document.getElementById('test3').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "linebreak spaces");
test(function() {
assert_equals(document.getElementById('test4').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "spaces linebreak spaces");
test(function() {
assert_equals(document.getElementById('test5').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "multiple linebreaks");
test(function() {
assert_equals(document.getElementById('test6').firstChild.offsetWidth, document.getElementById('ref').firstChild.offsetWidth);
}, "multiple linebreaks + spaces");
</script>
<!-- Notes:
The assertion will fail if space is produced for any line in the test paragraph.
-->
</body>
</html>


