
CJK(中国語、日本語、韓国語)コンピューティングでは、グラフィック文字は伝統的に全角[ a ]文字と半角[ b ]文字に分類されます。等幅フォントとは異なり、半角文字は全角文字の半分の幅を占めるため、この名前が付けられています。
半角形式と全角形式は、半角文字と全角文字の両方を含む古いエンコードを Unicode との間でロスレス変換できるようにするために提供される、 Unicode ブロックU+FF00~FFEFの名前でもあります

テキストモードのコンピュータ時代、西洋文字は通常、画面上に80列×24行または25行のグリッド状に配置されていました。各文字は小さなドットマトリックスとして表示され、その幅は8ピクセル程度でした。西洋言語の文字のエンコードには、一般的にSBCS(シングルバイト文字セット)が使用されていました。
美観と読みやすさの観点から、中国語の文字はほぼ正方形、つまり固定幅のSBCS文字の2倍の幅が望ましいとされています。これらの文字は通常DBCS(2バイト文字セット)でエンコードされるため、画面上の2バイトフォントで表示される文字の幅はバイト長に比例します。一部の端末や編集プログラムは、奇数列から始まる2バイト文字を処理できず、偶数列から始まる2バイト文字しか処理できませんでした(中には、2バイト文字と1バイト文字を同じ行に並べることさえできないものもありました)。そのため、DBCSセットには通常、CJK文字と並んで同じ行で使用できるように、ローマ字と数字も含まれていました。
一方、初期の日本のコンピュータでは、カタカナにJIS X 0201と呼ばれるシングルバイトのコードページが使用されていました。これらは他のシングルバイト文字と同じ幅でレンダリングされるため、通常の比率のカナではなく半角カナ文字になります。JIS X 0201規格自体はカタカナの半角表示を規定していませんでしたが、これはシフトJISにおいてシングルバイトのJIS X 0201と2バイトのJIS X 0208カタカナを視覚的に区別する特徴となりました。一部のIBMコードページでは、韓国語の字母にNバイトのハングルコードとそのEBCDIC変換に基づいた同様の処理が使用されていました[ 1 ]。
同じ文字の半角版と全角版の両方を含む既存の文字セットとの互換性を確保するため、UnicodeはU+FF00~FFEFに、必要な「異幅」文字を含む単一のブロックを割り当てました。これには、すべてのASCII文字と一部の非ASCII句読点(円記号など)の全角版、カタカナとハングルの半角版、丸などのその他の記号の半角版が含まれます。既存の文字セットへのロスレスラウンドトリップに必要な文字のみが割り当てられており、例えばラテンアクセント付き文字をすべて全角版にする必要はありませんでした。
UnicodeはすべてのコードポイントにEast_Asian_Widthプロパティを割り当てます。これは次のようなものです: [ 2 ]

East_Asian_Width。F、H、および W は通常、東アジアのスクリプトでのみ使用されます。| 略語 | 名前 | 説明 |
|---|---|---|
| W | 広い | 自然に幅の広い文字、例:ひらがな。 |
| ナ | 狭い | 自然に狭い文字 (例: ISO 基本ラテンアルファベット)。 |
| F | 全角 | 自然に狭い文字への 互換性正規化を備えた幅広の異形(例: 全角ラテン文字)。 |
| H | 半角 | 半角カナなど、自然に広い文字への互換性正規化を備えた狭幅異体。例外として U+20A9(₩ )を含む。 |
| あ | 曖昧 | 東アジアのDBCSコードに含まれる文字だけでなく、ギリシャ語アルファベットなどのヨーロッパのSBCSコードにも含まれる文字。そのため、デュオスペースの動作は異なる場合があります。 |
| 北 | 中性 | 東アジアの DBCS コードに表示されない文字 (例:デーヴァナーガリー文字)。 |
ターミナル エミュレーターはこのプロパティを使用して、タブとカーソルの位置を判断するときに、文字が 1 列を使用するか 2 列を使用するかを決定できます。
OpenTypeには、文字の全角または半角を再現するためのfwid、、、、の機能タグがあります。CSSでは、これらの機能を、およびプロパティを使用して制御できます。[ 3 ]halthwidvhalfont-variant-east-asianfont-feature-settings