Technicality

an unfinished terminal font distantly inspired by Tekton

Introduction

Technicality is my own personal scalable font, which I use in all my terminal windows and text editors on Linux.

For that purpose, it needs to be a monospaced font. But I also made a variable-width form of it, which I configure my window manager to use in window titles.

It’s rather unfinished, but it’s good enough for me to use. And occasionally people ask me about it, so perhaps it deserves a web page.

[terminal.png]
A Linux terminal window in Technicality Mono Bold.
The window title is also in Technicality Bold (variable width).
The image depicts the Emacs editor showing a snippet of the Metafont source code for Technicality itself.

Here’s a live preview of Technicality, showing some sample text and also providing edit boxes for you to type test text of your own.

Unfinishedness

Before I offer some download links, I should show you all the things that are bad about this font, in case they make you decide not to download and use it after all.

Ad-hoc level of completeness. I’ve added characters to Technicality on the basis of my own use of it: whenever I wanted to use a character myself in text, or found other people using it, and didn’t like what my terminal substituted from some other font, I’d add it. Anyone else without my exact usage profile is likely to find missing characters. In fact even I find missing characters.

Weird side bearings in the variable-pitch font. I assigned left and right side bearings via an iterative process that on the one hand mostly prevents serious miskerns without needing too many kerning tables, but on the other hand looks nonsensical if you view the characters in something like Fontforge – some perfectly ordinary letters like “b” overshoot their right side bearing! This could do with a serious cleanup of some kind.

Missing overshoots. I haven’t got round to making characters with curved bottoms slightly overshoot the baseline (at least on purpose). At the pixel sizes I normally use, it doesn’t make a difference, but for higher-resolution use, I should decide on a sensible overshoot and set it on purpose.

Largely untested hinting. The hinting in this font used to be very bad; I’ve been working on it, but I’m still not sure it’s right.

No kerning. In the variable-width fonts, the usual kinds of combination like “Ta” or “AV” look nasty, because I haven’t set up any kerning at all.

In short, Technicality is currently a symbiosisware font: its only user (at least, up to the point where I published this web page) has always been its developer, so I’ve only been fixing the things that seem easier to fix than to put up with.

Downloads

Here are some initial downloads:

The source code of Technicality is written in Metafont, followed by a build procedure that extracts Metafont’s output bitmaps, converts them into outlines, and combines those into a font file. So you can’t edit the glyphs directly in Fontforge. But if this doesn’t put you off, you can get the source code by cloning the git repository:

git clone https://git.tartarus.org/simon/technicality.git

You can also browse the repository on the web.

Ambitions

Most immediately, I’d like to finish up sorting out the hinting of these fonts so that it’s consistently usable at a wide range of pixel sizes, and sort out some of the spacing and kerning. That might take it from “unfinished” to something like an initial release.

I’d like to have an italic face to go with the upright one. That is, not just oblique (take the existing designs and shear them geometrically), but with at least some of the character designs redrawn appropriately. I’m not sure how many would need a change – italic faces mostly look like handwriting, and Technicality is handwritinglike already – but one thing I would certainly want in the italic face would be a single-storey “a”. Perhaps also an “x” in the mathematical style, with two tangent curves instead of two crossing lines.

My really over-the-top ambition would be to make it usable in TeX and LaTeX, including for typesetting equations. That would require the italic face (for most variable names), and a lot of extra mathematical symbols, and also figuring out how you make a scalable font work with LaTeX maths rendering.

History

In the late 1990s I became a Linux user. At that time, GUI desktops weren’t yet universally used, so I started off mostly using Linux by running login sessions on text consoles, in the default VGA text mode with 8×16 pixel character bitmaps (extended to 9×16 pixel cells on the screen, by the hardware adding a column of blank pixels on the right, with a bodge based on the character code to make box drawing characters continuous).

VGA let you change the font bitmaps, and Slackware Linux (my first distribution) provided a package called kbd containing some alternate fonts. Many of them had one- or two-letter names; I remember in particular “r”, a serif font (presumably short for “roman”); “sc”, a handwriting-style font in a particularly messy scrawl; and “t”.

[sample-kbd-r.png]
[sample-kbd-sc.png]
[sample-kbd-t.png]
Samples of the r, sc and t bitmap fonts

t” almost immediately became my favourite. It was also a handwriting-styled font, but it was much nicer than “sc”. What I liked about it most was that it had large letters, in the sense of each letter filling more of its character cell. I found that noticeably improved readability to my particular eye. The slight upward slant of the horizontal strokes also appealed to me.

There's a lot of hate around on the Internet for handwriting-style fonts, Comic Sans in particular. In this case, it didn’t bother me. I agree that untidy handwriting fonts are horrible: partly because of the untidiness itself, and mostly because of the way you get unrealistically consistent untidiness, where the same letter is always untidy in the same way. (That sticking-out leg in the Comic Sans “m”, ugh. And I couldn’t have used “sc” for very long at all.) But “t” isn’t untidy or scrawly in that way: it’s more like neat handwriting, the ideal rather than the actuality.

A couple of years later, Linux GUIs did become commonplace, and I stopped using VGA text mode on my computer. But by that time I’d become very fond of “t”, and didn’t want to give it up. So I converted it into an X11 bitmap font.

I liked “t” in general, but I didn’t like absolutely everything about it. So once I had a version of the font in my own code, I started modifying it to my own taste. In particular, I didn't like the slash across the 0 being a long way below the centre. I also didn't like the * character was raised to the top of the character cell – that's nice if you wanted to use it to mark a footnote, but not at all what you want to denote multiplication or a filename wildcard (to pick just two examples). So I redrew the 0 to have its slash very slightly above centre, and moved the * down to its normal position, so that it lined up with +.

