After a decently long stint with Literata as the font on this site, I’ve switched to EBC Garamond. It’s my personal fork of the 8 pt size of EB Garamond — I like thicker fonts that don’t feel quite so digital, and the 8 pt version has that. I’ve fixed some glyph collisions (in the small caps), modified some of the glyphs I wasn’t happy with (widening the /p/, for example), turned off some default ligatures, and fine-tuned the kerning. This is still very much a work in progress and there are still changes I want to make, but it feels ready enough for use here.
A note on process: I opened the original SFDs from the repo in FontForge and exported UFOs. I’m using Fontra (which I’m quite liking, by the way) to edit the glyphs, and I hand-edit the OpenType feature definitions in Vim. I use fontmake
to generate OTFs and pyftsubset
to convert them to WOFF2. And I have a little testbed HTML file that I use to check in-browser whether I’m happy with the changes. It’s a decent dev experience.
And goodness, this is fun. I’m having a blast.
As mentioned on Twitter, I’ve decided to write my own typesetting engine, called Ink. Apparently I’m crazy.
The details are still very much in the air, but here are some quick notes:
- Written in Rust (for speed)
- Programmatic (sort of like TeX)
- Scripting language for extensibility (JavaScript or Lua or Python)
- Intended for use in typesetting book interiors, covers, and charts
- Possibly some kind of template/data division
- Full OpenType feature support (shaping via HarfBuzz)
- Custom PDF generation library (inkpdf)
Reasons for doing this insane thing:
- PlotDevice only runs on OS X and I want the source of my language charts to be usable on other platforms.
- I’d like to open source the books I typeset, so InDesign isn’t a great solution.
- TeX is powerful and well-seasoned and all, but it’s not exactly pleasant or easy to work with, especially for the kind of stuff I do.
- I’ll learn a lot and have fun while I’m at it.
The initial roadmap, not necessarily in order:
- Write inkpdf in Python (which I think will be a better fit for the charts anyway)
- Get familiar with HarfBuzz
- Learn Rust
- Port inkpdf to Rust
- Plan out the Ink language (I’ve started on this and it’s looking promising)
- Figure out how scripting is going to work and embed the interpreter
I’ll document the process on this blog, of course. First steps: reading the PDF spec and figuring out how to make PDFs by hand.
(For those who’ve been reading for a while, Ink was also the name of my static blog engine. That’s now ink-static, and at some point I’ll either retire it completely or change the name to something unrelated.)
I like Kris Sowersby’s suggestions for a more ideal OpenType user interface in document design apps like InDesign.