ラズパイに日本語フォントをインストールしてmatplotlibで日本語表示させた件 | そう備忘録

ラズパイに日本語フォントをインストールしてmatplotlibで日本語表示させた件

ラズパイで日本語フォント

RaspberryPiに日本語フォントをインストールした時の備忘録。

RaspberryPiのOS(Raspbian)の初期設定時にJapanを選択すれば日本語が表示されるので普通にラズパイを使っているだけなら日本語フォントを追加でインストールする必要性はあまり無い。

しかしデフォルトのフォントは中華フォント(中国語圏で使用されている漢字のフォント)なので漢字によっては正しい日本の漢字の形状で表示されない。

例えば”直”や”様”の文字はデフォルトのままだと似てはいるのだが微妙に違う。

直や様が正しく表示されない

ラズパイ上の Python の matplotlib(グラフ描画用のライブラリー)で日本語のグラフを作成したかったので以下の2種類の日本語フォントをインストールしてみた。

  • Noto Sans CJK jp
  • IPAフォント

結局、後者のIPAフォントを使用する事にしたのだがNoto Sans CJK jpフォントのインストールについても記事にしておく。

環境

日本語フォントをインストールした環境は以下の通り。

OS

Raspberry Pi OS(32-bit)Released 2021-01-11

本体

Raspberry Pi 4B

フォントのインストール

Noto Sans CJK jp

Noto Sans CJK jpはGoogleとAdobeが共同で開発したフォント。

Notoはノー・豆腐の略で、コンピューターで表示されない文字の時に豆腐のような四角い記号(通称豆腐)が表示されてしまう事を防ぐ目的で開発されたフォントでNoto(ノー豆腐)となっている。

豆腐の表示

Sansはゴシック体、serifは明朝体に相当する。

CJKはChinese(中国)、Japan(日本)、Korea(韓国)を表している。

ダウンロード

以下のコマンドで作業用ディレクトリに移動してフォントをダウンロードする。

cd ~/Downloads/
wget -O NotoSansCJKjp-hinted.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip

-O ファイル名

ログをファイルに出力する

Noto Sans CJK jpフォントをダウンロード

解凍する

以下のコマンドで解凍する。

unzip -d NotoSansCJKjp-hinted NotoSansCJKjp-hinted.zip

-d ディレクトリ

指定したディレクトに解凍する

解凍する

新規ディレクトリ作成

新規にフォント用のディレクトリを作成してファイルを移動させる。

sudo mkdir -p /usr/share/fonts/opentype
sudo mv -fv ./NotoSansCJKjp-hinted /usr/share/fonts/opentype/note

mkdir -p

必要に応じて親ディレクトリも作成する

mv -f

移動先に同名ファイルがあっても上書きで移動する

mv -v

ログ(経過)を表示する

ファイル類を移動させる

zipを削除

不要になったzipファイルを削除する。

rm -rfv NotoSansCJKjp-hinted.zip

-r

ディレクトリ(今回はファイルだが)を再帰的(サブディレクトリも含めて)削除する

-f

ファイルを削除する前に問い合わせない

-v

ログ(経過)を表示する

不要になったzipファイルを削除する

フォントキャッシュを更新

以下のコマンドでフォントキャッシュを更新してラズパイを再起動する。

sudo fc-cache -fv

-f

キャッシュファイルを全て更新する

-v

ログ(経過)を表示する

フォントキャッシュを更新

フォントの設定

再起動後はNoto Sans CJK JPフォントがテキストエディターなどで選択できるようになっていて”直”や”様”が正しく表示される。

Noto Sans CJK JPフォントが選択できて直などの文字が正しく表示されている

IPAフォントをインストール

IPAフォントは独立行政法人情報処理推進機構(情報処理技術者試験や未踏プロジェクト)によって配布されているフォントで以下の書体がある。

  • IPA明朝
  • IPA P明朝(プロポーショナルフォント)
  • IPAゴシック
  • IPA Pゴシック(プロポーショナルフォント)

IPAフォントは以下のコマンドでインストールができる。

