Performance improvement--do not allocate a new CharacterRun for each character. Also cache colors in constructRuns.