Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

680
Views
Utilizing custom font in AWS Lambda and Node.js 12.x

I'm trying to create an AWS Lambda function to apply a watermarking effect on images. The original image will be pulled from S3, the watermarks applied and the results uploaded back to S3.

I'm using sharp to create these compositions with this code:

await sharp(inputImage)
              .rotate()
              .composite([{ input: new Buffer.from(watermark), tile: true, gravity: 'northwest' }])

With a custom watermark 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>`;

Inside the SVG there is a text element that I dynamically change to contain a specified string. For example, I can put (c) Company Name on one image and (c) John Doe on another.

The code works when is running on my machine, but once inside a Lambda function with Node.js 12.x runtime this is the result Example of text watermark

As you can see I specified Open Sans as the font to be used. I, in fact, put the OpenSans-Regular.ttf file in /fonts/, created a fonts.conf file and set a FONTCONFIG_PATH='/var/task/fonts' as described in this question.

Nonetheless, fonts are still not working. Does anyone have suggestions about how I can fix this?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Well asking Stackoverflow helped me finding the answer on my own, so I'm sharing in case anyone stumbles across this problem in the future.

AWS Lambda does not appear to support even basic fonts on it's own. For this reason, you will need to include you onw fonts as files inside the deployment zip file.

In my case this worked:

  • Creat a /fonts folder and inside placed all the files needed (in my case OpenSans-Regular.ttf).

  • Put a file named fonts.conf inside this folder

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
       <dir>/var/task/fonts/</dir>
       <cachedir>/tmp/fonts-cache/</cachedir>
       <config></config>
    </fontconfig>
    
  • Tell Lambda where the config file is by creating an environment variable

     FONTCONFIG_PATH='./fonts'
    

And voilà!

Working example

over 4 years ago · Santiago Trujillo Report

0

Worked for me also with the FONTCONFIG_FILE="/var/task/fonts.conf"

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!