bootfont2009年02月10日 07:13
Windows2000とXPには、普通のフォントに加えて起動時のみに使われる特殊なフォントが存在する。
このへんの画面に使われるフォントだ。

斜めの線がガタガタで非常に醜いフォントだが、起動時にしか見ないのでまあ許せる。
さてそのフォントの実体は、通常Cドライブ直下にある「bootfont.bin」というファイルである。

このファイルはバイナリエディタで見ると非常にわかりやすい構造をしている。
1bitごとに白黒に塗り分けて表示してみよう。0を黒、1を白にするのが一般的だが、これだと文字が白黒反転してしまうので1を黒にしてある。
まず頭の部分はこうだ。8bitごとに改行してある。

最初の方はよく分からないが、少し進むと罫線のようなものが見える。
もう少し先の方を見てみると、

アルファベットや

半角カナが見えてくる。並び順はShift_JISの1バイト領域の順である。
文字の境目に謎の模様が見えるが、これは文字コードを表している。
「ア」を例に説明しよう。

それぞれの文字について、文字の前に赤で示した8bit、文字の後に緑で示した16bitのデータが付いている。
「ア」の場合であれば前者が「10110001 = B1」、後者が「01110001 11111111 = 71 FF」だ。
「B1」はShift_JISでの「ア」の文字コード。「71 FF」はUnicodeの番号を表すが、Windowsはリトルエンディアンを使っているためUnicode番号に直すには前後をひっくり返す必要がある。すなわちUnicodeの「ア」のコードは「FF71」である。
さらに進むと2バイト領域にさしかかる。ここから改行を16bitごとにする。

記号類から始まって、

ひらがな、

漢字などが並んでいる。
コード表記は、Shift_JISのコードが2バイトになっている他は先ほどと同様である。

上の1000100010011111=889FがShift_JIS、下の1001110001001110=9C4E→4E9CがUnicodeの番号である。
さてこのあとファイルの最後まで漢字が続いていくのだが、その前に少しJIS漢字についての前提知識を。
こちらのJISコード表を参考にしていただきたいが、JIS漢字には「亜唖娃阿哀~蕨椀湾碗腕」と読みの順に並べられた第1水準漢字と、「弌丐丕个丱~齲齶龕龜龠(+α)」の部首順に並べられた第2水準漢字が存在する。
第1水準は日常使う頻度が多い字で、第2水準はあまり使わない字。気合いの足りないフォントは第1水準のみを実装すればそこそこ使えるという意味合いである。
そこでbootfontだが、「亜唖娃阿哀」から漢字が始まってファイルの終わりは次のようになっている。

腕までが第1水準で、加えて第2水準から3文字を抜粋して搭載している。
瑕・疵・竄
なんともMicrosoftのライセンス文書に使われそうな字である。
このへんの画面に使われるフォントだ。

斜めの線がガタガタで非常に醜いフォントだが、起動時にしか見ないのでまあ許せる。
さてそのフォントの実体は、通常Cドライブ直下にある「bootfont.bin」というファイルである。

このファイルはバイナリエディタで見ると非常にわかりやすい構造をしている。
1bitごとに白黒に塗り分けて表示してみよう。0を黒、1を白にするのが一般的だが、これだと文字が白黒反転してしまうので1を黒にしてある。
まず頭の部分はこうだ。8bitごとに改行してある。

最初の方はよく分からないが、少し進むと罫線のようなものが見える。
もう少し先の方を見てみると、

アルファベットや

半角カナが見えてくる。並び順はShift_JISの1バイト領域の順である。
文字の境目に謎の模様が見えるが、これは文字コードを表している。
「ア」を例に説明しよう。

それぞれの文字について、文字の前に赤で示した8bit、文字の後に緑で示した16bitのデータが付いている。
「ア」の場合であれば前者が「10110001 = B1」、後者が「01110001 11111111 = 71 FF」だ。
「B1」はShift_JISでの「ア」の文字コード。「71 FF」はUnicodeの番号を表すが、Windowsはリトルエンディアンを使っているためUnicode番号に直すには前後をひっくり返す必要がある。すなわちUnicodeの「ア」のコードは「FF71」である。
さらに進むと2バイト領域にさしかかる。ここから改行を16bitごとにする。

記号類から始まって、

ひらがな、

漢字などが並んでいる。
コード表記は、Shift_JISのコードが2バイトになっている他は先ほどと同様である。

上の1000100010011111=889FがShift_JIS、下の1001110001001110=9C4E→4E9CがUnicodeの番号である。
さてこのあとファイルの最後まで漢字が続いていくのだが、その前に少しJIS漢字についての前提知識を。
こちらのJISコード表を参考にしていただきたいが、JIS漢字には「亜唖娃阿哀~蕨椀湾碗腕」と読みの順に並べられた第1水準漢字と、「弌丐丕个丱~齲齶龕龜龠(+α)」の部首順に並べられた第2水準漢字が存在する。
第1水準は日常使う頻度が多い字で、第2水準はあまり使わない字。気合いの足りないフォントは第1水準のみを実装すればそこそこ使えるという意味合いである。
そこでbootfontだが、「亜唖娃阿哀」から漢字が始まってファイルの終わりは次のようになっている。

腕までが第1水準で、加えて第2水準から3文字を抜粋して搭載している。
瑕・疵・竄
なんともMicrosoftのライセンス文書に使われそうな字である。
Post time : 2009年02月10日 07:13│Comments(0)