fonts.config
,使其可以加载 1 中指定目录下的字体文件。XDG_CONFIG_HOME
,指定字体配置文件的加载路径。fonts
,将提前准备好的字体文件放在该目录下。fontconfig
,在该目录下创建字体配置文件fonts.conf
,fonts.conf
内容如下:
注意:第 27 行中的 /var/user/fonts
即为步骤 1 中创建的 fonts 文件夹在 SCF 环境下的路径。<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><!-- /etc/fonts/fonts.conf file to configure system font access --><fontconfig><!--DO NOT EDIT THIS FILE.IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.LOCAL CHANGES BELONG IN 'local.conf'.The intent of this standard configuration file is to be adequate formost environments. If you have a reasonably normal environment andhave found problems with this configuration, they are probablythings that others will also want fixed. Please submit anyproblems to the fontconfig bugzilla system located at fontconfig.orgNote that the normal 'make install' procedure for fontconfig is toreplace any existing fonts.conf file with the new version. Placeany local customizations in local.conf which this file references.Keith Packard--><!-- Font directory list --><dir>/usr/share/fonts</dir><dir>/var/user/fonts</dir><dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/TTF</dir> <dir>/usr/local/share/fonts</dir><dir prefix="xdg">fonts</dir><!-- the following element will be removed in the future --><dir>~/.fonts</dir><!--Accept deprecated 'mono' alias, replacing it with 'monospace'--><match target="pattern"><test qual="any" name="family"><string>mono</string></test><edit name="family" mode="assign" binding="same"><string>monospace</string></edit></match><!--Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'--><match target="pattern"><test qual="any" name="family"><string>sans serif</string></test><edit name="family" mode="assign" binding="same"><string>sans-serif</string></edit></match><!--Accept deprecated 'sans' alias, replacing it with 'sans-serif'--><match target="pattern"><test qual="any" name="family"><string>sans</string></test><edit name="family" mode="assign" binding="same"><string>sans-serif</string></edit></match><!--Load local system customization file--><include ignore_missing="yes">/etc/fonts/conf.d</include><!-- Font cache directory list --><cachedir>/var/cache/fontconfig</cachedir><cachedir prefix="xdg">fontconfig</cachedir><!-- the following element will be removed in the future --><cachedir>~/.fontconfig</cachedir><config><!--These are the default Unicode chars that are expected to be blankin fonts. All other blank chars are assumed to be broken andwon't appear in the resulting charsets--><blank><int>0x0020</int> <!-- SPACE --><int>0x00A0</int> <!-- NO-BREAK SPACE --><int>0x00AD</int> <!-- SOFT HYPHEN --><int>0x034F</int> <!-- COMBINING GRAPHEME JOINER --><int>0x0600</int> <!-- ARABIC NUMBER SIGN --><int>0x0601</int> <!-- ARABIC SIGN SANAH --><int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER --><int>0x0603</int> <!-- ARABIC SIGN SAFHA --><int>0x06DD</int> <!-- ARABIC END OF AYAH --><int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK --><int>0x115F</int> <!-- HANGUL CHOSEONG FILLER --><int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER --><int>0x1680</int> <!-- OGHAM SPACE MARK --><int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ --><int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA --><int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR --><int>0x2000</int> <!-- EN QUAD --><int>0x2001</int> <!-- EM QUAD --><int>0x2002</int> <!-- EN SPACE --><int>0x2003</int> <!-- EM SPACE --><int>0x2004</int> <!-- THREE-PER-EM SPACE --><int>0x2005</int> <!-- FOUR-PER-EM SPACE --><int>0x2006</int> <!-- SIX-PER-EM SPACE --><int>0x2007</int> <!-- FIGURE SPACE --><int>0x2008</int> <!-- PUNCTUATION SPACE --><int>0x2009</int> <!-- THIN SPACE --><int>0x200A</int> <!-- HAIR SPACE --><int>0x200B</int> <!-- ZERO WIDTH SPACE --><int>0x200C</int> <!-- ZERO WIDTH NON-JOINER --><int>0x200D</int> <!-- ZERO WIDTH JOINER --><int>0x200E</int> <!-- LEFT-TO-RIGHT MARK --><int>0x200F</int> <!-- RIGHT-TO-LEFT MARK --><int>0x2028</int> <!-- LINE SEPARATOR --><int>0x2029</int> <!-- PARAGRAPH SEPARATOR --><int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING --><int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING --><int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING --><int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE --><int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE --><int>0x202F</int> <!-- NARROW NO-BREAK SPACE --><int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE --><int>0x2060</int> <!-- WORD JOINER --><int>0x2061</int> <!-- FUNCTION APPLICATION --><int>0x2062</int> <!-- INVISIBLE TIMES --><int>0x2063</int> <!-- INVISIBLE SEPARATOR --><int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING --><int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING --><int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING --><int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING --><int>0x206E</int> <!-- NATIONAL DIGIT SHAPES --><int>0x206F</int> <!-- NOMINAL DIGIT SHAPES --><int>0x2800</int> <!-- BRAILLE PATTERN BLANK --><int>0x3000</int> <!-- IDEOGRAPHIC SPACE --><int>0x3164</int> <!-- HANGUL FILLER --><int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE --><int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER --><int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR --><int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR --><int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR --></blank><!--Rescan configuration every 30 seconds when FcFontSetList is called--><rescan><int>30</int></rescan></config></fontconfig>
├── 函数代码文件(如 index.js、app.js)├── fonts| └── WenQuanZhengHei-1.ttf├── fontconfig| └── fonts.conf
key | value |
XDG_CONFIG_HOME | /var/user |
font-list
库,可以打印出环境中支持的字体。完成上述配置后,可以看到环境中已经成功加载了文泉驿正黑体。var fontList = require('font-list')console.log(await fontList.getFonts()) //打印环境中支持的字体
mypuppeteer.dockerfile
。示例如下:FROM alpine# Installs latest Chromium (92) package.RUN apk add --no-cache \\chromium \\nss \\freetype \\harfbuzz \\ca-certificates \\ttf-freefont \\nodejs \\yarn# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \\PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser# Puppeteer v10.0.0 works with Chromium 92.RUN yarn add puppeteer@10.0.0# 添加 cjk 字体以支持中文COPY NotoSansCJK.ttc /usr/share/fonts/TTF
mypuppeteer:v1
的镜像:docker build -t mypuppeteer:v1 -f mypuppeteer.dockerfile .
test.js
脚本快速测试验证效果。您可通过脚本针对网页截图并保存。const puppeteer = require('puppeteer');(async () => {const browser = await puppeteer.launch({executablePath: '/usr/bin/chromium-browser',args: ['--no-sandbox','--disable-setuid-sandbox','--ignore-certificate-errors'],defaultViewport: {width: 1920,height: 1080,deviceScaleFactor: 3,},});const page = await browser.newPage();await page.goto('https://www.baidu.com');await page.screenshot({path: '/home/test.png'});await browser.close();})();
docker run -it --rm -v $(pwd):/home mypuppeteer:v1 node /home/test.js
本页内容是否解决了您的问题?