Theory of Type Design