Unicodeのその他の空白文字の行末吸収について

村上です。
11/24のミーティングで、Unicodeの空白文字のうち、U+0020とU+3000しか行末吸収されない問題があると発言しました。これについて訂正します。
たしかに現状のブラウザはその問題があるのですが、現在のCSS Text Level 3仕様を確認したところ、仕様ではすでに修正されており、U+0020とU+3000だけでなくUnicodeの空白文字は基本的に行末吸収(正確には行末ぶら下げ)されることとなってました。
(CSS仕様のissueで解決済み: [css-text] Hanging/collapsing of fixed-width spaces not specified <https://github.com/w3c/csswg-drafts/issues/3879> )

現在のCSS Text Level 3仕様 <https://www.w3.org/TR/css-text-3/>のこれに関する箇所は「4.1. The White Space Processing Rules <https://www.w3.org/TR/css-text-3/#white-space-rules>」の「4.1.2. Phase II: Trimming and Positioning <https://www.w3.org/TR/css-text-3/#white-space-phase-2>」の次のところ

4. If there remains any sequence of white space, other space separators <https://www.w3.org/TR/css-text-3/#other-space-separators>, and/or preserved tabs at the end of a line (after bidi reordering [CSS-WRITING-MODES-4]):
If white-space is set to normal, nowrap, or pre-line, the UA must hang this sequence (unconditionally).

ここで、"other space separators" というのが次のように定義されています:

all characters in the Unicode general category Zs except space (U+0020) and no-break space (U+00A0) are collectively referred to as other space separators.

つまりUnicode空白文字のうち、U+0020とU+00A0を除くものはすべて該当します。

この現在の仕様になる前の仕様 https://www.w3.org/TR/2018/WD-css-text-3-20181212/#white-space-phase-2 では、次のルールでした(U+0020とU+3000しか行末吸収されない):

3. A sequence at the end of a line (ignoring any intervening inline box boundaries) of collapsible spaces (U+0020) and/or ideographic spaces (U+3000) whose white-space value collapses spaces is removed.

2019年のドラフト仕様ではこれが修正されたのですが、ブラウザの実装はまだ修正前の仕様のままという状態です。
Web Platform Testsでの該当するテストへのリンク:
https://wpt.fyi/results/css/css-text/white-space?label=master&label=experimental&aligned&q=trailing-other-space-separators-0
これを見ると、Chrome、Edge、Firefox、Safariのどれもまだother space separatorsの行末吸収(ぶら下げ)ができていないのが分かります。

仕様の上では4年も前に修正されたのに、まだブラウザでそれが実装されてません。
(Chromium bugsに Issue 991413: Implement the spec changes for trailing other spaces <https://bugs.chromium.org/p/chromium/issues/detail?id=991413> が登録されてはいる)
いずれはブラウザに仕様通りに実装されるのを期待。

ということで、仕様についてはこの問題は解決済みでした。

Vivliostyle村上

Received on Monday, 27 November 2023 13:31:24 UTC