node-canvas-lambda icon indicating copy to clipboard operation
node-canvas-lambda copied to clipboard

Missing fonts in lambda layer

Open eranmit99 opened this issue 4 years ago • 5 comments

Hi, I am using the prebuilt layer that was provided. After exporting the canvas on the lambda all text is shown with squares, locally it works fine. Seems like the lambda OS is missing fonts. did anyone encounter this ?

code example:

ctx.font = '30px Impact'; ctx.rotate(.1); ctx.fillText("Awesome!", 50, 100); canvas.toDataURL();

output:

eranmit99 avatar Feb 10 '20 21:02 eranmit99

@eranmit99 I added a couple more libraries to the layer (libfontconfig.so.1, libpixman-1.so.0). Can you pull the latest and try again?

jwerre avatar Feb 10 '20 21:02 jwerre

Did u put it in node 10 layer - I don't see any changes ..

eranmit99 avatar Feb 10 '20 22:02 eranmit99

Hmm. Sorry, I don't have time to look into this now but you try compiling it yourself? Just fire up Docker and follow the instructions at the end of the README. Let me know how it goes.

jwerre avatar Feb 10 '20 22:02 jwerre

OK tnx

eranmit99 avatar Feb 11 '20 07:02 eranmit99

@eranmit99 I would guess the remote deployment doesn't have any fonts or fontconfig loaded. I just ran into this problem and fixed it by calling packaging a font file in my deployment and calling registerFont from canvas with the path of the font like this (replace path and name with your own):

registerFont('./static/fonts/Roboto.ttf', { family: 'Roboto' })

Can't seem to suppress #2 (or use that config to load the font file instead of calling registerFont, but it doesn't throw an error so it's not a huge deal.

@jwerre Will running the updated dockerfile and manually compiling / deploying to lambda layer on its own fix the errors with lambda not having a fontconfig?

alexlitel avatar Feb 14 '20 23:02 alexlitel