4.1 文字詰め(プロポーショナル化)
英文フォントは一般的に文字によって横幅が違っています。日本語の等幅フォントのように横幅が一定のようにデザインされていません。
DMシステム2では文字の横幅イコール「次の文字への移動量」と定められている為、常に一定の文字間隔で表示されます(等幅化)。日本語ならこれでも必要十分なのですが、英文フォントのデザインと文字の組み合わせによっては文字間に異様な広さの空間ができてしまう場合があります。
そんなときはDMシステム2の「文字詰め機能」を用いることで、文字の空間を詰める(プロポーショナル化)ことができます。文字詰めを行うと英文での表示がガラッと変わり、エレガントな英文表示を行うことができます。
文字詰めの有効化は、CALL KINITの設定値に「16」を加えた数値で指定します。
CALL KINIT(設定項目+16)
※設定項目については CALL KINIT の説明もご参照ください。
ex.)
_KINIT(16+2) ← 文字詰め(+16)と影(+2)を併用する
_KINIT(18) ← 同様
※横幅が一定のような英文フォントでは文字詰めは不向きかもしれません。
4.2 文字間(カーニング)
文字詰めを利用するとものによっては逆に「詰め過ぎ」になる場合があります。そこで次の文字への移動量を微調整する「文字間(カーニング)」を変えることで整形することができます。
文字間の有効化は、CALL KSIZEの第3パラメータに数値で指定します。
CALL KSIZE(横幅, 縦幅 ,文字間)
ex.)
_KSIZE(12,12,2) ← 文字サイズを12×12、文字間を2ドットに設定
※CALL KSIZE の説明もご参照ください。
文字詰めと文字間の調整が美しい英文表示へのカギとなります。
4.3 8×8フォントの作成方法・リサイクル
拡張フォントドライバで利用できるフォントデータは、当クラブが用意したもの以外に、自分で作ることもできます。
8ドットフォントのデータ構造は、1文字8バイトの羅列です。つまり、MSXのパターンネームテーブルで定義するフォントデータが(ほぼ)そのまま利用できます。8ドットフォントは各種キャラクタエディタで作成したデータはもちろん、MSX・FAN(Mファン)の「ファンダム」などで馴染みがありますし、パソコン通信ネットでも様々なフォントデータが公開されました。

例えば、こんな感じで
それらのフォントをDMシステム2の装飾機能を織り交ぜて画面に表示させることができます。装飾がかかるだけで見た目は随分と変わるものです、ぜひお試しください。
MSX用8ドットフォントデータは一般的に、MSXのパターンジェネレータ・テーブルの領域をそのまま保存した256文字分データ(計2048バイト)で構成されています。ただしDMシステム2ではフォントの先頭アドレスが20h(半角スペース)用のデータで無ければなりません。パターンジェネレータ・テーブルの内容そのままで用いるとコントロールコード部分のデザインデータが含まれることで正常に文字表示できませんので、工夫が必要です。
8ドットフォントデータの作成方法について、詳しくは当サイトのブログをご覧ください。
念のためお伝えしておくと、MSX用8ドットフォントデータのうち先頭32キャラ分(計256バイト)が不要なので、DMシステム2として必要とする8ドットフォントのデータ量は、最大1792バイトです。さらに、BSAVEヘッダが付いているフォントデータファイルはBSAVEヘッダそのもの(計7バイト)も不要です。BSAVEヘッダの付いたフォントデータをBLOAD命令で配置するならBSAVEヘッダの内容が自動的に除外されるので問題は無いのですが、DMシステム2のCALL LOAD命令を用いてデータを配置する場合は何もケアしないとBSAVEヘッダそのものも含めて配置してしまうので注意が必要です。
各種ツールや各種プログラムで生成されたMSX用フォントデータファイルのBSAVEヘッダの有無については法則性がありません。各種フォントデータファイルのBSAVEヘッダの有無についてはよく確認したうえで本機能をご利用ください。
BSAVEヘッダについて、詳しくは当サイトのブログをご覧ください。
既存のMSX用8ドットフォントデータをDMシステム2で再利用する際、いずれかの対処法を参考にしてください。
1) フォントデータの20h未満のデータを省いてメモリへ配置する。
コントロールコードに割り当てられている32キャラ分(256バイト)を読み飛ばす方法。CALL LOADの「オフセット指定」を利用します。
ex.)
_LOAD("a.fnt",&H3000,,256) ← 256バイト読み飛ばして配置
_LOAD("a.fnt",&H3000,,7+256) ← BSAVE形式データファイルなら更に7バイト読み飛ばす
_LOAD("a.fnt",&H3000,1792,7+256) ← 念のためデータ転送量を1792バイトに固定する(メモリ保護の安全対策)
2) 拡張ドライバ側で読み飛ばすアドレスをパラメータ指定する。
フォントデータはそのままメモリへ配置して、拡張ドライバの宣言時にコントロールコードを飛ばしたアドレスで指定する方法。
ex.)
_CALL(&HC000,0,&H3000+256) ← RAMの3000hに配置し、256バイト先を指定する
_CALL(&HC000,0,&H3000+256+7) ← BSAVE形式データファイルを_LOADでオフセット指定なしで配置した場合はBSAVEヘッダ(先頭7バイト)も配置されているので、更に7バイト先を指定する
4.4 12×12フォントの作成方法
12×12ドットフォントのデータ構造は、1文字18バイト(2ラインで3バイト格納する手法)の羅列です。フォントの先頭アドレスが20h(半角スペース)用のデータとなり、95文字分のデータ量となります。

例えば、こんな感じで
現状ツールが整備できていないため、当クラブのBASICプログラムによるコンバートで実現しています。とりあえず、12×12ドットのフォントを以下のような形で左寄せに並べ、SCREEN 5のCGファイルを当クラブへ転送していただければ、フォントデータにコンバートしますので、詳しくはご連絡ください。