I’ve decided that I’m now done with Pigna — partly because I’ve learned the technical things I set out to learn, but mostly because I’m seriously itching to design a real typeface, one I’ll use for actual text work. But first, a review of what’s happened since my last post:
I learned how to add anchors thanks to a tutorial by Peter Baker. It’s quite easy and mmm, diacritics. (The acute, grave, cedilla, and macron are the only marks I drew, though.)
I also played around with the mkmk feature for stacking marks on other marks and got it working (with an acute on top of a macron).
For the heck of it, I ran Pigna through FontForge’s convert-to-italic feature, and this is what it came up with:
It didn’t have a crossbar on the ‘f’, and the ‘d’ was somewhat mangled, so I fixed both of those. But other than that it’s straight from the conversion. It’s interesting. I’ll still draw italics by hand when I do them for real, though.
I also added the em dash and en dash and curly quotes, but I decided to leave out the oldstyle numerals. (I learned how to do them with a small test font, though.) And I added more kerning, as you can perhaps see in the latest Tom Sawyer test sheet:
That’s all, folks. Pigna has been a good learning exercise, and it’s gotten me to finally make a typeface. Turns out it’s easier than I thought, especially once I got past the initial learning curve. Now on to the real work of making a good typeface.
Finished tracing all the characters today. (Remember, this is a throwaway font for learning purposes only, and I’m not releasing it when I’m done. I’ll do real typefaces after this.)
Whew. In spite of knowing this is a throwaway font, it still makes me giddy to see all the characters come to life like this. Two unexpected side effects from tracing: repetitive stress pain (mostly from adjusting control points) and now I mentally trace Bézier curves over everything I see in real life.
Spacing and kerning
I started doing spacing, using the ‘n’ and ‘o’ characters for lowercase and ‘H’ and ‘O’ for uppercase:
With the lines in between, it’s a little harder to tell if I’m spacing things well. I need to see if I can tweak the FontForge theme to make the lines a lot lighter. I also need to take the exported font and do these spacing strings, both on screen and in print, which will help.
I got a little ahead of myself and started doing kerning, too:
I did ‘T‘ (‘Ta’, ‘Tb’, ‘Tc’, etc.) and ‘f‘. When I do a real font I’ll use kerning classes to start, since it saves a ton of time, but for this font I wanted to do it manually. I suspect I’ve kerned a lot of these pairs too tightly.
More test sheets
Now that I have a complete character set, I put together another test sheet, this time using text from LibreText:
And a Tom Sawyer test sheet, since almost all of my interest in type design is in designing typefaces for books (though I would never use a font like this for body copy in a book):
When I made this sheet, I realized I don’t have a complete character set yet. I still need an em dash, an en dash, and curly quotes (single and double). And I think I’ll add oldstyle numerals as well.
I learned how to make ligatures like ‘fi’ and ‘ffi’, which you can see in a few places in the first test sheet. Here’s the process:
Go to the glyph for the ligature. (Click View->Goto and type in the name of the ligature, f_i in this case.)
Rename the glyph. (In the glyph window, click Element->Glyph Info and change the name to f_i — you can do it without the underscore, but Adobe’s standard is to use it, so I’m going to. Double-click on the glyph to open a window for it.)
Import the component parts. (Click Element->Build->Build Composite Glyph. The component parts are ‘f’ and ‘i’.)
Move the glyphs where you want them.
Turn the imported glyphs into live paths. (Click Edit->Unlink Reference.)
Adjust the glyphs as necessary — joining paths, adding points at extrema, removing overlap, etc. Change the right bearing, too, to be whatever the right bearing is for the last component character in the ligature (‘i’ in this case).
Create a lookup table. (This only needs to be done once. For future ligatures, open this lookup table and skip to step 8.)
Click Element->Font Info and, in the Lookups pane, click the Add Lookup button.
In the Type dropdown at the top, choose Ligature Substitution.
Under Feature in the table, type liga or choose Standard Ligatures. The script/language defaults are fine. Click OK.
Add a subtable. (Click Add Subtable and click OK for the default name.)
Link the ligated glyph to the input characters that trigger it. (In the subtable dialog, put f_i under Ligature Glyph Name and f i under Source Glyph Names. Click OK.)
In the metrics window, you can test it. If it’s not working, you may need to activate the liga feature in the list at the left of the window. Voila! Ligatures. Mmm.
Oh, I also threw together a new dummy font file and learned how to do contextual chain substitutions and other cool OpenType stuff. (Specifically, I hooked it up so if I have two ‘o’ characters in a row, the second one gets replaced with an alternate ‘o’.)
It’s official: I’m hooked. Type design is really, really addicting.
Traced sixteen more characters today (esmb-urgtfvclz~^, in that order). It’s going quite well.
I did run into two hiccups, though. First, when I traced the ‘g’, I realized the descender went way past the descender line:
It took a bit of finagling to figure out how to get this the way I wanted it (including opening some other fonts to see how they did it). Basically, in Element->Font Info, I turned Scale Outlines off, then set Descent to be close to the descender on the ‘g’. I also set Ascent to be just above the top of the ‘b’ and ‘d’. I hit OK, then went back and (with Scale Outlines on) changed the Em Size back to 1000, which is apparently where it’s supposed to be.
Second, I initially had the top of the ‘t’ at the x-height, which ended up being way too short. The bar is supposed to be at or near the x-height. Scaling the glyph up easily fixed it.
In spite of the fact that I didn’t do any spacing adjustments on these new characters, I threw together a test sheet (again using adhesiontext). The image is linked to the PDF:
I shouldn’t have any problem finishing the tracing up in a few more days. Then I’ll do general spacing, followed by kerning (the lack of kerning on the ‘f’ is bothering me, as it should). But we’ll get there when we get there.
I’ve traced ‘a’, ‘d’, ‘i’, ‘o’, ‘n’, and ‘h’ so far, in that order. (The two common starter strings I’ve seen are “adhesion”, which I’m doing, and “hamburgesfontiv”.) It’s already addicting and I don’t want to stop.
My process on these:
Double-click on the glyph in FontForge (in the main font window).
In the glyph window, click File->Import and choose the sketch for the background layer.
Select the background layer and resize the background image so that it rests on the baseline and matches the x-height. (Before I started, I made a guide for the x-height.)
Select the foreground layer.
Make sure View->Show->Fill is not selected. (If it is, the glyph covers up the background image, making tracing impossible.)
Switch to the pen tool (‘p’).
At a zoomed-out level where I can see the whole glyph, place initial points. I place them at the extrema, since that’s apparently what’s best for fonts. (One thing that helps a lot with this is selecting View->Show->Extrema, so I can see if I’ve gotten it wrong.)
Then I zoom in close, switch to the pointer tool (‘v’), and finesse the points and control points till the curve matches the background image.
Zoom out, hide the background layer, turn on View->Show->Fill, and see how the glyph looks. Adjust as necessary.
After I did a few, I opened the metrics window (Window->New Metrics Window) and typed the characters in (I got them from adhesiontext, though LibreText is also good), then tweaked the bearings (dragging the lines, but editing the LBearing and RBearing boxes also works) until it looked a little better.
The hardest thing so far? Resisting the urge to try to make these font outlines look good. It’s. So. Hard.
Somewhere I read that you only want to use horizontal/vertical control points. For the most part I’ve been able to do that, and it feels cleaner, but some curves just don’t seem to be possible that way. Maybe you’re supposed to use more points in those cases? Not sure. I’ve opted to allow some exceptions where necessary.
I initially wasn’t sure how wide the left and right bearings should be, but as I’ve started spacing things, I’m getting a better feel for it. The metrics window alone isn’t enough, though, since the lines get in the way — pretty soon I’ll do a pageful of dummy text in different point sizes and see where the spacing is off.
For curved parts (like the top of the ‘n’ and the top and bottom of the ‘o’), you want to optically adjust by making them extend past the x-height/baseline, so I’ve added guides for that. I’m not entirely sure how much bigger the adjustments ought to be, but I trust that’ll come with iteration down the line. (Though for this font, I’m not doing that.)
Yes, FontForge is an ugly app. I’m still not sure where it sits on the spectrum between the UI being horrible and the learning curve being really high (like with Vim).
I originally had labels showing on the guides, but they disappeared and I haven’t yet figured out how to get them back.
It’d be nice to make the glyph semi-transparent so I can see the glyph shape (not just the outline) and the background image at the same time. So far I haven’t figured out if this is possible.
I wasn’t sure how to take a point with only one control point and get a second control point out of it. This may not be the best way, but I control-clicked on the point, went to Get Info, and then edited the second control point’s coordinates directly so it wasn’t 0,0. And then I could drag it in the glyph window.
A keyboard shortcut to toggle the fill (and just the fill) would be nice. In fact, customizable keyboard shortcuts that don’t involve editing a gettext .pot file would be nice. Someday, hopefully…
I haven’t yet found a way to scale the background image proportionally (you’d think Shift would work, but it doesn’t, at least not consistently).
When I double-click on a glyph to open it, I wish FontForge wouldn’t switch to the pen tool. The pointer tool is what I want most of the time. Maybe there’s a setting somewhere?
I’ve been trying for a while to get myself to start doing type design, but I rarely get past the sketching stage. Since these “do x in a month” goals seem to work for me, here’s the plan:
By August 31, I will design a typeface using FontForge, and I’ll blog about the process as I go. (I’m starting today, which technically makes it a little more than a month, but I don’t want to have to remember which day of the month I started this.)
With this font, my aim is to learn the production aspects of type design (by which I mean everything but the outlines). I’m not going to make the outlines look good or harmonize with each other. That pains me a little, but I don’t want to get distracted. This is a throwaway font for learning purposes only. Beautiful fonts will come later (hopefully).
The font will be called Pigna — after the Fontana della Pigna in Rome — and will have these characters in it:
I started today by sketching out the characters on graph paper and scanning them:
I marked the individual sketches I want to use with green dots underneath the character. (I ended up deciding to use the first 1 instead of the one I marked, though. And I’m planning to use the semicolon components to make the colon and the comma, so I didn’t mark those separately.)
After that, I split each character out into its own file (a.jpg, b.jpg, 5.jpg, hyphen.jpg, octothorpe.jpg, etc.) by copying and pasting in Photoshop.
Next up I’ll import them into FontForge as background layers and trace the outlines on top of them. When I start doing real font production later on, I think I’ll make sure to set up baselines and grids and things so that the images are all the right size and position. (With these, they’re all different sizes, so I’ll have to move them around by hand once they’re in FontForge.) I’m also thinking that Typlate would be more useful to me if it could do several smaller rows, like in the sketches above — at least at this point, I don’t see myself using a whole piece of paper for a single character or two.