Skip to content

国際化

ヘッドレスブラウザはホスト OS / コンテナが提供するフォントに アクセスできます。Docker イメージには Noto Sans CJK を同梱して おり、日本語・中国語・韓国語が豆腐化せず描画されます。

日本語ラベル

japanese-labels

動く仕組み

  • Docker の場合: Dockerfilefonts-noto-cjk をインストール。 Chromium が CJK グリフのフォールバックとして自動的に拾います。
  • ホスト (Docker なし) の場合: OS の設定次第。macOS や最近の Windows なら CJK は問題なく動きます。ミニマルな Linux では apt install fonts-noto-cjk 等で追加が必要。

既定以外のロケールの疎通確認

最速のスモークテスト:

bash
# 日本語
echo '{"type":"bar","data":{"labels":["東京"],"datasets":[{"data":[1]}]}}' \
  | chartjs2img render -o /tmp/ja.png

# 中国語
echo '{"type":"bar","data":{"labels":["北京","上海"],"datasets":[{"data":[1,2]}]}}' \
  | chartjs2img render -o /tmp/zh.png

# 韓国語
echo '{"type":"bar","data":{"labels":["서울","부산"],"datasets":[{"data":[1,2]}]}}' \
  | chartjs2img render -o /tmp/ko.png

どれか豆腐化したら、ホストのフォント設定を確認(あるいは Docker イメージを使用)。

右から左のスクリプト

RTL(アラビア語、ヘブライ語)も正しく描画されます — Chart.js + Chromium がテキストレイアウトをネイティブに処理。句読点や bidi isolate も期待通り。RTL 専用フォントパックは同梱していませんが、 Noto Sans のグリフカバレッジで大抵の環境でそのまま通ります。

特定フォントの強制

Chart.js の options.font.family は全てのテキスト要素にカスケード します。ただし設定したフォントがサーバーにインストールされている 必要があります。chartjs2img はカスタムフォントをプリロードしません — 標準スタックがコンテンツをカバーしない場合、このレイヤーは ユーザーの担当です。

このページを編集Last updated: