ImageMagick convert command Unable to Read Font

4k views Asked by At

I'm integrating an ImageMagick command into a Firebase Function written in Node.js. I already have Ghostscript installed and have a full list of fonts available:

convert -list font

Path: /usr/local/Cellar/imagemagick/7.0.8-10/etc/ImageMagick-7/type-apple.xml
  Font: AndaleMono
    family: Andale Mono
    style: Undefined
    stretch: Undefined
    weight: 0
    glyphs: /Library/Fonts//Andale Mono.ttf
  Font: AppleChancery
    family: Apple Chancery
    style: Undefined
    stretch: Undefined
    weight: 0
    glyphs: /Library/Fonts//Apple Chancery.ttf
  Font: AppleMyungjo
    family: AppleMyungjo
    style: Undefined
    stretch: Undefined
    weight: 0
    glyphs: /Library/Fonts//AppleMyungjo.ttf

Here's my code:

exec(`convert ${tempFilePath} -font /Users/emma/Library/Fonts/Nunito-Regular.ttf -fill white -pointsize 60 -gravity center -draw "text 0,300 'this is a label'" ${tempFilePath}`, {stdio: 'ignore'}, (err, stdout) => {
         if (err) {
             console.error('Failed to label image.', err);
             reject(err);
         } else {
             resolve(stdout);
         }
});

I also tried:

exec(`convert ${tempFilePath} -font Arial -fill white -pointsize 60 -gravity center -draw "text 0,300 'this is a label'" ${tempFilePath}`, {stdio: 'ignore'}, (err, stdout) => {
       if (err) {
          console.error('Failed to label image.', err);
          reject(err);
       } else {
          resolve(stdout);
       }
});

The error I'm getting is:

convert: unable to read font `/Library/Fonts//Andale' @ warning/annotate.c/RenderType/872
1

There are 1 answers

0
kenorb On

As per @fmw42 suggested:

On some tools that make use of Imagemagick, they do not use the system ENV variable.

So I have seen cases such as with PHP Imagick where it cannot locate the Ghostscript.

In those cases the solution was to put the full path to Ghostscript where it uses gs in the delegates.xml file of Imagemagick for those lines such as PS, EPS that list gs.

See https://imagemagick.org/script/resources.php for delegates.xml and its possible locations. Mine is at /usr/local/etc/ImageMagick-6/delegates.xml

So the possible solution is to install gs tool.

On MacOS: brew install gs.

Related post: https://imagemagick.org/discourse-server/viewtopic.php?t=34911.