2016-03-04 22:39:49 UTC
I have begun implementing hanging punctuation in WebKit. So far the “first” and “last” values are supported, and “allow-end/force-end” are coming soon. I had a few questions after implementing:
(1) Can you only hang one character? That’s what I did, but if there’s a run of characters all in the Ps category should I be hanging them all when hanging-punctuation is “first” or just a single one? (Similar question for “last”.) In my research of typography examples, I do see situations where - for example - a period and quote mark together both get hung.
(2) Normal quotation marks don’t belong to Ps/Pe/Pf/Pi. Not an issue necessarily but figured I’d bring that up in case it’s an oversight that those can’t be hung.
(3) allow-end/force-end doesn’t include hyphens. In my research of hanging punctuation, I found typographic examples of hanging punctuation where hyphens hang at the end of lines of justified text. I wonder if this should be an additional value to the property. It’s unclear to me if people want this capability or not, but I figured I’d mention it since I found examples of it.
(4) How to handle kerning, e.g., for hanging-punctuation:first, if I hang an opening quote mark, the next letter may also be offset to the left, since it pushes into the quotation mark. Should kerning simply be turned off when you hang punctuation between the hung punctuation and the following glyph?
(5) “Non-zero inline-axis borders or padding between a hangable mark and the edge of the line prevent the mark from hanging.” I would include margins also, i.e., any “spacer” introduced by inlines should turn off hanging.
(6) The WG resolved overflow is ink overflow. I think it should be scrollable overflow. I can elaborate on this if needed, but it’s a selectable character that has to be reachable when edited and cut/copied etc. Any designer is going to leave space for hanging punctuation if they turn it on, so fears of scrollbars are unfounded IMO. It’s also an annoying amount of additional work to treat that as ink overflow when the common sense implementation just moves the line box (and line boxes are scrollable overflow obviously). This is similar to text-indent, which creates layout overflow when negative, so it’s not clear to me why hanging punctuation can’t behave the same way.
Regardless of ink vs. layout, the designer has to leave space for hanging punctuation if they decide to use this feature, so I would prefer we go with the more common sense implementation choice.