文字(コンピューティング):文字、字形、コードポイント、文字エンコーディング
コンピューティングにおける文字は、数値コードで表現されるテキストまたは制御の記号である。文字、字形、コードポイント、ASCII・Unicode・UTF-8などのエンコーディング、制御文字と主な区別を解説する。
コンピューティングにおける文字とは、テキストを構成する抽象的な単位である。文字、数字、句読点、記号のほか、ソフトウェアが認識して操作する不可視の制御要素も含まれる。文字そのものはテキスト内の意味を表す概念的な項目であり、その視覚的な外観は字形によって作り出される。コンピュータは文字を数値として保存・処理し、その数値は文字エンコーディングに従って解釈される。
画像ギャラリー
2 画像基本概念と用語
- 文字: 書記言語における抽象的な要素。たとえば文字のAや数字の5が該当する。基本例については、文字と数字を参照。
- 字形: 画面または紙面に文字を表示するための個別の視覚的形状。字形はフォントや書体によって異なり得る。字形を参照。
- コードポイント/数値: エンコーディング方式において文字に割り当てられる番号。コンピュータが扱うのは可視的な形ではなく、この番号である。内部で用いられる数については、数および数値コードを参照。
- エンコーディング: 文字を数値へ、さらに保存・送信のためのバイト列へ対応付ける規則の集合。代表例にはASCIIやUTF-8などのUnicodeエンコーディングがある。
- 書記素クラスタ: 利用者が一文字として認識する単位。基底文字と結合文字の組合せ、たとえば文字とアクセント記号から構成される場合がある。
たとえばASCIIエンコーディングでは、数値65は大文字の「A」に対応する。テキストを描画する際、システムはフォント内で当該文字の字形を検索して表示する。同じコードポイントでも、セリフ体とサンセリフ体では異なる見た目になり得る。フォントと外観については、フォントの資料を参照。
制御文字と不可視の記号
すべての文字が可視であるわけではない。制御文字は、印字可能な記号を表すのではなく、ソフトウェアや装置に動作を要求する特別なコードである。よく知られる制御文字には、カーソルを新しい行へ移動させる復帰と改行、または次のタブ位置まで進めるタブ文字がある。ソフトウェアやプロトコルは、これらのコードを解釈してレイアウトとデータの流れを管理する。制御文字の例は制御文字を参照。
歴史、発展とエンコーディング
初期のコンピュータシステムでは、一般的な英字、数字、句読点を表現するために、ASCIIのような限定的な文字集合が用いられた。コンピューティングが世界規模になるにつれ、ほぼすべての文字体系と多数の記号にコードポイントを割り当てるUnicodeが開発された。Unicodeは、抽象的なコードポイント(文字の識別子)と、その符号化されたバイト表現(UTF-8、UTF-16など)を区別し、システム間で一貫した交換を可能にする。特にUTF-8は、Unicodeコードポイントを可変長のバイト列として符号化するため、テキストを効率的に保存・送信できる。
実用上の意味と区別
- バイトと文字: 文字エンコーディングは、1文字を表すのに必要なバイト数を決定する。1文字につき1バイトを用いる方式もあれば、可変長の並びを用いる方式もある。
- 正規化: 見た目が同じテキストでも異なる方法で符号化できる。たとえば、事前に合成された文字と、基底文字に結合文字を加えた表現があるため、ソフトウェアは比較や保存の前にテキストを正規化することが多い。
- 描画処理の流れ: テキスト処理は通常、コードポイント、字形選択、レイアウト、ラスタライズの順に進む。各段階はロケール、フォント、描画エンジンの影響を受ける。
- 相互運用性: 信頼できるファイル形式、ネットワークプロトコル、ユーザーインターフェースのためには、適切なエンコーディングの選択と制御文字の適切な処理が不可欠である。
文字(抽象的な単位)、コードポイント(その数値識別子)、字形(視覚的な形)、エンコーディング(コードポイントをバイトにする方法)の違いを理解することは、テキスト処理、ローカライゼーション、人間の言語を扱うソフトウェアの基礎となる。
関連項目
著者
AlegsaOnline.com 文字(コンピューティング):文字、字形、コードポイント、文字エンコーディング Leandro Alegsa
URL: https://ja.alegsaonline.com/art/18625