Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ。自作ソフトの配布などは公式サイトへ→ https://gigamix.jp/

MSX共通・漢字ROMの「非漢字部分」のフリーフォント

 MSXの漢字ROMに含まれている「JISの規格外だがMSXの各機種で共通っぽい非漢字部分の文字群」について、旧JISレベルな実機側との互換性をいまさら取るために手描きをしたライセンスフリーフォントです。

 なんという後ろ向きなソリューション!

MSX共通・漢字ROMの「非漢字部分」とは

 MSXの漢字ROMは旧JIS(JIS C 6226、いわゆる78JIS)ベースですが、主に非漢字部分であるシフトJISコード 81ADh~859Eh には、旧JISでは未定義なのに独自に実装された文字および新JIS(いわゆる83JIS)とは違う独自に実装された文字が含まれています。

https://p.gigamix.jp/devmsx/cg/kanjirom_non-kanji_large.png

 この漢字部分は東芝ワープロRupoシリーズと互換性があるものの、MSXにおいてはメーカー・機種問わず共通の字形で揃えられており、MSX以外のPCでは採用実績が見当たらないため、MSXにおける事実上の規格化された文字群(いわゆる機種依存文字)である可能性が高いことが分かっています。

 漢字ROMの調査結果については、以下のブログ記事をご参照ください。 gigamix.hatenablog.com

 この「MSX共通の非漢字部分」はUnicodeで代用できない文字も含まれていることから、いま新規でMSX用漢字フォントデータを作成する際に他のライセンスフリーフォントから移植して再現することができません。そこで、この文字群のライセンスフリーフォントを整備することとしました。

16px角のライセンスフリーフォント

 A to Cさん作のライセンスフリーフォントデータ「漢字ROM image file for msx emulaters」に、MSX共通の非漢字部分データが含まれています。

「漢字ROM image file for msx emulaters」は、A to CさんのWebページでダウンロード可能です。→ http://www.yo.rim.or.jp/~anaka/AtoC/labo/labo32.htm

jiskan16のデータを流用して再構成

 このデータに含まれる16pxフォントの基は、フリーフォント「jiskan16(jiskan16.bdf)」です。jiskan16の全角文字部分はパブリックドメインにつき自由に使用することができます。一方、jiskan16の半角文字部分は著作者がソニー社のため再配布時に著作権表示とライセンス条項の添付が必要となっている、ようです。

↓ jiskanについてはこちら ↓ ja.wikipedia.org

 1980年代・90年代当時はパソコンに限らずコンピュータ制御による日本語表示環境が芳しくなかったため、電子機器、インジケータ、電光掲示板、鉄道の行先表示機や発車標、プリンタなど多くの用途でjiskanシリーズが採用されました。

 jiskan16の全角文字の一部はMSXの漢字ROMと互換性がないこともあり、「漢字ROM image file for msx emulaters」ではjiskan16の半角文字と全角文字の非漢字部分を作者による手描きフォントへ差し替えられています。そして2021年5月26日、「漢字ROM image file for msx emulaters」がApache License 2.0の適用となりました。

あの頃は無料のものにライセンスを明示するなんて発想がなかった…。 > jiskan16はパブリックドメインですが手描きの追加部分はライセンスが明示されていません 今更ですが、Apache License 2.0ということにします。@nf_ban — LD A,'akayaman';RRCA (@akayaman) 2021年5月26日

16px角ライセンスフリーフォントを使って本物の漢字ROMを作れる「漢字FlashROM」

 当ブログで紹介した「漢字ROM image file for msx emulaters」をFlashROMへ書き込むと漢字ROMカートリッジとして使えるすごい同人ハードウェアが発売になりました!

【新入荷】にがHP様謹製「SG-MK3 OPLL増設基板」「似非SGROM」「漢字FlashROM(ケース入り)」「漢字FlashROM(基板のみ)」新入荷です!ヽ(´ー`)ノ これぞ同人ハードな感じですな!ヽ(´ー`)ノ 通販はこちら!https://www.kadenken.com/view/category/ct142 #akiba #アキバのお店 #MSX pic.twitter.com/JZ1GYxGpvy — 家電のHRDちゃん X ヽ(´ー`)ノエックス (@zan2zanjp) 2021年9月25日

 メーカーの「にがHP」さんはこちら。

niga2.sytes.net

12px角のライセンスフリーフォント

 12pxの全角非漢字部分のフォントは、けっきょく自分で描きました。なんという本末転倒!!

https://p.gigamix.jp/devmsx/cg/kanjirom_non-kanji_freefont_20210622.png

 一旦この内容でFIXとさせていただきます。私のデータもライセンスは Apache Licence 2.0 を適用します。どうぞご利用ください。

MSXの漢字ROM 非漢字領域の各社共通部分フリーフォント(12px, ver.4) ○○グラムと○○メートルの表記を現在の国際ルール(筆記体を用いない)に変更、グラムを「めがねg」へ変更&メートルの筆記体っぽさを少し残したのは、全角文字の「g」「m」と区別するため。 pic.twitter.com/iLdkrhPpYf — Takashi Kobayashi (@nf_ban) 2021年6月20日

フォント解説

 非漢字部分はの文字は番号0(G000)から93(G093)まで、全94文字あります。ここでは便宜上「Gコード」と呼びます。

https://p.gigamix.jp/devmsx/cg/kanjirom_non-kanji_freefont_20210622_2.png

 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 網目 (不明)