ラズパイに日本語フォントをインストールしてmatplotlibで日本語表示させた件
Contents
ラズパイで日本語フォント
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 ファイル名 | ログをファイルに出力する |
解凍する
以下のコマンドで解凍する。
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 | ログ(経過)を表示する |
フォントキャッシュを更新
以下のコマンドでフォントキャッシュを更新してラズパイを再起動する。
sudo fc-cache -fv
-f | キャッシュファイルを全て更新する |
-v | ログ(経過)を表示する |
フォントの設定
再起動後はNoto Sans CJK JPフォントがテキストエディターなどで選択できるようになっていて”直”や”様”が正しく表示される。
IPAフォントをインストール
IPAフォントは独立行政法人情報処理推進機構(情報処理技術者試験や未踏プロジェクト)によって配布されているフォントで以下の書体がある。
- IPA明朝
- IPA P明朝(プロポーショナルフォント)
- IPAゴシック
- IPA Pゴシック(プロポーショナルフォント)
IPAフォントは以下のコマンドでインストールができる。
sudo apt install fonts-ipaexfont
matplotlibで日本語のフォント
インストールした日本語フォントをPythonのmatplotlibに設定して日本語のグラフを表示できるようにする。
設定ファイル
matplotlibの設定ファイルの場所を以下のコマンドで探す。
python
import matplotlib
matplotlib.matplotlib_fname()
/etc/matplotlibrc に設定ファイルがあることが分かる。
以下のコマンドで設定ファイルを編集する(エディターは何でも良い)。
sudo vi /etc/matplotlibrc
- font.family : IPAexGothic
- font.sans-serif : IPAexGothic, …
font.familyにIPAexGothicを指定してfont.sans-serifの先頭にIPAexGothicを追加する。
キャッシュのクリア
以下のコマンドでキャッシュファイルをクリア(削除)する。
このファイルは削除しても最初に使用する時に再作成されるので消しても問題ない。
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フォント。
こちらがNoto Sans CJK JPフォント。
結局自分のプログラムではIPAexGothicにしたのだが、どちらのフォントでも正しい漢字が表示された。
以上で今回の記事は終了とする。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
はじめまして!楽しく記事を見せてもらっています。
質問なのですが記事通りに行なっているのですが「cd ~/.cache/matplotlib/」のmatplotlibはどこで入れましたか?自分の場合は入っておらず、前に進めない状態です。ご教授願います!
むらやま さん
コメントありがとうございます。
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’ を削除できません: そのようなファイルやディレクトリはありません」となります。
自身でも調べましたが、解決に至らずコメントさせていただきました。
念のための確認ですが、キャッシュは一度、実行すると作成されるのですが、一度は実行したのですよね?
一度は実行している前提ですが、rootで実行すると/root/の配下にキャッシュが保存されるので以下のコマンドを試してみて下さい。
それでも見つからないのであれば以下のコマンドでfontlist-v300.jsonの保存場所を検索してみて下さい