Description
In #4448 (comment) we resolved that ::marker should have white-space: pre
in UA origin. That is needed for outside markers, and we decided to keep it simple and also apply it to inside markers.
But consider this case:
<ol style="list-style-position: inside">
<li>Text</li>
<li>
Text
</li>
</ol>
For block container elements like <li>
, leading and trailing space doesn't matter. So just looking at the HTML, some authors may think that both Text
will be aligned equally.
However, the ::marker is inserted at the very beginning of the <li>
, and since it's inside, it behaves as a normal inline. So the leading space is no longer at the beginning of the line, and is not trimmed in §4.1.2.1.
Since the ::marker has a trailing space, both list items could still look the same via §4.1.1:
Any collapsible space immediately following another collapsible space [...] is collapsed
But that doesn't apply if the ::marker has white-space: pre
. So the 1st list item ends up with 1 space and the 2nd list item with 2 spaces.
What behavior do we want here? We don't have interoperability:
-
In Chromium (both legacy and LayoutNG), WebKit and old Edge, the texts are aligned:
-
In Firefox, they aren't:
So I guess we can choose among:
- Keep
white-space: pre
. Firefox is correct, changing Chromium will be trivial. - Keep
white-space: pre
but add some magic that if a text ::marker has a trailing space and is followed by collapsible spaces, then these collapsible spaces are removed, even if the ::marker space is not collapsible. This will keep Chromium's behavior but implementing this magic would be annoying. - Say that inside markers don't get assigned
white-space: pre
in UA origin. This is close to what Chromium does right now. But I guess doing this properly would need pseudo-classes like::marker:inside
and::marker:outside
, even if just for internal use, but that would create a circularity if in the future we allow settinglist-style-position
in the ::marker itself.
I lean towards 1.