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

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

コンピュータの歴史の中で様々な文字コード体系が生まれ、現在も存在します。
◆ コード体系 …… '漢'を示すコード番号 ◆
・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 におけるフォント選択 ◆

|