Reviving the IBM
Selectric Composer Fonts

TL;DR: Before you can start drawing a revival of a typeface originating from any mechanical system, you need to do the math.

The article below is typeset in “Selectric UN 11 Medium”, drawn by Jens Kutilek in late 2022/early 2023 based on IBM type style catalogues.

The IBM Selectric Composer

A New Kind of Typewriter

A well-worn early Selectric Composer.
Source: Peter Häll/Tekniska museet, CC-BY

In 1964, IBM worked on the construction of a new kind of typewriter.

Up to then, except for a very small number of models, all typewriters used monospaced fonts, which means each glyph takes up the same horizontal width. The i, I, and l had to be artifically widened by adding horizontal strokes; wide letters as M, m, W, and w had to be compressed horizontally.

The new Selectric Composer allowed letters to be assigned to one of seven spacing groups, which ranged in width from three to nine units per em.

A left-aligned overlay of the glyphs a, i, m, n, o, w, H, T, W from the Selectric UN typeface, with width indicators.
Source: Jens Kutilek

Different font sizes and styles could be accommodated by scaling the base unit to one of three different sizes.

A colour code on each type element indicated the required scaling setting for each combination of type style and nominal font size.

Color code Units per pica Width of 1 unit
Red 12 0.3527 mm
Yellow 14 0.3024 mm
Blue 16 0.2645 mm

One typographical point is 0.35277 mm (1/72 inch) in size; 1 pica = 12 points.

The type elements, nicknamed “golf balls”, were quite a miracle of engineering. They were made of nickel-plated plastics, weighed 9 grams, and were manufactured with the highest precision possible.

A type element with the Selectric UN-11-M (Univers 11 Medium) type style, German layout.
Source: Jens Kutilek

In the catalogue of type styles, the colour code and height of the capital letters for each type element are given. For example, the values for the “Century” type style are:

Font Size Color Cap height
Century 6 pt blue 5.0 pt
Century 8 pt yellow 6.0 pt
Century 9 pt yellow 6.5 pt
Century 10 pt red 7.0 pt
Century 11 pt red 8.0 pt

As you can see, the 8/9 pt and 10/11 pt font share the same unit setting, so their set width will actually be identical. The letters are only drawn at a different height, to give the impression of a different font size.

8pt (top) and 9pt (bottom) Century. Notice the identical set width of both font sizes.
Source: Stephen Coles, CC-BY-NC-SA

Fun With Unitized Glyph Widths

Unit systems were common in all kinds of typesetting machines. The Lumitype photo setting machine, for which the Univers type family was originally designed, could place any glyph on one of 36 different widths. The Monotype caster only had 18 units.

Current computer fonts are usually based on a grid between 1000 and 4096 units per em, relative to the type size.

Max Caflisch, a Swiss typographer, and consultant to IBM, was tasked with selecting typefaces for the new machine. IBM contacted Adrian Frutiger to ask him if he would adapt his Univers type family for the new machine and to its 9-unit system. Frutiger negotiated the licence terms and began adapting eight styles in sizes between 7 and 12 points.

At this point, a problem became apparent. IBM’s engineers had decided that the unit assignments for each glyph would be identical for all possible Composer fonts. Their model had been only one typeface: “Times”, a baroque antiqua with classical proportions, where the letters (especially the capital letters) have pronounced differences in width. An E is roughly half the width of O and M, which are based on a square. The current trend in the 1950s/60s was to optically equalize the different letter widths.

The unit table for the German layout looks like this:

Units Characters
3 i j l . , ‘ ’ - ;
4 I f r s t ( ) / : !
5 J a c e g v z ä ü
6 P S b d h k n o p q u x y ö ß § * + = 0 1 2 3 4 5 6 7 8 9
7 B C E F L T Z
8 A D G H K N O Q R U V X Y Ä Ö Ü w & % – ?
9 M W m

Frutiger analyzed the letter widths of all typefaces he had access to and calculated their averages. He presented the result to the IBM engineers, but it was too late to change anything at that stage.

Other problems concerned the precision of the mechanical parts. Some glyphs always were printed too light or too heavy; this was counteracted by changing the drawings.

