Unicodeブロックとは、 Unicode文字セットの数値文字コード(コードポイント)の連続した範囲のことで、 Unicodeコンソーシアムが管理および文書化の目的で定義しています。通常、新しいグリフの追加などの提案は、関連するブロック全体を考慮して議論および評価されます。
各ブロックは一般的に、1つまたは複数の特定の言語で使用されるグリフ、あるいは数学、測量、装飾的な活字組版、ソーシャルフォーラムなどの一般的なアプリケーション分野で使用されるグリフを提供することを目的としていますが、必ずしもそうとは限りません。
Unicode ブロックは一意の名前で識別され、ASCII 文字のみを使用し、通常は英語で記号の性質を説明するものです。たとえば、「Tibetan」や「Supplemental Arrows-A」などです。ブロック名を比較する場合、大文字と小文字を同等に扱い、空白、ハイフン、アンダーバーは無視する必要があります。したがって、最後の名前は「supplemental_arrows_a」、「SupplementalArrowsA」、「SUPPLEMENTALARROWSA」と同等です。[ 1 ]
ブロックはペアごとに分離されています。つまり、重なり合いません。各ブロックの開始コードポイントとサイズ(コードポイントの数)は常に 16 の倍数です。したがって、16 進表記では、開始 (最小) ポイントは U+ xxx 0、終了 (最大) ポイントは U+ yyy F となります。ここで、xxxとyyyは 3 桁以上の 16 進数です。(これらの制約は、コードポイントの最後の 16 進数でラベル付けされた 16 行の表として、Unicode Consortium 文書でグリフの表示を簡素化することを目的としています。[ 1 ] ) ブロックのサイズは、最小 16 から最大 65,536 コードポイントまでです。
割り当てられたすべてのコードポイントには、「Block」と呼ばれるグリフプロパティがあり、その値は、そのポイントを所有する一意のブロックの名前を示す文字列です。[ 2 ]ただし、ブロックには、割り当てられていないコードポイントも含まれる場合があります。これは通常、そのブロックに「論理的に」属するはずの文字を将来追加するために予約されています。名前付きブロックのいずれにも属さないコードポイント(たとえば、割り当てられていないプレーン4~13)の値は、block="No_Block"です。[ 1 ]
特定の Unicode ブロックに属しているというだけで、そのブロックに含まれる、または将来含まれる可能性のある文字の特定の特性が保証されるわけではありません。文字の識別は、Unicode 文字データベースに記載されている特性によって決定されます。たとえば、連続する 32 個の非文字コードポイント U+FDD0..U+FDEF は、アラビア語表現形式 Aブロック内の他の文字に共通する特性を一切共有しておらず、アラビア語スクリプト文字でも「右から左への非文字」でもなく、これ以上アラビア語互換文字をエンコードしないことが合意されているため、このブロックの埋め合わせとして割り当てられています。[ 3 ]
各Unicodeポイントには「一般カテゴリ」と呼ばれるプロパティもあり、これは対応するシンボルが、そのシンボルがシステムに組み込まれた言語やアプリケーションにおいてどのような役割を果たすかを記述しようとするものです。一般カテゴリの例としては、「Lu」(大文字を意味する)、「Nd」(十進数)、「Pi」(引用符)、「Mn」(非スペースマーク、つまり直前のグリフの発音記号)などがあります。この分類はコードブロックとは完全に独立しています。特定の一般カテゴリを持つコードポイントは通常、複数のブロックにまたがり、連続している必要はなく、各ブロック内でも連続している必要はありません。[ 4 ]
各コードポイントには、どの表記体系を対象としているか、あるいは複数の表記体系を対象としているかを指定するスクリプトプロパティも備わっています。これもブロックとは独立したものです。
Unicodeシステムの説明では、ブロックはより具体的なサブグループに細分化される場合があります。例えば、「その他の記号」ブロック内の「チェス記号」などが挙げられます(ただし、独立した「チェス記号」ブロックとは混同しないように注意が必要です)。これらのサブグループは、Unicodeコンソーシアムが使用する技術的な意味での「ブロック」ではなく、ユーザーの便宜のために命名されているにすぎません。
Unicode 17.0では 346 ブロックが定義されています: [ 1 ]
Unicodeの安定性ポリシーでは、一度割り当てられた文字は、非推奨にすることはできるものの、移動または削除することはできないと規定されています。これはUnicode 2.0およびそれ以降のすべてのバージョンに適用されます。
これに先立ち、以下の旧ブロックが移動されました。