Dockerで日本語フォントを使えるようにする方法

IT・プログラミング

Docker環境で日本語フォントを設定する方法

Dockerを利用する際、日本語の文字化けやフォントが正しく表示されない問題が発生することがあります。特に、WebアプリケーションやPDF生成などで日本語を扱う場合には、日本語フォントの設定が必要です。ここでは、IPAexフォントをDockerコンテナにインストールし、日本語表示を可能にする方法を説明します。

今回は、

  • オンライン上で公開されているフォントデータをダウンロードして使う方法
  • WindowsPC内のフォントをコピーして使う方法

の2つを紹介します。

オンライン上で公開されているフォントデータをダウンロードして使う方法

日本語フォントのダウンロードとインストール

IPAexフォントを公式サイトからダウンロードし、インストールします。以下のコードをDockerfileに追加することで、フォントをインストールできます。

"https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip"のURLは使いたいフォントに応じて変更してください。

RUN curl -L "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" -o font.zip && \
    unzip font.zip && \
    mkdir -p /usr/share/fonts/truetype/ipaex && \
    cp IPAexfont00401/*.ttf /usr/share/fonts/truetype/ipaex/ && \
    rm -rf IPAexfont00401 font.zip

このコードは、IPAexフォントをダウンロードし、解凍して、適切なディレクトリにコピーする一連のプロセスを自動化します。
最後に、不要になったZIPファイルと解凍ディレクトリを削除して、コンテナのサイズを最小限に抑えています。

WindowsPC内のフォントをコピーして使う方法

次にWindowsPCにあるフォントを使えるようにする場合のやり方を説明します。

Meiryoフォントの準備と配置

まず、は使いたいフォントのファイルをDockerfileと同じディレクトリにコピーしてきます。
例えば、Meiryoフォント(meiryo.ttc)を用意します。
Windowsのフォントファイルは、C:¥Windows¥Fontsに保存されています。
取得後、以下のコードをDockerfileに追加して、フォントをDockerコンテナにコピーします。

COPY meiryo.ttc /usr/share/fonts/truetype/meiryo/meiryo.ttc

このコードは、ホストマシンからMeiryoフォントをDockerコンテナの指定ディレクトリにコピーする操作を行います。これにより、コンテナ内のアプリケーションでMeiryoフォントを利用可能になります。

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

フォントを配置した後、フォントキャッシュを更新して新しいフォントを認識させる必要があります。以下のコマンドを実行してキャッシュを更新します。Dockerfileに以下を追記します。

RUN fc-cache -fv

このコマンドにより、Dockerコンテナ内で使用可能なすべてのフォントが再スキャンされ、Meiryoフォントがシステムに認識されるようになります。

Dockerfileの例

例えば、次のようなDockerfileになります。

# .devcontainer/Dockerfile
FROM python:3.12-slim

# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    git \
    curl \
    unzip \
    fontconfig \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# フォントのダウンロードとインストール
RUN curl -L "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" -o font.zip && \
    unzip font.zip && \
    mkdir -p /usr/share/fonts/truetype/ipaex && \
    cp IPAexfont00401/*.ttf /usr/share/fonts/truetype/ipaex/ && \
    rm -rf IPAexfont00401 font.zip

# Meiryoフォントの配置
COPY meiryo.ttc /usr/share/fonts/truetype/meiryo/meiryo.ttc
# フォントキャッシュの更新
RUN fc-cache -fv

日本語フォントの確認

フォントのインストールが完了したら、日本語が正しく表示されるか確認しましょう。例えば、Pythonや他のプログラムを使って、簡単な日本語テキストをレンダリングし、正しく表示されるか確認することができます。

以下のPythonコードは、Pillowライブラリを使用して、日本語テキストを含む画像を生成し、Meiryoフォントが正しく適用されているかを確認するためのものです。

Pillowライブラリがインストールされていない場合は、以下のコマンドでインストールします。

pip install pillow

次に、以下のコードを使用して、Dockerコンテナ内でMeiryoフォントが適用された画像を生成します。

from PIL import Image, ImageDraw, ImageFont

# 画像サイズと背景色を設定
image = Image.new("RGB", (400, 200), (255, 255, 255))
draw = ImageDraw.Draw(image)

# Meiryoフォントをロード
font_path = "/usr/share/fonts/truetype/meiryo/meiryo.ttc"
font = ImageFont.truetype(font_path, 40)

# 日本語テキストを描画
text = "こんにちは、世界!"
text_position = (50, 80)
text_color = (0, 0, 0)
draw.text(text_position, text, font=font, fill=text_color)

# 画像を保存
image.save("meiryo_font_test.png")

# 生成された画像を表示(Jupyterノートブックなどで使用する場合)
image.show()

このコードは、400×200ピクセルの白い背景画像を生成し、中央に「こんにちは、世界!」という日本語テキストをMeiryoフォントで描画します。生成された画像は、meiryo_font_test.pngとして保存されます。

この画像を確認することで、Meiryoフォントが正しくインストールされ、使用可能であることを確認できます。

まとめ

この手順を実行することで、Dockerコンテナ内で日本語フォントを使用可能にし、日本語文字の表示やレンダリングを正確に行うことができます。Webアプリケーションやドキュメント生成など、日本語が必要なプロジェクトで活用してください。

タイトルとURLをコピーしました