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

テキストモードのコンピューティングが主流だった時代には、西洋の文字は通常、画面上にグリッド状に配置され、多くの場合、80列×24行または25行のグリッドでした。各文字は小さなドットマトリックスとして表示され、その幅は通常約8ピクセルでした。西洋言語の文字をエンコードするために、一般的にSBCS(シングルバイト文字セット)が使用されていました。
美観と読みやすさの観点から、中国語の文字はほぼ正方形であることが望ましいため、固定幅のSBCS文字の2倍の幅を持つことが望ましい。これらの文字は通常DBCS(2バイト文字セット)でエンコードされていたため、画面上で2行間隔のフォントで表示される際の幅はバイト長に比例していた。一部の端末や編集プログラムでは、偶数列から始まる2バイト文字しか処理できず、奇数列から始まる2バイト文字は処理できなかった(中には2バイト文字と1バイト文字を同じ行に配置できないものもあった)。そのため、DBCSセットには一般的にローマ字と数字も含まれており、CJK文字と同じ行で使用できるようになっていた。
一方、初期の日本のコンピュータでは、カタカナ用にJIS X 0201と呼ばれる 1 バイトのコード ページが使用されていました。これらは他の 1 バイト文字と同じ幅でレンダリングされ、通常の比率の仮名ではなく、半角の仮名文字になっていました。JIS X 0201 規格自体はカタカナの半角表示を規定していませんでしたが、これはShift JISにおいて、1 バイトの 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は一般的に東アジアの文字体系でのみ使用されます。ターミナルエミュレータは、このプロパティを使用して、タブやカーソル位置を判断する際に、文字が1列または2列のどちらを消費するかを決定できます。
OpenTypeには、文字の全角または半角を再現するために使用できるfwid、、、、および機能タグがあります。CSSは、およびプロパティを使用してこれらの機能を制御します。[ 3 ]halthwidvhalfont-variant-east-asianfont-feature-settings