- From: fantasai via GitHub <sysbot+gh@w3.org>
- Date: Thu, 26 Jan 2023 09:24:52 +0000
- To: public-css-archive@w3.org
OK, so @florian and I did some brainstorming, and here's a simplified version of `text-spacing` and possible longhand expansion that tries to address the comments in #8288 #7183 #4246 #8263
Summary:
```
text-spacing: normal | none | auto | <'text-autospace'> || <'text-spacing-trim'>
text-spacing-trim: auto | space-all | trim-all | [ allow-end || space-first ]
text-autospace: normal | auto | no-autospace |
[ ideograph-alpha || ideograph-numeric || punctuation ]
|| [ insert | replace ]
```
**Fullwidth Punctuation Trimming**
```
text-spacing-trim (or text-spacing-full-width):
auto | space-all | trim-all | [ allow-end || space-first ]
```
This controls the spacing or trimming of fullwidth punctuations at the start, end, and adjacent positions. `[ allow-end || space-first]` are variations on `trim-all`. We don't think that there's a real need for these two values in combination with `space-all`, or with any other mix of the existing keywords; but if we wanted to allow the full combinations, we could insert them all here. The initial value is under debate in #2462 (and will likely be `space-first`).
**Interscript and Punctuation Space Insertion**
```
text-autospace:
normal | auto | no-autospace |
[ ideograph-alpha || ideograph-numeric || punctuation ]
|| [ insert | replace ]
```
The initial value would `normal` (currently defined as `ideograph-alpha ideograph-numeric`).
(`punctuation` is for languages like French, which want a narrow non-breaking space before ;:?! and an normal non-breaking space on the inside of « and ».)
To address one of @r12a’s requests in #7183 (split out as #8263), `insert` inserts spaces where there aren't any (as currently specced) while `replace` will do the same as insert, but also replace incorrect spaces (U+0020 and U+00A0) with correct spacing.
**Compression Control**
```
text-justify: <current-stuff> || no-compress
```
This moves `no-compress` into the `text-justify` property, which is the “how do I justify” control. It would not be reset by the `text-spacing` shorthand, which is probably better.
**Shorthand**
The shorthand for these would be:
```
text-spacing: normal | none | auto | <'text-autospace'> || <'text-spacing-trim'>
```
`normal` sets both to their initial values; `none` maps to `no-autospace space-all` (which is the “do nothing” value appropriate for e.g. monospace text, or to avoid compat issues with fiddly legacy content).
<hr>
**Excess Longhands**
It might be reasonable for the two functions of `text-autospace` to cascade independently, so it could have further longhands (names TBD):
* `text-autospace-style: normal | no-autospace | auto | [cjk-alpha || cjk-num || punctuation ]` with initial value `normal`
* `text-autospace-mode: insert | replace` with initial value `insert`
`text-spacing-trim` could also have further long-hands as described in https://github.com/w3c/csswg-drafts/issues/8288#issuecomment-1375213160, with a full explosion of possible combinations. However, these seem unnecessary (as most combinations aren't actually useful) and possibly a cascade footgun (if authors try and tweak something on top of an assumed base behavior using a longhand, without noticing that the other longhands have a cascaded behavior different from what they assumed would be there as the base behavior).
--
GitHub Notification of comment by fantasai
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/4246#issuecomment-1404738513 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 26 January 2023 09:24:54 UTC