Skip to content

fix(docker): install fontconfig + ttf-dejavu to silence Sharp/libvips…#23

Merged
simonabler merged 1 commit intomasterfrom
23-fix-fontconfig-alpine
Mar 11, 2026
Merged

fix(docker): install fontconfig + ttf-dejavu to silence Sharp/libvips…#23
simonabler merged 1 commit intomasterfrom
23-fix-fontconfig-alpine

Conversation

@simonabler
Copy link
Copy Markdown
Owner

… warning

node:24-alpine has no Fontconfig installation. When Sharp composites an SVG overlay that contains elements, libvips internally calls into librsvg/Pango to render it. Pango uses Fontconfig to locate system fonts; without a Fontconfig config file the process prints:

Fontconfig error: Cannot load default config file: No such file: (null)

This is non-fatal (the SVG is still rendered with a fallback glyph set) but it floods the container log on every watermark/text request.

Fix: install fontconfig and ttf-dejavu (a standard, complete free font family covering Latin, Greek, Cyrillic, etc.) in the runtime stage, then rebuild the font cache with fc-cache -f so Fontconfig finds the config file.

ttf-dejavu is chosen because:

  • Available in Alpine apk with no extra repos
  • Covers the most common scripts users will embed in watermarks
  • Small (~1 MB compressed)

… warning

node:24-alpine has no Fontconfig installation. When Sharp composites an SVG
overlay that contains <text> elements, libvips internally calls into
librsvg/Pango to render it. Pango uses Fontconfig to locate system fonts;
without a Fontconfig config file the process prints:

  Fontconfig error: Cannot load default config file: No such file: (null)

This is non-fatal (the SVG is still rendered with a fallback glyph set) but
it floods the container log on every watermark/text request.

Fix: install fontconfig and ttf-dejavu (a standard, complete free font family
covering Latin, Greek, Cyrillic, etc.) in the runtime stage, then rebuild
the font cache with fc-cache -f so Fontconfig finds the config file.

ttf-dejavu is chosen because:
  - Available in Alpine apk with no extra repos
  - Covers the most common scripts users will embed in watermarks
  - Small (~1 MB compressed)
@simonabler simonabler merged commit e984111 into master Mar 11, 2026
1 of 2 checks passed
@simonabler simonabler deleted the 23-fix-fontconfig-alpine branch March 11, 2026 17:13
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.

1 participant