東アジアの文字幅
出典: フリー百科事典『ウィキペディア(Wikipedia)』
「東アジアの文字幅」 (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 種類からなる。
- F (Fullwidth; 全角) - 互換分解属性 <wide> を持つ互換文字。文字の名前に "FULLWIDTH" を含む。いわゆる全角英数など。
- H (Halfwidth; 半角) - 互換分解属性 <narrow> を持つ互換文字。文字の名前に "HALFWIDTH" を含む。いわゆる半角カナなど。
- W (Wide; 広) - 上記以外の文字で、従来文字コードではいわゆる全角であったもの。漢字や仮名文字、東アジアの組版にしか使われない記述記号 (たとえば句読点) など。
- Na (Narrow; 狭) - 上記以外の文字で、従来文字コードでは対応するいわゆる全角の文字が存在したもの。いわゆる半角英数など。
- A (Ambiguous; 曖昧) - 文脈によって文字幅が異なる文字。東アジアの組版とそれ以外の組版の両方に出現し、東アジアの従来文字コードではいわゆる全角として扱われることがある。ギリシア文字やキリル文字など。
- N (Neutral; 中立) - 上記のいずれにも属さない文字。東アジアの組版には通常出現せず、全角でも半角でもない。アラビア文字など。
UAX#11では、これらの属性を次のように解釈することを推奨している。
- 属性値 Na (狭) または N (中立) を持つ文字は、Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合、半角の文字 (halfwidth) として扱う。東アジア以外の従来文字コードの文脈で扱う場合、幅の狭い文字 (narrow) として扱う。
- 属性値 W (広) または F (全角) を持つ文字は、Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合、全角の文字 (fullwidth) として扱う。東アジア以外の従来文字コードの文脈には現れない。
- 属性値 H (半角) を持つ文字は、Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合、半角の文字 (halfwidth) として扱う。東アジア以外の従来文字コードの文脈には現れない。
- 属性値 A (曖昧) を持つ文字は、Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合、全角の文字 (fullwidth) として扱う。東アジア以外の従来文字コードの文脈で扱う場合、幅の狭い文字 (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