#1743·pdfkit

PDFKit crashes when providing fonts as Buffer in table

Author: ykw9263Created Jun 25, 2026Updated Aug 21, 2026

Bug Report

Description of the problem

When providing font in table cells with a src of Buffer or UintArray, Not a supported font format or standard PDF font. will be thrown.

Upon some digging, I found that in normalizeCell() the font object is deep-merged with other fonts in table styles

https://github.com/foliojs/pdfkit/blob/2fdafa275a6bc2c8751cd952edc3844545ade57d/lib/table/normalize.js#L96

This line took an unusually long time to execute, and after this the font src became something like

javascript
console.log(font.src)
// { '1': number, '2': number, '3': number, ... }

Code sample

typescript
import PDFDocument from "pdfkit";
import fs from "fs";
const doc = new PDFDocument();

doc.table().row([
  {
    text: 'Hello World',
    font: { src: fs.readFileSync(SOME_CUSTOM_FONT), family: FONT_FAMILY },
  }
])

Possible fix

Replace the font deep merge with manual property assignment. Considering the structure of the font object a shallow merge may also be enough.

javascript
// changing to this worked properly in my case
const font = {...colStyle.font, ...rowStyle.font, ...cell.font}

Your environment

  • pdfkit version: 0.19.1
  • Node version: 24.15.0
  • Browser version (if applicable): N/A
  • Operating System: Windows 11