日本語の CSS タイポグラフィ
Chrome が実装しているもの一覧。
https://developer.chrome.com/blog/css-i18n-features?hl=ja
文節区切りでの折返し
code: css
.text {
word-break: normal;
}
lang="ja" な要素に対して word-break: auto-phrase を指定していると BudouX を使って文節区切りで折り返しする。Chrome 119 以降で使える。
https://developers-jp.googleblog.com/2023/09/budoux-adobe.html
和欧間スペース
code: css
.text {
/* ideograph-alpha ideograph-numeric と等価 */
text-autospace: normal;
}
text-autospace: normal を指定すると CJK とアルファベット、数字間に自動でスペース(アキ)を入れる。Chrome 139, Safari 18.4 以降で使える。
https://drafts.csswg.org/css-text-4/#text-autospace-property
テキストに U+0020 スペースがある場合は text-autospace: ideograph-alpha ideograph-numeric replace とすることで置き換えることができる。
デフォルト値が当初 text-autospace: normal となっていたが、議論の末 text-autospace: no-autospace に変更になった。
https://github.com/w3c/csswg-drafts/issues/12386#issuecomment-3028532137
アキは全角の1/8になる。
@MurakamiShinyu: @h_okumura 四分では大きすぎという議論があり、Webでの標準は全角の1/8になる見込みです。
CSS仕様で、和欧間スペースとともに約物の詰めも近い将来に標準になりそうなのですが、行頭約物処理のデフォルトをどうするかが問題になってます。このスレッドを参照(アンケートあり):
https://x.com/MurakamiShinyu/status/1717733068017217847
https://drafts.csswg.org/css-text-4/#inter-script-spacing
記号類などで考慮する必要があり、結果として CSS で無効にして自身でスペースを入れられるように制御できるものとして話が進んだ。
割といろいろあるように思いますが、先日少し気にしてみていたところだと、記号類が多かったような気がします。
C#
Love Live!
12%
-12
~12
https://lists.w3.org/Archives/Public/public-i18n-japanese/2023JulSep/0104.html
半角カナに対してはベタになる。
現在のCSSの和欧間アキプロパティ "text-autospace" では、半角カナは、欧文(non-ideographic letters)として分類されています。JLREQではご承知のように半角・全角の区別をしていないため、この部分は定義されていないと理解しています。
この仕様だと、和文と半角カナの間にアキが入ってしまいます。これは望まれない挙動だと理解していますが、ご意見いただけますでしょうか?
この仕様を修正すると仮定した場合、半角カナは、「和字」とするか、「その他記号」扱いにするか、という疑問が残ります。これは、半角カナと欧文の間にアキを挿入するかどうか、という挙動に影響します。
互換文字であるということを考慮すれば、半角カナと欧文の間にアキは挿入しない、で良いと思いますが、こちらもご意見いただけますでしょうか?
https://lists.w3.org/Archives/Public/public-i18n-japanese/2023OctDec/0160.html
JISにあるかどうかは私も調べていませんが、Webでは今でも散見しますので、「なにか決めないといけない」のだと思います。
和字との間はアキなし(ベタ)
欧字・数字との間もアキなし(ベタ)
ですね。これでCSSWGに返しておきます。
https://lists.w3.org/Archives/Public/public-i18n-japanese/2023OctDec/0187.html
行頭約物詰め
code: css
.text {
text-spacing-trim: space-first;
}
行頭の約物(、 「 など)を詰めるかどうか指定する。Chrome 123 から使える。
https://drafts.csswg.org/css-text-4/#text-spacing-trim-property
デフォルト挙動 normal は行頭、行末で全角になる。
https://gyazo.com/a377d901f55c30a13dd12bac786d233e
議論時の様子。
@MurakamiShinyu: CSS text-spacingの行頭約物処理のデフォルト候補は
A. 行頭約物すべて詰める
B. 折り返し行頭のみ詰める
C. 行頭約物すべて詰めない
Aだと既存コンテンツ(電子書籍・小説など)に悪影響が出るため現在ドラフト仕様はB。
しかしBはポータルサイトの見出し一覧などで違和感があると指摘があり議論に。