空白文字とは、コンピュータがテキストを表示するためにレンダリングする際 に、空白を表す文字データ要素のことです。
例えば、スペース文字(U+0020 SPACE、ASCII 32)は、西洋の文字体系における単語区切りなどの空白を表します。
印刷可能な文字はレンダリング時に出力されますが、空白文字は出力されません。空白文字は、テキストのレイアウトを限定的に定義し、隣接する文字の通常のレンダリング順序を中断します。後続の文字の出力は通常、右(右から左に書く場合は左)または次の行の先頭にずれます。連続する複数の空白文字の影響は累積的であり、次の印刷可能な文字は、先行する空白文字の累積的な影響に基づいてレンダリングされる位置になります。
「空白」という用語の由来は、白い紙にテキストを描画するという一般的な慣習にあります。通常、空白文字は白く描画されません。描画には影響を与えますが、空白文字自体は描画されません。

スペース文字は通常、文字とほぼ同じ幅の水平方向の空白を挿入します。等幅フォントの場合、幅は文字の幅と同じで、可変幅フォントの場合はフォントごとに幅が異なります。一部のフォントは、幅の異なる複数のスペース文字をサポートしています。
タブ文字は通常、アプリケーションによって異なるタブストップに基づいて水平方向のスペースを挿入します。
改行文字シーケンスは通常、レンダリング出力位置を次の行の先頭に移動します。テキストの後に続く場合、実際には空白行は生成されません。しかし、テキストブロック間に連続する2つの改行シーケンスがあると、ブロック間に空白行が生成されます。空白行の高さはアプリケーションによって異なります。
空白文字を使ってテキストをレイアウトするのは慣例です。アプリケーションによっては、空白文字を視覚的なマークアップとして表示し、通常は見えない部分をユーザーが確認できるようにすることがあります。
通常、ユーザーはを押してスペース文字を入力しspacebar、 を押してタブ文字を入力し、 を押して改行文字を入力します。Tab ↹↵ Enter
以下の表は、Unicode文字データベースで空白文字("WSpace=Y", "WS") として定義されている25文字を示しています。[ 1 ] 17文字は双方向書き込みのアルゴリズム("双方向文字タイプ=WS") と一致する空白の定義を使用しており、「Bidi-WS」文字として知られています。残りの文字も使用できますが、この「Bidi」タイプではありません。
注:以下の表を表示するブラウザやフォントによっては、すべてのスペースが正しく表示されない場合があります。
Unicodeには、視覚的に記号を表示する必要がある場面で、さまざまな空白文字を表すために使用できる可視文字もいくつか用意されています。

