ウェブブラウザの半角/全角スペース問題。

PC版へ 2014年10月28日

ブラウザ上で半角/全角スペースがどのように表示されるのか。すなわち、HTMLソースに " " (半角スペース)や " " (全角スペース) や   を書いた時に、ブラウザはどんなレイアウトをしてくれるのか、、今更ながらにまとめてみます。

半角スペース(U+0020)

: キーボードのスペースバーを押すと入力される奴。

ついさっき知ったのだけれど、"半角スペース" と、 " " で挿入される空白は、見た目は同じでも別の文字コードを持つ他人様なのですね。

他人様なので振る舞いが異なるのは当然、と。

で、全角スペース。

全角スペース(U+3000)

全角スペースの場合は、特にややこしい事はありませんね。

と、ここまでは閲覧するウェブブラウザの種類に関わらず、どのブラウザから見てもそのように表示されるわけですが、例えば以下のようなHTMLを書くと、ブラウザごとに表示内容が異なってきます。

<!-- 幅が決まった要素内で、その幅を超えるような連続した全角スペースを打ち込む。-->

<style>
.w10em{
  width:10em;
  border:1px solid black;
}
</style>

<div class="w10em">
           ←全角スペース11個
</div>

それから、こんなのも。

<!-- 末尾に全角スペースがある文字列を右寄せ -->

<style>
.r{
  text-align:right;
  width:20em;
  border:1px solid black;
}
</style>

<div class="r">
末尾に全角スペースがあるよ→ 
</div>

うーん。

IEとそれ以外、どちらが処理として正しいだとか間違いだとかではなくて、こういうところは振る舞いを統一して欲しいのだな。

ま、文書の整形にはスペースを使わずに、スタイルシートの margin や padding などを使いなさいな、という真っ当な結論です。

何故、長々とこんなことを書いたかというと、ウチの縦書きスクリプト・h2v.jsが、この辺りの処理をなぁなぁにしているからなのですな。今後、半角/全角スペースやHTMLエンティティの処理を、きちんとやっていく予定にしています。

関連記事

コメント

現在、コメント機能は停止しています。