6. 日本語を表示する
(TFT_eSPIを使う)

更新日: 2026.04.17

概要

TFT_eSPIを使って日本語を表示する方法はWebに幾つか有ります。loadFont関数を使用して表示するのが一番簡単と思います。

vlw形式のフォントが必要

TFT_eSPIで表示出来るフォントのフォーマットはvlw形式です。まずはこの形式のフォントを入手する必要が有ります。 Webで検索したところ、”M5Stack の LCD に TFT_eSPI を使って日本語フォント “源真ゴシック” で表示する” を見つけました。ここには既にvlw形式に変換された”源真ゴシック Regular”が有り今回はフォントサイズ 20ptをダウンロードして使う事にしました。

使い方

ダウンロードした”フォントサイズ 20pt; "genshin-regular-20pt.vlw (5.0 MB)” をSDカードに保存。関数を使ってそれを読み込めば後は通常と同じに使えます。以下はサンプルスケッチ

j_font.ino arduino
#include "SPI.h" #include <FS.h> #include <SD_MMC.h> #include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); //------------ SD_MMC 1-wire SD mode ---------------------------- #define mmc_CMD 21 #define mmc_CLK 48 #define mmc_D0 47 #define SDMMC_FREQ 30000 #define MAX_FILE 3 void setup() { Serial.begin(115200); // Initialise the SD_MMC pinMode(mmc_D0, INPUT_PULLUP); SD_MMC.setPins(mmc_CLK, mmc_CMD, mmc_D0); if(!SD_MMC.begin("/sdmmc", true, false, SDMMC_FREQ, MAX_FILE)){ Serial.println("Card Mount Failed"); return; } else Serial.println("SD_MMC initialisation OK"); // Now initialise the TFT tft.begin(); tft.setRotation(1); // 0 & 2 Portrait. 1 & 3 landscape tft.fillScreen(TFT_BLUE); tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_WHITE, TFT_WHITE); Serial.println("\nLoading Font"); tft.loadFont("/genshin-regular-20pt", SD_MMC); // Use font stored on SD tft.drawString("日本語フォントのテストです", 50, 60, 1); tft.drawString("あいうえお", 50, 100, 1); tft.drawString("カキクケコ", 50, 140, 1); tft.drawString("価格が高騰するコメ", 50, 180, 1); } void loop() { // put your main code here, to run repeatedly: }
  • フォントはSDカードのルートに保存しています。
  • 36行:tft.loadFont("/genshin-regular-20pt", SD_MMC);
    • ここでフォントを読み込んでいます。
    • 第一引数:フォントデータファイル名
    • 第二引数:ファイルシステム
  • 実行結果は以下の通り
  • result of japanese font

若干潰れ感は有りますが十分読めます。サイズをこれより小さくすると更に潰れ感が増し 大きくすると表示文字数が減り、20位がちょど良さそうです。

最後に

今回で ”TFT_eSPIを使う” は終了です。当初SDカードを使わなければ配線はいりませんと言いましたが 画像やフォントの表示を考えると絶対必要と思います。このLCDの製造メーカもそれを見越してソケットを付けてくれたと思います。

ここまで見て来てこのライブラリはアプリGUI製作に非常に役立つと思いました。

SINCE 2026