LPCcappuccinoのSDカードの使い道として計画していた日本語フォントの格納と、それを用いた表示作業を時おり進めてきましたが、ようやくと表示できるようになりました。まだまだやっつけ作業なので、これから改善要。
フォントデータはもともとSAM4LでのLCD表示に使っていたものを流用しています。元となっているのはやさしさゴシックフォントです。マイコンにはttfの展開処理は重すぎるので、freetype2を使ってビットマップ展開した独自フォーマットのファイルを作成し、これをSDカードに保存しておきます。上の例では文字の大きさに応じて2種類のビットマップフォントファイルを用意しています。
描画時には、実際に使用しされる文字のビットマップとメトリックデータだけをSDカードから読み込んで、これをEVEにダウンロード、そしてCMD_SETFONTによりユーザ定義フォントとして登録します。現時点ではEVEで使うユーザ定義フォント用のビットマップとするためには、データ読み込み後にさらに加工が必要になってしまっています。また、元データが深さ8ビットであることもあり、EVE上でも深さ8ビットのフォーマット(L8)でダウンロードしています。そのため、RAM_Gの空間をいたずらに消費してしまっています。この例では25kB程度を使用。深さ4ビットに変えれば半分近くに減るはずです。ttfファイルからビットマップデータへの変換ツールを作りなおした方がいいので、そのうちにやろうかとは思っています。
ユーザフォントデータは, RAM_Gの空間にダウンロードするので、画面キャプチャはこの領域を破壊しないようにします。そうすると、全画面をCMD_SNAPSHOTでキャプチャすることはできなくなるので、今回は画面の上半分(480×135)画素分だけをキャプチャしています。
フォントデータはもともとSAM4LでのLCD表示に使っていたものを流用しています。元となっているのはやさしさゴシックフォントです。マイコンにはttfの展開処理は重すぎるので、freetype2を使ってビットマップ展開した独自フォーマットのファイルを作成し、これをSDカードに保存しておきます。上の例では文字の大きさに応じて2種類のビットマップフォントファイルを用意しています。
描画時には、実際に使用しされる文字のビットマップとメトリックデータだけをSDカードから読み込んで、これをEVEにダウンロード、そしてCMD_SETFONTによりユーザ定義フォントとして登録します。現時点ではEVEで使うユーザ定義フォント用のビットマップとするためには、データ読み込み後にさらに加工が必要になってしまっています。また、元データが深さ8ビットであることもあり、EVE上でも深さ8ビットのフォーマット(L8)でダウンロードしています。そのため、RAM_Gの空間をいたずらに消費してしまっています。この例では25kB程度を使用。深さ4ビットに変えれば半分近くに減るはずです。ttfファイルからビットマップデータへの変換ツールを作りなおした方がいいので、そのうちにやろうかとは思っています。
ユーザフォントデータは, RAM_Gの空間にダウンロードするので、画面キャプチャはこの領域を破壊しないようにします。そうすると、全画面をCMD_SNAPSHOTでキャプチャすることはできなくなるので、今回は画面の上半分(480×135)画素分だけをキャプチャしています。