Open tabatkins opened 8 years ago
IE5/Mac would include starting punctuation as part of the :first-letter per CSS1/2.1 specs, so that e.g. if you floated it, or sized it the leading quote and next character would both be affected. Do we have any existing test cases for this?
We have hundreds of first letter tests with punctuation: http://test.csswg.org/shepherd/search/testcase/spec/css21/section/5.12.2/name/first-letter-punct/
Figure 7 in the spec does show initial punctuation. I can certainly see the value in having more control over this, but I would prefer to defer that to the next level of the spec.
We need to keep in mind that initial punctuation isn't always quotes, sometimes it's brackets. And typographic practice probably varies a lot between English and CJK, so automatic rules that make sense for English might not in Japanese typesetting. The description in http://theworldsgreatestbook.com/book-design-part-6/ shows a lot of subtleties that would be nice to have control over but certainly shouldn't be done automatically for all classes of punctuation worldwide.
Probably the two things that we need here are to a) clarify handling of hanging-punctuation
in the presence of initial-letter
and b) look into adding a pseudo-element like ::first-punctuation
or something, to allow the author to select and style punctuation that is part of ::first-letter
.
Checked in spec text to exclude hanging punctuation from being measured as part of the initial letter's box. This better clarifies that when there is hanging punctuation, it is not considered when positioning the initial letter. It has the effect, however, that the punctuation may be drawn outside the initial letter box (since it is not measured when fitting the box to the initial letter contents).
The alternative would be to add a magical negative margin equal to the advance of the hanging punctuation. This would preserve the behavior of aligning the initial letter as if it didn't have the punctuation, but ensure that it is included in the initial letter box (which matters if you happen to make it visible).
I've marked this as an open issue in the spec. Thoughts?
A related, but independent question is: should we allow initial-letter
to apply to an inline element that is not the first-most descendant of the block container, but is preceded only by hanging punctuation?
Note, the issue of a pseudo-element for controlling ::first-letter
punctuation is filed as https://github.com/w3c/csswg-drafts/issues/2040
Rewording and expanding on the previous comment in outline form:
We made some clarifications to how hanging-punctuation and initial-letter interact, see https://github.com/w3c/csswg-drafts/commit/502194f64482c12fd75486a7b6154ad371f333ae
We ignore the hanging punctuation when positioning the initial letter. Fine. What happens if we put a background on it? Is the punctuation included?
Related, but independent question: should we allow initial-letter
to apply to an inline element that is not the first-most descendant of the block container, but is preceded only by hanging punctuation?
Note, the issue of a pseudo-element for controlling the formatting of first-letter–associated punctuation is filed as #2040. It is an independent problem.
I think the background and border should extend around the hanging punctuation by default, so that it doesn’t end up unreadable (if it straddled the border otherwise, for instance). Just my opinion, currently.
Not sure I fully understand the second bullet of that question.
On Thu, May 26, 2016 at 5:44 AM, Doonge .Hagen doonge@oddsquad.org wrote: