半角カナ(はんかくかな)は、通常の正方形(1:1)のアスペクト比ではなく、通常の半分の幅(1:2のアスペクト比)で圧縮して表示されるカタカナ文字です。たとえば、カタカナ「か」の通常の(全角)形は「カ」ですが、半角形は「ちゃ」です。また、ひらがなは、 Adobe Japan1-6ベースのOpenTypeフォントを使用したCSSによって、 Webや電子書籍で半角で表示できます。[ 1 ]最後に、半角漢字は現代のコンピュータで使用でき、一部のレシートプリンター、電子掲示板、古いコンピュータで使用されています。[ 2 ]font-feature-settings: "hwid" 1
半角かなは、日本のコンピューター黎明期に、等幅ラテン文字フォントと同じグリッド上に日本語文字を表示するために使用されていました。半角漢字は使用されていませんでした。半角かなは現在では一般的に使用されていませんが、レジの表示、レシート、日本のデジタルテレビやDVDの字幕、宛名ラベルなど、特定の場面で使用されています。また、インターネットスラングなどでよく見られるように、スタイルの選択として使用されることもあります。
厳密には、かなの表示方法のみを指し、格納方法を指すものではない「半角かな」という用語は、JIS X 0201 (1969)などの一部の文字エンコーディングでカタカナが格納される A0〜DF (16 進数) ブロックを指す場合にも漠然と使われています (下記のエンコーディングを参照) 。しかし、これは正式には誤りです。この JIS 規格は、カタカナをこれらの場所に格納できることを規定しているだけで、表示方法については規定していません。混乱が生じるのは、初期のコンピューティングでは、ここに格納された文字が実際に半角かなとして表示されていたためです (下記の混乱を参照)。
半幅かなと 2/3 幅かなは、コンピュータ以前の時代から使用されていました。[ 3 ]コンピュータ初期の時代には、ASCIIは 7 ビットの文字セットとして定義され、128 文字分のスペースがありました。しかし、この規格は米国向けに設計されたため、日本の通貨を表すのに必要な円 (¥)記号などの文字や記号は含まれておらず、かなや漢字などの他のアルファベットの文字のためのスペースも含まれていませんでした。そのため、日本語の文字をエンコードすることはできませんでした。さらに、日本語の文字 (かなと漢字の両方) は正方形のグリッド上に描画されますが、ラテン文字は一般的に幅が狭いため、日本語の文字も表示できませんでした。
JIS X 0201は1969年に開発されました。当時、コンピュータはソフトウェア設計とハードウェアリソースの両面から、日本語で使用される数千もの漢字を表現する能力が一般的にありませんでした。妥協案として、この規格ではカタカナ(ひらがなや漢字は含まない)を少数の文字セットとしてエンコードし、上位バイト値0x80~0xFFの範囲に割り当てました。これにより、8ビットプロセッサは日本語のテキストを音訳(カタカナ)でエンコードおよび処理できるようになりましたが、ひらがなや漢字を処理することはできませんでした。これらのカタカナ文字は、機械が既に印刷および表示していた等幅ラテン文字と同じ幅に収まるように、新しい非正統的な狭いフォームファクタである「半角仮名」として表示されました。JIS X 0201はASCIIのバリアント拡張であり、追加の文字を含み、重複部分(ラテン文字セクション)ではASCIIと完全に一致しません。

半角仮名は、「日本の電報で使用されるため、コンピュータにエンコードされた最初の日本語文字」として開発されました。日本最大の資金振替システムである全国銀行データ通信システムは1973年に設立されました。銀行間の取引メッセージは、20文字以内のラテン文字、数字、半角カタカナのみを使用することができました。このシステムは、2018年にZEDI(全国銀行電子データ交換システム)に置き換えられ、可変長のひらがなと漢字を処理できるようになりました。[ 4 ] [ 5 ]
カタカナをより狭いセル領域に収めるために、いくつかの妥協がなされました。例えば、濁点と半濁点は、前の文字の一部ではなく、独立した文字として扱われます。この妥協により、「半角仮名」は視覚的に魅力的ではないと多くの人が考えるようになり、今日では多くのコンピュータプログラムで問題が生じています。

