Type Design Framework

Raw framework for choosing type, or making custom typefaces – I use it to guide personal reflection and discussions while teaching typography and type design. Currently it is not meant to work in isolation. (work in progress, last edit: 07.2017)

Context

~Brief

A good decision is heavily dependend on its context. There are many typefaces which are amazing in one context and totally out of place in another.

Content

Type of Content

What is the text about? The more specific, the better.

Typographic Structure

Inline hierachies?, relation towards other elements, complexity,

Typesetter

Professional typographer ——— developer ——— most basic user

Reader and Reading Environment

Special Needs

Print/Digital

Resolution

Document Size

...

Intention

Meeting Expectations

Innovation

...

Influences

Cultural

General

Individual

Teaching

...

Graphical

Optical Phenomena

Geometrical Effects

Technical

Creation Tools

Rendering

Grades

Budget

Criteria

What makes a typeface good or bad?

Identity

Association, Atmosphere, Character, Feel

Exciting! In many cases the main reason why you are looking for another typeface, as Helvetica just doesn’t feel right for the job ;)

Atmospheric Genre

Historic Reference

Archetypes / Trad. Classifications

Script Nature

Soft Attributes

Visual Quality

Abstract Concept

...

Readability

Visual Readability, Reading Comfort, Typographic Legibility, ...

The basis, yet it can be real hard work to push it towards perfection.

Basic Identification

Language Support / Char-Set

Recognisability / Distinguishability

Basic Readability

Size

Color (fore-/background)

Optical Sizes

Reading Comfort

Is it adequate for the specific typographic context?

Consistent Color vs Distinguishability

Typographic Features

Tabular figures, superscript, subscript, smallcaps, ..., level of differentiation (e.g. italics),

(Line-height compensation)

Application

Technical Implementation, Execution

Format / System Support

variation font ———— hand lettering

Execution Quality

unicode, clean feature code, no bugs, hints, ...

Rights

Customization possible?

Script Structure

Script Patterns, Script Inherent Neutral Basis

This is the compilation in our heads of what a certain script, style or character looks like, a blurry image which the type designer transforms into precise shapes manifestating a specific interpretation.

Identification Pattern

This is the raw material – every letter consists of at least one character pattern to be identified with. The character “o” for examples does have exactly one. Yet, there are many letters which have more than one distinctive pattern, such as “R”, “r”, “r. When it comes to interpolation there is close to zero benefit trying to interpolate from one pattern to another.

Stylistic Variation

As long as additions such as serifs, drops and swashes do not result in an entirely new identification pattern they should be considers a variation and not as a sparate pattern.

Script Inherent Proportions/Treatments

Every script has its tradition of proportions, certain treatments and stereotypes which feel more natural to the native reader than others. All so called neutral designs fall somewhere into this area. From here on it is up to the type designer to bring new interpretations, new voices into the play.

Formal Variables (flat, most comprehensive)

In theory there can be infinite many type designs and therefore infinite many variable interpolation axes. To bring structure into this vast design space, the following formal categories should give some guidance. Every typeface across all scripts consists of a certain configuration of these aspects forming their specific formal character. The resulting atmosphere, the quality and the aspect of reading comfort needs to be seen on top of all of it, as any formal change does affect them, while their specific evaluation can be rather complex and sensible.

Aiding clarity there are no other sub-hierarchies but then directly interactive examples of specific variables/axes.


Top-level Variables
weight texture complexity optical size rhythm
width height inclination curvature
contrast modulation edging free forms



In the following each top-level variable is briefly described, followed by a set of axes and possible settings.

Weight

black/white-balance, color, darkness, lightness, opacity, transparency

The weight specifies the color/darkness of a font. It determines the relation between black and white. There are many ways to increase the weight. Changing the overall thickness of all strokes is the simplest way to manipulate it. Boldening the thick stems has the largest effect in Latin. But also a change of spacing or width does affect the weight.

A change of color does entail in most cases a change of overall width. (sometimes also a change of size) But there are also so called “uniwidth” typefaces which keep the overall width along the whole weight axes, to not cause any reflows.

variables/axes

possible settings/parameter

Texture

style, italic

The texture is determined by the distribution of black and white on a macro level. Next to size and weight it is the most important aspect for differentiation. Secondary typefaces are the best example when it comes to texture. They need to clearly differentiate while not jumping out at first glance, keeping a similar weight and in most cases even a similar proportion. There are many ways to manipulate the texture, such as a change in construction, proportion, inclination, modulation and others. While a change in construction can provide the best results it must be applied with huge care and sensibility for the script to not decrease the legibility more than anticipated.

