Show HN: FontEdit – A desktop app to develop fonts for embedded systems displays
github.com
github.com
For example: TrueType includes the ability to embed small executable programs in your font to adjust little details in the rasterization process (I believe it's called "hinting"). It has its own VM and bytecode for that!
(I wonder if we could achieve a win by actually having a font-format that is just an abstract pixel shader that could be handed off to the GPU driver for compilation? Either way, we'd probably just pre-render glyph tiles to a texture, so I'm not sure it'd make much of a difference.)
For anyone interested, there is a nice collection of system fonts available on int10h.org:
There's also a bigger pile of system/bitmap fonts in raw binary format, included with my DOS-based font editor (https://int10h.org/blog/2019/05/fontraption-vga-text-mode-fo...). Perhaps more pertinent to this thread, since the format is natural for embedded systems/direct video chip usage.
http://robhagemans.github.io/monobit/
They're in some kind of human-readable text format:
When I was learning to program games in my teens on the Atari 8-bit, one of my favorite passtimes was making fonts and sprites. This takes me right back in time. And I can use it for mini game assets, maybe tiny raster fonts for code (like log windows). Thanks for making it and sharing.
It's a hobby/educational project, but I'm happy to see it solving some people's problems. I once wanted to add a good-looking font to my e-paper display for the air quality monitor project and I stumbled upon a simple MacOS app that converted images with text to byte arrays (https://luckyresistor.me/font-to-byte/). I picked it up, updated to Swift 3 and adjusted to my needs. When I blogged about it, somebody complained that it's MacOS only, so I decided to rewrite it in C++ with Qt (learning some modern C++ on that occasion).
The app was still quite cumbersome as it required you to prepare input images in external software like GIMP or Ps, and people had a hard time understanding the process. I was being asked repeatedly to help generate an image for a given font, so I figured out that the app could (should) be generating those input images programmatically. From there I added a minimal graphical editor to allow making corrections to auto-generated bitmaps (or drawing ones from scratch) and here we are.
Last but not least, I had a great fun learning C++17 and writing a template-based source code generator.
It all went fine until I needed a variable width modern-looking font, so I wrote a convertor from BDF to the proprietory format the video chip used (vertical middle-endian scan lines arranged in a weird order) and generated the BDF using gbdfed or FontForge, I don't remember which one. I must admit the convertor was horrible :D
I can appreciate the naming struggle - I had to resort to calling my own editor 'Fontraption'. :)