先日紹介した MSXフォントをWebで表示する方法 がWindows版Internet Explorer専用だったので、今度はWindows版Mozilla(Netscape)とOperaなど他のブラウザに対応する表示方法を検討してみました。
※2006年6月現在、やはり表示はできなくて未解決です!
前回のテスト にご協力いただきましてありがとうございます。前回のテストで得られた情報は、以下のものです。
- TrueTypeフォントをSymbolで制作してしまうとMozillaやOperaでは表示できないらしい
- 0x80〜0xFFという文字コード(正確には0x80から70xFF)は、Unicode(UTF-8)では16ビット(2バイト)で記述しなければならないらしい
- しかし0x80〜0xFFという文字コードは、Unicodeでも「Latin-1 Supplement」という領域で正式に確保されているらしい
今回のテストについて
今回のテストは、MSXの文字コードをSymbolではなく Latin-1のフォント置き換え で対応しよう、というものです。
まずは皆さんにお願い、テスト用のTrueTypeフォント「MSX ROM 6dot test」 をダウンロードしてください。このフォントは Sinさん の MSX VIEWer に付属する「MSX ROM 6dot」という欧文TrueTypeフォント(Symbol)を、欧文(Latin-1)へ再構築したものです(Sinさんすまぬ)。いくつかの文字が再構築できませんでしたが、これは後述します。
blogでは、MSXフォントを表示するCSS(.msxlist_small)のフォント使用順を変更しました。今回配布する「MSX ROM 6dot test」を最優先に、IE用埋め込みWebフォントはその次に使用します。よって、MozillaやOperaユーザーは、フォントをインストールするとblogのMSXフォントが表示できるはずです。フォントをインストールしないIEユーザーはそのままWeb埋め込みフォントで表示可能、IEユーザーでもフォントをインストールすればMozillaやOperaユーザーと同じ表示を体験できるはずです。
TrueTypeフォントのインストールは、たむたむ@parfaitさんの フォントインストーラーSAKURA を利用するとWindowsのFontsフォルダへフォントを入れなくても一時的にフォントを利用できるのでオススメです。(Tatsuさん情報ありがとうございます)
Web上の文字のエンコードも考慮しましたが、前回と同様、80h(以下0x80)〜FFh(以下0xFF)の文字を &#xxx; の10進数で指定する形を用いました。
では、20hから0xFFまでテスト表示してみましょう。
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
ŀŁłŃ
どうでしょう?MSXフォントがWeb上に表示できましたか?ちなみにうちのNetscape 7.1ではそれっぽく表示されてきたのですが、なんかまだ文字化け してます。
フォントエディタであるTTEditが…
僕がMSXのTrueTypeフォントの制作に使用しているソフトは TTEdit というシェアウェアです(登録済みです)。現在公開している最新版のVer.4.30を用いています。このソフトは、文字の一覧表示より任意の1文字を決定して実際にデザインの編集を行うよう作られています。
今回のテストで分かった点は以下の通りです。
- TTEditは、欧文フォントのUnicodeモードで編集すると、基本的に0x80〜0x9Fを編集できません。→ 図 中黒(・)になっている文字は編集ができない文字を意味しています。
- TTEditは、欧文フォントでUnicodeモードからJISモードに切り替えると0x80〜0x9Fのいくつかの文字が編集できるようにはなりますが、すべてを埋めることはできません。→ 図 ちなみに和文フォントでは0x80〜0x9Fをまったく編集できません。
- Unicodeモードで編集できなくてJISモードで編集できた0x80〜0x9Fまでの文字は、(少なくともNetscape 7.1の)ブラウザ上で表示できるようです。
これはつまり、Web上で文字化けしている文字は TTEditの仕様によって編集できないから表示もできない ということです。まぁ0x80〜0xFFを&#xxx;で表記することはUTF-8の仕様外である可能性は否定できませんが、仮に、MSX-BASICで使われている0x80〜0xFFの文字をWeb上では今後UTF-8の仕様に従い2バイトで表記して行くと決めたところで、「Latin-1 Supplement」の領域内にある0x80〜0xFFの文字(特に0x80〜0x9F)がTTEdit側で自由に編集できるようにならないと、MSXの文字はいつまで経ってもWeb上で表現できないことになります。
Unicodeの仕様では確かに「Latin-1 Supplement」という領域が策定されているのですから、TTEditのUnicodeモード(和文・欧文問わず)でも「Latin-1 Supplement」の文字が編集できるようになってくれないかなぁ…と切に願うばかりです。
…っていう解法は、正しいんでしょうか?(^_^; できることならやっぱりGRAPH文字も表示したいんですが、何か良い方法は無いでしょうか?
Latin-1の補足
TTEditで0x80〜0x9Fが編集できない件について、ISOでは0x80〜0x9Fの範囲は制御文字用として確保されているからでは?という話をいただきました。確かにそうなのかもしれませんが、Unicodeでは「Latin-1 Supplement」となり制御文字だった領域は文字として再定義されていますので、ここを意図的に編集できなくする理由は無いと思います。(9.29 12:01更新)
TTEditで登録できない0x80〜0x9Fのうちのいくつかの文字は WindowsのLatin-1自体に存在しない から定義もできないのでは?という話をいただきました。この表では0x81、0x8D、0x8F、0x90、0x9Dの5文字が存在しないことになっています。確かにTTEditでもこの5文字は編集できませんでした(実際は編集できない文字がこれ以外にもある)。しかしLatin-1自体に文字が存在しないということであれば、そもそもLatin-1でMSXフォントを代替しようという前提条件が狂ってきます。やはりSymbolで逃げるしかないのか!?どーしよ!(^_^; (9.29 12:20更新)