variables/axes

possible settings/parameter

Difficulty note: It is quite hard to make all the designs along this axes usable and pleasing. If the texture changes significant it might be only possible with many manual adjustments (master or brace layers) along the axes and probably even hard steps (bracket layer / rules).

Complexity

detail texture

The complexity variable is the variable but at a micro-level. It is as if the texture is the raw sketch which you can either fill with plain black ink or with patterns, modules, outline effects, etc. – which means within the same texture there is an infinite number of possibilities waiting to be explored.

variables/axes

possible settings/parameter

Difficulty note: To interpolate along this axes can be rather difficult. The more complex the design on one extreme, the more difficult it is to control all the points along the axes, eventually having many nodes on top of each other at the simplistic extreme.

Hierarchy note: This could be also rearranged to be a subordinate of texture. But it felt necessary to separate them to have a bridge in between texture and optical sizes.

Optical Size

optical compensation

The optical size axis specifies the intended type size. It is there to adapt a typeface design made for a specific size towards a range of sizes. It is called optical, as it is referring to the size of the type rendered on the retina within the readers eye. Which means that the physical type size (e.g. x-height) is only important in its relation to the approximate reading distance.

Optical compensation is especially necessary for very light or bold designs, or ones with high contrast as the very thin lines or spaces become indistinguishable at small sizes. If those parts are crucial to identify the letter it can cause a great loss of legibility. This means that the core intention is to optically adapt a design with as little change of the original intended atmosphere as possible. At best the typeface should feel the same at any size, while keeping a similar legibility.

Yet it needs to be mentioned that there are also families which take a more artistic approach where the design changes considerably across the optical axes, e.g. to amplify typographic hierarchies.

variables/axes

possible settings/parameter

Rhythm

variation, consistency, relation

The rhythm variable only exists as a relation between different elements or glyphs. If elements are treated exactly the same a consistent pattern is build. If any part of those elements is then emphasized or faded the pattern changes and a different rhythm becomes visible. It is not a formal variable that can be described within a single element, the relation counts. Therefore it is not only a variable but also a criteria affected by any formal change.

variables/axes

possible settings/parameter

Width

x-proportion, x-metrics, horizonal-size

This category includes all changes that happen wihtin a character along the horizontal dimensions of a typeface, including width variation and positioning of loose elements. After the height of a character this variable has to biggest influence on the perceived size of typeface.

variables/axes

possible settings/parameter

influenced by

Hierarchy note:Width and height could be grouped together under skeleton > proportion

Spacing (should be sub of width)

fitting, tracking

With this variable the focus lies on the spacing inbetween the characters and respectively their total width. As the spacing is a rather important variable it has its own position even though it could be grouped under width.

Currently this is controlled within the typesetting software. But simple tracking can distort the balance of the fitting immensely, especially negative tracking. A spacing axes baked into the font by the designer would make it possible to supply an evenly distributed tight and loose typesetting alike.

variables/axes

possible settings/parameter

Height

size, y-proportion, y-metrics

This category includes all changes that happen within a character along the vertical dimensions of a typeface, including positioning. The character height has the biggest influence towards the size perception. (especially the x-height) This could be duo the fact that it is perpendicular towards the reading direction and therefore even small changes stand out more than a similar change in width. A change in height is often actually a change in size to preserve the character proportion: e.g. a change of the x-height is usually done proportionally along height and width to not end up with a condensed or extended typeface.

variables/axes

possible settings/parameter

influenced by

Hierarchy note: Height and width could be grouped together under skeleton > proportion

Inclination

slant, rotation

The most prominent use of inclination is applied in the realm of secondary styles (italics). The simple forward leaning slant causes an immediate change of texture and can be applied to any design.
The less popular vertical slants causing a continously shifting baseline are most prominent in handwritten styles, inspired by calligraphy and lettering.

variables/axes

possible settings/parameter

Hierarchy note: Inclination could be also put under the width and height proportion, but as its effect is very distinctive it got its own place.

Difficulty note: While artificial inclinations are tempting, almost all resulting outlines need to be manually corrected or entirely redrawn to gain perfect results. While the process of slanting seems like a simple process it does cause significant problems and is more complex than usually anticipated.

Curvature

The curvature is describing the modulation of the stroke, while keeping the relation between the outlines consistent. Typically it is used it describes an already existing curve, but it is equally applicable in the opposite direction, introducing curvature where onto straight strokes.

