From cafb66bd93c9ac7871468c99ba4ec685383df64b Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 8 Aug 2017 10:33:26 +0200 Subject: [PATCH] Add fallback font and missing libs for .png generation If Verdana.ttf can't be loaded, the font file pointed by the FALLBACK_FONT_PATH environment variable will be loaded. This fixes width computation errors that can occur with non-latin characters when running with Docker. --- Dockerfile | 6 ++++-- lib/measure-text.js | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 180ec4f066..0d300ab897 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM node:6.9.2-alpine -RUN apk add --update gettext +RUN apk add --no-cache gettext imagemagick librsvg ttf-dejavu +ENV FALLBACK_FONT_PATH /usr/share/fonts/ttf-dejavu/DejaVuSans.ttf RUN mkdir -p /usr/src/app RUN mkdir /usr/src/app/private @@ -9,7 +10,8 @@ WORKDIR /usr/src/app ARG NODE_ENV ENV NODE_ENV $NODE_ENV COPY package.json /usr/src/app/ -RUN npm install +RUN npm install && \ + rm -rf /tmp/npm-* /root/.npm COPY . /usr/src/app CMD envsubst < secret.tpl.json > ./private/secret.json && npm start diff --git a/lib/measure-text.js b/lib/measure-text.js index dac5f75330..80be4a608f 100644 --- a/lib/measure-text.js +++ b/lib/measure-text.js @@ -16,7 +16,11 @@ function loadFont(path, callback) { } } -loadFont(path.join(__dirname, '..', 'Verdana.ttf')); +loadFont(path.join(__dirname, '..', 'Verdana.ttf'), function (err) { + if (err && process.env.FALLBACK_FONT_PATH) { + loadFont(process.env.FALLBACK_FONT_PATH); + } +}); doc = doc.fontSize(11); function measure(str) {