OpenType and TrueType to 3D-printable .stl of type for letterpress printing

Usage no npm install needed!

<script type="module">
  import dPrintLetterpress from 'https://cdn.skypack.dev/3d-print-letterpress';



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 node.js.

Install via npm

$ npm install git+https://git@github.com:jonathanzong/3d-print-letterpress.git -g

Usage Example

$ 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).

Single Glyph

$ 3d-print-letterpress Gotham-Book.otf 16 H
output written to Gotham-BookSTL/Gotham-Book16ptUpperH.stl

Multiple Glyphs

$ 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

SVG Path File

$ 3d-print-letterpress bird.svg
output written to svg_pathSTL/svg_path97ptbird.stl

Final Product

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 -- parser for OpenType and TrueType formats
  • JSModeler -- 3D modeling library modifed here to work in Node.js (removed references to the DOM)
  • node-raphael -- SVG utility to perform path calculations