WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
153980
Soft hyphen is not shown when it is placed at the end of an inline element
https://bugs.webkit.org/show_bug.cgi?id=153980
Summary
Soft hyphen is not shown when it is placed at the end of an inline element
Roman Komarov
Reported
2016-02-08 02:33:52 PST
Test case:
http://codepen.io/kizu/pen/bEQNVL
When there is a soft hyphen at the end an inline element and there is a line break at it, the hyphen is not shown. This prevents authors from styling the soft hyphens only, as it is impossible to wrap them into their own element to apply styles, like `mmmmm<span class="soft-hyphen">­</span>mmmmmmmm`. In other browsers (Fx, Edge) everything works as intended.
Attachments
Patch
(9.20 KB, patch)
2016-02-18 09:58 PST
,
alan
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews100 for mac-yosemite
(969.78 KB, application/zip)
2016-02-18 10:44 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews106 for mac-yosemite-wk2
(1021.47 KB, application/zip)
2016-02-18 10:48 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews117 for mac-yosemite
(1.00 MB, application/zip)
2016-02-18 10:57 PST
,
Build Bot
no flags
Details
Patch
(9.21 KB, patch)
2016-02-18 14:14 PST
,
alan
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
alan
Comment 1
2016-02-17 14:01:50 PST
We missed the case when the character at the breaking position does not fit the line and soft-hyphen is followed by this overflowing character. (foo­bar where b overflows the line). In such cases we don't yet have an item in the breaking history. This should fix it -> diff --git a/Source/WebCore/rendering/line/BreakingContext.h b/Source/WebCore/rendering/line/BreakingContext.h index b44c5a2..46b1c68 100644 --- a/Source/WebCore/rendering/line/BreakingContext.h +++ b/Source/WebCore/rendering/line/BreakingContext.h @@ -903,8 +903,28 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool m_lineInfo.setPreviousLineBrokeCleanly(true); wordMeasurement.endOffset = m_lineBreakHistory.offset(); } - if (m_lineBreakHistory.offset() && downcast<RenderText>(m_lineBreakHistory.renderer()) && downcast<RenderText>(*m_lineBreakHistory.renderer()).textLength() && downcast<RenderText>(*m_lineBreakHistory.renderer()).characterAt(m_lineBreakHistory.offset() - 1) == softHyphen && style.hyphens() != HyphensNone) - hyphenated = true; + // Check if the last breaking position is a soft-hyphen. + if (!hyphenated) { + const RenderText* textRenderer = nullptr; + Optional<int> breakingPositon; + if (m_lineBreakHistory.historyLength() && is<RenderText>(m_lineBreakHistory.renderer())) { + textRenderer = downcast<RenderText>(m_lineBreakHistory.renderer()); + breakingPositon = m_lineBreakHistory.offset(); + } else if (nextBreakablePosition > -1 && is<RenderText>(m_current.renderer())) { + textRenderer = downcast<RenderText>(m_current.renderer()); + breakingPositon = nextBreakablePosition; + } + if (textRenderer && breakingPositon) { + if (breakingPositon.value() == 0) { + // We need to check the previous renderer for the soft-hyphen character instead. + textRenderer = is<RenderText>(m_lastObject) ? downcast<RenderText>(m_lastObject) : nullptr; + if (textRenderer) + breakingPositon = textRenderer->textLength(); + } + UChar characterBeforeBreakingPosition = textRenderer->characterAt(breakingPositon.value() - 1); + hyphenated = characterBeforeBreakingPosition == softHyphen && style.hyphens() != HyphensNone; + } + } if (m_lineBreakHistory.offset() && m_lineBreakHistory.offset() != (unsigned)wordMeasurement.endOffset && !wordMeasurement.width) { if (charWidth) { wordMeasurement.endOffset = m_lineBreakHistory.offset(); Patch is coming up soon. (need to see first if checking prev is sufficient enough)
alan
Comment 2
2016-02-18 09:58:44 PST
Created
attachment 271665
[details]
Patch
Build Bot
Comment 3
2016-02-18 10:44:27 PST
Comment on
attachment 271665
[details]
Patch
Attachment 271665
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.webkit.org/results/850622
New failing tests: fast/text/midword-break-after-breakable-char.html
Build Bot
Comment 4
2016-02-18 10:44:32 PST
Created
attachment 271668
[details]
Archive of layout-test-results from ews100 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-yosemite Platform: Mac OS X 10.10.5
Dave Hyatt
Comment 5
2016-02-18 10:46:37 PST
Comment on
attachment 271665
[details]
Patch r=me
Build Bot
Comment 6
2016-02-18 10:48:42 PST
Comment on
attachment 271665
[details]
Patch
Attachment 271665
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.webkit.org/results/850626
New failing tests: fast/text/midword-break-after-breakable-char.html
Build Bot
Comment 7
2016-02-18 10:48:47 PST
Created
attachment 271671
[details]
Archive of layout-test-results from ews106 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Build Bot
Comment 8
2016-02-18 10:57:12 PST
Comment on
attachment 271665
[details]
Patch
Attachment 271665
[details]
did not pass mac-debug-ews (mac): Output:
http://webkit-queues.webkit.org/results/850625
New failing tests: fast/text/midword-break-after-breakable-char.html
Build Bot
Comment 9
2016-02-18 10:57:17 PST
Created
attachment 271672
[details]
Archive of layout-test-results from ews117 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-yosemite Platform: Mac OS X 10.10.5
alan
Comment 10
2016-02-18 14:14:39 PST
Created
attachment 271693
[details]
Patch
WebKit Commit Bot
Comment 11
2016-02-18 15:48:16 PST
Comment on
attachment 271693
[details]
Patch Clearing flags on attachment: 271693 Committed
r196782
: <
http://trac.webkit.org/changeset/196782
>
WebKit Commit Bot
Comment 12
2016-02-18 15:48:21 PST
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug