国際化
ヘッドレスブラウザはホスト OS / コンテナが提供するフォントに アクセスできます。Docker イメージには Noto Sans CJK を同梱して おり、日本語・中国語・韓国語が豆腐化せず描画されます。
日本語ラベル
動く仕組み
- Docker の場合:
Dockerfileがfonts-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 はカスタムフォントをプリロードしません — 標準スタックがコンテンツをカバーしない場合、このレイヤーは ユーザーの担当です。