テキストエディタ、ワープロソフト、デスクトップパブリッシングソフトは、画面上の空白の表示方法や、画面幅または列幅を超える行末のスペースの表示方法が異なります。スペースは単に空白として表示される場合もあれば、ピリオドやその他の記号で表される場合もあります。スペースを生成するために使用できる文字は多岐にわたり(後述)、余白やタブ設定などの文字以外の機能も空白に影響を与える可能性があります。
Unicodeのスペース文字の多くは、従来の印刷用活字との互換性のために作成されました。[ 27 ]
デジタルタイポグラフィにはアルゴリズムによるカーニングやジャスティフィケーションが備わっているとしても、必要に応じてこれらのスペース文字を使用して電子フォーマットを補完することができる。
コンピュータの文字コードでは、汎用スペース(Unicode文字U+0020)が標準で存在し、その幅は書体のデザインによって異なります。一般的な値は1/5emから1/3emの範囲です(デジタルタイポグラフィでは、 emはフォントの公称サイズに等しいため、10ポイントのフォントの場合、スペースは2~3.3ポイントになります)。高度なフォントでは、太字、斜体、小文字などでスペースのサイズが異なる場合があり、多くの場合、組版担当者がテキストのサイズや目立ち具合に応じてスペースの幅を手動で調整します。
この汎用スペースに加えて、特定の幅のスペースをエンコードすることも可能です。完全なリストについては、上記の表を参照してください。
括弧区切りとして使用されるエムダッシュと、単語連結として使用されるエンダッシュは、通常、テキストと連続して設定されます。[ 28 ]ただし、このようなダッシュは、オプションでヘアスペース、U+200A、または細いスペース、U+2009で囲むことができます。ヘアスペースは、数値文字参照 または 、名前付きエンティティを使用してHTMLで記述できます 。細いスペースは、名前付きエンティティ と数値参照 またはです 。これらのスペースは、通常のスペースよりもはるかに細く(等幅(非比例)フォントを除く)、特にヘアスペースは水平方向の空白文字の中で最も細いものです。
ほとんどのプログラミング言語の構文では、空白文字はトークンを区切るために使用できます。自由形式言語では、空白文字はコードプロセッサ(つまりコンパイラ)によって無視されます。言語構文で空白が必要な場合でも、多くの場合、複数の空白文字は単一の空白文字と同じように扱われます。オフサイドルール言語では、インデントの空白は構文的に意味を持ちます。風刺的で反骨精神に満ちた「ホワイトスペース」と呼ばれる言語では、空白文字だけが意味を持ち、通常のテキストは無視されます。
ソースコードにおける適切な空白の使用は、関連するロジックをグループ化し、コードを理解しやすくする効果があります。一方、行末など、表示に影響を与えない場所に過剰な空白を使用することは、煩わしいとみなされます。
ほとんどの言語はASCIIコードを持つ空白文字のみを認識します。上記のUnicodeコードのほとんどまたはすべては許可されません。C言語では、空白文字を「スペース、水平タブ、改行、垂直タブ、フォームフィード」と定義しています。[ 29 ] HTTPネットワークプロトコルでは、プロトコルのさまざまな部分で異なる種類の空白文字を使用する必要があります。ステータス行の項目間には単一のスペース文字、行末にはCR/LFペア、ヘッダー値には「線形空白」が必要です。[ 30 ]
一般的なコマンドラインパーサーは、引数の区切り 文字としてスペース文字を使用します。値にスペース文字が埋め込まれている場合、その値が複数の引数として解析されてしまうため問題となります。通常、パーサーはテキストを引用符で囲むことで、通常の引数解析を回避できるようにしています。
例えば、ユーザーが(list)コマンドfoo barを使用して指定されたディレクトリの内容を表示したい場合ls、次のようにコマンドを入力するとします。
lsフーバー このコマンドは、代わりに と という名前のファイルまたはディレクトリを一覧表示しようとしますfoo。bar正しい構文では、引数を二重引用符で囲むことで、単一の引数のみを指定します。
ls "foo bar"あるいは、二重引用符を省略して、代わりにバックスラッシュでスペースをエスケープすることもできます。
ls foo \ bar SGMLなどの一部のマークアップ言語は、記述された空白文字をそのまま保持します。
XMLやHTMLなどのWebマークアップ言語は、プログラマの便宜のために、スペース文字を含む空白文字を特別に扱います。これらのマークアップ言語に準拠した表示時プロセッサによって読み取られる1つ以上のスペース文字は、意味的なコンテキストに応じて0または1つのスペースに縮約されます。たとえば、テキスト内の二重(またはそれ以上)のスペースは1つのスペースに縮約され、=属性名とその値を区切る「 」の両側に現れるスペースは、ドキュメントの解釈に影響を与えません。要素終了タグには末尾のスペースを含めることができ、XMLの空の要素タグには「/>」の前にスペースを含めることができます。これらの言語では、不要な空白はファイルサイズを増加させ、ネットワーク転送を遅くする可能性があります。一方、不要な空白は、コード内のコメントと同様の方法で、識別目的でをコードさりげなくマークすることもできますが、コメントほど明白ではありません。これは、コードが露骨にコピーを証明するのに役立ちます。
XML属性値では、パーサーがドキュメントを読み込む際に、連続する空白文字は単一のスペースとして扱われます。[ 31 ] XML要素コンテンツ内の空白は、パーサーによってこのように変更されることはありませんが、パーサーから情報を受け取るアプリケーションは、要素コンテンツに同様のルールを適用することを選択できます。XMLドキュメントの作成者は、要素xml:space="preserve"の属性を使用して、下流のアプリケーションがその要素のコンテンツ内の空白を変更しないようにパーサーに指示することができます。
ほとんどのHTML 要素では、空白文字のシーケンスは単一の単語間区切り文字として扱われ、通常そのようなスペースを単語間に挿入する言語でテキストをレンダリングする場合、単一のスペース文字として現れることがあります。[ 32 ]準拠する HTML レンダラーは、特定の要素、つまりタグ内の要素、およびCSSプロパティがpreまたはpre-wrapに設定されている要素 に、リテラルの空白文字の動作を適用します。これらの要素では、スペース文字は単語間区切り文字に「折りたたまれ」ません。<pre>...</pre>white-space
MediaWikiマークアップには、空白を保持するオプションのタグもあります。拡張機能:Poem が必要です。[ 33 ]<pre>...</pre><poem>...</poem>
XMLとHTMLの両方において、改行されないスペース文字は、他の「非標準」スペースと同様に、折りたたみ可能な空白文字として扱われません。
このような用法は、埋め込みスペースコードによって混乱するオペレーティングシステムやアプリケーション向けに書かれた複数単語のファイル名に似ています。このようなファイル名では、単語の区切り文字としてアンダースコア(_)が使用されます(例:_in_this_phrase)。
もう一つのそのような記号はU+2422 ␢空白記号で、コンピュータプログラミングの初期の頃にコーディングフォームで使用されていました。キーパンチオペレーターはこれを「明示的なスペース」として解釈しました。[ 16 ]これはBCDIC、[ 16 ] EBCDIC、[ 16 ]およびASCII-1963 [ 16 ]で使用されました。
固定幅スペース文字 (U+2000..U+200A) は、従来の (活字) 活版印刷から派生したものです。コンピュータによる活版印刷におけるアルゴリズムによるカーニングと均等割り付けでは、これらの文字は使用されません。ただし、これらの文字が使用される場合 (たとえば、数式の組版)、その幅は一般的にフォントで指定され、均等割り付け中に拡張されることは通常ありません。例外は U+2009 の細いスペースで、これは調整されることがあります。