The golf ball had to rotate in two dimensions to make the correct glyph face the paper. Some glyphs always ended up too far to the left or right, to the top or bottom. Frutiger suggested that this could also be anticipated by moving the form on the ball in the opposite direction, but the engineers declined. In their opinion, such kind of problem had to be solved mechanically, not by “messing” with the glyph arrangement.

The fixed unit sytem worked out alright for Univers, but there are some oddities:

Those idiosyncrasies make it easy to identify text typed on the Selectric Composer.

What Remains Of The Composer

Even if IBM tried to present it this way: The Selectric Composer could not stand up to a comparison with actual metal type or photo typesetting. However, in its time, it was far ahead of the usual typewritten typography and was able to fill a gap where typing was not sufficient and photo typesetting too costly.

Text set by the Selectric Composer can be found in German comic books of the 1970s and 1980s, like Disney’s Lustige Taschenbücher, in small magazines, company correspondence, instruction manuals, and products from small print shops.

Starting in the early 1990s, the machine is quickly made obsolete by the capabilities of desktop publishing.

Digitizing the Fonts

Finding The Correct Scale

The glyph widths of the IBM Selectric Composer are on a grid of 9 units per em. I figured the best grid setting for drawing an OpenType font is be 900 upm so that 1 composer unit would correspond to 100 font units.

Drawing a font at 900 units per em is fine. It is close to the common 1000 upm that probably 99% of all OpenType CFF fonts use.

But for the glyphs to be output at the correct size, we need to figure out if our scaling is correct.

If we tell our layout software to give us a 10 point font, the 900 font units are scaled to 10 points for display, so:

900 font units → 10 pt = 3.5277 mm

Dividing by 9, we get:

100 font units → 1.1111 pt = 0.3919666667 mm

Remember, 100 font units are 1 composer unit for our font-internal drawing purposes.

At the red setting, 1 composer unit equals 0.3527 mm, but the calculation shows our 100 font units correspond to 0.3919666667 mm. To get the correct output at 10 pt font size, we can set the units per em at export so as to make up for the difference.

We need to calculate a correction factor by dividing 0.3919666667 mm by 0.3527 mm and get 1.1113316323. To make the font smaller, the font units per em settings must be bigger, so we get 900 * 1.1113316323 = 1000 (incidentally, the standard upm setting).

Let's check if the math works out:

1000 font units → 10 pt = 3.5277 mm

Divide by 10, trivially:

100 font units → 1 pt = 0.3527 mm


If the 10 pt used the yellow setting instead, as e.g. the Univers 10 pt font does, we would arrive at our correction factor by dividing 0.3919666667 mm by 0.3024 mm and get 1.2961860671. To make the font smaller, the font units per em settings must be bigger, so we get 900 * 1.2961860671 = 1166.57.

So for the different font sizes we get:

For 9 pt:

900 font units → 9 pt = 3.17493 mm | ÷ 9
100 font units → 1 pt = 0.35277 mm

For the yellow setting, 1 composer unit should be 0.3024 mm, so we need to calculate the correction factor by dividing 0.35277 mm / 0.3024 mm = 1.1665674603. Our correct units per em setting is 900 * 1.1665674603 = 1050.

For 8 pt:

900 font units → 8 pt = 2.82216 mm | ÷ 9
100 font units → 0.8889 pt = 0.313573 mm

As the 8 pt font also uses the yellow setting, 1 composer unit should again be 0.3024 mm, so we need to calculate the correction factor by dividing 0.313573 mm / 0.3024 mm = 1.0369477513. To make the font smaller, the font units per em settings must be bigger, so we get 900 * 1.0369477513 = 933.

For 11 pt:

900 font units → 11 pt = 3.88047 mm | ÷ 9
100 font units → 1,222222 pt = 0.431163 mm

As the 11 pt font also uses the red setting like the 10 pt font, 1 composer unit should again be 0.3527 mm, so we need to calculate the correction factor by dividing 0.431163 mm / 0.3527 mm = 1.2224638503. To make the font smaller, the font units per em settings must be bigger, so we get 900 * 1.2224638503 = 1100.