sudo apt install fonts-ipaexfont
IPAフォントのインストール

matplotlibで日本語のフォント

インストールした日本語フォントをPythonのmatplotlibに設定して日本語のグラフを表示できるようにする。

設定ファイル

matplotlibの設定ファイルの場所を以下のコマンドで探す。

python
import matplotlib
matplotlib.matplotlib_fname()

/etc/matplotlibrc に設定ファイルがあることが分かる。

matplotlibの設定ファイルんの場所を探す

以下のコマンドで設定ファイルを編集する(エディターは何でも良い)。

sudo vi /etc/matplotlibrc
  • font.family : IPAexGothic
  • font.sans-serif : IPAexGothic, …

font.familyにIPAexGothicを指定してfont.sans-serifの先頭にIPAexGothicを追加する。

IPAゴシックフォントの指定

キャッシュのクリア

以下のコマンドでキャッシュファイルをクリア(削除)する。

このファイルは削除しても最初に使用する時に再作成されるので消しても問題ない。

cd ~/.cache/matplotlib/
rm fontlist-v300.json
キャッシュファイルの削除

尚、以下のコマンドでキャッシュファイルをクリアすると記述されている記事もあったが自分の環境ではAttributeError: module ‘matplotlib’ has no attribute ‘font_manager’ でエラーになってしまった。

python
import matplotlib
matplotlib.font_manager._rebuild()

またsudo python xxxx.pyとrootでpythonプログラムを実行した際のmatplotlibのフォントのキャッシュは/root/配下に作成されていたので以下のコマンドで削除した。

sudo rm /root/.cache/matplotlib/fontlist-v300.json

フォントの比較

IPAフォントとNoto Sans CJK JPフォントでmatplotlibでグラフを作成した時の比較。

最初はIPA Gothicフォント。

IPAフォント

こちらがNoto Sans CJK JPフォント。

Noto Sans CJK JPフォント

結局自分のプログラムではIPAexGothicにしたのだが、どちらのフォントでも正しい漢字が表示された。

以上で今回の記事は終了とする。

最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

4件のフィードバック

  1. むらやま より:

    はじめまして!楽しく記事を見せてもらっています。

    質問なのですが記事通りに行なっているのですが「cd ~/.cache/matplotlib/」のmatplotlibはどこで入れましたか?自分の場合は入っておらず、前に進めない状態です。ご教授願います!

    • souichirou より:

      むらやま さん
      コメントありがとうございます。
      matplotlib ですが、

      pip install matplotlib

      でインストールしたと記憶しています。

      sudo apt install python3-matplotlib

      でもいけると思います。
      pipはpythonで用意されているパッケージ管理ツールです。
      aptはUbuntuで用意されているソフトウェアの管理ツールです。ラズパイのOSはubuntuベースなのでubuntuのツールが使えます

      • むらやま より:

        返信ありがとうございます!
        matplotlibをインストールすることができました。ありがとうございます。

        只今、キャッシュのクリアで悩んでおり、ご教授願いたいです。

        「cd ~/.cache/matplotlib/」
        とコマンドを入力すると
        「bash: cd: /home/pi/.cache/matplotlib/: そのようなファイルやディレクトリはありません」と返されます。
        matplotlibはインストール済なのに何故そういった結果になるのでしょうか?

        そして
        「rm fontlist-v300.json」
        と入力すると
        「rm: ‘fontlist-v300.json’ を削除できません: そのようなファイルやディレクトリはありません」となります。

        自身でも調べましたが、解決に至らずコメントさせていただきました。

        • souichirou より:

          念のための確認ですが、キャッシュは一度、実行すると作成されるのですが、一度は実行したのですよね?
          一度は実行している前提ですが、rootで実行すると/root/の配下にキャッシュが保存されるので以下のコマンドを試してみて下さい。

          sudo rm /root/.cache/matplotlib/fontlist-v300.json

          それでも見つからないのであれば以下のコマンドでfontlist-v300.jsonの保存場所を検索してみて下さい

          sudo find / -name fontlist-v300.json

souichirou へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。