【发布时间】:2018-08-01 05:31:12
【问题描述】:
我正在 AWS Lambda 上安装 Imagemagick,但似乎没有预装 Imagemagick 通常使用的字体,如何添加其他字体?
【问题讨论】:
-
如果您提供字体文件的路径(带后缀)而不仅仅是名称,它是否有效?
标签: aws-lambda
我正在 AWS Lambda 上安装 Imagemagick,但似乎没有预装 Imagemagick 通常使用的字体,如何添加其他字体?
【问题讨论】:
标签: aws-lambda
你不能。
您甚至可以将 Imagemagick 与您的 lambda 一起使用的原因是 AWS Lambda 团队已经在他们的容器上预安装了这个库。
这对于在 NodeJS 上运行的 Lambda 来说是正确的——它具有用于操作安装在您的操作系统上的 Imagemagick 的库,但它本身并不运行。
您应该使用 C#/Java 运行时进行检查 - 可能有 Imagemagick 库,您可以将其添加到您的 Lambda(不确定)。
【讨论】:
$img = newImagick('image.jpg');
这是我刚刚使用 pandoc/xelatex 在 AWS Lambda 上为自定义字体工作的内容。我假设你可以做一些非常相似的事情来让 Imagemagick 正常工作。
我在我的项目中创建了一个fonts 目录并将我的所有字体都放在那里。同样在该目录中,我创建了一个 fonts.conf 文件,如下所示:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/var/task/fonts/</dir>
<cachedir>/tmp/fonts-cache/</cachedir>
<config></config>
</fontconfig>
然后在我的(基于 node.js 的)处理函数中,在调用 pandoc 之前,我设置了一个 ENV var 来告诉 fontconfig 在哪里可以找到字体。
process.env.FONTCONFIG_PATH='/var/task/fonts'
之后,我可以在我的模板中按名称(只是 Bitter)引用字体,例如 Bitter,然后 pandoc/xelatex/fontconfig/whatever 知道要使用哪个版本的字体(例如 @987654328 @ vs Bitter-Italic.otf) 基于任何文本应该具有的样式。
我是根据这个项目中关于让 RSVG 在 Lambda 上使用自定义字体的技巧来解决这个问题的:https://github.com/claudiajs/rsvg-convert-aws-lambda-binary/blob/master/README.md#using-custom-fonts
【讨论】: