空白コピペ
見た目が空になる文字を集めました。タイルを押すと、その文字がそのままコピーされます。どれも性質が違うので、下の表で見分けてください。
タップするとコピーできます。入力した内容がどこかに送られることはありません。
「空白」と呼ばれている文字は一つではない
見た目が空になる文字はいくつもあり、性質は違います。五つを Python の unicodedata で調べました。右端は、その文字だけを str.strip() に通して消えたかどうかの実測です。
| 番号 | Unicode 名 | 種別 | 幅 | UTF-8 | strip で |
|---|---|---|---|---|---|
U+3000 |
IDEOGRAPHIC SPACE |
空白文字 Zs | F 全角 | 3 | 落ちる |
U+00A0 |
NO-BREAK SPACE |
空白文字 Zs | N ふつう | 2 | 落ちる |
U+2007 |
FIGURE SPACE |
空白文字 Zs | N ふつう | 3 | 落ちる |
U+200B |
ZERO WIDTH SPACE |
書式制御 Cf | N ふつう | 3 | 残る |
U+2800 |
BRAILLE PATTERN BLANK |
記号 So | N ふつう | 3 | 残る |
種別の欄が、五つを二つに割っている
「種別」は Unicode のカテゴリです。Zs は空白文字、Cf は書式制御、So は記号を指します。前後の空白を落とす処理はたいていこのカテゴリを基準にするので、上の三つは落ち、下の二つは残ります。
残る理由は二つで別々です。U+200B は名前に SPACE とありますが、カテゴリは Cf です。U+2800 は空白として定義されてすらいません。
U+2800 は空白ではなく、点の出ていない点字
点字は六つか八つの点の組み合わせで一文字を作ります。その組み合わせがそのまま Unicode に並んでいて、U+2801 は BRAILLE PATTERN DOTS-1、U+28FF は BRAILLE PATTERN DOTS-12345678 です。その先頭、どの点も立っていない組み合わせが U+2800 にあたります。
だからこれは記号であって、空白ではありません。カテゴリは So、つまり印字される文字で、幅も一文字ぶん取ります。いっぽう U+200B は幅がゼロで、いくつ置いても場所を取りません。同じ「何も見えない」でも、場所を取る側と取らない側があります。
正規化を通すと三つは半角スペースに戻る
unicodedata.normalize('NFKC', ...) を通すと、U+3000・U+00A0・U+2007 はどれも U+0020 になります。分解の指定が <wide> 0020 と <noBreak> 0020 だからです。残る二つは NFKC でも変わりません。
使いどころ
- 欄を空に見せる ── 文字は入っているのに、表示上は何も出ません。
- 行頭を下げる ──
U+3000は全角一文字ぶんの幅があります。 - 折り返させない ──
U+00A0はそこで行が折り返りません。数値と単位のように離したくない組に挟みます。 - 桁をそろえる ──
U+2007の幅は書体が決めます。数字の幅にそろえた書体では、数字一文字ぶんです。
幅を取りたいなら U+3000 か U+2800、取りたくないなら U+200B です。見えにくい文字や記号は特殊な文字のコピペまとめに、空白で形を作る使い方はアスキーアートまとめに、貼る単位そのものの話はコピペにあります。