東アジアの文字幅
「東アジアの文字幅」(英: East Asian Width)は、Unicode標準の附属書 (英: Unicode Standard Annex) の一つ。Unicodeに収録されている各文字の文字幅に関するヒントを与える East_Asian_Width 参考特性(英: informative property)を定めている。
概要
編集東アジアのマルチバイト文字コード規格は必ずしも文字幅を規定していないが、1バイト文字に1桁の幅(いわゆる半角)の文字を、2バイト文字に2桁の幅(いわゆる全角)の文字を割り当てることが慣習的に行われてきた。計算機資源が飛躍的に豊かになり、プロポーショナルフォントのサポートが定着した現在においても、おもに端末エミュレータやテキストエディタ、電子メールクライアントなどのアプリケーションにおいて、この従来の慣習に従った文字幅の情報が必要とされることがある。日本語EUCでは文字型端末における1バイト文字と2バイト文字の文字幅は単なる慣習にとどまらず、明示的に規定されている[1]。
Unicodeではこれらの従来文字コードからの移行時に互換性を保つため、附属書11 (UAX#11) でEast_Asian_Width特性を定め、従来文字コードで使われていた慣習的な文字幅に合わせて各文字に特性を割り当てた。
East_Asian_Width特性の値は、次の6種類からなる(図1も参照)。
- F(Fullwidth; 全角)- 互換分解特性 <wide> を持つ互換文字。文字の名前に "FULLWIDTH" を含む。いわゆる全角英数など。
- H(Halfwidth; 半角)- 互換分解特性 <narrow> を持つ互換文字。文字の名前に "HALFWIDTH" を含む。いわゆる半角カナなど。
- W(Wide; 広)- 上記以外の文字で、従来文字コードではいわゆる全角であったもの。漢字や仮名文字、東アジアの組版にしか使われない記述記号(たとえば句読点)など。
- Na(Narrow; 狭)- 上記以外の文字で、従来文字コードでは対応するいわゆる全角の文字が存在したもの。いわゆる半角英数など。
- A(Ambiguous; 曖昧)- 文脈によって文字幅が異なる文字。東アジアの組版とそれ以外の組版の両方に出現し、東アジアの従来文字コードではいわゆる全角として扱われることがある。ギリシア文字やキリル文字など。
- N(Neutral; 中立)- 上記のいずれにも属さない文字。東アジアの組版には通常出現せず、全角でも半角でもない。アラビア文字など。
UAX#11では、これらの特性を次のように解釈することを推奨している。
- Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合(図2も参照)
-
- 特性値Na(狭)またはN(中立)を持つ文字は、半角の文字 (halfwidth) として扱う。
- 特性値W(広)またはF(全角)を持つ文字は、全角の文字 (fullwidth) として扱う。
- 特性値H(半角)を持つ文字は、半角の文字 (halfwidth) として扱う。
- 特性値A(曖昧)を持つ文字は、全角の文字 (fullwidth) として扱う。
- Unicode のテキストを東アジア以外の従来文字コードの文脈で扱う場合(図3も参照)
-
- 特性値Na(狭)またはN(中立)を持つ文字は、幅の狭い文字 (narrow) として扱う。
- 特性値W(広)またはF(全角)を持つ文字は、東アジア以外の従来文字コードの文脈には現れない。
- 特性値H(半角)を持つ文字は、東アジア以外の従来文字コードの文脈には現れない。
- 特性値 A(曖昧)を持つ文字は、幅の狭い文字 (narrow) として扱う。
従来文字コードとの互換性を目的としているため、Unicode全体から見たとき、特性値NやAの付与は一貫していない部分がある。東アジアのどの文字集合規格にも含まれたことのない用字 (コプト文字、デーヴァナーガリーなど) は、すべて特性値N(中立)である。いっぽう、ひとつの用字系の中でも、収録されたかどうかで個々の文字の特性値が異なっている。たとえばラテン文字では、アクセントなしのものは特性値Na(狭)となるが、アクセントつきのものは小文字の一部(á、ě 等)がGB2312などに収録されているため特性値A(曖昧)となり、大文字のほとんど (Á, Ě など) は東アジアの文字集合規格に収録されていないため特性値N(中立)となる。アクセントなしでも、大文字小文字ともKS X 1001などに収録される合字や古字 (Æ/æ, Ð/ð) はともに特性値A(曖昧)である。ギリシア文字では、気息記号のない文字のほとんどは各文字集合規格に収録されているため特性値A(曖昧)だが、気息記号のある文字、古字、語末のシグマ (ς) のような異体は収録されないため特性値N(中立)である[2][3]。
問題点
編集日本語EUC環境からUTF-8環境へ移行した場合、East_Asian_Width特性がAmbiguous(曖昧)の文字は、文字型端末においていわゆる全角として扱われる必要がある。欧米の実装は必ずしもこの問題を考慮していないため、文字型端末において表示やカーソル制御が乱れる原因となることがあり、端末エミュレータ等では日本語独自の場当たり的なパッチを当てるなどしてしのいでいるのが実情である[4]。
脚注
編集- ^ 日本語 EUC の定義
- ^ 語末のシグマ (ς) は JIS X 0212 (EUC-JP で利用可能な場合がある) と JIS X 0213 に収録されているが、これらの文字集合規格は調査の対象となっていないようである。
- ^ 以上の解説は East Asian Width の 5.0.0 版データファイルに基づいている。
- ^ [debian-devel:16693] East Asian Width Problem at rxvt-unicode-ml