[sample-kbd-t-2.png]
[sample-9x15t.png]
The t font, before and after I modified 0 and *

I kept using that X11 bitmap font for a long time. (It’s still available on my bitmap fonts page.) At some point I extended it from DOS code page 437 to ISO 8859-1 and then to more general Unicode, hand-drawing any extra characters I needed. I also converted it into a Windows bitmap font so that I could use it in my PuTTY sessions and (with a bit of faff) Command Prompt windows.

By this time I’d tracked down the origin of the font. Slackware’s fonts package had apparently got a lot of its bitmap font designs from a DOS utility called “VFONT”, by clySmic Software. They didn’t give their fonts silly names like “t”. They had more sensible longer names for them. Their name for Slackware’s “t” was “Tektite”. So that’s what I called the bitmap version, when I wasn’t calling it some ad-hoc phrase like “my font of choice”, or using a name like 9x15t to match the naming scheme of the traditional X11 bitmap font aliases.

But then high-DPI displays came along, and suddenly a bitmap font with a fixed size in pixels didn’t seem useful any more. I wanted a scalable version.

By this time, I’d tracked down the origin of the font. Yes, again!

Even back when I first used the Slackware “t” font, I could tell it wasn’t wholly original. I’d recognised the letter shapes as reminiscent of a scalable font I’d used in a drawing program as a teenager, calling itself “Technical” – appropriately, since it’s the kind of deliberately neat writing you might use on something like a technical drawing. I’d initially assumed that Slackware’s “t” name stood for “Technical”, so I was was slightly confused when I found “Tektite” was clySmic’s name for the bitmap version; that’s a kind of rock, not related to technical drawing or fonts at all. I almost wondered if I’d been wrong to identify “t” as based on “Technical”.

But the mystery was solved when I found out that the “Technical” font I’d used was not originally named that. It was a knockoff of an Adobe font called “Tekton”. That makes much more sense: tektōn is ancient Greek for a craftsman – the kind of person who might indeed make technical drawings. So now the etymology was clear: clySmic had indeed had Tekton in mind when they drew their bitmaps, and picked a similar but different name for their derived bitmap font. The knockoff scalable font “Technical” was given a more generic name, presumably in the hope that Adobe wouldn’t go after whoever had ripped it off. And Slackware’s kbd package abbreviated everything to one letter anyway, so they didn’t care – all of these names started with the same letter, so “t” it was.

So, if I wanted a scalable font similar to the bitmap Tektite, one already existed – maybe I could use Tekton itself? Alas, no: Tekton is a variable-width font, not suitable for terminals or programming. Also, in the transition from scalable Tekton to bitmap Tektite, clySmic had made a change I liked: they’d made the font much heavier, and given it higher contrast (the vertical lines are thicker than the horizontals).

So I sat down to draw a scalable font based on the Tektite bitmaps, meeting all my other requirements (in particular, monospaced for use in terminals). My general design idea was (a) to make the font basically look like Tektite (with the changes I’d made to it already, like the lowered *); (b) where it wasn’t clear how best to convert a bitmap into a scalable character, use the original Tekton for inspiration; but ultimately, I wasn’t aiming to exactly duplicate either of the source fonts, so (c) I’d use my own judgment about whether to draw a character in the Tekton style, the Tektite style, or some new style I thought would work better.

[sample-9x15t-2.png]
[sample-tmb.png]
Tektite (my modified bitmaps) and Technicality Mono Bold (my scalable version matching the bitmaps best)

In a few cases I deliberately reverted a change made in Tektite, and went back to a more Tekton-ish version of a letter. For example, Tektite’s “q” was a lazy left/right reflection of its “p”, which I didn’t really like, so my “q” goes back to being a separately drawn character with a hook on the tail, as Tekton’s is.

[sample-tech-q.png] → [sample-9x15t-q.png] → [sample-tm-q.png]
The letters “pq” in all three fonts: Tekton, Tektite, Technicality.
Tektite’s ‘q’ is a reflection of ‘p’, but the other two fonts have a distinct ‘q’ with a tail.

But in other cases, I kept Tektite’s modifications to the shape. I don’t like the original Tekton’s upward slope in the middle of the S, and I stuck with Tektite’s version with a downward slope.

[sample-tech-S.png] → [sample-9x15t-S.png] → [sample-tm-S.png]
The letter “S” in all three fonts: Tekton, Tektite, Technicality.
Tekton slopes up in the middle, but the other two fonts slope downwards.

And my choice of name, “Technicality”, refers back to the knockoff name “Technical” under which I first encountered any variant of this font, while also suggesting pedantry and quibbling, which seems appropriate given that (as a software developer) that’s more or less my job.

Afterword

Even Adobe’s Tekton wasn’t the truly original source of these letter shapes.

I acknowledge a great debt to Frank Ching, whose handwriting was apparently the original inspiration for the Tekton font. Technicality is a third-order derivative of Frank Ching’s handwriting, since its design is based mostly on clySmic’s bitmap Tektite (the second-order one), which is based on Tekton (first order).

For my entire adult life, I’ve been reading and editing code and text in fonts derived from Frank Ching’s handwriting, at various removes. It’s hard to quantify how much time it saves to be able to read code faster by using a font that suits me, but even if it were only something like a 1% speedup (which I suspect is a considerable underestimate), over 25 years of both professional and free-time coding, that would still add up to a lot of time saved overall.

I’m not normally the kind of person to go fanboyish about famous people. But since Frank Ching’s handwriting in particular has had such a large impact on my life, I think that if I were ever to meet him, it would be appropriate to ask for his autograph!


(comments to anakin@pobox.com)
(thanks to chiark for hosting this page)
(last modified on Sun Apr 20 20:30:19 2025)