OpenSCAD Bitmap Fonts Module
Description
Update: Added height map support
This is an OpenSCAD module that let's you easily (well kinda) create 3D text. I've emulated the Atari 8-Bit fonts A-Z, a-z, 0-9, and most punctuation. You can create them a letter at a time or pass an array of characters. (OpenSCAD doesn't have any real string manipulation)
It also has a bitmap module that you can use to define your own fonts. It's pretty simple, you pass it an array of numbers (the number defines the height modifier, so a height of 5 and a value in array of 2 would make that pixel 10mm high), then tell it how many bits per row and it creates cubes (of configurable width and height) in a grid and combines them into a single shape.
Be careful when defining your own bitmaps in that you can't have two bits only connected diagonally. Otherwise OpenSCAD will say it's not manifold. For instance you can't have:
But you can have:
I'll try to keep this up to date, but you can always find the latest version on github at github.com/tbuser/openscad-bitmap
This is an OpenSCAD module that let's you easily (well kinda) create 3D text. I've emulated the Atari 8-Bit fonts A-Z, a-z, 0-9, and most punctuation. You can create them a letter at a time or pass an array of characters. (OpenSCAD doesn't have any real string manipulation)
It also has a bitmap module that you can use to define your own fonts. It's pretty simple, you pass it an array of numbers (the number defines the height modifier, so a height of 5 and a value in array of 2 would make that pixel 10mm high), then tell it how many bits per row and it creates cubes (of configurable width and height) in a grid and combines them into a single shape.
Be careful when defining your own bitmaps in that you can't have two bits only connected diagonally. Otherwise OpenSCAD will say it's not manifold. For instance you can't have:
0 0 0
0 1 0
0 0 1
But you can have:
0 0 0
0 1 1
0 0 1
I'll try to keep this up to date, but you can always find the latest version on github at github.com/tbuser/openscad-bitmap
Instructions
For examples see:
Parametric Name Tag:
thingiverse.com/thing:2055
Parametric Alphabet Block:
thingiverse.com/thing:2056
OpenSCAD Height Map:
thingiverse.com/thing:2070
Include bitmap.scad:
Create the letter "A" where each bit is a 2mm cube (8 x 8 so 16mm total wide) and 5mm high:
block_size = 2;
height = 5;
8bit_char("A", 2, 5);
Create the string "MakerBot". OpenSCAD has no real string or length methods :( so you have to define each character in an array and pass the number of characters:
chars = ["M","a","k","e","r","B","o","t"];
char_count = 8;
8bit_str(chars, char_count, block_size, height);
Parametric Name Tag:
thingiverse.com/thing:2055
Parametric Alphabet Block:
thingiverse.com/thing:2056
OpenSCAD Height Map:
thingiverse.com/thing:2070
Include bitmap.scad:
Create the letter "A" where each bit is a 2mm cube (8 x 8 so 16mm total wide) and 5mm high:
block_size = 2;
height = 5;
8bit_char("A", 2, 5);
Create the string "MakerBot". OpenSCAD has no real string or length methods :( so you have to define each character in an array and pass the number of characters:
chars = ["M","a","k","e","r","B","o","t"];
char_count = 8;
8bit_str(chars, char_count, block_size, height);
You must be logged in to post a comment.
inh
on
April 25, 2011
said:
This is great for making 8-bit art. I was sitting down to write something exactly like this but you beat me to it, thank you! 8-)
danielkschneider
on
April 9, 2010
said:
Add this to http://www.thingiverse.com/thi...
Thanx a lot! Cool addition 8-)
TeamTeamUSA
on
March 24, 2010
said:
Nice!!!
You should put it on GitHub too, so it can versioned and forked.
Braille, i18n, dingbats chars would soon follow.
License
OpenSCAD Bitmap Fonts Module by tbuser is licensed under the Attribution - Share Alike - Creative Commons license.

The new version (2011.04) version of OpenSCAD for Mac gives an error (parser error in line 976). The problem seems to be a few lines earlier:
} else if ( char == "" ) {
The backslash appears to need to be escaped. This works:
} else if ( char == "" ) {
Sorry I totally forgot to upload the new version. Thanks for reminding me, it should work now.