Cap Heights

As the Composer manual gives us the cap heights for each font and size, we can now calculate the cap heights in internal font units for each font size:

    1100 / 11 * 8   = 800  (11 pt, 8 pt cap height)
    1000 / 10 * 7   = 700  (10 pt, 7 pt cap height)
    1050 /  9 * 6.5 = 758  (9 pt, 6.5 pt cap height)
     933 /  8 * 6   = 700  (8 pt, 6 pt cap height)

That should give us a hint as to how to scale our scans. But the values from the manual should be taken with a grain of salt; they seem to have been rounded to half points, and are more nuanced in reality.

Scalable Fonts?

Scalable fonts, my ass! We may need a different drawing for each font size.

Luckily, old Adrian was a man of numbers, and so at least the Univers drawings are just scaled for different sizes as far possible, without further adjustments. Other fonts, like the Century style, seem to have more optical adjustments going on between the different font sizes.

The Selectric Univers is rather “small on the body”, as they call it, so I started with the 11 pt font, which has a good size for general purpose typesetting.

I found a good way to scale the scans visually was to type out the (still empty) letters in my font editor (I used Glyphs for this project), separated by a space as it is shown in the Selectric catalogue. The letters already have their unit widths set correctly. I added a thin vertical line to the left side of each glyph to make their widths visible.

The background scan in the figure below is placed in the letter E. Then the scaling is continuously adjusted until the other letters fall into their designated slots.

A placed scan in the font editor. All glyphs already have their calculated widths assigned, e.g. the E with 700 font units on our 900 unit drawing grid.
Source: Jens Kutilek

I chopped the scan into smaller parts to make handling the scaled image in the font editor easier. The final scaling of the image can finally be read from the info box and applied to the other parts of the scan.

So When Did You Actually Draw Some Letters?

We are getting there. The Composer catalogue states that the specimens are original Composer settings printed with the offset process. So they may have suffered a bit through the reproduction. We must use our knowledge and sensibilities to make a Univers out of those somewhat blurry (in spite of the decent scan quality) letters.

You could autotrace the glyphs at this point, but where is the fun in that? (Also, the results would not be very useable.) Start laying down the points and move those curves around. Just keep drawing over the scans until you are satisfied.

Drawing an F on top of the scan.
Source: Jens Kutilek

To maintain the friendly, slightly rounded impression of the typeface in the new digital medium, I chose to apply a rounded corners filter with a radius of 14 font units in postproduction. “Postproduction” means that I drew everything with sharp corners, and the filter is applied by Glyphs when the final fonts are exported.

Drawing an e. Rounded corners not pictured.
Source: Jens Kutilek

When in doubt what makes Univers Univers, I looked at other digitizations, like my 1992 Linotype Univers PostScript type 1 fonts that came on actual 3.5” floppy disks, and discovered that at least those, but also other old versions are pretty badly drawn. Their outlines and spacing are compromised by having been adapted from earlier technologies, with errors being introduced but never subsequently corrected. But that is another story for another day. Today’s drawing standards are much higher.

The final export with rounded corners.
Source: Jens Kutilek

The character set was pretty limited back in the day, so I think I didn’t spend more than two working days on this, with a couple of refinement rounds.

Kerning (adjustments to the distance of specific letter pairs) didn’t exist back then, so we can skip this whole step. I did do some screen optimization by adding TrueType instructions to the font, though.

The current character set.
Source: Jens Kutilek

This whole article is set in my “Selectric UN 11 Medium” font. To write this article, I even had to add some glyphs that were not part of the original character set, like the division sign and the rightwards arrow. I also borrowed the @ from the Century style (it was present in the American character set, but not in the German one).

I also started to digitize multiple sizes of the Century type style, which is actually more a “Century Schoolbook” than just a “Century”. For this, I didn’t scan the letters, but photographed them with a USB microscope. But that’s also another story waiting to be told.

Work in progress: My interpretation of the Century 10 pt type style from the Selectric Composer.
Source: Jens Kutilek