TWEFONT

フォント定義や描画

namespace TWEFONT には、フォントの定義やフォント描画のための手続きをまとめています。

フォントの生成

フォントはFontDefクラスにより管理されます。フォントごとに用意されるFontDefクラスオブジェクトのジェネレータ関数により生成され、ライブラリ内部で生成時に指定したフォントIDと紐づけて管理されます。フォントは最大7つまで定義できます。フォント作成時に字間・行間・倍角を指定することができます。同じフォントに対して複数のフォントIDの登録が可能です。

下記の例では、フォントID 10 に16ドットの東雲フォント(縦倍角・横倍角指定)を、フォントIDを11に同じフォントですが倍角指定なし、行間を1ピクセルとしたフォント定義を行います。

TWEFONT::createFontShinonome16(10, 0, 0,
        TWEFONT::U32_OPT_FONT_TATEBAI | TWEFONT::U32_OPT_FONT_YOKOBAI);
TWEFONT::createFontShinonome16(11, 1, 0);

コンパイル時に、ジェネレータ関数createFont???()を呼び出されたフォントのデータがリンクされます。

フォントの登録した種類だけROM容量が必要になります。最小限のフォントを選択するようにしてください。

フォントデータについて

本ライブラリには、作者が事実上パブリックドメイン(著作権等取扱はソースヘッダに含まれるクレジットを参照ください)を宣言しているフォントをいくつか含めています。

本ライブラリに含めるにあたって、以下の調整を行っています。

  • 大本がBDF形式を変換し、描画ルーチンに適したデータ構造とした

  • これらフォントをUnicodeとして取り扱うための参照テーブルを用意した

  • latin1補助文字 U+00A0~u+00FFについて、フォント定義があるものについては収録した

  • JIS X201 半角カナ U+FF61~U+FF9F について、フォント定義があるものについては収録した

  • 常用漢字(2645 文字)のフォントデータと、全収録(東雲フォントのみ、一部未収録字形があります)を用意した

日本語フォントのジェネレータ

ジェネレータ関数createFont???()には収録文字数に応じて3種類のジェネレータを用意しています。文字セットの生成は{MWM5ライブラリ}/fontsフォルダにあるスクリプトによって行います。

ジェネレータ

ワイド幅 文字数

収録

createFont???_mini()

576

ASCII, latin1拡張, JIS-X201(半角カナ:0xA1-DF), かな,カナ,記号(選別), 漢字(選別:MWM5ソース中に出現する文字をスクリプトにより抽出・追加), スクリプト指定文字

createFont???_std()

createFont???()

2645

ASCII, latin1拡張, JIS-X201(半角カナ:0xA1-DF), かな,カナ,記号,常用漢字,スクリプト指定文字

createFont???_full()

6867

ASCII, latin1拡張, JIS-X201(半角カナ:0xA1-DF), かな,カナ,記号,漢字,スクリプト指定文字

全収録版(_full)は字形データが多いためより多くのROM容量が必要です。同じフォントサイズのデータで常用版と全収録版の両方を登録する意味はありません。常用漢字版の字形データは全収録版に包含されるためです。

東雲フォント (12,14,16ドット)

12,14,16ドット版をライブラリに含めています。

常用漢字のみのジェネレータ (createFontShinonome12???(), createFontShinonome14???() , createFontShinonome16???())を呼び出します。

MP+フォント (10ドット, 12ドット)

ジェネレータ createFontMP10???()または createFontMP12???() を呼び出します。

8x6 LCD フォント

ジェネレータ createFontLcd8x6() を呼び出します。

latin拡張文字や日本語フォントは含まれません。

このフォントはいずれかのジェネレータ関数createFont???()が呼び出されたときに、デフォルトとしてフォントID=0に登録されます。

フォントIDについて

フォントIDは作成したフォントごとに割り当てられます。

IDは 0..32 の値を指定可能ですが、ユーザが登録できるのは 1..32 で最大7フォント登録できます。

ID=0 のフォントは 8x6 LCD フォントに割り当てられます。

フォント情報の取得

フォント情報にアクセスするためには、queryFont()によりFontDefオブジェクトを取得し、諸情報を得ます。

ターミナルでの使用

ターミナルにフォントを指定するには、フォントの生成を行い、フォントIDをターミナルオブジェクトに指定します。フォント指定後はforce_refresh()メソッドによる再描画を行います。

ターミナルのフォント変更は、set_font()によりフォントを指定し、その後、clear_screen()force_refresh()を呼び出します。

フォントの描画について

drawChar()関数を用いて描画することができます。

最終更新