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 におけるフォント選択 ◆ |