Big-5またはBig5 (中国語:大五碼) は、台湾、香港、マカオで繁体字に使用されている中国語の文字符号化方式です。
簡体字を使用する中華人民共和国(PRC)は、代わりにGB 18030文字セットを使用します(ただし、Big-5またはUTF-8で代用することもできます)。
Big5という名前は、それを開発した台湾の5つの企業からなるコンソーシアムに由来する。[ 2 ]
オリジナルのBig5文字セットは、まず使用頻度、次に画数、最後に康熙部首の順に並べられています。
オリジナルのBig5文字セットには、よく使われる文字が多数欠けていました。この問題を解決するため、各ベンダーは独自の拡張機能を開発しました。ETen拡張機能は、その普及により現在のBig5標準の一部となりました。
Big5の構造はISO 2022規格に準拠していませんが、 Shift JISエンコーディングとある程度類似しています。これは、以下の構造を持つ2バイト文字セット(DBCS)です。
(接頭辞0xは16進数を表します。)
標準の割り当て(ベンダー定義またはユーザー定義の拡張を除く)では、バイト 0x7F から 0xA0、および 0xFF は、先頭バイト(最初のバイト)または末尾バイト(2 番目のバイト)として使用されません。バイト0xA1から0xFEは、2バイト( Big5) コードの先頭バイトと末尾バイトの両方に使用されます。バイト0x40から0x7Eは、先頭バイトに続く末尾バイトとして、またはそれ以外の場合は 1 バイトコードの末尾バイトとして使用されます。2 番目のバイトがどちらの範囲にも含まれていない場合、動作は未規定です(つまり、システムによって異なります)。さらに、Big5文字セットの特定のバリアント、例えばHKSCSは、先頭バイトに拡張された範囲を使用し、0x81から0xA0の範囲の値を含みます( Shift JISと同様)。一方、他のバリアントは、先頭バイトの範囲を縮小しています(例えば、Apple Macintoshバリアントは、 0xFDから0xFFをシングルバイトコードとして使用し、先頭バイトの範囲を0xA1から0xFCに制限しています)。[ 3 ]
Big5コードの個々の数値は、多くの場合4桁の16進数で表されます。これは、Big5コードを構成する2バイトを、あたかも16ビット数のビッグエンディアン表現であるかのように記述したものです。例えば、全幅スペースのBig5コード(バイト0xa1 0x40)は、通常0xa140または単にA140と表記されます。
厳密に言えば、Big5エンコーディングにはDBCS文字のみが含まれます。しかし実際には、Big5コードは常に、システム依存の未指定のシングルバイト文字セット(SBCS) ( ASCIIやコードページ437など)と組み合わせて使用されるため、Big5エンコードされたテキストにはダブルバイト文字とシングルバイト文字が混在します。ダブルバイト文字の一部ではない0x00から0x7fの範囲のバイトは、シングルバイト文字であるとみなされます。(この問題の詳細については、下記の「SBCSのマッチング」に関する説明を参照してください。)
許可された値の範囲外で、かつ2バイト文字の一部ではない非ASCIIの1バイトの意味は、システムによって異なります。古いMS-DOSベースのシステムでは、8ビット文字として表示されることが多いですが、最新のシステムでは、予期しない結果になったり、エラーが発生したりする可能性があります。
オリジナルのBig5では、エンコーディングは異なるゾーンに分割されています。
「図形文字」とは、実際には句読点、部分的な句読点(例えば、ダッシュの半分、省略記号の半分など。下記参照)、装飾文字、外国語文字、その他の特殊文字(例えば、表示用の「全角」形式、蘇州数字、注音符伏語など)から構成される。
ほとんどのベンダー拡張機能では、拡張文字はユーザー定義文字用に予約されたさまざまなゾーンに配置され、それぞれのゾーンは通常、前のゾーンに関連付けられているとみなされます。たとえば、追加の「グラフィック文字」(句読点など)は0xa3c0~0xa3feの範囲に配置され、追加の表意文字は0xc6a1~0xc8feまたは0xf9d6~0xfefeの範囲に配置されます。追加する拡張文字の数が多いため、これが不可能な場合もあります。たとえば、キリル文字と日本語の仮名は、「よく使用される文字」に関連付けられたゾーンに配置されています。
Big5は、0xA461(U+5140)と0xC94A(U+FA0C)に「兀」、0xDCD1(U+55C0)と0xDDFC(U+FA0D)に「嗀」という2つの重複文字をエンコードしています。
一部のエンコーディングマッピングでは、グラフィックセクションの3つの蘇州数字「〸」、「〹」、「〺」を、CJK記号と句読点(それぞれU+3038、U+3039、U+303A)ではなく、表意文字(それぞれU+5341、U+5344、U+5345)にマッピングしています[ 4 ] [ 5 ]。[ 6 ] [ 7 ]
Big5の個々のコードは、必ずしも完全な意味単位を表すとは限りません。表意文字のBig5コードは常に表意文字ですが、「グラフィカル文字」セクションのコードは必ずしも完全な「グラフィカル文字」を表すわけではありません。Big5がエンコードするのは、たまたま2つの等幅ASCII文字が占めるスペースに収まる文字または文字の一部の特定のグラフィカル表現です。これはCJKダブルバイト文字セットの特性であり、Big5特有の問題ではありません。
(上記は理論的には誤りであるため、歴史的な観点から説明する必要があるかもしれません。テキストモードのパーソナルコンピュータが主流だった時代には、文字は通常1バイトで表現され、各文字は画面上の1つの位置を占めていました。そのため、2バイト文字は画面上で2つの位置を占める必要があるという実際的な理由がありました。つまり、市販の米国製ソフトウェアをDBCSベースのシステムで修正なしで使用できるようにするためです。文字が任意の数の画面位置を占めることができる場合、1バイトのテキストが1つの画面位置を占めると想定しているソフトウェアは、誤った出力を生成します。もちろん、コンピュータがテキスト画面を扱う必要がなければ、メーカーはこの人為的な制限を課しません。Apple Macintoshはその一例です。しかしながら、エンコーディング自体は、テキスト画面ベースのシステムで正しく動作するように設計されなければなりません。)
この点を説明するために、Big5コード0xa14b(…)を考えてみましょう。英語話者にはこれは省略記号のように見え、Unicode規格でもそのように識別されます。しかし、中国語では省略記号は2文字分のスペースに収まる6つの点(……)で構成されているため、実際には中国語の省略記号に対応するBig5コードは存在せず、Big5コード0xa14bは中国語の省略記号の半分を表しているにすぎません。省略記号全体が2文字分のスペースを占める必要があり、多くのDBCSシステムでは1つのDBCS文字がちょうど1文字分のスペースを占める必要があるため、省略記号の半分しか表していないのです。
Big5でエンコードされた文字は、必ずしもプレーンテキストファイルでそのまま使えるものを表すとは限りません。例えば、「引用記号」(0xa1ca、﹋)は、文学作品のタイトルの下に必ず記載する必要があります。また、蘇州数字は、少なくとも2行からなる2次元形式で数値を表記する必要がある科学的記数法の一種です。
実際には、Big5は対応するSBCSなしでは使用できません。これは主に互換性の問題によるものです。しかし、他のCJK DBCS文字セットと同様に、使用するSBCSはこれまで指定されていません。Big5は常にDBCSとして定義されてきましたが、使用する際には適切な未指定のSBCSと組み合わせる必要があり、そのため一部の人々がMBCSと呼ぶものとして使用されます。とはいえ、定義どおりのBig5単体は厳密にはDBCSです。
使用するSBCSが指定されていないということは、理論的にはシステムごとにSBCSが異なる可能性があることを意味します。現在では、ASCIIが唯一使用可能なSBCSです。しかし、古いDOSベースのシステムでは、制御コード領域に特殊記号(位置127を含む)が追加されたコードページ437がはるかに一般的でした。ただし、中国語言語キットを搭載したMacintoshシステムや、cxterm端末エミュレータを実行しているUnixシステムでは、Big5とペアになるSBCSはコードページ437ではありません。
Big5の有効範囲外の場合、古いDOSベースのシステムでは、そのシステムでBig5とペアになっているSBCSに従って解釈するのが一般的でした。そのようなシステムでは、例えば127~160番の文字は、無効なBig5を生成するため避けられるのではなく、コードページ437で有効な文字であるため使用されていた可能性が非常に高いです。
したがって、Big5をBig5のDBCSとASCIIのSBCSからなるMBCSとして捉える現代の特徴づけは、歴史的に誤りであり、潜在的に欠陥がある。なぜなら、対応するSBCSの選択は、使用されているBig5のフレーバーとは全く無関係であり、理論的には今もそうであるからである。
ASCIIでは中国語、日本語、韓国語(CJK)の大きな文字セットをサポートできなかったため、各国政府や企業は、これらの言語をコンピュータ上で表示できるようにするための独創的な解決策を模索することになった。様々な場当たり的で、通常は独自仕様の入力方法が用いられた結果、標準システムの開発に向けた取り組みが始まった。その結果、1984年に台湾情報産業研究所によってBig5エンコーディングが定義された。
「Big5」という名称は、この標準規格が台湾最大手のIT企業5社の協力によって生まれたことを認識したものである。
Big5は、 E-TEN中国語DOS入力システム(ETen Chinese System )をはじめとするいくつかの商用ソフトウェアパッケージに採用されたことで、台湾をはじめ世界中で繁体字中国語を使用する中国人の間で急速に普及した。中華民国政府は、当時すでにコンピュータ上で繁体字中国語を使用する際の事実上の標準となっていたBig5を、1980年代半ばに政府標準として宣言した。
オリジナルのBig-5には、一般的な国語の標準形表(4808文字)とあまり一般的でない国語の標準形表(6343文字)からのCJK表意文字のみが含まれており、人名、地名、方言、化学、生物学、日本語の仮名などの文字は含まれていません。そのため、多くのBig-5対応プログラムでは、これらの問題に対処するための拡張機能が提供されています。
数多くのバリエーションがあるため、UTF-8(またはUTF-16、あるいは中国語のGB 18030規格。これは完全なUnicode変換フォーマットであり、簡体字中国語だけでなく、あらゆる言語に対応している)は、現代の用途においてより一貫性のあるコードページとなっている。
中国語オペレーティングシステム「ETen (倚天)」では、 IBM 5550のコードページには存在するが汎用Big5には存在しない一部の文字をサポートするために、以下のコードポイントが追加されています。
0xA3C0– 0xA3E0: 33個の制御文字。0xC6A1– 0xC875: 丸 1~10、括弧 1~10、ローマ数字1~9 (i~ix)、CJK 部首、日本語ひらがな、日本語カタカナ、キリル文字0xF9D6– : 「碁」、「銹」、「恒」、「裏」、「墻」、「翔」、「嫺」0xF9FEの文字と、それに続く 34 個の追加の半グラフィック記号。ETenの一部のバージョンには、追加のグラフィックシンボルと簡体字中国語が含まれています。
マイクロソフト(ミソフト)は、 Microsoft Windowsで使用するために、 Big5拡張機能の独自のバージョンであるコードページ950を作成しました。これは、ETENの拡張機能のF9D6~F9FEコードポイントをサポートしています。Windowsの一部のバージョンでは、ユーロ通貨記号はBig-5コードポイントA3E1にマッピングされています。
従来の中国語版Windows(または適切な言語パックが適用されたWindows 2000以降の任意のバージョン)にMicrosoftのHKSCSパッチをインストールすると、コードページ950を使用するアプリケーションは自動的に非表示のコードページ951テーブルを使用します。このテーブルは、標準で指定されている互換性コードポイントを除き、HKSCS-2001のすべてのコードポイントをサポートします。[ 8 ]
Microsoft のコード ページ 950 とは対照的に、IBM のCCSID 950 は、シングル バイト コード ページ 1114 (CCSID 1114) とダブル バイト コード ページ 947 (CCSID 947) で構成されています。[ 9 ] [ 10 ] [ 11 ]先頭バイト0xA3、[ 12 ] 0xC6、[ 13 ] [ 14 ] 0xC7 [ 15 ]および0xC8、[ 13 ] [ 16 ]の ETEN 拡張機能を組み込んでいますが、先頭バイト0xF9 (Microsoft が含めている)を持つものは省略し、代わりにプライベート ユース エリアにユーザー定義文字としてマッピングしています。[ 13 ] [ 17 ]また、通常の Big5 トレイル バイト範囲外ではあるものの Big5+ トレイル バイト範囲に類似した、トレイルバイト0x81–A0を持つ 2 つの非 ETEN 拡張領域も含まれています。領域 5 は先頭バイト0xF2–F9を持ち、IBM が選択した文字を含み、領域 9 は先頭バイト0x81–8Cを持ち、ユーザー定義領域です。[ 18 ]
IBM は、Big-5 バリアントのユーロ記号の更新を CCSID 1370 と呼んでおり、これにはシングルバイト ( 0x80 ) とダブルバイト ( 0xA3E1 ) の両方のユーロ記号が含まれています。[ 19 ]これは、シングルバイト コード ページ 1114 (CCSID 5210) とダブルバイト コード ページ 947 (CCSID 21427) で構成されています。[ 19 ] [ 20 ] [ 21 ] IBM Db2の Microsoft バリアントとの互換性を高めるため、IBM は純粋なダブルバイト コード ページ 1372 [ 22 ]と、Microsoft のコード ページ 950 に対応する関連する可変幅 CCSID 1373 も定義しています。 [ 23 ]
IBM は、HKSCS-2001 Big5 コード ページに CCSID 5471 を割り当て (ダブル バイト コンポーネントとして CPGID 1374 を CCSID 5470 とする)、[ 24 ] [ 25 ]、HKSCS-2004 コード ページに CCSID 9567 を割り当て (ダブル バイト コンポーネントとして CPGID 1374 を CCSID 9566 とする)、[ 26 ]、HKSCS-2008 コード ページに CCSID 13663 を割り当て (ダブル バイト コンポーネントとして CPGID 1374 を CCSID 13662 とする)、[ 27 ] 、 CCSID 1375 は、現在 CCSID 13663 と同等の、拡大中の HKSCS コード ページに割り当てられている。[ 28 ]
中国海字集(中國海字集)[ 29 ]は、中国海が作成した繁体字中国語フォントです。このフォントは単体で販売されることはほとんどなく、Microsoft Office 97の中国語版など、他の製品にバンドルされています。このフォントは、Big-5に欠けている日本語のかな、国字、その他の文字をサポートしています。そのため、中国海拡張機能は、政府がサポートする拡張機能よりも人気が高まっています。香港の一部のBBSは、HKSCSの導入前に中国海フォントのエンコーディングを使用していました。
「Sakura」フォント(日和字集 Sakura Version)は香港で開発され、HKSCSとの互換性を考慮して設計されています。HKSCSにはない黒字や独自の記号(ドラえもんを含む)にも対応しています。
Unicode-at-on(Unicode 拡張機能計画)は、以前はBIG5拡張機能と呼ばれていましたが、コードページテーブルを変更することでBIG-5を拡張し、バージョン2以降はChinaSea拡張機能を使用しています。しかし、ChinaSeaの倒産、開発の遅れ、HKSCSとUnicodeの人気上昇(このプロジェクトはHKSCSと互換性がありません)により、この拡張機能の成功はせいぜい限定的なものにとどまっています。
問題はあるものの、以前はUnicodeプライベート使用領域にマッピングされていた文字は、文字をUnicode形式にエクスポートする際に、標準化された同等の文字に再マッピングされます。
香港の東方報業集團有限公司(Oriental Press Group Limited)傘下の東方日報と新日報のウェブサイトでは、 HKSCSとは異なるBig-5拡張コードを持つダウンロード可能なフォントが使用されていた。
台湾教育省は、内部で使用するために独自のフォントである台湾教育部フォント (臺灣教育部造字檔) を提供しました。
行政院は、133 文字のカスタム フォントである台湾農業委員会フォント (臺灣農委會常用中文外字集) を導入しました。このフォントには、魚の部首から 84 文字、鳥の部首から 7 文字が含まれています。
中国デジタル化技術推進委員会は1997年にBig5+を導入し、20,000以上のコードポイントを使用してUnicode 1.1のすべてのCJK表意文字を組み込みました。しかし、追加されたコードポイントは元のBig-5の定義を超えており(Big5+は高バイト値81-FEと低バイト値40-7Eおよび80-FEを使用)、新しいコードページファイルなしではMicrosoft Windowsにインストールすることができませんでした。
Windows ユーザーがカスタム フォントを使用できるようにするため、中国デジタル化技術基金は Big-5E を導入しました。これは、3954 文字 (コード ポイントの 3 つのブロック: 8E40-A0FE、8140-86DF、86E0-875C) を追加し、ETEN 拡張機能から日本語の仮名を削除したものです。Big-5+ とは異なり、Big5E は Big-5 を元の定義内で拡張したものです。Mac OS X 10.3以降では、フォント LiHei Pro (儷黑 Pro.ttf) と LiSong Pro (儷宋 Pro.ttf) で Big-5E がサポートされています。
中国デジタル化技術基金はBig5の定義を作成し、それをCNS 11643という文書にまとめ、台湾の公式標準の一部とした。
Big5-2003は、1984年のETEN拡張で導入されたすべてのBig-5文字(コードポイントA3C0~A3E0、C6A1~C7F2、F9D6~F9FE)とユーロ記号を組み込んでいます。キリル文字は、CNS 11643にはキリル文字が含まれていないという当局の主張に基づき、含まれていません。
中央研究院は1990年代後半に中国語データ処理フォント(漢字構形資料庫)を作成し、最新版のバージョン2.5には112,533文字が収録されているが、一部は文字京フォントよりも少ない。
香港も文字コードにBig5を採用しました。しかし、広東語の書き言葉には、通常のBig5文字セットには含まれていない独自の文字があります。この問題を解決するため、香港政府は1995年にBig5拡張版である政府中国語文字セット(GCCS)、1999年に香港補助文字セットを作成しました。香港拡張版は一般的にパッチとして配布されていました。現在もマイクロソフトによってパッチとして配布されていますが、香港政府のウェブサイトから完全なUnicodeフォントも入手できます。
HKSCSには2つの符号化方式があります。1つはBig-5符号化標準用、もう1つはISO 10646標準用です。最初のリリース後、HKSCS-2001とHKSCS-2004もリリースされています。HKSCS-2004は、国際標準化機構(ISO)が2004年4月に発行したISO/IEC 10646:2003およびその追補1に技術的に準拠しています。
HKSCSには、一般的なETen拡張のすべての文字に加え、簡体字中国語の文字、地名、人名、広東語のフレーズ(卑猥な言葉を含む)が含まれています。
2020年現在香港の文字体系の最新版は HKSCS-2016 ですが、すべての文字を Big5 にエンコードした最後の HKSCS 版は HKSCS-2008 であり、それ以降の版で追加された文字は ISO 10646 / Unicodeにのみマッピングされています (適切な場合はCJK 統一表意文字の水平グリフ拡張として)。 [ 30 ]また、香港の状況と同様に、マカオでも必要とされる文字がありますが、Big5 にも HKSCS にも含まれていないため、 Big5 や HKSCS にはない文字で構成されるマカオ補助文字セットが開発されました。ただし、これも Big5 にはエンコードされていません。最初の 121 文字の MSCS 文字は 2009 年に Unicode への組み込みまたはマッピングのために提出され、[ 31 ] MSCS の最初の最終版は 2020 年に確立されました。[ 30 ]
0xC6A1から0xC875の範囲に、カナ、ロシア語キリル文字、リストマーカーをエンコードするための主要なBig5拡張レイアウトが2つあります。これらは互いに互換性がありません。[ 32 ]下の表で比較します。
カナとキリル文字の ETEN レイアウトは、HKSCS [ 33 ] ( HTML5を含む) [ 34 ]および Unicode-At-On [ 35 ]バリアント、IBM のコード ページ 950 バージョン [ 36 ] [ 37 ] [ 38 ]でも使用されており、カナの ETEN レイアウト (キリル文字は省略) は Big5-2003 バリアントでも使用されています。[ 39 ] Windows-950用に公開されているマッピング ファイルにはどちらも含まれておらず、この Big5 範囲はInternational Components for Unicodeの Windows-950 実装によってプライベート ユース エリアにマッピングされています。[ 40 ] Pythonの組み込みコーデック実装は BIG5.TXT レイアウトを使用しています。[ 41 ]従来の Mac OSバージョンにはどちらのレイアウトも含まれていません。[ 3 ]cp950