Alternative Bitmap Font Tools

If you're looking for something other than Playdate SDK's (discontinued) Font Tool.app or Caps, then here are some candidates:

Complete Font to Image Solution

Bits'n'Picas
https://github.com/kreativekorp/bitsnpicas/tree/master/downloads
Superb font editor, cross-platform, written in Java. Supports many legacy font import/export formats. Playdate support since version 2.0, September 2022.

Font to Intermediary (BDF)

BDF = Bitmap Distribution Format, a simple text file with the font data in it.

FontForge
https://fontforge.org
Open-Source cross platform font editor. Supports bitmap creation, import of any of its supported formats, and export as BDF.

  1. Open TTF file
  2. Element > Bitmap Strikes Available... > (enter "pixel size"; the height of font in pixels)
  3. File > Generate Fonts... > Generate > OK

Shell
Tool to convert OTF/TTF to intermediate BDF.

  • otf2bdf is part of freetype, so you'll need to install that (I used brew install freetype).
    • eg. otf2bdf -p 12 font.ttf -o font.bdf

Font to Intermediary (TTF, Other)

Fontstruct
https://www.fontstruct.com
Web-based tool that allows easy pixelling of bitmap fonts with a well-proven workflow. Also features a gallery of open-source bitmap fonts. Downloads as TTF (and Glyphs format for your own fonts).

BitFontMaker
http://www.pentacom.jp/pentacom/bitfontmaker2/
Nice and easy, web-based TTF generation. Less feature rich than Fontstruct, but perhaps easier to jump in and use.

Intermediary to Image (BMP)

Shell
Tool to convert intermediate BDF into BMP.

Font2BDF
https://devforum.play.date/t/font-data-from-bdf/485

Note

Finally you'll need to use Font Tool.app or Caps to load the resulting image and generate the .fnt file for use with Playdate SDK.

Others?

Does anybody else know of some other good bitmap font tools?

16 Likes

Creating TTF from Playdate Font Tool PNG

It's possible to convert the Playdate Font Tool PNG bitmap font into a TTF outline font.

Required: BitsNPicas app download

(old, outdated guide removed)

4 Likes

This is excellent, Matt! Thanks so much for the step-by-step! My first question is how do I open Bits n' Picas? I've downloaded it and extracted the folder, but I'm looking for an executable file. I have a Windows machine.

1 Like

OK, on Windows if you download the .jar file you should be able to double click it to run it, or choose Open With... Java.

Make sure you have Java installed: https://www.java.com/en/download/help/download_options.html

1 Like

Awesome info in this thread. But for this, to get otf2bdf, I had to do brew install otf2bdf

This should be: bdf2bmp -s 0 font.bdf font-table-9-12.bmp

(Sorry if I'm reviving an old thread – but this thread has great info and I didn't see any new info anywhere else – and figured I'd pass on these updates to the info here. I wonder if it's also worth mentioning that Font Tool.app isn't a thing anymore? If I'm correct in understanding that.)

1 Like

Thanks for those catches!

Correct Font Tool.app no longer exists, it was replaced by Caps.

1 Like

Follow up question... once I have my .bmp .... how do I bring that into Caps (or otherwise make a .fnt file?)

See this post: Caps suggestions - #4 by shaun (edit: corrected link)

I can't try this right now, but it was true a while ago.

@matt, I'm curious if you got that new QuanPixel font properly converted from .bdf to .fnt ? I used this thread:

And got the ruby script to convert the example adobe font fine, but using the QuanPixel .bdf as an input threw an error:

./bdf2fnt.rb:148:in `encode_func': unknown charset (RuntimeError)
from ./bdf2fnt.rb:169:in `check_code'
from ./bdf2fnt.rb:43:in `readfile'
from ./bdf2fnt.rb:277:in `block in <main>'
from ./bdf2fnt.rb:276:in `each'
from ./bdf2fnt.rb:276:in `<main>'

I guess maybe I should be asking the OP of that script, but just curious if you got QuanPixel converted properly in some other way?

I'd never heard of QuanPixel as so I googled it and see it used to be called Galmuri, which I have heard of!

When I found the Galmuri font on itch I told the dev preview people about it. Shaun Inman did some digging and found that the Galmuri font is based on the Nintendo DS font, so I'm not sure how the can claim OTF or distribute it legally.

To play with that font it is best to load the original .kbits source file into Bits'n'Picas, here's my old fork of that has Playdate font PNG export and supports only the ASCII range of characters (you need to create the associated .fnt file to go with the .png).

I've kicked off some discussion of adding Playdate support to Bits'n'Picas: Interest in adding Playdate font support? · Issue #23 · kreativekorp/bitsnpicas · GitHub

1 Like

Hmmm... this is very good to know. I'm not sure it's worth playing with the fire that is Nintendo litigation...

Hello! I'm glad that my work has been mentioned here.

I think Galmuri isn't much different from these font projects reprinting classic bitmap fonts: Press Start 2P, Fixedsys Excelsior and IBM BIOS Fonts.

And, as far as I know, the design of typefaces in general is not protected by law. Furthermore, Galmuri is not quite the same as Nintendo's original, some other parts exist, and contains a lot more characters.

If you don't want to even talk about this, it's best to avoid using Galmuri and its derivations.

(If my words are to be taken offensively, I will inform you that I have no intention of doing so. This is because of my English skills.)

3 Likes

Thanks for replying!

My issue is that I would be scared of Nintendo legal action. So I'll use different fonts.

But what you've done with this font is really great work.

Bits'n'Picas 2.0, released alongside Unicode 15, supports Playdate .fnt import and export.
:tada:

Import

Export FNT
Screen shot 2022-09-17 at 13.50.09

Set font info

Export TTF
Screen shot 2023-02-07 at 14.55.43

2 Likes

I hope this fits in here, it's the tool I use to make all my fonts, it's only designed to make proportional fonts up to 16 pixels high, but if that's what you're after, you might find this useful.

It's quite a bit faster to draw than typical fonts, so if you're after speed, this is for you.

Font format specs: it's basically just 256 bytes with the width of each glyph, followed sequences of four 8x8 bitmaps, for each glyph's pixels.

glyph_width = uf2[c]
*glyph_bitmap = uf2 + 0x100 + (c << 5)

Let's look at the binary content, we can see the glyph width at the top, and 4 tiles per character underneath.

1 Like

I've been following this. Nice. @tendigits

Any chance it can export a Playdate FNT or maybe just a PNG?

I have a C project for the playdate that uses the uf2 format, but I just draw it directly, the C code to draw this sort of font is minuscule. I'm not super familiar with the font APIs on the playdate, is that something that I can find the documentation for in Pulp? I'm certain I can make a shim to convert uf2 to fnt if you point me toward the docs :slight_smile:

1 Like

Seriously impressed with all your apps and uxn and the whole thing you have going on here. It would be cool to be able to run uxnemu @ 2x as it's pretty small on my screen.

Maybe the example Playdate fonts I posted here help? Interest in adding Playdate font support? · Issue #23 · kreativekorp/bitsnpicas · GitHub

Press F1.

Thanks for the thread, that's exactly what I was looking for :slight_smile:

1 Like

Just a note to say that you can use Bits'n'Picas to import a Playdate FNT and export a TTF, which is very handy for doing mockups with your custom fonts!