Heroku不认识Rmagick字体

Heroku不认识Rmagick字体,heroku,fonts,imagemagick,rmagick,Heroku,Fonts,Imagemagick,Rmagick,我的Heroku应用程序似乎不想识别任何类型的rmagick字体系列。在下面的情况下,我希望字体是Times New Roman,但它是一些系统默认字体。我试着换成Helvetica,结果是一样的——某种通用的系统字体 canvas = Magick::Image.read("caption:#{@statement.text}"){ self.size = "300x300" self.colorspace = RGBColorspace

我的Heroku应用程序似乎不想识别任何类型的rmagick字体系列。在下面的情况下,我希望字体是Times New Roman,但它是一些系统默认字体。我试着换成Helvetica,结果是一样的——某种通用的系统字体

canvas = Magick::Image.read("caption:#{@statement.text}"){
            self.size = "300x300"
            self.colorspace = RGBColorspace
            self.background_color = 'white'
            self.font = "TimesNewRoman"
            # self.font = "Helvetica"
            self.gravity = CenterGravity
            self.pointsize = 26
        }.first
我运行了
identification-list font
,发现TimesNewRoman和Helvetica都被系统识别,但我的图像拒绝使用它们


附加上下文:这是用于og:image meta标记中的预览图像,用于在Messages/Facebook Messager/等中显示。如果我使用字体系列并将图像直接显示在html页面上,则没有问题,并且它使用了适当的字体。

以上链中的每条注释:

Wowwwww…显然,将
.fonts
文件夹添加到Heroku应用程序的根目录中,然后将字体移动到根目录中非常简单-一旦这样做,您就可以在将字体设置到ImageMagick上时直接引用字体了

所以…是的

.fonts
| - "SF-Pro-Text-Light.otf
| - "SF-Pro-Text-Regular.otf


您可能必须按字体文件的路径而不是名称指定字体。您需要安装fontconfig,并且必须编辑type.xml文件以添加字体名称。您是否检查过字体名称与空格(如Times New Roman)之间的差异?如果Helvetica不工作,你确定你已经安装了它的字体文件吗?@fmw42有趣,明天早上我会试一试。我曾尝试设置一个ENV变量,其中我的登台URL后跟/assets/[name],但没有骰子。那type.xml会被推送到staging吗?至于确定是否安装了Helvetica,我假设如果它出现在
identification-list font
中,那么它是否已安装?因为它在那里。除非将它添加到type.xml文件中,否则它不会显示为
identification-list font
。您必须找到它在系统上的位置。看见在我的IM 6.9.9.23版本中,它位于/usr/local/etc/ImageMagick-6/type.xml。请参阅Anthony Thyssen脚本,以自动添加所有兼容字体。否则,只需使用字体文件的路径——这就是我要说的——Helvetica(和TimesNewRoman)出现在我的登台服务器的
标识-列表字体中,这就是为什么我如此困惑的原因。我将使用fontconfig,看看这是否能让我有所收获。试着只使用字体文件本身的路径。这应该行得通。假设path2/Helvetica.ttf为.ttf字体,查看它是否工作。
canvas = Magick::Image.read("caption:#{@statement.text}"){
        self.size = "300x300"
        self.colorspace = RGBColorspace
        self.background_color = 'white'
        self.font = "SF-Pro-Text-Light"
        self.gravity = CenterGravity
        self.pointsize = 26
    }.first