不可視文字の秘密:空白にも種類がある

雑記Topに戻る

空白にも、幅と働きの違いがある

文字の間が空いて見えても、そこに入っているのが同じ「スペース」とは限りません。普通の空白、改行を避ける空白、幅の狭い空白、そして幅を持たない制御用の文字があります。見た目だけで区別できないため、コピーした文章が検索に引っかからない、行が思わぬ位置で折れる、といった原因にもなります。

まず区別したいのは、文字として保存された空白と、文字間隔や余白の設定で生まれた空きです。後者はコピーしても空白文字にならないことがあります。また、見えない文字を全部「空白」と呼ぶのも正確ではありません。文字の結合や改行を制御する符号は、空白幅を作る文字とは別の役割を持っています。

よく出会う空白と不可視文字

代表的な空白・不可視文字の役割
名前 Unicode 主な働き
通常の空白 U+0020 SPACE 英単語などを区切る。幅はフォントや組版による
いわゆる全角空白 U+3000 IDEOGRAPHIC SPACE 和文で使われる空白。一般に全角字幅を持つ
改行しない空白 U+00A0 NO-BREAK SPACE 通常、その位置での自動折り返しを避ける
狭い改行しない空白 U+202F NARROW NO-BREAK SPACE 狭い空きと改行抑制を組み合わせる
細い空白 U+2009 THIN SPACE 通常の空白より細い空きを設ける
幅のない空白 U+200B ZERO WIDTH SPACE 目立つ空きを作らず、折り返しの候補位置を示す
単語連結子 U+2060 WORD JOINER 幅を持たず、前後での改行を抑制する
ゼロ幅接合子 U+200D ZERO WIDTH JOINER 文字の接合や一部の絵文字列の組合せに関わる

「全角」「半角」は日常的には便利な呼び方ですが、すべての空白が一定の幅を持つわけではありません。比例幅フォント、文字サイズ、字間調整、両端揃えなどによって、実際に画面上で見える距離は変わります。U+0020を二つ置けば必ずU+3000一つと同じ幅になる、という規則もありません。

空きを作ることと、改行を許すことは別

例えば数値と単位を一まとまりに見せたいとき、「10」と「kg」の間にNO-BREAK SPACEを入れると、その空白の位置での自動折り返しを通常は避けられます。これは改行そのものを文章全体で禁止する機能ではなく、その位置の改行機会を制御する仕組みです。アプリが採用する組版規則によっても結果は変わります。

反対にZERO WIDTH SPACEは、空きを増やさず折り返し候補を与えます。長い文字列の区切りを知らせる用途がありますが、URLや識別子の途中に不用意に入れると、コピー先では元の文字列と一致しなくなることがあります。見やすさのために入れた符号が、そのままデータの一部になる点に注意が必要です。

ウェブでは、空白を連打しても広がらないことがある

通常のHTML表示では、連続した半角スペースや改行の多くが、CSSの空白処理によってまとめられます。ソースにスペースを五つ書いても、画面に五つ分の幅が残るとは限りません。一方、整形済みテキストとして空白を保持する設定もあります。保存されている文字列と、その表示方法は別々に調べる必要があります。

表の位置を合わせるために空白を大量に挿入すると、スマートフォンや別のフォントで崩れがちです。表は表として作り、字下げは段落やスタイルの設定で行う方が扱いやすくなります。タブも「何個かのスペース」そのものではなく、次のタブ位置まで進める制御文字なので、環境によって幅が変わります。

見えない文字を疑ったときの調べ方

文章が一致しないときは、まず原文を残したまま、問題の前後を短く切り出します。次にエディターの空白表示を有効にし、それでも分からなければUnicodeのコードポイントを表示できる機能で確認します。「見えないから削除」ではなく、何の符号がどこにあるかを確かめるのが先です。

特にZWJを一律に消すと、一つに見えていた絵文字が分かれたり、言語によっては文字の接続が変わったりします。改行しない空白を普通の空白へ置換すると、文章の折り返し方も変わります。検索用の別データを作って整えることと、原文を修正することは分けて考えると安全です。

関連する雑記

参考資料

資料確認日:2026年10月2日

雑記Topに戻る