長い URL や文字列の折り返し
長い URL の各スラッシュやピリオドの後に U+200B を置けば、ブラウザはレイアウトからはみ出す代わりにその位置で折り返します。折り返し点にハイフンは現れません。
テキストツール
ゼロ幅スペース(U+200B)をコピー。ブラウザやテキストエンジンに対して、ハイフンもスペースも消費せずに行が折り返せる位置を知らせるゼロ幅のフォーマット文字です。
ゼロ幅スペース(ZWSP、U+200B)は、可視グリフも送り幅も持たない Unicode のフォーマット文字です。その役割は、レンダリングエンジンに行が折り返せる位置を知らせること。HTML の <wbr> 要素と同じ挙動です。ブラウザやワープロソフトは、長い文字列を折り返す際にこれらの改行候補を参照します。長い URL の各スラッシュの後に U+200B を置けば、コンテナからはみ出す代わりにその位置で綺麗に折り返されます。この文字は、タイ語・ラオス語・クメール語のような単語間にスペースを置かないスクリプトのために作られました。単語間に U+200B を挿入すれば、レンダラがそこで折り返せます。ラテン文字テキストでは用途が異なり、Twitter の @メンションや #ハッシュタグの自動リンク化を阻止する、ドイツ語の長い複合語を分割する、長い識別子の中に目立たない改行ポイントを仕込む、といった使い方がされます。
長い URL の各スラッシュやピリオドの後に U+200B を置けば、ブラウザはレイアウトからはみ出す代わりにその位置で折り返します。折り返し点にハイフンは現れません。
Twitter などは @username や #hashtag をリンクに変換します。記号と文字の間にゼロ幅スペースを挟めば、見た目を変えずにマッチングを壊せます。
U+200B を word-break: keep-all と組み合わせれば、CJK テキストの他の箇所での折り返しを抑制しつつ、許可する改行位置をマークできます。CSS Text 仕様がこのパターンを意図された用法として明記しています。
文書の任意の位置に U+200B を挿入すれば、コピー&ペーストを生き残り、読者には見えない指紋ができます。受け取った人ごとに異なるパターンを配れます。
U+200B はフォーマット文字(一般カテゴリ Cf)であり、スペースではありません。この区別は重要です。ホワイトスペースではないため JavaScript の trim() では除去されません。一方で不可視でもあるため、人間には同じに見える文字列がバイトレベルでは異なり得ます。セキュリティ研究者はこの性質を利用して識別子にペイロードを隠してきました。「admin」と描画される 2 つの文字列は、片方に U+200B が含まれていればデータベースにとっては別物になります。Trojan Source の一連の開示(CVE-2021-42574 と CVE-2021-42694)は、不可視 Unicode 文字がソースコードを画面の見た目と異なる挙動でコンパイルさせ得ることを文書化しました。レンダリング面では、U+200B はブラウザで広くサポートされますが、入力をサニタイズするチャットアプリでは stripping されます。WhatsApp と TikTok はメッセージやバイオからこれを除去し、Discord はフィールドごとに対応が一貫しません。プラットフォームが stripping する場合、フォールバックは通常 U+2800(点字ブランク)のような可視だが空白の文字です。
U+200B はすべてのモダンブラウザとほとんどのワープロソフトでサポートされ、改行候補位置として機能します。CSS Text Module 仕様は <wbr> 要素と並んでこれを折り返し位置のマーカーとして明示的に参照しています。チャットアプリやソーシャルメディアでは対応がよりまちまちです。WhatsApp、Instagram、Discord は一部の欄では受け付け、別の欄では stripping します。TikTok はバイオから除去します。ゲームプラットフォームがユーザー名で受け付けることは稀です。経験則としては、ブラウザやテキストエディタでは U+200B は信頼できますが、チャットアプリやソーシャル入力では事前にテストし、U+2800 や U+3164 をフォールバックとして用意してください。
行が折り返しを許可される位置をマークします。文字そのものは不可視で幅も持ちませんが、長い行をどこで折り返すか決めるブラウザやテキストエンジンは、U+200B を許容される改行点として扱います。ハイフンは挿入されません。
通常スペース(U+0020)は可視の幅を持ち、ホワイトスペースです。U+200B はゼロ幅で、ホワイトスペースではなくフォーマット文字であり、目に見える隙間を一切作りません。唯一の機能は、単語や文字列中の選択した位置で改行を許可することです。
上でカウントを指定し、「コピー」をクリックします。文字は何の表示もなくクリップボードに入ります。これは想定通りの挙動で、テスト欄に貼り付けて到着を確認してください。
はい。固定のコードポイント(U+200B)を持つため、Unicode を調べるツールならすべて見つけられます。このコードポイントを対象にした検索で、すべての出現箇所を特定できます。人間には見えなくても、ソフトウェアには見えます。
プラットフォームの入力サニタイザが除去しました。チャットアプリやソーシャルプラットフォームは悪用を防ぐためゼロ幅フォーマット文字をよくフィルタします。記号と文字に分類される点字ブランク(U+2800)やハングルフィラー(U+3164)に切り替えてください。これらはフィルタを生き残りやすいです。
実質的に同じです。MDN の文書でも <wbr> は U+200B コードポイントと同じ挙動をすると説明されています。どちらも可視グリフを持たず、ハイフンを出さない改行候補位置をマークします。HTML マークアップには <wbr> を、プレーンテキストには U+200B を使います。