目的 Docker上で任意のフォントを使ってサイトのスクリーンショットを取りたい プラス テストしたい
スクリーンショットをとるまでの記事はあるが、任意のフォントを設定するまでやっている記事は日本語では見当たらなかったので書いてみました。
すべてのソースはこちらにあります https://github.com/frkwy/xvfb_screenshot_on_docker
今回使用するフォントと文章は
女子高生風?の可愛い極細フォント「JKゴシックL」のダウンロード | ふぉんときゅーとがーる
[青空文庫 夏目漱石 吾輩は猫である] (http://www.aozora.gr.jp/cards/000148/card789.html)
を使用させていただきました。
フォントの確認と優先順位の確認
使用したいフォントの優先順位をあげれば解決します。
fc-list
: フォント一覧 ここにない場合はフォントがインストールされてません
今回はFirefoxなので
fc-match -s sarif
とか実行したときに使用したいフォントが一番上にきていればOKなので、
そのためにfont.confを作成していきます。
###Dockerfile
FROM alpine:latest
COPY fonts.conf /root/.config/fontconfig/
# Please override your favorite font file path
COPY JKG-L_3.ttf /root/.local/share/fonts/
RUN apk update && apk add python3 xvfb firefox dbus && rm -rf /var/cache/apk/*
RUN python3 -m ensurepip
RUN pip3 install --upgrade pip selenium xvfbwrapper
RUN fc-cache -fv
CMD ["python3", "/host/example.py"]
###font.conf
上のDockerfileですでにフォントはインストールしてある想定で、
使用したいフォントの優先順位を binding="strong"
で一番上に持ってきます。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<edit name="family" mode="assign" binding="strong">
<string>JKゴシックL</string>
</edit>
</match>
</fontconfig>