FontDef

フォント定義クラス

フォント定義と関連する手続きをまとめたクラスです。

このクラスオブジェクトはフォントジェネレータcreateFont???()によりライブラリ内部で生成・管理され、ユーザがコンストラクタを用いて直接オブジェクトを生成することはありません。

メソッド(ユーザ利用)

get_width()

uint8_t get_width()
uint8_t get_width(uint16_t wc)

パラメータを省略した場合は、フォントのシングル幅文字の幅を返します。この値にはフォント生成時に指定した文字間スペースも含まれます。

wcを指定した場合は、Unicode wcに対応するフォントの幅を返します。日本語などダブル幅のフォントの場合は、シングル幅の2倍の値が戻ります。

get_height()

uint8_t get_height()

フォントの高さを返します。この値にはフォント生成時に指定した行間スペースも含まれます。

is_default()

bool is_default()

デフォルトフォントのオブジェクトである場合 true を返します。

デフォルトフォントのオブジェクトはcreateFont???()queryFont()のエラー時など例外時にも利用されます。

get_font_code()

uint8_t get_font_code()

フォントIDを取得します。

メソッド(内部利用)

find_font_index()

int find_font_index(uint16_t c)

Unicode c に対応する、ダブル幅フォント定義配列インデックスを検索します。

戻り値は、字形データが存在する場合は、インデックス配列のインデックス(データ配列のインデックスが計算できる)、存在しない場合は-1を返します。

フォント定義は、インデックス配列、データ配列の2つから構成されます。インデックス配列の各値は昇順に並んだ Unicode になっていて、データ配列のインデックスに対応しています。

以下の例ではインデックス配列の IDX=829 が U+5a2f で "娯" という文字です。データ配列の対応する番地を参照すれば、この字形データが格納されています。

// インデックス配列 M+10dotフォント
const uint16_t font_mplus_f10j_idx[FONT_MP10_DBL_CHARS] {
  0x0391, // IDX=0 U+0391
  0x0392, // IDX=1 U+0392
  0x0393, // IDX=2 U+0392
  ...
  0x5a2f, // IDX=892 U+5a2f (娯)
  ...
}

// データ配列
const uint8_t font_mplus_f10j_data[FONT_MP10_DBL_CHARS*FONT_MP10_DATA_ROWS*2] = {
  ...
  0x00,0x00,0x47,0x80,0x54,0x80,0xf7,0x80,0x50,0x00,
   0x5f,0x80,0xa0,0x80,0xff,0x80,0x45,0x00,0x58,0x80, // 3864/u5a2f idx=892
  ...
};

インデックス配列内の値は昇順に並ぶよう構成した目的は、本関数で実装されている二分探索を利用するためです。

最終更新