- separate text rendering from text component