05.CoreInkで日本語表示2
5.CoreInkで日本語表示2
18~30ドットのフォントを探しました。LovyanGFXライブラリ, lgfxJapanフォント, efontJAフォントについて
インストール
Arduino IDE > ツール > ライブラリを管理 > 「LovyanGFX」を検索 > 「LovyanGFX by lovyan03」をインストール(Ver0.3.8でした) > 閉じるサンプル
Arduino IDE > ファイル > スケッチ例 > LovyanGFX >- Advanced > ・・・
- Game > ・・・
- HowToUse > 3_font
- Sprite > ・・・
- Standard > ・・・
- Test > ・・・
らびやんさん開発の画面描画ライブラリLovyanGFXがGitHubにてオープンソースソフトとして公開しています。
lovyan03 > LovyanGFX
https://github.com/lovyan03/LovyanGFX
対応ディスプレイ
- ILI9342 (M5Stack, M5Stack Core2)
- GDEW0154M09 (M5Stack CoreInk)
- IT8951 (M5Paper)
- ST7735 (M5StickC)
- ST7789 (M5StickCPlus) など
M5Stack.hと共存させる方法
M5Stackライブラリと共存するのにM5Displayの定義が重なるため#include <M5Stack.h> より後に
#include <LovyanGFX.hpp> を書く。
M5.Lcdは使わずに、LGFXのインスタンスを用意して使用。
以下のフォントはLovyanGFXにプリセットされています。
lgfxJapanフォント
フォントlgfxJapan[A]_[B]にて書体とサイズを指定- [A]:Mincho(明朝),
MinchoP(英数がプロポーショナルな明朝),
Gothic(ゴシック),
GothicP(英数がプロポーショナルなゴシック)
の4書体 - [B]:(8,12,16),20,24,28,(32,36,40)の9サイズ
例) 日本語ゴシックで20ドットは、lgfxJapanGothic_20
lgfxJapanGothic_20, lgfxJapanGothic_24, lgfxJapanGothic_28の表示例
* いろいろなサイズがあるが、かすれ、にじみがある。
efontJA_24フォント
フォント efont[A]_[B][C] にて言語、サイズ、装飾を指定- [A]:JA(日本語),
CN(中国語簡体字),
TW(中国語繁体字),
KR(韓国語)の4種類 - [B]:10,12,14,16,24の5サイズ
- [C]:無し(標準), _i(イタリック), _b(太字), _biの4装飾
例) 日本語、24ドット、標準は、efontJA_24
efontJA_16の表示例 (文字の高さは約2mm)
efontJA_16_bの表示例
efontJA_24の表示例 (文字の高さは約3mm)
efontJA_24_bの表示例 これが良さそう。
* フォントを2つ入れるとメモリーオーバーになる。
(参考)M5Stack CoreInkの使い方 その2 日本語フォントや描画拡張(2020/12/20)
https://lang-ship.com/blog/work/m5stack-coreink-2-font/
スケッチ
#include "M5CoreInk.h"
//#include <efontEnableAll.h> // フォント 全て
#include <efontEnableJaMini.h> // フォント 日本語ミニ
#include <efontFontData.h> // efontのフォントデータ
#include <LovyanGFX.hpp> // 描画ライブラリ
Ink_Sprite inkPageSprite(&M5.M5Ink); //
static LGFX_Sprite sprite; // 定義
// 1画面表示関数
void pushSprite(Ink_Sprite *coreinkSprite, LGFX_Sprite *lgfxSprite) {
coreinkSprite->clear(); //
for (int y = 0; y < 200; y++) { // 縦方向0-199
for (int x = 0; x < 200; x++) { // 横方向0-199
uint16_t c = lgfxSprite->readPixel(x, y); //
if (c == 0x0000) { //
coreinkSprite->drawPix(x, y, 0); //
}
}
}
coreinkSprite->pushSprite(); // アロー演算子
}
void setup() {
M5.begin(); // E-Ink,RTC,I2C,スピーカーを初期化
M5.M5Ink.isInit(); // 初期化し、
M5.M5Ink.clear(); // 呼び出す
inkPageSprite.creatSprite(0, 0, 200, 200, false);
// 画像領域を作成し、画面ドライバーから画像データバフを取得しない
sprite.setColorDepth(2); // 2ビットパレットモードに設定
sprite.createPalette(); // パレットモードにする?
sprite.createSprite(200, 200); // 200x200でスプライトを作成
sprite.clear(TFT_WHITE); // 全体の背景色を白
//sprite.setFont(&fonts::efontJA_16); // efont日本語16ドット
sprite.setTextColor(TFT_BLACK, TFT_WHITE); // (文字色,背景色)
//sprite.print("efontJA_16快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷\n");
//sprite.setFont(&fonts::efontJA_24); // efont日本語24ドット
//sprite.print("efontJA_24快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷\n");
//sprite.setFont(&fonts::efontJA_16_b); // efont日本語16ドット太字
//sprite.print("efontJA_16_b快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷\n");
sprite.setFont(&fonts::efontJA_24_b); // efont日本語24ドット太字
//sprite.print("efontJA_24_b快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷\n");
sprite.print("efontJA_24_b快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷,快晴,晴れ,薄曇り,曇り,煙霧,砂じん嵐,地ふぶき,霧,霧雨,雨,みぞれ,雪,あられ,ひょう,雷\n");
pushSprite(&inkPageSprite, &sprite); // 1画面表示関数へ
}
void loop() {
delay(1); // 1mS待つ
}