text-autospaceは、比較的新しいCSSのプロパティです。Safari 18.4でリリース済み、Google Chrome 140でリリース予定(記事執筆時点のChromeバージョンは138)です。
text-autospaceとは
簡単に言うと、これはCJK文字(漢字、ひらがな、カタカナなど)と英数字(典型的には半角英数)との間に、自動的にスペースを入れることができる機能です。no-autospace
を指定すると自動的にスペースを入れない(従来通りの動作)、normal
を指定すると自動的にスペースが入ります(他にも指定方法がありますが省略)。
normal
の時に自動的に入るスペースは1/8スペース(八分アキ)です。これは、全角スペースの1/8の幅の細いスペースです(正確な定義では、「水」という文字の横幅の1/8の幅のスペースとされています)。
実際に、Google Chromeを使用してtext-autospace: no-autospace
と text-autospace: normal
を比較してみましょう。
Windows 11 + Google Chrome
フォントはNoto Sans JPです。
no-autospace | normal |
---|---|
![]() |
![]() |
Mac + Google Chrome
フォントはヒラギノ角ゴシック ProNです。
no-autospace | normal |
---|---|
![]() |
![]() |
どちらの比較でも、normal
の場合若干英数字の周りにスペースが入っていることが見て取れます。
背景
現在、このtext-autospaceの初期値をめぐって議論が起こっています。
もともと、仕様ではtext-autospace: normal;
が初期値とされていました。normal
は、上述のように自動でスペースを入れます。
つまり、text-autospace
をブラウザが実装すると、自動的に8分アキが入り、既存のWebページでも若干表示が変わるということです。
ところが、Safariが最初にtext-autospaceを実装した際、仕様に反して、初期値no-autospace
で実装しました。Google Chromeはもともと初期値normal
で実装することを予告していましたが、Google Chromeも初期値をnormal
ではなくno-autospace
にする方に傾いており、仕様のほうを変えるべきかどうかという議論に発展しました。
議論においては、text-autospace: normal
はパフォーマンスのオーバーヘッド(レイアウト時間の1~5%)があるためデフォルトにするのはいかがなものか、といったようなパフォーマンスの話もありました。またWebなので後方互換性の議論も当然あります。その中でも筆者が注目したいのは、東アジア圏の著者(特に日本人)の執筆習慣について議論されていることです。
そこで、この観点を中心にChatGPTさんに議論の内容をまとめてもらいました。
議論の内容
議論では、複数の関係者がそれぞれ意見を述べています。
以下はChatGPTさんに参加者の意見を要約してもらったものです(敬称略)。
kojiishi(提案者): 多くの既存コンテンツはASCIIスペース併用が前提なので、どちらの初期値でも大きな差は無い。むしろ、明示的選択できる仕様が重要との立場。
nt1m: 将来の著者のためにデフォルトが normal であるべきとの意見。ただしCJK向けの専門知識を要すると補足 。
masayuki‑nakano(Geckoエンジニア): パフォーマンスや後方互換の観点から、初期値は no‑autospace が妥当との懸念。
frivoal(CSSWGコラボレータ): 将来の標準として、明示的選択が可能であれば normal を初期値に据えるべきとの判断 。
jensimmons(Safari): 「まずは conservative に、後に仕様・実装で切り替えられる余地を取りつつ、no-autospace を一旦選ぶ」方針。
sakupi01: 日本語における実態に基づき「現在の傾向を踏まえると no‑autospace が現実的」としつつ、CJK特有の事情も重視。
また、議論においては、われわれ一般の日本人がどのような慣習で文章を書いているのかについても言及されました(以下もChatGPTによるまとめ、敬称略)。
1. 「多くの日本人は、CJKと英数字の間に手動でスペースを入れている」
発言者: kojiishi
内容:
「多くの日本人はすでに ASCII スペースを自分で入力しているため、text-autospace: normal を使ってもあまり影響は出ない」
→ 日本語文中に英単語や数字が混ざる際、多くの著者が意識的にスペースを挿入しており、自動スペースとの二重適用は避けられる、という前提。
2. 「最近の日本のスタイルガイドでは、スペースを入れない傾向が強まっている」
発言者: kojiishi、sakupi01
内容:
「昔はスペースを入れるのが一般的だったが、最近では入れないように変わってきている」
→ 現代日本語の表記トレンドは「英数字と日本語の間にスペースを入れない」方向にあり、自動挿入は現実と乖離する可能性があると指摘。
3. 「日本の実際のWebサイトの多くでは、スペースを入れていない(あるいは混在している)」
発言者: sakupi01
内容:
「日本の実際のサイトを見ると、スペースを入れていないところも多く、また入れているところも混在している」
→ 実務的には統一されておらず、仕様の初期値がどちらになっても「正解」とは限らないという示唆。
4. 「日本人の読者はスペースがあると読みにくいと感じる可能性がある」
発言者: sakupi01
内容:
「読者側として、スペースが自動的に入ってしまうと違和感を持つこともある」
→ 日本語の読者視点では、英数字との間に過剰なスペースがあると「読みづらい」「不自然」と感じる傾向がある、という文化的仮定。
5. 「日本人著者が text-autospace: normal を知らずに書いたとき、意図しないスペースが入ってしまうかもしれない」
発言者: kojiishi
内容:
「デフォルトが normal だと、意識していない日本人著者にとって予期しない表示になるかもしれない」
→ 多くの著者は text-autospace の存在を知らないまま執筆しており、それがブラウザで勝手に適用されると混乱の原因になるという懸念。
6. Twitterアンケート結果(日本語話者中心)
発言者: kojiishi
内容:
「CJKと英数字の間にスペースを入れるかどうか」に関する投票で、「入れない派」が60%以上という結果に。
→ 実態として、日本語話者の多数が「スペースなし派」であり、仕様上もそれに即した設計が望ましいという補強材料として提示。
筆者の意見
筆者個人の意見としては、normal
が初期値のほうが望ましいと思います。議論の参加者の中ではfrivoalやfantasai(敬称略)に近い意見です。
議論の方向性に対して筆者として納得がいっていないのは、「CJK文字と英数字の間にスペースを入れない著者が多数派」という話(Twitterアンケートで60%以上が入れないという話がありましたね)が、no-autospace
をデフォルトとする主張の論拠として使われてしまいがちな点です。
別にスペースを入れていない人がすべて、スペースが入ることを望んでいないわけではないと思うのですが、ここは少し、議論の中で論理の飛躍が発生してしまっている点です(飛躍を避けて議論してくれている人もいますが)。
筆者はスペースを入れませんが、それでも初期値はnormal
にしてほしいと思います。書く側としては、筆者は以下のようなことを考えています。
- わざわざスペースを入れないのは、単に面倒だからであって、自動的に組版を改善してくれるならそれに越したことはない。
- 手でスペースを入れると半角スペースになってしまい、自動で挿入される1/8スペースとは話が異なる。半角スペースは間を空けすぎだと思うが、1/8スペースならちょうどいい。手動でUnicodeの1/8スペースをわざわざ入れる人はほとんどいない。
そのため、筆者の価値観では、「スペースを手で入れていない人は自動的にスペースが入ることを望んでいない」というのは強すぎる仮定であり、実際には、自動で1/8程度のスペースが入るのが著者の意図に反してしまうことはあまりないだろうと思います。そのため、組版の改善のために、デフォルトnormal
が望ましいという立場です。
以上のような意見を言ってくれる人もいますが、議論をリードするkojiishi(敬称略)はあまり取り合っていないようで、筆者個人としては残念に思います。
まとめ
この記事では、CSSのtext-autospace
の現状と、その初期値にまつわる議論を紹介しました。
特に、我々日本人の執筆習慣が、CSSを策定する人たちにどのように思われているのか垣間見えます。上に書かれているようなことは、皆さんの直観に合っていましたか?
実際の議論は以下で見ることができますし、何なら皆さんも意見を表明することができます(あまりスパムみたいなことをされると困りますが)。意見のある方は書きにいってみてはいかがでしょうか。筆者もコメントを書きました。
また、記事公開から7日間、Xでアンケートもとってみますので、よければ投票してみてください。
Views: 0