【2025.02.19更新】「MSXπ✨✨✨✨✨✨✨」を追加
【2025.02.19更新】16pxフリーフォント「ばぐまるフォント」を追加
【2025.02.19更新】漢字ROMのチェックサムデータを追加
【2021.07.06更新】初版公開
MSXの漢字ROMに含まれている「JISの規格外だがMSXの各機種では共通っぽい非漢字部分の文字群(いわゆる機種依存文字)」について、JIS規格側と実機側との互換性をいまさら取るために手描きをしたライセンスフリーフォントを用いて、漢字ROMの自作データ化を目指します。
なんという後ろ向きなソリューション!
MSX共通・漢字ROMの「非漢字部分」とは
MSXの漢字ROMは旧JIS(JIS C 6226-1978、いわゆる78JIS)ベースですが、主に非漢字部分であるシフトJISコード 81ADh~859Eh には旧JISでは未定義なのに独自に実装された文字、かつ新JIS(JIS X 0208-1983、いわゆる83JIS)とは違う独自に実装された文字が含まれています。
この漢字部分は東芝製ワープロRupoシリーズと互換性があるものの、MSXにおいてはメーカー・機種問わず共通の字形で揃えられており、MSX以外のPCでは採用実績が見当たらないため、MSXにおける事実上の規格化された文字群(いわゆる機種依存文字)である 可能性が高いことが分かっています。
漢字ROMの調査結果については、以下のブログ記事をご参照ください。 gigamix.hatenablog.com
この「MSX共通の非漢字部分」は現代のUnicodeで代用できない文字も含まれていることから、いま新規でMSX用漢字フォントデータを作成する際に他のライセンスフリーフォントからそのまま移植して再現することができません。
そこで、この文字群のライセンスフリーフォントを整備することとしました。
チェックサム用データも追加が必要
MSX用の漢字ROMフォントデータは各機種共通の非漢字部分データ部分の追加のほか、漢字ROMの存在チェックを判定するためのチェックサムデータの追加も必要です。これを怠るとMSXのシステムが漢字ROMの存在に気付かず文字を表示できません。
16px角のライセンスフリーフォント
漢字ROM image file for msx emulaters
正解から言ってしまうと、A to Cさん作のライセンスフリーフォントデータ「漢字ROM image file for msx emulaters」は、MSX共通の非漢字部分データとチェックサムデータが含まれています。必要なデータを抜き出して任意のフォントへ移植することで、MSXの実機と同一の文字が表示可能な16pxのフォントデータが完成します。
↓ フォントのダウンロードはこちら ↓ www.yo.rim.or.jp
「漢字ROM image file for msx emulaters」はその名の通り各種MSXエミュレータでライセンスフリーの漢字ROMを導入する目的で開発されたフォントデータで、公式のMSXエミュレータ「MSXPLAYer」や「1chipMSX」にも採用されました。
文字デザインのベースは「jiskan16(jiskan16.bdf)」で、jiskan16の全角文字部分はパブリックドメインにつき自由に使用することができます。jiskan16の半角文字部分は著作者がソニー社のため再配布時に著作権表示とライセンス条項の添付が必要となっているようです。1980~90年代当時はパソコンに限らずコンピュータ制御による日本語表示環境が芳しくなかったため、電子機器、インジケータ、電光掲示板、鉄道の行先表示機や発車標、プリンタなど多くの用途でjiskanシリーズのフォントが採用されました。
↓ jiskanについてはこちら ↓ ja.wikipedia.org
jiskan16の全角文字の一部はMSXの漢字ROMと互換性がないこともあり、「漢字ROM image file for msx emulaters」ではjiskan16の半角文字と全角文字の非互換部分が作者による手描きフォントへ差し替えられています。そして2021年5月26日、このフォントデータはApache License 2.0の適用となりました。
後述の「漢字FlashROMカートリッジ」へこのフォントデータをインストールすることで、実機向けのMSX用漢字ROMカートリッジを自作することもできます。
ばぐまるゴシック
ばぐ★NAGAさん(twitter@bugnaga)が開発した丸ゴシックのビットマップフォント。元々はX68000用のフォントデータですが、なんとMSX用漢字ROMのデータ形式でも配付が開始されました。MSX向けの特殊文字も搭載されています。
↓ フォントのダウンロードはこちら ↓ debugx.net
後述の「漢字FlashROMカートリッジ」へこのフォントデータをインストールすることで、実機でも使えます!
実機向け漢字ROMを作れる「漢字FlashROMカートリッジ」
MSXエミュレータ用漢字ROMデータファイルをFlashROMへ書き込むと実機向けの漢字ROM拡張カートリッジとして使えるすごい同人ハードウェアが発売になりました!
↓ メーカーの「にがHP」さんはこちら ↓ niga2.sytes.net
12px角のライセンスフリーフォント
12pxの全角非漢字部分のフォントは、けっきょく自分で描きました。なんという本末転倒!!
一旦この内容でFIXとさせていただきます。私のデータもライセンスは Apache Licence 2.0 を適用します。どうぞご利用ください。
実機向け漢字ROMを作れる「MSXπ✨✨✨✨✨✨✨」
Rapsberry Piを用いてMSXの各種機能を再現する「MSXπ✨✨✨✨✨✨✨」カートリッジで、MSXの16pxフォントと12pxフォントを漢字ROMとして利用可能にするファームウェアが公開開始。
16pxフォントはMSX標準の漢字ROMとして、12pxフォントは松下仕様の12ドット漢字ROMとして利用可能です。松下仕様の12ドット漢字ROMとは、松下電器(ナショナル・パナソニックブランド)のMSXハードウェアに実装されたメーカー独自の漢字ROMです。実機ではFS-4600FとFS-A1FMの2機種に内蔵、外付けカートリッジには通信モデムカートリッジFS-CM1が存在することが判明しています。
一見すると松下仕様の漢字ROMの利用シーンは極めて限定的な印象を受けますが、MSXの日本語BASIC(漢字ドライバ)で松下仕様12ドット漢字ROMが対応しています(CALL KANJI1 及び CALL KANJI3利用時)。
↓ MSXπ✨✨✨✨✨✨✨の購入はこちら ↓ auctions.yahoo.co.jp
松下仕様12ドット漢字ROMが存在する場合、日本語BASICでは松下仕様の漢字ROMから文字表示を行うため、存在しない場合(標準漢字ROMの16×16pxを12×16pxへ圧縮して表示)と比べてきれいな文字デザインで文字表示が可能です。日本語BASICはMSX2+以降の実機には標準搭載されており、MSX2以下の機種では日本語カートリッジ HBI-J1、日本語MSX-DOS2カートリッジの装着時に使用可能となります。
にわかに信じがたいのですが、日本語BASICはMSX1でも利用可能です。
フォント解説
非漢字部分はの文字は番号0(G000)から93(G093)まで、全94文字あります。ここでは便宜上「Gコード」と呼びます。
Gコードはこの絵の左上を起点(G000)として、右へ走査してゆきます。1文字ごとにカウントを増やしてゆきます。1行20文字で、右端まで走査した場合は1行下がってまた左端から右へ走査してゆきます。
非漢字部分のシフトJISコードとGコードのデザイン割付の対比表は以下の通りです。
Shift_JIS | Gコード | 文字の意味 | Unicode |
---|---|---|---|
81AD | G000 | ㈱ | U+3231 (PARENTHESIZED IDEOGRAPH STOCK) |
81AE | G001 | ㈲ | U+3232 (PARENTHESIZED IDEOGRAPH HAVE) |
81AF | G002 | Ⅰ | U+2160 (ROMAN NUMERAL ONE) |
81B0 | G003 | Ⅱ | U+2161 (ROMAN NUMERAL TWO) |
81B1 | G004 | Ⅲ | 'U+2162 (ROMAN NUMERAL THREE) |
81B2 | G005 | Ⅳ | U+2163 (ROMAN NUMERAL FOUR) |
81B3 | G006 | Ⅴ | U+2164 (ROMAN NUMERAL FIVE) |
81B4 | G007 | Ⅵ | U+2165 (ROMAN NUMERAL SIX) |
81B5 | G008 | Ⅶ | U+2166 (ROMAN NUMERAL SEVEN) |
81B6 | G009 | Ⅷ | U+2167 (ROMAN NUMERAL EIGHT) |
81B7 | G010 | Ⅸ | U+2168 (ROMAN NUMERAL NINE) |
81B8 | G011 | Ⅹ | U+2169 (ROMAN NUMERAL TEN) |
81B9 | G012 | g(グラム) | (不明) |
81BA | G013 | m(メートル) | (不明) |
81BB | G014 | ㎝ | U+339D (SQUARE CM) |
81BC | G015 | ㎜ | U+339C (SQUARE MM) |
81BD | G016 | ㎞ | U+339E (SQUARE KM) |
81BE | G017 | ㎠ | U+33A0 (SQUARE CM SQUARED) |
81BF | G018 | ㎡ | U+33A1 (SQUARE M SQUARED) |
81C0 | G019 | ㎖ | U+3396 (SQUARE ML) |
81C1 | G020 | ㎎ | U+338E (SQUARE MG) |
81C2 | G021 | ㎏ | U+338F (SQUARE KG) |
81C3 | G022 | ㎲ | U+33B2 (SQUARE MU S) |
81C4 | G023 | ㈹ | U+3239 (PARENTHESIZED IDEOGRAPH REPRESENT) |
81C5 | G024 | ㏍ | U+33CD (SQUARE KK) |
81C6 | G025 | ℡ | U+2121 (TELEPHONE SIGN) |
81C7 | G026 | № | U+2116 (NUMERO SIGN) |
81C8 | G027 | ㌅ | U+3305 (SQUARE INTI) |
81C9 | G028 | 空白(カテゴリ不明) | (不明) |
81CA | G029 | ㌘ | U+3318 (SQUARE GURAMU) |
81CB | G030 | ㍍ | U+334D (SQUARE MEETORU) |
81CC | G031 | ㌢ | U+3322 (SQUARE SENTI) |
81CD | G032 | ㍉ | U+3349 (SQUARE MIRI) |
81CE | G033 | ㌶ | U+3336 (SQUARE HEKUTAARU) |
81CF | G034 | ㌃ | U+3303 (SQUARE AARU) |
81D0 | G035 | ㌦ | U+3326 (SQUARE DORU) |
81D1 | G036 | ㌧ | U+3327 (SQUARE TON) |
81D2 | G037 | ㌔ | U+3314 (SQUARE KIRO) |
81D3 | G038 | ㌕ | U+3315 (SQUARE KIROGURAMU) |
81D4 | G039 | ㌗ | U+3317 (SQUARE KIROWATTO) |
81D5 | G040 | ㍗ | U+3357 (SQUARE WATTO) |
81D6 | G041 | ㍑ | U+3351 (SQUARE RITTORU) |
81D7 | G042 | ㌫ | U+332B (SQUARE PAASENTO) |
81D8 | G043 | ㌻ | U+333B (SQUARE PEEZI) |
81D9 | G044 | ㍎ | U+334E (SQUARE YAADO) |
81DA | G045 | ㌳ | U+3333 (SQUARE HUIITO) |
81DB | G046 | ① | U+2460 (CIRCLED DIGIT ONE) |
81DC | G047 | ② | U+2461 (CIRCLED DIGIT TWO) |
81DD | G048 | ③ | U+2462 (CIRCLED DIGIT THREE) |
81DE | G049 | ④ | U+2463 (CIRCLED DIGIT FOUR) |
81DF | G050 | ⑤ | U+2464 (CIRCLED DIGIT FIVE) |
81E0 | G051 | ⑥ | U+2465 (CIRCLED DIGIT SIX) |
81E1 | G052 | ⑦ | U+2466 (CIRCLED DIGIT SEVEN) |
81E2 | G053 | ⑧ | U+2467 (CIRCLED DIGIT EIGHT) |
81E3 | G054 | ⑨ | U+2468 (CIRCLED DIGIT NINE) |
81E4 | G055 | ⑩ | U+2469 (CIRCLED NUMBER TEN) |
81E5 | G056 | 〚 | U+301A (LEFT WHITE SQUARE BRACKET) |
81E6 | G057 | 〛 | U+301B (RIGHT WHITE SQUARE BRACKET) |
81E7 | G058 | 〠 | U+3020 (POSTAL MARK FACE) |
81E8 | G059 | ☎ | U+260E (BLACK TELEPHONE) |
81E9 | G060 | 「🗀」のような記号(数学記号?) | (不明) |
81EA | G061 | ∫ | U+222B (INTEGRAL) |
81EB | G062 | √ | U+221A (SQUARE ROOT) |
81EC | G063 | 「√」(ルート記号)の右隣に付随する横棒(数学記号?) | (不明) |
81ED | G064 | 縦展開の箱の上半分 | (不明) |
81EE | G065 | 縦展開の箱の中間部分 | (不明) |
81EF | G066 | 縦展開の箱の下半分 | (不明) |
81F0 | G067 | 円の上半分(U+25E0「◠」はなんか違う気がする) | (不明) |
81F1 | G068 | 円の下半分(U+25E1「◡」はなんか違う気がする) | (不明) |
81F2 | G069 | 横展開の箱の左半分 | (不明) |
81F3 | G070 | 横展開の箱の中間部分 | (不明) |
81F4 | G071 | 横展開の箱の右半分 | (不明) |
81F5 | G072 | 円の左半分 | (不明) |
81F6 | G073 | 円の右半分 | (不明) |
81F7 | G074 | ○の中にCR1 | (不明) |
81F8 | G075 | ○の中にCR2 | (不明) |
81F9 | G076 | ○の中に禁 | (不明) |
81FA | G077 | ○の中に均 | (不明) |
81FB | G078 | ○の中に↑ | (不明) |
81FC | G079 | ○の中に↓ | (不明) |
8240 | G080 | 三角付き縦線素片 | (不明) |
8241 | G081 | ◂ | U+25C2 (BLACK LEFT-POINTING SMALL TRIANGLE) |
8242 | G082 | ╌ | U+254C (BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL) |
8243 | G083 | ╍ | U+254D (BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL) |
8244 | G084 | 中黒(カテゴリ不明) | (不明) |
8245 | G085 | ╎ | U+254E (BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL) |
8246 | G086 | ⇨ | U+21E8 (RIGHTWARDS WHITE ARROW) |
82F2 | G087 | 斜線1 | (不明) |
82F3 | G088 | 斜線2 | (不明) |
82F4 | G089 | 点線縦 | (不明) |
82F5 | G090 | 点線横 | (不明) |
82F6 | G091 | 点線水玉 | (不明) |
83B7 | G092 | ⿰ | U+2FF0 (IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT) |
83DD | G093 | 網目 | (不明) |