Converts OpenType and TrueType (.otf and .ttf) files into 3D printable (.stl) models of letterpress type for a specified point size and glyph.
This project brings together two technologies, old and new, that empower people through the democratization of production.
3d-print-letterpress requires a relatively recent version of Node.js (tested with Node 24). Install globally via npm
npm install 3d-print-letterpress -g$ 3d-print-letterpress
Usage: 3d-print-letterpress type-file [point-size [glyphs]]
Usage: 3d-print-letterpress svg-file
Keep in mind that STL files are unitless, and that you will have to scale your models to type-high (0.918 in or 23.317 mm).
$ 3d-print-letterpress Gotham-Book.otf 16 H
output written to Gotham-BookSTL/Gotham-Book16ptUpperH.stl
$ 3d-print-letterpress Gotham-Book.otf 16 OMG
output written to Gotham-BookSTL/Gotham-Book16ptUpperO.stl
output written to Gotham-BookSTL/Gotham-Book16ptUpperM.stl
output written to Gotham-BookSTL/Gotham-Book16ptUpperG.stl
$ 3d-print-letterpress bird.svg
output written to svg_pathSTL/svg_path97ptbird.stl
Depending on the resolution of your 3d printer, you will likely have to sand the letter face to be perfectly level. I used fine sandpaper while checking the height with a type gauge (pictured above).
My first print:
I chose a sans-serif letter T for its very geometric figure. The grooves are a byproduct of how the 3d printer extrudes. I like how it gives an indication of the material from which the type is made.
3d-print-letterpress uses
- opentype.js -- parser for OpenType and TrueType formats
- JSModeler -- 3D modeling library modifed here to work in Node.js (removed references to the DOM)
- svg-path-parser and svg-path-properties -- utilities to interpret SVG path data and sample bezier curves
- @xmldom/xmldom -- XML parser used to extract
<path>elements from SVG files
MIT




