Sun, 07 Jun 2026 07:14:55 -0500Printable Type

mr's Preposter.us Blog

We've been collecting wood and metal type for use at the KGLMDPS.  Antique type is so cool, but also expensive and not always what you need.  While I plan to learn how to make our own wood type, in the meantime we wanted the ability to make custom type sooner so we decided to experiment with 3D printed type.

We've (2D) printed with 3D printed things before, but I've never set-out to make a proper "set" of type that is made to any sort of standard, so this time I wanted to come-up with a way to 3D print some type that would work as much like the antique wood type we have.

I started by measuring a piece of wood type with the intention of producing printable type that is as compatible with the wood type as possible.  The ultimate goal would be to mix-and-match printed type with woodtype.  




  // Fixed dimensions (measured from actual wood type)
  OVERALL_DEPTH = 23.5;
  BLOCK_DEPTH = 19.5;
  GLYPH_DEPTH = OVERALL_DEPTH - BLOCK_DEPTH;


I sunk a few hours into this and learned the hard way that while the terms and metrics of wood and digital type overlap, there's historic reasons that they are not exactly compatible.  




I might take-up this quest again someday, but in the interest of getting something done now I switched-gears and focused on making printable type that was at least compatible with itself.

Those hours spent researching the history of type were not a complete waste though, and helped me understand how to properly generate the parts of the type so that the printable type at least works the same as the wood type even if there's not an easy way to mix and match them.

The result is an OpenSCAD file that generates a set of type by simply specifying the desired font and size (in points).  This even works with OpenSCAD's "customizer" feature so you don't need to modify the code to change these parameters. 
 



The OpenSCAD file is limited to either rendering a single letter/glyph or a semi-hardcoded set of letters (I couldn't find a way to paramaterize the list) and the font has to be specified as a string (no way to connect it to a font picker yet) but even so it's fairly easy to work with and I'm sure if I do some homework there's probably someone who has made an improved interface to the customizer features that could make this easier for others to use.




We did a few single-letter tests and the results were better than expected!  I'm running a full set of type now and when that finishes we'll do some more realistic tests and see how things turn out.



The ultimate version would be something that integrates both the STL generation and the slicing, etc. so someone could simply select the parameters they want and print the type.  I can imagine a web interface that uses this file and the OpenSCAD command line to generate the STL's, and I'm pretty sure I could upload and print a sliced Gcode file through the API's provided by Klipper and/or the proprietary firmware on my Centauri Carbon, I'm just not sure about the slicing part (I use OrcaSlicer and I've never looked into using it from the command line).  Something to consider for the future.

For now this should accelerate our use of printable type at KGLMDPS and open up a few new doors for creativity.

I've published the code for Printable Type in it's current state to Codeberg.  I have a number of improvements planned and will be adding those features as well as any improvements we find needed after doing some more testing.


Jason J. Gullickson, 2026