半角かなのもう 1 つの用途は、スペースを節約することです。Windows 3.1の日本語版では、ユーザー インターフェイスにMS Gothicの半角と全角の両方のカタカナが使用されていました。Windows 95の日本語版では、ユーザー インターフェイスにMS P Gothicの半角カタカナが使用されていました。これは、 Windows 98以降の日本語版に搭載されているMS UI Gothicの全角かなに置き換えられました。これは MS P Gothic より少し幅が狭いものです。 [ 6 ] [ 7 ]
JIS X 0201規格(1969年)では、カタカナはA0~DF(16進数)ブロックにエンコードされますが、表示方法は規定されておらず、全角カナと半角カナのエンコードも別々に規定されていません。JIS X 0208規格では、カタカナ、ひらがな、漢字はすべてエンコードされ(全角文字として表示され、半角文字はありません)、カナの順序は異なります。JIS X 0208#ひらがなとカタカナを参照してください。
JIS X 0201とJIS X 0208を組み合わせたShift JISでは、これらのエンコーディング(どちらもラテン文字とカタカナをエンコード可能)は別々に格納され、JIS X 0201はすべて半角で表示され(したがって、JIS X 0201のカタカナは半角カナとして表示されます)、JIS X 0208はすべて全角で表示されます(したがって、JIS X 0208のラテン文字はすべて全角ラテン文字として表示されます)。このように、Shift JISでは、ラテン文字とカタカナは、半角と全角という2つの異なる表示形式を持つ2つのエンコーディングを持ちます。
Unicodeでは、カタカナとひらがなは主に通常の全角文字として使用されるため、カタカナとひらがなのブロックは全角文字として表示されます。半角形と全角形の文字を表す別のブロックとして、半角形のかなや全角形のラテン文字などの異体字が用いられます。
したがって、JIS X 0201 のカタカナと派生エンコーディングの対応する部分 (Shift JIS の JIS X 0201 部分) は半角で表示されますが、Unicode では半角形式は個別に指定されます。
「J」はJIS X 0201の最初の4ビットを示します(ただし、下記を参照してください。これらは必ずしも半角を示すものではありません)。Shift JISなどの他のセットでは、「U」はUnicodeの半角および全角フォームブロックの行を示します。
最初の空白セルは、JISでは存在しない文字A0を表しますが、Unicodeでは全角二重括弧⦆( U+FF60)を表します。
SMTPプロトコルとNNTPプロトコル(それぞれ電子メールとUsenetの配信に使用される)は、以前は7ビットバイトしか送信できなかったため、日本語で電子メールを送信する際にはISO-2022-JPを使用するのが慣例だった。
ISO-2022-JPには半角かなは含まれていません。JIS X 0201のローマ字セットとJIS X 0208のすべてが含まれていますが、JIS X 0201のカタカナセット(Shift JISなどで半角かなとして使用されるもの)は含まれていません。JIS X 0201のどちらのセットにもISO 2022コードがありますが、ISO-2022-JPプロファイルにはローマ字セットのみが含まれています。つまり、ISO-2022-JPに半角カタカナを含める形式は明確に定義されていると同時に、ISO-2022-JP形式に違反しています。そのため、メッセージに誤って半角かなが含まれると、送信中に文字化けする可能性があります(文字化けを参照)。HTML5で使用されるWHATWGエンコーディング規格は、フォーマットの拡張としてISO-2022-JPでJIS X 0201カタカナのデコードは許可するがエンコードは許可せず、エンコード時に半角カタカナをJIS X 0208相当のものに変換する。[ 8 ]
現在ではほとんどのメールサーバーが8BITMIME拡張機能をサポートしており、8ビット文字を理解できるため、これはもはや大きな問題ではありません。あるいは、Base64などのエンコード方式を使用し、 MIMEを使用してメッセージ内で指定することもできます。
電子メールに存在する問題は、HTTPが8ビット文字を受け入れるため、ウェブページには存在しない。
しかし、コンピュータプログラムが文字をShift JIS、EUC-JP、UTF-8のいずれとして扱うべきかを判断するのが難しいという問題が存在します。そのため、文字コード情報はHTTPレスポンスヘッダーまたはメタタグで指定する必要があります。
厳密に言えば、JIS X 0201規格における「半角カタカナ」という表記は誤りです。この規格は文字幅を定義しておらず、カタカナ文字のコード表現のみを定義しているからです。JIS X 0201規格では、カタカナ文字は半角ではなく、通常の(全角)で印刷されます。
半角文字は、文字が半角で表示されていた期間(およびシングルバイト符号化が使用されていた期間)にのみ表示に使用され、全角文字表示(およびJIS X 0208などの関連するダブルバイト符号化)が普及する以前の期間にのみ使用されました。しかし、JIS X 0201規格(ラテン文字とカタカナが半角で表示される)とJIS X 0208規格(カタカナ、ひらがな、漢字、ラテン文字が全角で表示される)を組み合わせたShift JIS規格では、カタカナとラテン文字はJIS X 0201とJIS 0208の両方で2回エンコードされていますが、どちらのセクション(0201または0208)にあるかによって半角または全角で表示されます。そのため、0201カタカナブロックは「半角かな」に対応するものと考えることができ、0201規格が「半角」文字を定義しているという誤解が広まっています。
さらに、JIS X 0201はシングルバイトエンコーディング(半角で表示)であり、JIS X 0208はダブルバイトエンコーディング(全角で表示)ですが、バイト数と幅の間には(上記のShift JISの対応関係を除いて)関連性はありません。たとえば、Unicodeは4バイト(UTF-32)でエンコードして、全角文字とシングル角文字の両方を表示できます。