Como eu faço a sobreescrita de um componente do JSF?

Que classe eu devo herdar para sobreescrever o component h:outputText ? Onde eu pesquiso essas informações ?

Eu tentei essa configuração e não funcionou:

<renderer>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Text</renderer-type>
            <renderer-class>br.com.bwn.comum.util.ComponentInputObrigatorio</renderer-class>
</renderer>
public class ComponentInputObrigatorio extends UIComponentBase {

    @Override
    public String getFamily() {
        return "welcome.component";
    }

    @Override
    public void encodeBegin(FacesContext context) throws IOException {
        
        String value = (String) getAttributes().get("value");
        String to = (String) getAttributes().get("to");
        if ((value != null) && (to != null)) {
            ResponseWriter writer = context.getResponseWriter();
            writer.writeAttribute("id", getClientId(context), null);
            writer.write(value + ", " + to);
            writer.writeText("*", null);
            writer.startElement("span", null);
            writer.writeAttribute("style", "color:red", null);
        }        
    }
}