haikuwebkit/LayoutTests/fast/text/simple-line-hyphens-with-te...

20 lines
9.2 KiB
HTML
Raw Permalink Normal View History

Simple line layout: Add support for hyphen: auto. https://bugs.webkit.org/show_bug.cgi?id=167297 <rdar://problem/30119463> Reviewed by Antti Koivisto. Source/WebCore: Implement hyphen: auto for simple line layout. Tests: fast/text/simple-line-hyphens-with-text-align.html fast/text/simple-line-hyphens-with-word-letter-spacing.html * platform/text/Hyphenation.h: (WebCore::enoughWidthForHyphenation): * rendering/RenderTreeAsText.cpp: (WebCore::writeSimpleLine): (WebCore::write): * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::canUseForStyle): (WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded): Inherit the hyphen attribute from the run-to-be-appended. Ensure that we don't append additional runs when the last run has hyphen. (WebCore::SimpleLineLayout::splitFragmentToFitLine): Before calling into the lastHyphenPosition() we need to ensure that the hyphen would surely fit (even on the splitting position). (WebCore::SimpleLineLayout::createLineRuns): Probe hypenation for overhanging non-whitespace runs. (WebCore::SimpleLineLayout::printReason): * rendering/SimpleLineLayout.h: (WebCore::SimpleLineLayout::Run::Run): * rendering/SimpleLineLayoutFlowContents.h: (WebCore::SimpleLineLayout::FlowContents::Segment::toSegmentPosition): (WebCore::SimpleLineLayout::FlowContents::Segment::toRenderPosition): * rendering/SimpleLineLayoutResolver.cpp: (WebCore::SimpleLineLayout::RunResolver::Run::Run): (WebCore::SimpleLineLayout::RunResolver::Run::constructStringForHyphenIfNeeded): (WebCore::SimpleLineLayout::RunResolver::Run::text): * rendering/SimpleLineLayoutResolver.h: (WebCore::SimpleLineLayout::RunResolver::Run::hasHyphen): * rendering/SimpleLineLayoutTextFragmentIterator.cpp: (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style): (WebCore::SimpleLineLayout::TextFragmentIterator::nextBreakablePosition): (WebCore::SimpleLineLayout::TextFragmentIterator::nextNonWhitespacePosition): (WebCore::SimpleLineLayout::TextFragmentIterator::textWidth): (WebCore::SimpleLineLayout::TextFragmentIterator::lastHyphenPosition): We only check the actual run for hyphenation ignoring the neighboring runs. This might need to be changed in the future. (WebCore::SimpleLineLayout::TextFragmentIterator::runWidth): * rendering/SimpleLineLayoutTextFragmentIterator.h: (WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::TextFragment): (WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::hasHyphen): (WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::operator==): (WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::split): (WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen): * rendering/line/BreakingContext.h: (WebCore::tryHyphenating): LayoutTests: * fast/text/simple-line-hyphens-with-text-align-expected.html: Added. * fast/text/simple-line-hyphens-with-text-align.html: Added. * fast/text/simple-line-hyphens-with-word-letter-spacing-expected.html: Added. * fast/text/simple-line-hyphens-with-word-letter-spacing.html: Added. Canonical link: https://commits.webkit.org/184410@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211108 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-24 21:38:20 +00:00
<!DOCTYPE html>
<html>
<head>
<title>This tests that simple and normal line layout produce the same lines with hyphens</title>
<style>
div {
display: inline-block;
-webkit-hyphens: auto;
width: 200px;
border: 1px solid green;
}
</style>
</head>
<body>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec consequat rhoncus erat, id pellentesque ligula aliquet et. Nam aliquam pellentesque risus. Mauris lorem nunc, sodales pellentesque porttitor ut, pellentesque at felis. Nullam et accumsan leo, in scelerisque massa. Fusce luctus laoreet pretium. Nulla sollicitudin volutpat neque in mattis. Vestibulum non placerat velit. Aenean dui nunc, tincidunt nec tempus et, venenatis vel magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin pretium nisl sit amet lacus varius consequat. Donec congue molestie mauris, a vehicula velit. Nam pellentesque sed arcu congue rutrum. Maecenas pulvinar ex at diam dapibus consectetur ut non nisl. Sed tempus bibendum sodales. Donec nec arcu ligula. Vivamus sit amet aliquet neque, vel volutpat nibh. In purus sem, tincidunt vulputate neque eu, scelerisque hendrerit ex. Donec eu porta lectus, at malesuada magna. Duis ut egestas est. Nullam et libero sit amet lectus tempus pharetra ac id mauris. Ut diam orci, interdum nec suscipit ut, semper nec orci. Fusce sed risus elementum, posuere orci id, aliquam urna. Donec arcu turpis, scelerisque a mauris vel, vehicula convallis ipsum. Phasellus facilisis, magna ut dapibus pretium, sapien mauris viverra enim, ut hendrerit urna dui eu ligula. Nulla vestibulum et nibh quis laoreet. Quisque feugiat arcu ipsum, id mollis quam sagittis at. Morbi tempus, risus molestie ultricies viverra, justo augue facilisis orci, a semper risus dui pellentesque purus. Curabitur facilisis arcu quam, id facilisis turpis aliquam ac. Maecenas efficitur risus pellentesque sem maximus euismod. Proin aliquet justo ac dolor faucibus porttitor. Fusce orci lectus, eleifend at lectus sit amet, pretium ornare felis. Nullam nec ipsum maximus, molestie arcu in, finibus urna. Suspendisse tincidunt feugiat est, in viverra lectus tincidunt quis. Ut eros tortor, tincidunt vel commodo hendrerit, consequat vel neque. Vestibulum enim nibh, accumsan quis viverra ut, iaculis sit amet est. Morbi non lacus at dolor euismod molestie. Integer pulvinar, nibh in volutpat tincidunt, urna odio interdum magna, vitae faucibus felis quam nec est. Proin tellus quam, auctor nec dictum sed, rhoncus nec massa. Mauris ac arcu ac augue porta viverra. Quisque semper eget nisi quis viverra. Donec vitae mauris ipsum. Duis tempor pulvinar viverra. Nam dignissim iaculis felis, eget vestibulum eros. Nulla eget faucibus massa. Integer sollicitudin pretium erat, vel commodo nunc congue non. Nulla in nunc auctor dui efficitur euismod. Sed pharetra sapien erat, a blandit neque porttitor sit amet. Mauris pharetra sodales maximus. Nulla volutpat auctor quam, a elementum risus tristique eu. In ac sodales nibh. Maecenas pharetra orci sem, eu laoreet quam tincidunt non. Mauris in interdum dui. Vivamus et interdum erat. Aliquam nec ante tincidunt, elementum risus in, mattis orci. Sed massa turpis, blandit a rutrum at, dignissim et lectus. Nunc tincidunt orci nibh, id ullamcorper nisl vestibulum vel.</div>
<div style="text-align: justify">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec consequat rhoncus erat, id pellentesque ligula aliquet et. Nam aliquam pellentesque risus. Mauris lorem nunc, sodales pellentesque porttitor ut, pellentesque at felis. Nullam et accumsan leo, in scelerisque massa. Fusce luctus laoreet pretium. Nulla sollicitudin volutpat neque in mattis. Vestibulum non placerat velit. Aenean dui nunc, tincidunt nec tempus et, venenatis vel magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin pretium nisl sit amet lacus varius consequat. Donec congue molestie mauris, a vehicula velit. Nam pellentesque sed arcu congue rutrum. Maecenas pulvinar ex at diam dapibus consectetur ut non nisl. Sed tempus bibendum sodales. Donec nec arcu ligula. Vivamus sit amet aliquet neque, vel volutpat nibh. In purus sem, tincidunt vulputate neque eu, scelerisque hendrerit ex. Donec eu porta lectus, at malesuada magna. Duis ut egestas est. Nullam et libero sit amet lectus tempus pharetra ac id mauris. Ut diam orci, interdum nec suscipit ut, semper nec orci. Fusce sed risus elementum, posuere orci id, aliquam urna. Donec arcu turpis, scelerisque a mauris vel, vehicula convallis ipsum. Phasellus facilisis, magna ut dapibus pretium, sapien mauris viverra enim, ut hendrerit urna dui eu ligula. Nulla vestibulum et nibh quis laoreet. Quisque feugiat arcu ipsum, id mollis quam sagittis at. Morbi tempus, risus molestie ultricies viverra, justo augue facilisis orci, a semper risus dui pellentesque purus. Curabitur facilisis arcu quam, id facilisis turpis aliquam ac. Maecenas efficitur risus pellentesque sem maximus euismod. Proin aliquet justo ac dolor faucibus porttitor. Fusce orci lectus, eleifend at lectus sit amet, pretium ornare felis. Nullam nec ipsum maximus, molestie arcu in, finibus urna. Suspendisse tincidunt feugiat est, in viverra lectus tincidunt quis. Ut eros tortor, tincidunt vel commodo hendrerit, consequat vel neque. Vestibulum enim nibh, accumsan quis viverra ut, iaculis sit amet est. Morbi non lacus at dolor euismod molestie. Integer pulvinar, nibh in volutpat tincidunt, urna odio interdum magna, vitae faucibus felis quam nec est. Proin tellus quam, auctor nec dictum sed, rhoncus nec massa. Mauris ac arcu ac augue porta viverra. Quisque semper eget nisi quis viverra. Donec vitae mauris ipsum. Duis tempor pulvinar viverra. Nam dignissim iaculis felis, eget vestibulum eros. Nulla eget faucibus massa. Integer sollicitudin pretium erat, vel commodo nunc congue non. Nulla in nunc auctor dui efficitur euismod. Sed pharetra sapien erat, a blandit neque porttitor sit amet. Mauris pharetra sodales maximus. Nulla volutpat auctor quam, a elementum risus tristique eu. In ac sodales nibh. Maecenas pharetra orci sem, eu laoreet quam tincidunt non. Mauris in interdum dui. Vivamus et interdum erat. Aliquam nec ante tincidunt, elementum risus in, mattis orci. Sed massa turpis, blandit a rutrum at, dignissim et lectus. Nunc tincidunt orci nibh, id ullamcorper nisl vestibulum vel.</div>
<div style="text-align: right">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec consequat rhoncus erat, id pellentesque ligula aliquet et. Nam aliquam pellentesque risus. Mauris lorem nunc, sodales pellentesque porttitor ut, pellentesque at felis. Nullam et accumsan leo, in scelerisque massa. Fusce luctus laoreet pretium. Nulla sollicitudin volutpat neque in mattis. Vestibulum non placerat velit. Aenean dui nunc, tincidunt nec tempus et, venenatis vel magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin pretium nisl sit amet lacus varius consequat. Donec congue molestie mauris, a vehicula velit. Nam pellentesque sed arcu congue rutrum. Maecenas pulvinar ex at diam dapibus consectetur ut non nisl. Sed tempus bibendum sodales. Donec nec arcu ligula. Vivamus sit amet aliquet neque, vel volutpat nibh. In purus sem, tincidunt vulputate neque eu, scelerisque hendrerit ex. Donec eu porta lectus, at malesuada magna. Duis ut egestas est. Nullam et libero sit amet lectus tempus pharetra ac id mauris. Ut diam orci, interdum nec suscipit ut, semper nec orci. Fusce sed risus elementum, posuere orci id, aliquam urna. Donec arcu turpis, scelerisque a mauris vel, vehicula convallis ipsum. Phasellus facilisis, magna ut dapibus pretium, sapien mauris viverra enim, ut hendrerit urna dui eu ligula. Nulla vestibulum et nibh quis laoreet. Quisque feugiat arcu ipsum, id mollis quam sagittis at. Morbi tempus, risus molestie ultricies viverra, justo augue facilisis orci, a semper risus dui pellentesque purus. Curabitur facilisis arcu quam, id facilisis turpis aliquam ac. Maecenas efficitur risus pellentesque sem maximus euismod. Proin aliquet justo ac dolor faucibus porttitor. Fusce orci lectus, eleifend at lectus sit amet, pretium ornare felis. Nullam nec ipsum maximus, molestie arcu in, finibus urna. Suspendisse tincidunt feugiat est, in viverra lectus tincidunt quis. Ut eros tortor, tincidunt vel commodo hendrerit, consequat vel neque. Vestibulum enim nibh, accumsan quis viverra ut, iaculis sit amet est. Morbi non lacus at dolor euismod molestie. Integer pulvinar, nibh in volutpat tincidunt, urna odio interdum magna, vitae faucibus felis quam nec est. Proin tellus quam, auctor nec dictum sed, rhoncus nec massa. Mauris ac arcu ac augue porta viverra. Quisque semper eget nisi quis viverra. Donec vitae mauris ipsum. Duis tempor pulvinar viverra. Nam dignissim iaculis felis, eget vestibulum eros. Nulla eget faucibus massa. Integer sollicitudin pretium erat, vel commodo nunc congue non. Nulla in nunc auctor dui efficitur euismod. Sed pharetra sapien erat, a blandit neque porttitor sit amet. Mauris pharetra sodales maximus. Nulla volutpat auctor quam, a elementum risus tristique eu. In ac sodales nibh. Maecenas pharetra orci sem, eu laoreet quam tincidunt non. Mauris in interdum dui. Vivamus et interdum erat. Aliquam nec ante tincidunt, elementum risus in, mattis orci. Sed massa turpis, blandit a rutrum at, dignissim et lectus. Nunc tincidunt orci nibh, id ullamcorper nisl vestibulum vel.</div>
</body>
</html>