我有一个在AWS EC2(Amazon Linux,Elastic Beanstalk)实例上运行的Python应用程序,它需要某些特定字体来生成输出,并想知道如何在部署或实例启动过程中安装它们.
我的代码在我的本地机器(OS X)上运行
'Arial Unicode MS'
'Open Sans'
Run Code Online (Sandbox Code Playgroud)
作为字体.但是这些字体在EC2上默认不存在(我只看到DejavuSans和DejvuSerif /usr/share/fonts),我不清楚哪些包可能包含我需要的字体,或者如何安装它们.
如何安装在EC2上的两种字体,最好使用yum或command或container_command作为一个指定的部署/ instaitation过程的一部分.ebextensions/*.config文件?
我正在尝试创建一个 AWS Lambda 函数来对图像应用水印效果。原始图像将从 S3 中提取,应用水印并将结果上传回 S3。
我使用Sharp通过以下代码创建这些组合:
await sharp(inputImage)
.rotate()
.composite([{ input: new Buffer.from(watermark), tile: true, gravity: 'northwest' }])
Run Code Online (Sandbox Code Playgroud)
带有自定义水印 SVG
watermark = `<svg ... <text x="50%" y="100%" style="font-family:'Open Sans';font-weight:400;font-size:75px;font-style:normal;fill:rgba(128,128,128,1);stroke:none;" text-anchor="middle">${event.watermarkName}</text></g></svg>`;
Run Code Online (Sandbox Code Playgroud)
SVG 内部有一个文本元素,我可以动态更改该元素以包含指定的字符串。例如,我可以放置(c) Company Name一张图像和(c) John Doe另一张图像。
该代码在我的机器上运行时有效,但一旦进入具有 Node.js 12.x 运行时的 Lambda 函数,这就是结果

正如你所看到的,我指定了Open Sans要使用的字体。事实上,我将OpenSans-Regular.ttf文件放入/fonts/,创建了一个fonts.conf文件并按照这个问题FONTCONFIG_PATH='/var/task/fonts'中的描述设置了 a 。
尽管如此,字体仍然无法工作。有人对我如何解决这个问题有建议吗?