问题描述
我正在尝试在 puppeteer 中渲染乳胶公式字符串,问题是,在 docker 中运行时,汉字渲染不好,字母间距太小
正确的结果应该是(我在本地开发环境中得到的,没有 docker)
我的 Dockerfile:
FROM node:lts-alpine
RUN apk --no-cache upgrade && apk add --no-cache chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont
ENV CHROME_BIN="/usr/bin/chromium-browser"\
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true" \
UPLOAD_ENV="test"
workdir /app
copY package.json .
copY .npmrc .
RUN npm install
copY . .
EXPOSE 9999
CMD [ "npm","run","dev" ]
我的 puppeteer 启动代码:
const browser = await puppeteer.launch({
headless: true,executablePath: process.env.CHROME_BIN || undefined,args: [
'--no-sandBox','--disable-setuid-sandBox','--disable-dev-shm-usage','--disable-accelerated-2d-canvas','--no-first-run','--no-zygote','--single-process','--disable-gpu','--font-render-hinting=none'
]
});
解决方法
安装一些额外的字体后,问题解决了。
使用以下代码更新 Dockerfile
RUN echo @edge http://nl.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories
RUN apk --no-cache upgrade && apk add --no-cache \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
wqy-zenhei@edge