Theory of type design