an unfinished terminal font distantly inspired by Tekton
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.
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.
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.
Here are some initial downloads:
technicality-otf.zip
:
OpenType font files. (I prefer these on Linux; install by just
putting the files anywhere under ~/.fonts
.)technicality-ttf.zip
:
TrueType font files. (I found these work better on Windows;
install via the Windows Explorer.)technicality-woff.zip
:
web fonts suitable for using on an HTML page (although until the
font is more polished I don’t recommend it – I haven’t even used
it for this page yet!)technicality-all.zip
:
all those files in a single zip.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.
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.
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
”.
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 +
.
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.
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.
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.
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.
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!