variables/axes

possible settings/parameter

Contrast

The contrast intensity is determined by the relation between thicks and thins. To supply an optimal control to the user it could be helpful if the overall weight stays consistent while manipulating the contrast slider. Another option would be to let the contrast slider only control the weight of the thin strokes, leaving the thicks entirely to the weight slider.

variables/axes

possible settings/parameter

Modulation

outline curvature, tool modulation

This variable describes the outline modulation, which can only be modulated if there is some contrast in the type design existent. The kind of modulation can be either inspired by analog tools, digital tools, imaginary tools or even drawn completely freehand.

variables/axes

possible settings/parameter

Edging

edge-, corner-, angle-treatment

This describes all changes applied to joints, terminals, or any other inner and outer edges.

variables/axes

possible settings/parameter

Free Forms

Most serifs, drops, dots, ... in typefaces are not describable with simple strokes or the behaviour of a specific lettering tools. While some are definitely inspired by tools, almost all of them are freely drawn following their own specific logic.

variables/axes

possible settings/parameter

Formal Variables (typographer, by cause)

Different Atmosphere ➝ Another Typeface?

This is a very complex and sensible aspect, in most cases you need to choose/create another typeface, or a typeface which has axes addressing certain atmospheres. On the other hand interpolation between entirely different fonts is possible, yet this needs to be specifically engineered and most importantly the path between the two needs to be designed, which can be a very complex endavour.

Texture

Rhythm

Contrast

Modulation

Edging

Free Forms

(Complexity)

(Width)

(Height)

Changing Size ➝ Optical Size

Especially typefaces with high contast need different optical adjustements across different sizes. Sans-serif designs at a regular weight in most cases only need a tighter/looser spacing.

Optical Size

Weight

Thin Lines (keeping similar contrast)
Small Gaps (whitespace!)
(Diacritics)

Spacing

(Height)

(Width)

Spacing

Line Length ➝ Width

Width

Be cautious, keep in mind that very narrow type does also cause a decrease in reading comfort.

Line Height

The longer the line length the larger the line-height to preserve a similar reading comfort.

Size (if possible)

Line Height ➝ Vertical Compensation

Vertical Compensation

Cap Size

(All-Caps Size)

Smallcap Size

Ascenders Height

Descenders Height

Diactritics Distance

Base Size (Latin: x-height)

Justification ➝ Width Variation

Width Variation

Heading ➝ Size

Size

Weight

Texture

Strong Emphasis ➝ Weight

e.g.: regular + bold / allcaps / large small caps

Weight

Size

Texture

Soft Emphasis ➝ Texture

e.g.: sans + italic / slant / serif / small caps

Texture

Stylistic Variation / Construction

Identification Pattern (a, A)

Slant

Contrast-Angle

Proportions

Mixing Typefaces Inline ➝ Manual Normalisation

Baseline Shift

Base Size (prop. scale, keeping weight)

(Heights / Vertical Proportions)

Base Size (Latin: x-height)

Cap Size

(All-Caps Size)

Smallcap Size

Ascenders Height

Descenders Height

Diactritics Distance

(Weight)

(Contrast)

Finding Alternative -> Basic Normalisation

Normalize Basline Position

Normalize Size

(On basis of a base character of each script)

Normalize Weight

Rendering ➝ Grades + Edging

(digital and analog rendering

Grades

Weight (x+y)

Contrast

Edging

Inktraps

Round Corners

Fun at Large ➝ Complexity

Complexity

Optical Size

Formal Variables (systematic hierarchies)

This structure evolved during my studies between 2012 and 2015. The descriptions and illustrations are unfortunately not listed here. When I find the time I will translate my (german) writing and add them.

Higher Aspects

Complex Formal Aspects

Size

Typographic / Visible Size

In most scripts this is defined by the base character height, e.g. the x-height for Latin scripts.

Optical Size

(Technical Size)

Size Matching (different scripts)

Texture

Complexity

Rhythm/Consistency

Setting

Position

Spacing

Skeleton

Vertical Proportion

Horizontal Proportion

Inclination

Curvature

Outline

Weight

Contrast

Modulation

Edging

Free Forms


Surface

Effects

Dimensionality

Colors

Formal Variables (typecooker.com)

Width

Weight

Construction

Stroke Endings

Ascender

Descender

Contrast Type

Contrast Amount

Stems

Application

Size

Special

Also



Status: “Formal variables (flat)” is almost done. Rest in progress.