First pass at screen-space text driven by component