1. 文字コード・フォント 

   1−1  コンピュータの文字処理
   1−2  文字コード・符号・エンコード
   1−3  フォント


1−1  コンピュータの文字処理

コンピュータは、人間のように文字の「形」を見て読み書きをしているわけではありません。 各文字に割り当てられた番号(数値)を、メモリ上に並べたりディスクに保存したりしているだけです。
コンピュータが処理するため、文字のひとつひとつに当てた番号(数値)のことを文字コードといいます。 パソコン上で編集しているテキストファイルやワープロ文書も、画面に表示されている文字情報は 「画」像として記録されているわけではありません。 内部的には、各文字に対応する文字コード、つまり数値の羅列を挿入/削除したり、保存したりしているだけです。

◆ 文字が画面表示されるまで ◆
shikumi

1−2  文字コード・符号・エンコード

どの文字に何番の番号=コードを当てるかという決まり(コード体系)には多くの種類があります。
2018年時点では、ユニコード (Unicode) がいよいよ主流になってきたといえますが、 それでもまだまだシフトJIS (Shift-JIS)ほかも健在です。

文字を(コード体系を選んで)符号化(数字の列に変換)することをエンコードといいます。 反対に、(符号と見なされる)数値の列を文字に復号することをデコードといいます。
(本ページでは、16進数 の表記は、C言語系の慣例を借りて '0x' をつけて表現します。)
人間にとっての文字 例: 国  語  の  先  生 〜画面表示(視覚化)
 ↓Shift-JISコードを適用
文字コード     例:0x8D91 8CEA 82CC 90E6 90B6 〜パソコンの内部メモリにこの形で書きこまれている
 ↓エンコード
符号(バイト列)  例:0x8D 0x91 0x8C 0xEA 0x82 0xCC 0x90 0xE6 0x90 0xB6 〜テキストファイルとして保存・通信Shift-JISコードと見なしてデコード
文字コード     例:0x8D91 8CEA 82CC 90E6 90B6 〜パソコンの内部メモリにこの形で読みこまれる
 ↓
人間にとっての文字 例: 国  語  の  先  生 〜画面表示(視覚化)
文字から符号への変換(エンコード)は、本稿の場合、文字列(文字コードの列)を1バイトの数値の列に切り分ける作業ですが、 上の例を見ると、8D918CEA……を[8D] [91] [8C] [EA]……と切り分けています。 これは、シフトJISという単純明快な規格だからです。ユニコードだともっと複雑な変換になります。 (後述)
Webページを開いた場合、ブラウザは通常、 ページの最初の何文字かを調べて、コード体系を自動判断しています。 ブラウザが判断したコードの種類と実際の種類とがずれていた場合、いわゆる「文字化け」が起こります。
本サイトの各ページは、シフトJISでエンコードされたHTML文書です。 ところがこれを、下図のように(無理やり)EUCその他のコードを適用して読み込み、表示しようとすると、文字化けを起こします。

◆ Internet Explorer における文字コード(エンコード)選択ミス ◆
encode

コンピュータの歴史の中で様々な文字コード体系が生まれ、現在も存在します。

  ◆ コード体系 …… '漢'を示すコード番号 ◆
 ・JISコード    …… '漢'= 0x3441
 ・シフトJISコード …… '漢'= 0x8ABF
 ・EUCコード    …… '漢'= 0xB4C1
 ・ユニコード Unicode …… '漢'= 0x6F22
上記の「漢」の例を見ればわかるように、コード体系が変われば、どの文字が何番に当たっているかも変わります。 逆に、ディスク等に保管されている文字コード(それ自体は単なる数値)は、適用するコード体系を誤れば、 違う文字を意味してしまうことになります。

  シフトJISでは '漢' = 0x8ABF
                 0x8ABF = Unicode では '調'

  EUCコードでは '漢' = 0xB4C1
                 0xB4C1 = シフトJISでは "エチ"
                      (半角カタカナ2文字)

実際の文字とコードの関係を、学校とその出席番号で喩えるなら、
・太郎君はA中学からB中学へ転校したら「3年1組14番」から「3年3組19番」になった
・出席番号「3年1組14番」は、A中学とB中学では別の個人を指している
などというのと同じことですね。

1−3  フォント

文字を実際に画面表示したり印刷したりするには、字形(グリフ)に関する視覚的な情報が必要です。 文字コードにどんな「形」を当てるかに関するデータの集まりを、一般にフォントといいます。
その情報を収めたファイルがフォントファイルです。
英語圏で使われている英数字および ! " # @ + / といった記号類は、全部あわせても100字程度で、 英語圏の国々では、これだけで充分間に合ってしまいます。
それに対して、日本の現実社会で使われている文字は、漢字の異体字を含めると数万字とも言われます。
字形情報は、書体にもよりますが、1文字あたり数百バイトからキロバイト単位のデータになります。
100文字程度の(それも比較的単純な)字形情報が必要な英数字用のフォントファイルの場合、 数十キロバイト程度のサイズとなります。 一方、日本語用フォントファイルサイズは、どうしてもメガバイト単位になります。
Windowsほか多くのOSには複数のフォントセットがインストールされているため、 ひとつの文字コードを、さまざまな書体で表示することができます。

◆ Microsoft Word2013 におけるフォント選択 ◆
Font Select