Skip to content

change: replace bundled Noto fonts with an Adobe NotDef tofu fallback#859

Open
u1f992 wants to merge 1 commit into
mainfrom
change/dockerfile-drop-fonts
Open

change: replace bundled Noto fonts with an Adobe NotDef tofu fallback#859
u1f992 wants to merge 1 commit into
mainfrom
change/dockerfile-drop-fonts

Conversation

@u1f992

@u1f992 u1f992 commented Jul 6, 2026

Copy link
Copy Markdown
Member

closes: #832

コンテナイメージへのNotoフォントの同梱をやめ、フォールバックとしてAdobe NotDefを設定するPRです。手元でのビルドでは、イメージサイズは2.52GB→1.72GB(amd64)になります。

(Vivliostyleで本を作ろう Vol.6より) image

補足:Adobe NotDefにはOTF/TTFが用意されており、採用したOTFはPDFにはType 3で埋め込まれます。TTFでは通常ウェイトの場合Type 3を回避しCFF埋め込み、ただし合成ボールドなどを用いるとType 3で埋め込まれます(参考)。Type 3で埋め込まれるかはどちらを選んでも文書次第で、TTFはOTFの10倍近いサイズです。正しくフォントを用意すれば埋め込まれないはずのフォールバックにサイズが増えるほうを用意するのは合理的ではないため、OTFを採用しました。

通常、以下に配置されたフォントが認識されます。

$ docker run --rm --user root --entrypoint sh vivliostyle-cli:adobe-notdef -c 'fc-cache -fv'
Font directories:
        /root/.local/share/fonts
        /usr/local/share/fonts
        /usr/share/fonts
        /root/.fonts
        ...

プロジェクトで使用するフォントを格納したディレクトリをこれらの下にマウントすれば、ビルドに用いることができます。

$ tree fonts-noto/ | head -n 10
fonts-noto/
├── opentype
│   └── noto
│       ├── NotoSansCJK-Black.ttc
│       ├── NotoSansCJK-Bold.ttc
│       ├── NotoSansCJK-DemiLight.ttc
│       ├── NotoSansCJK-Light.ttc
│       ├── NotoSansCJK-Medium.ttc
│       ├── NotoSansCJK-Regular.ttc
│       ├── NotoSansCJK-Thin.ttc
$ docker run --rm --volume .:/data --volume ./fonts-noto:/usr/local/share/fonts/noto:ro vivliostyle-cli:adobe-notdef build
image

@u1f992 u1f992 force-pushed the change/dockerfile-drop-fonts branch from a6601df to 5433f9c Compare July 6, 2026 06:14
@u1f992 u1f992 marked this pull request as ready for review July 6, 2026 06:55
@u1f992 u1f992 requested a review from spring-raining as a code owner July 6, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reconsider the fonts bundled in the Docker image to reduce its size

1 participant