- From: fantasai via GitHub <sysbot+gh@w3.org>
- Date: Fri, 02 Aug 2024 18:38:01 +0000
- To: public-css-archive@w3.org
fantasai has just created a new issue for https://github.com/w3c/csswg-drafts:
== [css-inline-3] Naming text-box-trim et al. ==
Just landed the edits to split `text-box-edge` into two properties and add a shorthand with text-box-trim in https://github.com/w3c/csswg-drafts/commit/7869dc6823e2ce9c6d816c33fb070ed5c317eb1a ; see
* [CSSWG resolution in 8829](https://github.com/w3c/csswg-drafts/issues/8829#issuecomment-1699500216)
* [line box sizing property definition](https://drafts.csswg.org/css-inline-3/#text-edges)
* https://drafts.csswg.org/css-inline-3/#leading-trim (leading-trim properties and shorthand)
We had left open some amount of bikeshedding to follow up on, so before I publish the draft I wanted to run the current state by the CSSWG.
Here's the syntax tree:
```
<text-edges> = [ text | cap | ex | ideographic | ideographic-ink ]
[ text | alphabetic | ideographic | ideographic-ink ]?
<text-trim> = start | end | both
/* line box sizing property (inherited) */
line-fit-edge: leading | <text-edges>
/* leading-trim properties (non-inherited) */
text-box: normal | <text-trim> || <text-edges>
text-box-trim: none | <text-trim>
text-box-edge: auto | <text-edges>
```
Shorthand details:
* `text-box: normal` sets to initial values (`none`/`auto`).
* Setting only `<text-trim>` defaults `text-box-edge` to `auto` (initial value).
* Setting only `<text-eges>` defaults `text-box-trim` to `both` (not initial value).
Additional details:
* `text-box-edge: auto` copies from `line-fit-edge`, treating `leading` as `text`.
* Reminder: `line-fit-edge` values other than `leading` opt into the newer line box sizing model (leading only on root inline, honoring margin/border/padding on inline boxes).
Consequences:
* Defaulting this way enables trimming the leading by just setting a `<text-trim>` value.
* If the author set something more aggressive and script-specific for the inherited `line-fit-edge` property, that gets passed through as the default trim edges.
* They can alternatively set an explicit trim value.
* Shorthanding magic means that:
* `text-box: both` sets trimming to the default edge.
* `text-box: cap alphabetic` sets trimming to those edges on both sides.
* `text-box: normal` does the normal thing of not trimming the line box. :)
Additional Suggestion:
Having the `text-box` shorthand take `start | end | both` reads badly, suggest renaming these keywords to `trim-start | trim-end | trim-both` for two reasons:
* Consistency with `text-spacing-trim`
* The shorthand reads a lot more reasonably: `text-box: trim-both` rather than `text-box: both` which is weird.
Proposed Resolutions:
* Adopt `text-box`/`text-box-trim`/`text-box-edge` properties as outlined above.
* Rename `start | end | both` values of `text-box-trim` to `trim-start | trim-end | trim-both`.
* Name the line-box sizing property (previously discussed as `text-line-edge` to contrast with `text-box-edge`) to `line-fit-edge` (for now), or to some alternative that people might suggest here.
* Republish css-inline-3 as WD with [these edits](https://drafts.csswg.org/css-inline-3/#changes).
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10675 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Friday, 2 August 2024 18:38:02 UTC