Still finding KK Sans’ shape

When I started making KK Sans, getting a sentence on screen felt fairly ridiculous. I’d made the letters, and now I could type with them. Seeing it on this site still gives me a bit of that feeling.

Using it also means I keep spotting things I can’t leave alone. A letter looks fine in Glyphs, then turns up in a heading and suddenly feels like it belongs to another font. Or a word catches my eye every time I read it, and it takes a while to work out which space is wrong.

I’ve just been through a fairly obsessive round of refinements, mostly trying to get the letters to settle around the high x-height and those little finials. I still like those details; it’s the shapes around them that keep needing another look, especially as the font gets heavier.

The a. Again.

Even in my original post, I was trying to fix the lowercase a. Apparently this is going to be a recurring theme.

Its lower bowl kept feeling awkward. Adjusting a curve could improve one part while making the join into the stem look pinched. At Black, there was much less room to hide that imbalance.

I went back into the construction: how the stroke feeds into the bowl, the shape of the space inside it, and how the bottom rises towards the little foot. That last transition needed particular care. I wanted to keep the finial without making it look like something attached afterwards.

Before and after comparisons of a and æ in Regular and Black, showing the revised bowls and joins.
Regular above, Black below. Each “before” in this post comes from a saved version preceding that particular refinement; the comparisons use the same type size.

The æ needed to follow. Its a and e had both evolved, but the combined letter was still carrying an older construction. Bringing them back together made much more sense than continuing to tidy that older shape.

Filled lowercase a beside its source outline, with on-curve nodes, Bézier handles, baseline and x-height guides.
The actual Regular master. Squares sit on the outline; the green handles control how each curve approaches and leaves them. Dashed lines mark the x-height.

Looking at the outline on its own helps me see why a tiny adjustment can change so much. The points give me the ends of the curve, then the handles change how it gets between them. I can make the join technically smooth and still end up with something that looks a bit flat or swollen.

I kept looking at both edges of each stroke together. The space inside the bowl matters as much as its outside contour. Moving one without considering the other changes the apparent thickness, which was part of why those earlier tweaks never quite settled.

Keeping the joins believable

The places where bowls and shoulders meet stems took a lot of back and forth. In b, d, p and their relatives, too much material makes the join look clogged at heavier weights. Taking too much away makes the curve look as though it’s barely holding on.

I definitely went too far in that direction at one point. Regular and Bold needed some thickness back, while Black was already closer. Treating every weight identically wasn’t helping.

The m had a different problem: its final shoulder looked like it was falling backwards. I kept checking it against n and h, then reading “minimum” and “budding” again. Those repeated shapes make an uneven rhythm much harder to miss.

Source outlines of n, m and b, at matching scale, in Regular and Black with Bézier handles.
Regular above, Black below, all at the same scale. The inner and outer curves have to work together as the joins gain weight.

The spaces were part of it

“Daft” was particularly useful. The a–f pair interrupted the word, despite plenty of other combinations looking fine. In “digital”, the space after g felt tight while the gap between i and t felt too open.

Before and after spacing in daft, digital and Writing, with each word shown at an identical size and weight.
These are shaped with the saved fonts' actual kerning. Small changes, but they're in words I read all the time.

Capitals needed a broader look too. All-caps text felt cramped, even when a capital followed by lowercase looked good. Opening up the capitals meant compensating those mixed-case pairs so I didn’t spoil the spacing that already worked. “Writing”, “OpenType” and “København” each caught something different.

The l is still a useful reminder that the visible gap matters more than the measured one. Its foot changes the space around it, so a tidy set of side bearings doesn’t automatically give me a tidy word.

Giving the numbers some attention

I spent more time on the figures this round, including the heavy 9 and the join inside 6. The 7 needed a clearer change in thickness through its curved stroke: slimmer near the top, gaining weight towards the baseline.

Regular and Black sevens, each shown filled and as source paths with control handles.
The filled shape beside the curves that make it. The inner and outer edges steer the change in thickness through the stroke.

Reading the figures alongside letters showed up a few strokes that felt too heavy. I measured them against similar straight and curved letter strokes, then eased back the parts carrying too much weight. Regular needed more attention than Black, and I kept coming back to how they looked together rather than trying to make every measurement match.

There were less glamorous fixes too. The slash in the alternate zero was poking past the outside curve. Some punctuation needed better balance, and small symbols needed enough weight to sit with the text without closing up their internal spaces.

Making it work as a family

Regular and Black give me different problems to solve, and the weights between them still have to make sense. Adding weight changes the space left inside a letter. A curve that feels generous in Regular can become cramped in Black, so the heavier drawing needs its own decisions about where that weight goes.

The revised KK Sans in six weights, from Regular to Black, using minimum, klarhed, funktion, budding, typography and København.
The current family, from Regular to Black. Real words have been the most useful test throughout.

There’s been plenty of programmatic checking alongside the drawing: preserving spacing when outlines change, checking the weights between masters, and making sure the exported font contains the intended fixes. But I still have to read with it. That’s where I notice the things the checks can’t decide for me.

I also tried adding a Light weight, then parked it. It wasn’t different enough from Regular to justify the extra refinement it needed, and I wasn’t sure I’d use it.

For now, the updated font is on this site. I’ll keep using it here, which probably means I’ll spot something else in this very post.

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论